Take the "simple_dialog()" stuff out of "ui_util.h" and "gtk/ui_util.c",

and move it to "simple_dialog.h" and "gtk/simple_dialog.c".

svn path=/trunk/; revision=1414
This commit is contained in:
Guy Harris 2000-01-03 06:59:25 +00:00
parent 302c116483
commit 4096029a66
17 changed files with 253 additions and 176 deletions

View File

@ -1,7 +1,7 @@
# Makefile.am
# Automake file for Ethereal
#
# $Id: Makefile.am,v 1.141 2000/01/03 03:56:53 guy Exp $
# $Id: Makefile.am,v 1.142 2000/01/03 06:59:06 guy Exp $
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@zing.org>
@ -224,6 +224,7 @@ ethereal_SOURCES = \
register.h \
resolv.c \
resolv.h \
simple_dialog.h \
smb.h \
summary.c \
summary.h \

View File

@ -1,7 +1,7 @@
/* capture.c
* Routines for packet capture windows
*
* $Id: capture.c,v 1.87 2000/01/03 03:56:53 guy Exp $
* $Id: capture.c,v 1.88 2000/01/03 06:59:07 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -89,7 +89,7 @@
#include "file.h"
#include "capture.h"
#include "util.h"
#include "ui_util.h"
#include "simple_dialog.h"
#include "prefs.h"
#include "globals.h"

View File

@ -1,7 +1,7 @@
/* colors.c
* Definitions for color structures and routines
*
* $Id: colors.c,v 1.27 1999/12/20 06:05:07 guy Exp $
* $Id: colors.c,v 1.28 2000/01/03 06:59:07 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -41,6 +41,7 @@
#include "colors.h"
#include "file.h"
#include "dfilter.h"
#include "simple_dialog.h"
#include "ui_util.h"
extern capture_file cf;

3
file.c
View File

@ -1,7 +1,7 @@
/* file.c
* File I/O routines
*
* $Id: file.c,v 1.145 2000/01/03 03:56:54 guy Exp $
* $Id: file.c,v 1.146 2000/01/03 06:59:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -76,6 +76,7 @@
#include "file.h"
#include "menu.h"
#include "util.h"
#include "simple_dialog.h"
#include "ui_util.h"
#include "gtk/proto_draw.h"
#include "dfilter.h"

View File

@ -1,7 +1,7 @@
# Makefile.am
# Automake file for the GTK interface routines for Ethereal
#
# $Id: Makefile.am,v 1.17 1999/12/26 22:37:28 gerald Exp $
# $Id: Makefile.am,v 1.18 2000/01/03 06:59:19 guy Exp $
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@zing.org>
@ -58,6 +58,7 @@ libui_a_SOURCES = \
print_prefs.h \
proto_draw.c \
proto_draw.h \
simple_dialog.c \
stream_prefs.c \
stream_prefs.h \
summary_dlg.c \

View File

@ -1,7 +1,7 @@
/* capture_dlg.c
* Routines for packet capture windows
*
* $Id: capture_dlg.c,v 1.13 1999/12/23 09:31:09 guy Exp $
* $Id: capture_dlg.c,v 1.14 2000/01/03 06:59:19 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -75,7 +75,7 @@
#include "main.h"
#include "capture_dlg.h"
#include "prefs_dlg.h"
#include "ui_util.h"
#include "simple_dialog.h"
/* Capture callback data keys */
#define E_CAP_IFACE_KEY "cap_iface"

View File

@ -1,7 +1,7 @@
/* file_dlg.c
* Dialog boxes for handling files
*
* $Id: file_dlg.c,v 1.16 2000/01/01 04:28:45 gram Exp $
* $Id: file_dlg.c,v 1.17 2000/01/03 06:59:20 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -52,8 +52,8 @@
#include "prefs_dlg.h"
#endif
#ifndef __UI_UTIL_H__
#include "ui_util.h"
#ifndef __DIALOG_H__
#include "simple_dialog.h"
#endif
#ifndef __MENU_H__

View File

@ -1,7 +1,7 @@
/* find_dlg.c
* Routines for "find frame" window
*
* $Id: find_dlg.c,v 1.4 1999/12/09 07:19:17 guy Exp $
* $Id: find_dlg.c,v 1.5 2000/01/03 06:59:21 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -44,7 +44,7 @@
#include "find_dlg.h"
#include "prefs_dlg.h"
#include "ui_util.h"
#include "simple_dialog.h"
/* Capture callback data keys */
#define E_FIND_FILT_KEY "find_filter_te"

