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
This commit is contained in:
Guy Harris 2000-10-09 06:38:36 +00:00
parent fedb22f414
commit 677abe54e1
3 changed files with 20 additions and 12 deletions

View File

@ -1,7 +1,7 @@
/* gui_prefs.c /* gui_prefs.c
* Dialog box for GUI preferences * 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 * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org> * 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( font_name = g_strdup(gtk_font_selection_dialog_get_font_name(
GTK_FONT_SELECTION_DIALOG(fs))); GTK_FONT_SELECTION_DIALOG(fs)));
if (font_name == NULL) { if (font_name == NULL) {
/* No font was selected; let the user know, and don't let /* No font was selected; let the user know, but don't
them accept that non-font. */ tear down the font selection dialog, so they can
simple_dialog(ESD_TYPE_CRIT, NULL, try again. */
simple_dialog(ESD_TYPE_CRIT | ESD_TYPE_MODAL, NULL,
"You have not selected a font."); "You have not selected a font.");
return; return;
} }
@ -336,7 +337,7 @@ font_browse_ok_cb(GtkWidget *w, GtkFontSelectionDialog *fs)
/* Oops, that font didn't work. /* Oops, that font didn't work.
Tell the user, but don't tear down the font selection Tell the user, but don't tear down the font selection
dialog, so that they can try again. */ 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."); "The font you selected cannot be loaded.");
g_free(font_name); g_free(font_name);
@ -349,7 +350,7 @@ font_browse_ok_cb(GtkWidget *w, GtkFontSelectionDialog *fs)
/* Oops, that font didn't work. /* Oops, that font didn't work.
Tell the user, but don't tear down the font selection Tell the user, but don't tear down the font selection
dialog, so that they can try again. */ 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."); "The font you selected doesn't have a boldface version.");
g_free(font_name); g_free(font_name);

View File

@ -1,7 +1,7 @@
/* simple_dialog.c /* simple_dialog.c
* Simple message dialog box routines. * 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 * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org> * By Gerald Combs <gerald@zing.org>
@ -76,7 +76,7 @@ simple_dialog(gint type, gint *btn_mask, gchar *msg_format, ...) {
gchar **icon; gchar **icon;
/* Main window */ /* Main window */
switch (type) { switch (type & ~ESD_TYPE_MODAL) {
case ESD_TYPE_WARN : case ESD_TYPE_WARN :
icon = icon_excl_xpm; icon = icon_excl_xpm;
win = dlg_window_new("Ethereal: Warning"); win = dlg_window_new("Ethereal: Warning");
@ -92,6 +92,9 @@ simple_dialog(gint type, gint *btn_mask, gchar *msg_format, ...) {
break; break;
} }
if (type & ESD_TYPE_MODAL)
gtk_window_set_modal(GTK_WINDOW(win), TRUE);
gtk_container_border_width(GTK_CONTAINER(win), 7); gtk_container_border_width(GTK_CONTAINER(win), 7);
gtk_object_set_data(GTK_OBJECT(win), bm_key, btn_mask); gtk_object_set_data(GTK_OBJECT(win), bm_key, btn_mask);

View File

@ -2,7 +2,7 @@
* Definitions for dialog box routines with toolkit-independent APIs but * Definitions for dialog box routines with toolkit-independent APIs but
* toolkit-dependent implementations. * 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 * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org> * By Gerald Combs <gerald@zing.org>
@ -32,9 +32,13 @@ extern "C" {
#endif /* __cplusplus */ #endif /* __cplusplus */
/* Dialog type. */ /* Dialog type. */
#define ESD_TYPE_INFO 0 #define ESD_TYPE_INFO 0x00
#define ESD_TYPE_WARN 1 #define ESD_TYPE_WARN 0x01
#define ESD_TYPE_CRIT 2 #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. */ /* Which buttons to display. */
#define ESD_BTN_OK 0 #define ESD_BTN_OK 0