From c3e3138488e6f46fa632ec0f6b9f4e7c2d5a6d2e Mon Sep 17 00:00:00 2001 From: Martin Kretzschmar Date: Thu, 17 Jul 2003 18:06:14 +0000 Subject: Add gpdf-persist-file.cc. * po/POTFILES.in: Add gpdf-persist-file.cc. * xpdf/gpdf-persist-file.cc (gpdf_persist_file_class_init) (impl_bonobo_persist_file_load): emit (new) loading-failed signal if something goes wrong during load. * xpdf/gpdf-persist-file.h: add slot for loading-failed. * xpdf/gpdf-marshal.list: add VOID:STRING. * xpdf/gpdf-links-canvas-layer.cc: fix include (thanks Remi). * xpdf/gpdf-control.cc (gpdf_control_setup_persist) (gpdf_control_destroy): on loading-failed signal, display error alert. * xpdf/eog-hig-dialog.h, xpdf/eog-hig-dialog.c: copied from eog; HIG conforming alert dialog. * xpdf/Makefile.am (libgpdf_a_SOURCES): build eog-hig-dialog * NEWS: updated. --- diff --git a/pdf/xpdf/Makefile.am b/pdf/xpdf/Makefile.am index c85699a..e4d059c 100644 --- a/pdf/xpdf/Makefile.am +++ b/pdf/xpdf/Makefile.am @@ -125,6 +125,8 @@ libgpdf_a_SOURCES = \ GnomeVFSStream.h \ GPOutputDev.cc \ GPOutputDev.h \ + eog-hig-dialog.c \ + eog-hig-dialog.h \ gpdf-control.cc \ gpdf-control.h \ gpdf-g-switch.h \ diff --git a/pdf/xpdf/eog-hig-dialog.c b/pdf/xpdf/eog-hig-dialog.c new file mode 100644 index 0000000..121e844 --- /dev/null +++ b/pdf/xpdf/eog-hig-dialog.c @@ -0,0 +1,89 @@ +#include +#include +#include +#include "eog-hig-dialog.h" + + +GNOME_CLASS_BOILERPLATE (EogHigDialog, + eog_hig_dialog, + GtkDialog, + GTK_TYPE_DIALOG); + +void +eog_hig_dialog_class_init (EogHigDialogClass *klass) +{ +} + +void +eog_hig_dialog_instance_init (EogHigDialog *dlg) +{ +} + + +GtkWidget* +eog_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 (EOG_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\n", 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); + + return dlg; +} diff --git a/pdf/xpdf/eog-hig-dialog.h b/pdf/xpdf/eog-hig-dialog.h new file mode 100644 index 0000000..506e332 --- /dev/null +++ b/pdf/xpdf/eog-hig-dialog.h @@ -0,0 +1,34 @@ +#ifndef _EOG_HIG_DIALOG_H_ +#define _EOG_HIG_DIALOG_H_ + +#include + +G_BEGIN_DECLS + +#define EOG_TYPE_HIG_DIALOG (eog_hig_dialog_get_type ()) +#define EOG_HIG_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOG_TYPE_HIG_DIALOG, EogHigDialog)) +#define EOG_HIG_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EOG_TYPE_HIG_DIALOG, EogHigDialogClass)) +#define EOG_IS_HIG_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOG_TYPE_HIG_DIALOG)) +#define EOG_IS_HIG_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOG_TYPE_HIG_DIALOG)) + +typedef struct _EogHigDialog EogHigDialog; +typedef struct _EogHigDialogClass EogHigDialogClass; +typedef struct _EogHigDialogPrivate EogHigDialogPrivate; + + +struct _EogHigDialog { + GtkDialog dialog; +}; + +struct _EogHigDialogClass { + GtkDialogClass parent_class; +}; + + +GType eog_hig_dialog_get_type (void); +GtkWidget* eog_hig_dialog_new (const char *stock_id, const char *header, const char *body, gboolean modal); + + +G_END_DECLS + +#endif /* _EOG_HIG_DIALOG_H_ */ -- cgit v0.9.1