View File

@ -1,7 +1,7 @@
/* goto_dlg.c
* Routines for "go to frame" window
*
* $Id: goto_dlg.c,v 1.3 1999/12/09 07:19:18 guy Exp $
* $Id: goto_dlg.c,v 1.4 2000/01/03 06:59:21 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -46,7 +46,7 @@
#include "goto_dlg.h"
#include "prefs_dlg.h"
#include "ui_util.h"
#include "simple_dialog.h"
/* Capture callback data keys */
#define E_GOTO_FNUMBER_KEY "goto_fnumber_te"

View File

@ -1,6 +1,6 @@
/* main.c
*
* $Id: main.c,v 1.79 1999/12/30 23:02:56 gram Exp $
* $Id: main.c,v 1.80 2000/01/03 06:59:21 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -99,7 +99,7 @@
#include "resolv.h"
#include "follow.h"
#include "util.h"
#include "ui_util.h"
#include "simple_dialog.h"
#include "proto_draw.h"
#include "dfilter.h"
#include "keys.h"

View File

@ -1,7 +1,7 @@
/* plugins_dlg.c
* Dialog boxes for plugins
*
* $Id: plugins_dlg.c,v 1.6 1999/12/29 07:39:51 guy Exp $
* $Id: plugins_dlg.c,v 1.7 2000/01/03 06:59:23 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -40,7 +40,7 @@
#include "plugins.h"
#include "keys.h"
#include "prefs_dlg.h"
#include "ui_util.h"
#include "simple_dialog.h"
static gint selected_row;
static gchar *selected_name;

View File

@ -1,7 +1,7 @@
/* prefs_dlg.c
* Routines for handling preferences
*
* $Id: prefs_dlg.c,v 1.7 2000/01/03 06:29:39 guy Exp $
* $Id: prefs_dlg.c,v 1.8 2000/01/03 06:59:23 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -55,7 +55,7 @@
#include "stream_prefs.h"
#include "gui_prefs.h"
#include "util.h"
#include "ui_util.h"
#include "simple_dialog.h"
static void prefs_main_ok_cb(GtkWidget *, gpointer);
static void prefs_main_save_cb(GtkWidget *, gpointer);

View File

@ -1,7 +1,7 @@
/* print_dlg.c
* Dialog boxes for printing
*
* $Id: print_dlg.c,v 1.11 2000/01/03 06:28:44 guy Exp $
* $Id: print_dlg.c,v 1.12 2000/01/03 06:59:24 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -45,8 +45,8 @@
#include "prefs_dlg.h"
#endif
#ifndef __UI_UTIL_H__
#include "ui_util.h"
#ifndef __DIALOG_H__
#include "simple_dialog.h"
#endif
static void print_cmd_toggle_dest(GtkWidget *widget, gpointer data);

169
gtk/simple_dialog.c Normal file
View File

@ -0,0 +1,169 @@
/* dialog.c
* Dialog box routines.
*
* $Id: simple_dialog.c,v 1.1 2000/01/03 06:59:25 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Copyright 1998 Gerald Combs
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <glib.h>
#include <gtk/gtk.h>
#include <stdarg.h>
#include <stdio.h>
#ifdef NEED_SNPRINTF_H
# ifdef HAVE_STDARG_H
# include <stdarg.h>
# else
# include <varargs.h>
# endif
# include "snprintf.h"
#endif
#include "gtkglobals.h"
#include "simple_dialog.h"
#include "image/icon-excl.xpm"
#include "image/icon-ethereal.xpm"
static void simple_dialog_cancel_cb(GtkWidget *, gpointer);
static const gchar bm_key[] = "button mask";
/* Simple dialog function - Displays a dialog box with the supplied message
* text.
*
* Args:
* type : One of ESD_TYPE_*.
* btn_mask : The address of a gint. The value passed in determines if
* the 'Cancel' button is displayed. The button pressed by the
* user is passed back.
* msg_format : Sprintf-style format of the text displayed in the dialog.
* ... : Argument list for msg_format
*
*/
#define ESD_MAX_MSG_LEN 2048
void
simple_dialog(gint type, gint *btn_mask, gchar *msg_format, ...) {
GtkWidget *win, *main_vb, *top_hb, *type_pm, *msg_label,
*bbox, *ok_btn, *cancel_btn;
GdkPixmap *pixmap;
GdkBitmap *mask;
GtkStyle *style;
GdkColormap *cmap;
va_list ap;
gchar message[ESD_MAX_MSG_LEN];
gchar **icon;
/* Main window */
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_container_border_width(GTK_CONTAINER(win), 7);
switch (type) {
case ESD_TYPE_WARN :
gtk_window_set_title(GTK_WINDOW(win), "Ethereal: Warning");
icon = icon_excl_xpm;
break;
case ESD_TYPE_CRIT :
gtk_window_set_title(GTK_WINDOW(win), "Ethereal: Critical");
icon = icon_excl_xpm;
break;
case ESD_TYPE_INFO :
default :
icon = icon_ethereal_xpm;
gtk_window_set_title(GTK_WINDOW(win), "Ethereal: Information");
break;
}
gtk_object_set_data(GTK_OBJECT(win), bm_key, btn_mask);
/* Container for our rows */
main_vb = gtk_vbox_new(FALSE, 5);
gtk_container_border_width(GTK_CONTAINER(main_vb), 5);
gtk_container_add(GTK_CONTAINER(win), main_vb);
gtk_widget_show(main_vb);
/* Top row: Icon and message text */
top_hb = gtk_hbox_new(FALSE, 10);
gtk_container_add(GTK_CONTAINER(main_vb), top_hb);
gtk_widget_show(top_hb);
style = gtk_widget_get_style(win);
cmap = gdk_colormap_get_system();
pixmap = gdk_pixmap_colormap_create_from_xpm_d(NULL, cmap, &mask,
&style->bg[GTK_STATE_NORMAL], icon);
type_pm = gtk_pixmap_new(pixmap, mask);
gtk_misc_set_alignment (GTK_MISC (type_pm), 0.5, 0.0);
gtk_container_add(GTK_CONTAINER(top_hb), type_pm);
gtk_widget_show(type_pm);
/* Load our vararg list into the message string */
va_start(ap, msg_format);
vsnprintf(message, ESD_MAX_MSG_LEN, msg_format, ap);
msg_label = gtk_label_new(message);
gtk_label_set_justify(GTK_LABEL(msg_label), GTK_JUSTIFY_FILL);
gtk_container_add(GTK_CONTAINER(top_hb), msg_label);
gtk_widget_show(msg_label);
/* Button row */
bbox = gtk_hbutton_box_new();
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
gtk_container_add(GTK_CONTAINER(main_vb), bbox);
gtk_widget_show(bbox);
ok_btn = gtk_button_new_with_label ("OK");
gtk_signal_connect_object(GTK_OBJECT(ok_btn), "clicked",
GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT (win));
gtk_container_add(GTK_CONTAINER(bbox), ok_btn);
GTK_WIDGET_SET_FLAGS(ok_btn, GTK_CAN_DEFAULT);
gtk_widget_grab_default(ok_btn);
gtk_widget_show(ok_btn);
if (btn_mask && *btn_mask == ESD_BTN_CANCEL) {
cancel_btn = gtk_button_new_with_label("Cancel");
gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
GTK_SIGNAL_FUNC(simple_dialog_cancel_cb), (gpointer) win);
gtk_container_add(GTK_CONTAINER(bbox), cancel_btn);
GTK_WIDGET_SET_FLAGS(cancel_btn, GTK_CAN_DEFAULT);
gtk_widget_show(cancel_btn);
}
if (btn_mask)
*btn_mask = ESD_BTN_OK;
gtk_widget_show(win);
}
static void
simple_dialog_cancel_cb(GtkWidget *w, gpointer win) {
gint *btn_mask = (gint *) gtk_object_get_data(win, bm_key);
if (btn_mask)
*btn_mask = ESD_BTN_CANCEL;
gtk_widget_destroy(GTK_WIDGET(win));
}

