]> www.fi.muni.cz Git - evince.git/blob - pdf/xpdf/eog-hig-dialog.c
(eog_hig_dialog_new): add terminating NULL in g_object_set.
[evince.git] / pdf / xpdf / eog-hig-dialog.c
1 #include <string.h>
2 #include <gtk/gtk.h>
3 #include <libgnome/gnome-macros.h>
4 #include "eog-hig-dialog.h"
5
6
7 GNOME_CLASS_BOILERPLATE (EogHigDialog, 
8                          eog_hig_dialog,
9                          GtkDialog,
10                          GTK_TYPE_DIALOG);
11
12 void
13 eog_hig_dialog_class_init (EogHigDialogClass *klass)
14 {
15 }
16
17 void 
18 eog_hig_dialog_instance_init (EogHigDialog *dlg)
19 {
20 }
21
22
23 GtkWidget*  
24 eog_hig_dialog_new (const char *stock_id, const char *header, const char *body, gboolean modal)
25 {
26         GtkWidget *dlg;
27         GtkWidget *hbox;
28         GtkWidget *image;
29         GtkWidget *label;
30         int header_len;
31         int body_len;
32         int message_len;
33         char *message;
34         
35         g_return_val_if_fail (stock_id != NULL, NULL);
36         g_return_val_if_fail (header != NULL, NULL);
37         
38         dlg = gtk_widget_new (EOG_TYPE_HIG_DIALOG, 
39                               "border-width", 6, 
40                               "resizable", FALSE,
41                               "has-separator", FALSE,
42                               "modal", modal,
43                               "title", "",
44                               NULL);
45                               
46         hbox = gtk_widget_new (GTK_TYPE_HBOX, 
47                                "homogeneous", FALSE,
48                                "spacing", 12,
49                                "border-width", 6,
50                                NULL);
51
52         image = gtk_widget_new (GTK_TYPE_IMAGE,
53                                 "stock", stock_id,
54                                 "icon-size", GTK_ICON_SIZE_DIALOG,
55                                 "yalign", 0.0,
56                                 NULL);
57         gtk_container_add (GTK_CONTAINER (hbox), image);
58
59
60         header_len = strlen (header);
61         body_len = body ? strlen (body) : 0;
62         message_len = header_len + body_len + 64;
63
64         message = g_new0 (char, message_len);
65
66         if (body != NULL) {
67                 g_snprintf (message, message_len,
68                             "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", header, body);
69         }
70         else {
71                 g_snprintf (message, message_len,
72                             "<span weight=\"bold\" size=\"larger\">%s</span>\n", header);
73         }
74         
75         label = gtk_label_new (message);
76         g_object_set (G_OBJECT (label),
77                       "use-markup", TRUE, 
78                       "wrap", TRUE,
79                       "yalign", 0.0,
80                       NULL); 
81                                
82         gtk_container_add (GTK_CONTAINER (hbox), label);
83         gtk_widget_show_all (hbox);
84
85         gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox), hbox);
86         g_object_set (G_OBJECT (GTK_DIALOG (dlg)->vbox), "spacing", 12, NULL);
87
88         return dlg;
89 }