Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pdf/xpdf/gpdf-hig-dialog.c89
-rw-r--r--pdf/xpdf/gpdf-hig-dialog.h34
2 files changed, 123 insertions, 0 deletions
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 <string.h>
+#include <gtk/gtk.h>
+#include <libgnome/gnome-macros.h>
+#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,
+ "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", header, body);
+ }
+ else {
+ g_snprintf (message, message_len,
+ "<span weight=\"bold\" size=\"larger\">%s</span>\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 <gtk/gtkdialog.h>
+
+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_ */