GtkWidget *dlg;
GnomeRecentModel *recent;
gint ret;
+ gchar *primary_msg;
gl_debug (DEBUG_FILE, "START");
gl_debug (DEBUG_FILE, "couldn't open file");
- dlg = gtk_message_dialog_new (GTK_WINDOW(win),
+ primary_msg = g_strdup_printf (_("Could not open file \"%s\""),
+ filename);
+
+ dlg = gl_util_hig_dialog_new (GTK_WINDOW(win),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
- _("Cannot open file '%s'"),
- filename);
+ primary_msg, "");
+
+ g_free (primary_msg);
+
gtk_dialog_run (GTK_DIALOG (dlg));
gtk_widget_destroy (dlg);
if (status != XML_LABEL_OK)
{
GtkWidget *dialog;
+ gchar *primary_msg;
gl_debug (DEBUG_FILE, "FAILED");
- dialog = gtk_message_dialog_new (GTK_WINDOW(glabels_get_active_window()),
+ primary_msg = g_strdup_printf (_("Could not save file \"%s\""),
+ filename);
+
+ dialog = gl_util_hig_dialog_new (GTK_WINDOW(glabels_get_active_window()),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
- _("Error saving file '%s'"),
- filename);
+ primary_msg, "");
+
+ g_free (primary_msg);
+
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
glXMLLabelStatus status;
GnomeRecentModel *recent;
gboolean *saved_flag;
+ gchar *primary_msg;
gl_debug (DEBUG_FILE, "START");
if (!raw_filename || (raw_filename[strlen (raw_filename) - 1] == '/')) {
- dlg = gtk_message_dialog_new (GTK_WINDOW(fsel),
+ dlg = gl_util_hig_dialog_new (GTK_WINDOW(fsel),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_CLOSE,
- _("Must supply file name"));
+ _("Must supply file name"), "");
gtk_window_set_modal (GTK_WINDOW (dlg), TRUE);
} else {
if ( status != XML_LABEL_OK ) {
- dlg = gtk_message_dialog_new (GTK_WINDOW(fsel),
+ primary_msg = g_strdup_printf (_("Could not save file \"%s\""),
+ filename);
+
+ dlg = gl_util_hig_dialog_new (GTK_WINDOW(fsel),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
- _("Error writing file '%s'"),
- filename);
+ primary_msg, "");
+
+ g_free (primary_msg);
+
gtk_window_set_modal (GTK_WINDOW (dlg), TRUE);
} else {
#include "view.h"
#include "debug.h"
#include "gnome-recent-view.h"
+#include "util.h"
#include <bonobo/bonobo-ui-util.h>
#include <bonobo/bonobo-control.h>
fname = gl_label_get_short_name (doc);
- msgbox = gtk_message_dialog_new (GTK_WINDOW (bonobo_mdi_get_active_window (mdi)),
+ msg = g_strdup_printf (_("Save changes to document \"%s\" before closing?"),
+ fname);
+
+ msgbox = gl_util_hig_dialog_new (GTK_WINDOW (bonobo_mdi_get_active_window (mdi)),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
+ GTK_MESSAGE_WARNING,
GTK_BUTTONS_NONE,
- _("Do you want to save the changes you made to the document \"%s\"? \n\n"
- "Your changes will be lost if you don't save them."),
- fname);
+ msg,
+ _("Your changes will be lost if you don't save them."));
- gl_util_dialog_add_button (GTK_DIALOG (msgbox),
- _("Do_n't save"),
- GTK_STOCK_NO,
- GTK_RESPONSE_NO);
+ gtk_dialog_add_button (GTK_DIALOG (msgbox),
+ _("Close without saving"),
+ GTK_RESPONSE_NO);
if (glabels_close_x_button_pressed)
exiting = FALSE;
exiting = FALSE;
}
-#if 0
- if (exiting)
- gl_util_dialog_add_button (GTK_DIALOG (msgbox),
- _("_Don't quit"),
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL);
- else
- gl_util_dialog_add_button (GTK_DIALOG (msgbox),
- _("_Don't close"),
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL);
-#endif
gtk_dialog_add_button (GTK_DIALOG (msgbox), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
}
}
+
+/****************************************************************************/
+/* Create a message dialog that attempts to be HIG compliant. */
+/****************************************************************************/
+GtkWidget* gl_util_hig_dialog_new (GtkWindow *parent,
+ GtkDialogFlags flags,
+ GtkMessageType type,
+ GtkButtonsType buttons,
+ const gchar *primary_text,
+ const gchar *secondary_text)
+{
+ GtkWidget *dialog, *hbox, *image, *label;
+ gchar *label_text;
+ const gchar *stock_id = NULL;
+ GtkStockItem item;
+
+ /* Create bare dialog */
+ dialog = gtk_dialog_new_with_buttons ("", parent, flags, NULL);
+
+ /* Create HBOX */
+ hbox = gtk_hbox_new (FALSE, 12);
+ gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox),
+ hbox, FALSE, FALSE, 0);
+
+ /* Create image */
+ switch (type) {
+ case GTK_MESSAGE_INFO:
+ stock_id = GTK_STOCK_DIALOG_INFO;
+ break;
+ case GTK_MESSAGE_QUESTION:
+ stock_id = GTK_STOCK_DIALOG_QUESTION;
+ break;
+ case GTK_MESSAGE_WARNING:
+ stock_id = GTK_STOCK_DIALOG_WARNING;
+ break;
+ case GTK_MESSAGE_ERROR:
+ stock_id = GTK_STOCK_DIALOG_ERROR;
+ break;
+ default:
+ stock_id = GTK_STOCK_DIALOG_INFO;
+ g_warning ("Unknown GtkMessageType %d", type);
+ break;
+ }
+ if (gtk_stock_lookup (stock_id, &item)) {
+ image = gtk_image_new_from_stock (stock_id,
+ GTK_ICON_SIZE_DIALOG);
+ } else {
+ image = gtk_image_new_from_stock (NULL,
+ GTK_ICON_SIZE_DIALOG);
+ g_warning ("Stock dialog ID doesn't exist?");
+ }
+ gtk_box_pack_start (GTK_BOX(hbox), image, FALSE, FALSE, 0);
+
+ /* Create label containing primary and secondary text */
+ label_text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
+ primary_text, secondary_text);
+ label = gtk_label_new (label_text);
+ g_free (label_text);
+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+ /* Adjust dialog properties */
+ gtk_window_set_title (GTK_WINDOW(dialog), "");
+ gtk_container_set_border_width (GTK_CONTAINER(dialog), 6);
+ gtk_dialog_set_has_separator (GTK_DIALOG(dialog), FALSE);
+
+ /* Adjust VBOX properties */
+ gtk_box_set_spacing (GTK_BOX(GTK_DIALOG(dialog)->vbox), 12);
+
+ /* Adjust HBOX properties */
+ gtk_box_set_spacing (GTK_BOX(hbox), 12);
+ gtk_container_set_border_width (GTK_CONTAINER(hbox), 6);
+
+ /* Adjust IMAGE properties */
+ gtk_misc_set_alignment (GTK_MISC(image), 0.5, 0.0);
+
+ /* Adjust LABEL properties */
+ gtk_label_set_line_wrap (GTK_LABEL(label), TRUE);
+ gtk_label_set_use_markup (GTK_LABEL(label), TRUE);
+ gtk_misc_set_alignment (GTK_MISC(image), 0.5, 0.0);
+
+ /* Add buttons */
+ switch (buttons) {
+ case GTK_BUTTONS_NONE:
+ /* nothing */
+ break;
+ case GTK_BUTTONS_OK:
+ gtk_dialog_add_button (GTK_DIALOG(dialog),
+ GTK_STOCK_OK, GTK_RESPONSE_OK);
+ break;
+ case GTK_BUTTONS_CLOSE:
+ gtk_dialog_add_button (GTK_DIALOG(dialog),
+ GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
+ break;
+ case GTK_BUTTONS_CANCEL:
+ gtk_dialog_add_button (GTK_DIALOG(dialog),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+ break;
+ case GTK_BUTTONS_YES_NO:
+ gtk_dialog_add_button (GTK_DIALOG(dialog),
+ GTK_STOCK_NO, GTK_RESPONSE_NO);
+ gtk_dialog_add_button (GTK_DIALOG(dialog),
+ GTK_STOCK_YES, GTK_RESPONSE_YES);
+ break;
+ case GTK_BUTTONS_OK_CANCEL:
+ gtk_dialog_add_button (GTK_DIALOG(dialog),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+ gtk_dialog_add_button (GTK_DIALOG(dialog),
+ GTK_STOCK_OK, GTK_RESPONSE_OK);
+ break;
+ default:
+ g_warning ("Unknown GtkButtonsType");
+ break;
+ }
+
+ /* Show dialog widgets */
+ gtk_widget_show_all (hbox);
+
+ return dialog;
+}
+