diff options
Diffstat (limited to 'e-util/e-alert-dialog.c')
-rw-r--r-- | e-util/e-alert-dialog.c | 107 |
1 files changed, 52 insertions, 55 deletions
diff --git a/e-util/e-alert-dialog.c b/e-util/e-alert-dialog.c index 1aa238cdcc..0057ed91aa 100644 --- a/e-util/e-alert-dialog.c +++ b/e-util/e-alert-dialog.c @@ -113,17 +113,21 @@ e_alert_dialog_constructed (GObject *obj) EAlertDialog *self = (EAlertDialog*) obj; EAlert *alert; struct _e_alert_button *b; - GtkWidget *hbox, *w, *scroll=NULL; GtkWidget *action_area; GtkWidget *content_area; - GString *out; - gchar *title, *primary, *secondary; + GtkWidget *container; + GtkWidget *widget; + PangoAttribute *attr; + PangoAttrList *list; + const gchar *primary, *secondary; g_return_if_fail (self != NULL); self->priv = ALERT_DIALOG_PRIVATE (self); alert = self->priv->alert; + gtk_window_set_title (GTK_WINDOW (self), " "); + action_area = gtk_dialog_get_action_area ((GtkDialog*) self); content_area = gtk_dialog_get_content_area ((GtkDialog*) self); @@ -142,8 +146,6 @@ e_alert_dialog_constructed (GObject *obj) "Something called %s() with a NULL parent window. " "This is no longer legal, please fix it.", G_STRFUNC); - if (e_alert_get_flags (alert) & GTK_DIALOG_MODAL) - gtk_window_set_modal ((GtkWindow *)self, TRUE); gtk_window_set_destroy_with_parent ((GtkWindow *)self, TRUE); b = e_alert_peek_buttons (alert); @@ -174,56 +176,51 @@ e_alert_dialog_constructed (GObject *obj) gtk_dialog_set_default_response ((GtkDialog*) self, e_alert_get_default_response (alert)); - hbox = gtk_hbox_new (FALSE, 0); - gtk_container_set_border_width ((GtkContainer *)hbox, 12); - - w = gtk_image_new_from_stock - (e_alert_peek_stock_image (alert), GTK_ICON_SIZE_DIALOG); - gtk_misc_set_alignment ((GtkMisc *)w, 0.0, 0.0); - gtk_box_pack_start ((GtkBox *)hbox, w, FALSE, FALSE, 12); - - title = e_alert_get_title (alert, FALSE); - gtk_window_set_title ((GtkWindow *)self, title); - - out = g_string_new (""); - primary = e_alert_get_primary_text (alert, TRUE); - if (primary) { - g_string_append_printf (out, - "<span weight=\"bold\" size=\"larger\">%s</span>\n\n", - primary); - } - - secondary = e_alert_get_secondary_text (alert, TRUE); - if (secondary) { - g_string_append (out, secondary); - } - - g_free (secondary); - g_free (title); - g_free (primary); - - if (e_alert_get_scroll (alert)) { - scroll = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy ( - GTK_SCROLLED_WINDOW (scroll), - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - } - w = gtk_label_new (NULL); - gtk_label_set_selectable ((GtkLabel *)w, TRUE); - gtk_label_set_line_wrap ((GtkLabel *)w, TRUE); - gtk_label_set_markup ((GtkLabel *)w, out->str); - gtk_widget_set_can_focus (w, FALSE); - g_string_free (out, TRUE); - if (e_alert_get_scroll (alert)) { - gtk_scrolled_window_add_with_viewport ((GtkScrolledWindow *)scroll, w); - gtk_box_pack_start ((GtkBox *)hbox, scroll, FALSE, FALSE, 0); - gtk_window_set_default_size ((GtkWindow *)self, 360, 180); - } else - gtk_box_pack_start ((GtkBox *)hbox, w, TRUE, TRUE, 0); - - gtk_widget_show_all (hbox); - - gtk_box_pack_start (GTK_BOX (content_area), hbox, TRUE, TRUE, 0); + widget = gtk_hbox_new (FALSE, 12); + gtk_container_set_border_width (GTK_CONTAINER (widget), 12); + gtk_box_pack_start (GTK_BOX (content_area), widget, TRUE, TRUE, 0); + gtk_widget_show (widget); + + container = widget; + + widget = e_alert_create_image (alert, GTK_ICON_SIZE_DIALOG); + gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.0); + gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); + gtk_widget_show (widget); + + widget = gtk_vbox_new (FALSE, 12); + gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); + gtk_widget_show (widget); + + container = widget; + + primary = e_alert_get_primary_text (alert); + secondary = e_alert_get_secondary_text (alert); + + list = pango_attr_list_new (); + attr = pango_attr_scale_new (PANGO_SCALE_LARGE); + pango_attr_list_insert (list, attr); + attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD); + pango_attr_list_insert (list, attr); + + widget = gtk_label_new (primary); + gtk_label_set_attributes (GTK_LABEL (widget), list); + gtk_label_set_line_wrap (GTK_LABEL (widget), TRUE); + gtk_label_set_selectable (GTK_LABEL (widget), TRUE); + gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.0); + gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); + gtk_widget_set_can_focus (widget, FALSE); + gtk_widget_show (widget); + + widget = gtk_label_new (secondary); + gtk_label_set_line_wrap (GTK_LABEL (widget), TRUE); + gtk_label_set_selectable (GTK_LABEL (widget), TRUE); + gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.0); + gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); + gtk_widget_set_can_focus (widget, FALSE); + gtk_widget_show (widget); + + pango_attr_list_unref (list); } static void |