From 884f739665dc56e66f51e104350f2affd33f2dd8 Mon Sep 17 00:00:00 2001 From: Remi Cohen-Scali Date: Tue, 13 Jan 2004 00:23:29 +0000 Subject: Reused eog HIG dialog in GPdf. 2004-01-13 Remi Cohen-Scali * xpdf/gpdf-hig-dialog.c: * xpdf/gpdf-hig-dialog.h: Reused eog HIG dialog in GPdf. --- (limited to 'pdf') diff --git a/pdf/xpdf/gpdf-hig-dialog.c b/pdf/xpdf/gpdf-hig-dialog.c new file mode 100644 index 0000000..663fde0 --- /dev/null +++ b/pdf/xpdf/gpdf-hig-dialog.c @@ -0,0 +1,89 @@ +#include +#include +#include +#include "gpdf-hig-dialog.h" + + +GNOME_CLASS_BOILERPLATE (GpdfHigDialog, + gpdf_hig_dialog, + GtkDialog, + GTK_TYPE_DIALOG); + +void +gpdf_hig_dialog_class_init (GpdfHigDialogClass *klass) +{ +} + +void +gpdf_hig_dialog_instance_init (GpdfHigDialog *dlg) +{ +} + + +GtkWidget* +gpdf_hig_dialog_new (const char *stock_id, const char *header, const char *body, gboolean modal) +{ + GtkWidget *dlg; + GtkWidget *hbox; + GtkWidget *image; + GtkWidget *label; + int header_len; + int body_len; + int message_len; + char *message; + + g_return_val_if_fail (stock_id != NULL, NULL); + g_return_val_if_fail (header != NULL, NULL); + + dlg = gtk_widget_new (GPDF_TYPE_HIG_DIALOG, + "border-width", 6, + "resizable", FALSE, + "has-separator", FALSE, + "modal", modal, + "title", "", + NULL); + + hbox = gtk_widget_new (GTK_TYPE_HBOX, + "homogeneous", FALSE, + "spacing", 12, + "border-width", 6, + NULL); + + image = gtk_widget_new (GTK_TYPE_IMAGE, + "stock", stock_id, + "icon-size", GTK_ICON_SIZE_DIALOG, + "yalign", 0.0, + NULL); + gtk_container_add (GTK_CONTAINER (hbox), image); + + + header_len = strlen (header); + body_len = body ? strlen (body) : 0; + message_len = header_len + body_len + 64; + + message = g_new0 (char, message_len); + + if (body != NULL) { + g_snprintf (message, message_len, + "%s\n\n%s", header, body); + } + else { + g_snprintf (message, message_len, + "%s\n", header); + } + + label = gtk_label_new (message); + g_object_set (G_OBJECT (label), + "use-markup", TRUE, + "wrap", TRUE, + "yalign", 0.0, + NULL); + + gtk_container_add (GTK_CONTAINER (hbox), label); + gtk_widget_show_all (hbox); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox), hbox); + g_object_set (G_OBJECT (GTK_DIALOG (dlg)->vbox), "spacing", 12, NULL); + + return dlg; +} diff --git a/pdf/xpdf/gpdf-hig-dialog.h b/pdf/xpdf/gpdf-hig-dialog.h new file mode 100644 index 0000000..5696be0 --- /dev/null +++ b/pdf/xpdf/gpdf-hig-dialog.h @@ -0,0 +1,34 @@ +#ifndef _GPDF_HIG_DIALOG_H_ +#define _GPDF_HIG_DIALOG_H_ + +#include + +G_BEGIN_DECLS + +#define GPDF_TYPE_HIG_DIALOG (gpdf_hig_dialog_get_type ()) +#define GPDF_HIG_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GPDF_TYPE_HIG_DIALOG, GpdfHigDialog)) +#define GPDF_HIG_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GPDF_TYPE_HIG_DIALOG, GpdfHigDialogClass)) +#define GPDF_IS_HIG_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GPDF_TYPE_HIG_DIALOG)) +#define GPDF_IS_HIG_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GPDF_TYPE_HIG_DIALOG)) + +typedef struct _GpdfHigDialog GpdfHigDialog; +typedef struct _GpdfHigDialogClass GpdfHigDialogClass; +typedef struct _GpdfHigDialogPrivate GpdfHigDialogPrivate; + + +struct _GpdfHigDialog { + GtkDialog dialog; +}; + +struct _GpdfHigDialogClass { + GtkDialogClass parent_class; +}; + + +GType gpdf_hig_dialog_get_type (void); +GtkWidget* gpdf_hig_dialog_new (const char *stock_id, const char *header, const char *body, gboolean modal); + + +G_END_DECLS + +#endif /* _GPDF_HIG_DIALOG_H_ */ -- cgit v0.9.1