aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2000-10-09 06:38:36 +0000
committerGuy Harris <guy@alum.mit.edu>2000-10-09 06:38:36 +0000
commit677abe54e1f521aa8c562eccca0825118cb41d90 (patch)
tree00352eb04da21683ce2edd79b649c6b2ed02139e
parentfedb22f4145e731dbad704ec33c04c4b3ecf796a (diff)
Add support for modal message boxes ("simple dialog").
Make the message boxes popped up for errors when selecting a font modal, so that the user has to say "yes, I know, I'll do better next time" before hitting "OK" again, so that you don't get a pile of message boxes. svn path=/trunk/; revision=2485
-rw-r--r--gtk/gui_prefs.c13
-rw-r--r--gtk/simple_dialog.c7
-rw-r--r--simple_dialog.h12
3 files changed, 20 insertions, 12 deletions
diff --git a/gtk/gui_prefs.c b/gtk/gui_prefs.c
index c6af8bd904..a8db02a28a 100644
--- a/gtk/gui_prefs.c
+++ b/gtk/gui_prefs.c
@@ -1,7 +1,7 @@
/* gui_prefs.c
* Dialog box for GUI preferences
*
- * $Id: gui_prefs.c,v 1.20 2000/10/09 06:28:49 guy Exp $
+ * $Id: gui_prefs.c,v 1.21 2000/10/09 06:38:36 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -320,9 +320,10 @@ font_browse_ok_cb(GtkWidget *w, GtkFontSelectionDialog *fs)
font_name = g_strdup(gtk_font_selection_dialog_get_font_name(
GTK_FONT_SELECTION_DIALOG(fs)));
if (font_name == NULL) {
- /* No font was selected; let the user know, and don't let
- them accept that non-font. */
- simple_dialog(ESD_TYPE_CRIT, NULL,
+ /* No font was selected; let the user know, but don't
+ tear down the font selection dialog, so they can
+ try again. */
+ simple_dialog(ESD_TYPE_CRIT | ESD_TYPE_MODAL, NULL,
"You have not selected a font.");
return;
}
@@ -336,7 +337,7 @@ font_browse_ok_cb(GtkWidget *w, GtkFontSelectionDialog *fs)
/* Oops, that font didn't work.
Tell the user, but don't tear down the font selection
dialog, so that they can try again. */
- simple_dialog(ESD_TYPE_CRIT, NULL,
+ simple_dialog(ESD_TYPE_CRIT | ESD_TYPE_MODAL, NULL,
"The font you selected cannot be loaded.");
g_free(font_name);
@@ -349,7 +350,7 @@ font_browse_ok_cb(GtkWidget *w, GtkFontSelectionDialog *fs)
/* Oops, that font didn't work.
Tell the user, but don't tear down the font selection
dialog, so that they can try again. */
- simple_dialog(ESD_TYPE_CRIT, NULL,
+ simple_dialog(ESD_TYPE_CRIT | ESD_TYPE_MODAL, NULL,
"The font you selected doesn't have a boldface version.");
g_free(font_name);
diff --git a/gtk/simple_dialog.c b/gtk/simple_dialog.c
index 61269534a2..d0377422d0 100644
--- a/gtk/simple_dialog.c
+++ b/gtk/simple_dialog.c
@@ -1,7 +1,7 @@
/* simple_dialog.c
* Simple message dialog box routines.
*
- * $Id: simple_dialog.c,v 1.6 2000/08/23 06:56:31 guy Exp $
+ * $Id: simple_dialog.c,v 1.7 2000/10/09 06:38:36 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -76,7 +76,7 @@ simple_dialog(gint type, gint *btn_mask, gchar *msg_format, ...) {
gchar **icon;
/* Main window */
- switch (type) {
+ switch (type & ~ESD_TYPE_MODAL) {
case ESD_TYPE_WARN :
icon = icon_excl_xpm;
win = dlg_window_new("Ethereal: Warning");
@@ -92,6 +92,9 @@ simple_dialog(gint type, gint *btn_mask, gchar *msg_format, ...) {
break;
}
+ if (type & ESD_TYPE_MODAL)
+ gtk_window_set_modal(GTK_WINDOW(win), TRUE);
+
gtk_container_border_width(GTK_CONTAINER(win), 7);
gtk_object_set_data(GTK_OBJECT(win), bm_key, btn_mask);
diff --git a/simple_dialog.h b/simple_dialog.h
index 9afdf1f1e5..f952c19940 100644
--- a/simple_dialog.h
+++ b/simple_dialog.h
@@ -2,7 +2,7 @@
* Definitions for dialog box routines with toolkit-independent APIs but
* toolkit-dependent implementations.
*
- * $Id: simple_dialog.h,v 1.1 2000/01/03 06:59:09 guy Exp $
+ * $Id: simple_dialog.h,v 1.2 2000/10/09 06:38:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -32,9 +32,13 @@ extern "C" {
#endif /* __cplusplus */
/* Dialog type. */
-#define ESD_TYPE_INFO 0
-#define ESD_TYPE_WARN 1
-#define ESD_TYPE_CRIT 2
+#define ESD_TYPE_INFO 0x00
+#define ESD_TYPE_WARN 0x01
+#define ESD_TYPE_CRIT 0x02
+
+/* Flag to be ORed with the dialog type, to specify that the dialog is
+ to be modal. */
+#define ESD_TYPE_MODAL 0x04
/* Which buttons to display. */
#define ESD_BTN_OK 0