View File

@ -1,7 +1,7 @@
/* ui_util.c
* UI utility routines
*
* $Id: ui_util.c,v 1.2 1999/12/20 06:05:15 guy Exp $
* $Id: ui_util.c,v 1.3 2000/01/03 06:59:25 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -31,24 +31,9 @@
#include <gtk/gtk.h>
#include <stdarg.h>
#include <stdio.h>
#ifdef NEED_SNPRINTF_H
# ifdef HAVE_STDARG_H
# include <stdarg.h>
# else
# include <varargs.h>
# endif
# include "snprintf.h"
#endif
#include "gtkglobals.h"
#include "ui_util.h"
#include "image/icon-excl.xpm"
#include "image/icon-ethereal.xpm"
/* Set the name of the top-level window and its icon.
XXX - for some reason, KWM insists on making the icon name be just
the window name, in parentheses; perhaps it's trying to imitate
@ -80,122 +65,3 @@ reactivate_window(GtkWidget *win)
gdk_window_show(win->window);
gdk_window_raise(win->window);
}
static void simple_dialog_cancel_cb(GtkWidget *, gpointer);
static const gchar bm_key[] = "button mask";
/* Simple dialog function - Displays a dialog box with the supplied message
* text.
*
* Args:
* type : One of ESD_TYPE_*.
* btn_mask : The address of a gint. The value passed in determines if
* the 'Cancel' button is displayed. The button pressed by the
* user is passed back.
* msg_format : Sprintf-style format of the text displayed in the dialog.
* ... : Argument list for msg_format
*
*/
#define ESD_MAX_MSG_LEN 2048
void
simple_dialog(gint type, gint *btn_mask, gchar *msg_format, ...) {
GtkWidget *win, *main_vb, *top_hb, *type_pm, *msg_label,
*bbox, *ok_btn, *cancel_btn;
GdkPixmap *pixmap;
GdkBitmap *mask;
GtkStyle *style;
GdkColormap *cmap;
va_list ap;
gchar message[ESD_MAX_MSG_LEN];
gchar **icon;
/* Main window */
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_container_border_width(GTK_CONTAINER(win), 7);
switch (type) {
case ESD_TYPE_WARN :
gtk_window_set_title(GTK_WINDOW(win), "Ethereal: Warning");
icon = icon_excl_xpm;
break;
case ESD_TYPE_CRIT :
gtk_window_set_title(GTK_WINDOW(win), "Ethereal: Critical");
icon = icon_excl_xpm;
break;
case ESD_TYPE_INFO :
default :
icon = icon_ethereal_xpm;
gtk_window_set_title(GTK_WINDOW(win), "Ethereal: Information");
break;
}
gtk_object_set_data(GTK_OBJECT(win), bm_key, btn_mask);
/* Container for our rows */
main_vb = gtk_vbox_new(FALSE, 5);
gtk_container_border_width(GTK_CONTAINER(main_vb), 5);
gtk_container_add(GTK_CONTAINER(win), main_vb);
gtk_widget_show(main_vb);
/* Top row: Icon and message text */
top_hb = gtk_hbox_new(FALSE, 10);
gtk_container_add(GTK_CONTAINER(main_vb), top_hb);
gtk_widget_show(top_hb);
style = gtk_widget_get_style(win);
cmap = gdk_colormap_get_system();
pixmap = gdk_pixmap_colormap_create_from_xpm_d(NULL, cmap, &mask,
&style->bg[GTK_STATE_NORMAL], icon);
type_pm = gtk_pixmap_new(pixmap, mask);
gtk_misc_set_alignment (GTK_MISC (type_pm), 0.5, 0.0);
gtk_container_add(GTK_CONTAINER(top_hb), type_pm);
gtk_widget_show(type_pm);
/* Load our vararg list into the message string */
va_start(ap, msg_format);
vsnprintf(message, ESD_MAX_MSG_LEN, msg_format, ap);
msg_label = gtk_label_new(message);
gtk_label_set_justify(GTK_LABEL(msg_label), GTK_JUSTIFY_FILL);
gtk_container_add(GTK_CONTAINER(top_hb), msg_label);
gtk_widget_show(msg_label);
/* Button row */
bbox = gtk_hbutton_box_new();
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
gtk_container_add(GTK_CONTAINER(main_vb), bbox);
gtk_widget_show(bbox);
ok_btn = gtk_button_new_with_label ("OK");
gtk_signal_connect_object(GTK_OBJECT(ok_btn), "clicked",
GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT (win));
gtk_container_add(GTK_CONTAINER(bbox), ok_btn);
GTK_WIDGET_SET_FLAGS(ok_btn, GTK_CAN_DEFAULT);
gtk_widget_grab_default(ok_btn);
gtk_widget_show(ok_btn);
if (btn_mask && *btn_mask == ESD_BTN_CANCEL) {
cancel_btn = gtk_button_new_with_label("Cancel");
gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
GTK_SIGNAL_FUNC(simple_dialog_cancel_cb), (gpointer) win);
gtk_container_add(GTK_CONTAINER(bbox), cancel_btn);
GTK_WIDGET_SET_FLAGS(cancel_btn, GTK_CAN_DEFAULT);
gtk_widget_show(cancel_btn);
}
if (btn_mask)
*btn_mask = ESD_BTN_OK;
gtk_widget_show(win);
}
static void
simple_dialog_cancel_cb(GtkWidget *w, gpointer win) {
gint *btn_mask = (gint *) gtk_object_get_data(win, bm_key);
if (btn_mask)
*btn_mask = ESD_BTN_CANCEL;
gtk_widget_destroy(GTK_WIDGET(win));
}

54
simple_dialog.h Normal file
View File

@ -0,0 +1,54 @@
/* simple_dialog.h
* 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 $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Copyright 1998 Gerald Combs
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __DIALOG_H__
#define __DIALOG_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Dialog type. */
#define ESD_TYPE_INFO 0
#define ESD_TYPE_WARN 1
#define ESD_TYPE_CRIT 2
/* Which buttons to display. */
#define ESD_BTN_OK 0
#define ESD_BTN_CANCEL 1
#if __GNUC__ == 2
void simple_dialog(gint, gint *, gchar *, ...)
__attribute__((format (printf, 3, 4)));
#else
void simple_dialog(gint, gint *, gchar *, ...);
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __DIALOG_H__ */

View File

@ -1,7 +1,7 @@
/* ui_util.h
* Definitions for UI utility routines
*
* $Id: ui_util.h,v 1.2 1999/12/20 06:05:08 guy Exp $
* $Id: ui_util.h,v 1.3 2000/01/03 06:59:10 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -40,22 +40,6 @@ void set_main_window_name(gchar *);
pop up the existing one rather than creating a new one. */
void reactivate_window(GtkWidget *);
/* Dialog type. */
#define ESD_TYPE_INFO 0
#define ESD_TYPE_WARN 1
#define ESD_TYPE_CRIT 2
/* Which buttons to display. */
#define ESD_BTN_OK 0
#define ESD_BTN_CANCEL 1
#if __GNUC__ == 2
void simple_dialog(gint, gint *, gchar *, ...)
__attribute__((format (printf, 3, 4)));
#else
void simple_dialog(gint, gint *, gchar *, ...);
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */