From 59938a45fe143d4b4f862cf2dcebe66d727de44e Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Fri, 26 Sep 2003 02:09:44 +0000 Subject: Assorted GUI cleanups. svn path=/trunk/; revision=8544 --- gtk/bootp_stat.c | 94 ++++++++++++++++++++++++++----------- gtk/dcerpc_stat.c | 92 +++++++++++++++++++++--------------- gtk/fc_stat.c | 102 +++++++++++++++++++++++++++++----------- gtk/http_stat.c | 90 +++++++++++++++++++++++++---------- gtk/io_stat.c | 18 ++++--- gtk/mgcp_stat.c | 84 +++++++++++++++++++++++++-------- gtk/rpc_stat.c | 129 +++++++++++++++++++++++++++++++++++++-------------- gtk/rtp_analysis.c | 5 +- gtk/rtp_stream_dlg.c | 4 +- gtk/smb_stat.c | 102 +++++++++++++++++++++++++++++----------- gtk/wsp_stat.c | 90 +++++++++++++++++++++++++---------- 11 files changed, 580 insertions(+), 230 deletions(-) (limited to 'gtk') diff --git a/gtk/bootp_stat.c b/gtk/bootp_stat.c index b72bfd4178..eeabe1be3f 100644 --- a/gtk/bootp_stat.c +++ b/gtk/bootp_stat.c @@ -1,7 +1,7 @@ /* bootp_stat.c * boop_stat 2003 Jean-Michel FAYARD * - * $Id: bootp_stat.c,v 1.4 2003/09/24 02:36:34 guy Exp $ + * $Id: bootp_stat.c,v 1.5 2003/09/26 02:09:43 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -32,6 +32,7 @@ #include "epan/epan.h" #include "menu.h" #include "simple_dialog.h" +#include "dlg_utils.h" #include "tap.h" #include "../register.h" #include "../globals.h" @@ -57,10 +58,8 @@ typedef struct _dhcp_message_type_t { dhcpstat_t *sp; /* entire program interface */ } dhcp_message_type_t; -static GtkWidget *dlg=NULL, *dlg_box; -static GtkWidget *filter_box; -static GtkWidget *filter_label, *filter_entry; -static GtkWidget *start_button; +static GtkWidget *dlg=NULL; +static GtkWidget *filter_entry; static void dhcp_free_hash( gpointer key _U_ , gpointer value, gpointer user_data _U_ ) @@ -197,7 +196,7 @@ gtk_dhcpstat_init(char *optarg) char *filter=NULL; char *title=NULL; GString *error_string; - GtkWidget *message_type_fr ; + GtkWidget *message_type_fr; if (!strncmp (optarg, "bootp,stat,", 11)){ filter=optarg+11; @@ -210,18 +209,18 @@ gtk_dhcpstat_init(char *optarg) if(filter){ sp->filter=g_malloc(strlen(filter)+1); strcpy(sp->filter,filter); - title=g_strdup_printf("DHCP Stats with filter: %s", filter); + title=g_strdup_printf("DHCP statistics with filter: %s", filter); } else { sp->filter=NULL; - title=g_strdup("DHCP Stats"); + title=g_strdup("DHCP statistics"); } + /* top level window */ sp->win = gtk_window_new( GTK_WINDOW_TOPLEVEL); gtk_window_set_title( GTK_WINDOW(sp->win), title ); g_free(title); SIGNAL_CONNECT( sp->win, "destroy", win_destroy_cb, sp); - /* Status Codes frame */ message_type_fr = gtk_frame_new("DHCP Message Type"); gtk_container_add(GTK_CONTAINER(sp->win), message_type_fr); @@ -261,16 +260,14 @@ gtk_dhcpstat_init(char *optarg) static void dhcp_start_button_clicked(GtkWidget *item _U_, gpointer data _U_) { + GString *str; char *filter; - char str[256]; + str = g_string_new("dhcp,stat,"); filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry)); - if(filter[0]==0){ - gtk_dhcpstat_init("dhcp,stat,"); - } else { - sprintf(str, "dhcp,stat,%s", filter); - gtk_dhcpstat_init(str); - } + str = g_string_append(str, filter); + gtk_dhcpstat_init(str->str); + g_string_free(str, TRUE); } static void @@ -279,46 +276,91 @@ dlg_destroy_cb(void) dlg=NULL; } +static void +dlg_cancel_cb(GtkWidget *cancel_bt _U_, gpointer parent_w) +{ + gtk_widget_destroy(GTK_WIDGET(parent_w)); +} + static void gtk_dhcpstat_cb(GtkWidget *w _U_, gpointer d _U_) { + GtkWidget *dlg_box; + GtkWidget *filter_box, *filter_label; + GtkWidget *bbox, *start_button, *cancel_button; + /* if the window is already open, bring it to front */ if(dlg){ gdk_window_raise(dlg->window); return; } - dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(dlg), "WSP Statistics"); + dlg=dlg_window_new("Ethereal: Compute DHCP statistics"); SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL); - dlg_box=gtk_vbox_new(FALSE, 0); + + dlg_box=gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(dlg_box), 10); gtk_container_add(GTK_CONTAINER(dlg), dlg_box); gtk_widget_show(dlg_box); + /* Filter box */ + filter_box=gtk_hbox_new(FALSE, 3); - /* filter box */ - filter_box=gtk_hbox_new(FALSE, 10); /* Filter label */ - gtk_container_set_border_width(GTK_CONTAINER(filter_box), 10); filter_label=gtk_label_new("Filter:"); gtk_box_pack_start(GTK_BOX(filter_box), filter_label, FALSE, FALSE, 0); gtk_widget_show(filter_label); - filter_entry=gtk_entry_new_with_max_length(250); - gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, FALSE, FALSE, 0); + /* Filter entry */ + filter_entry=gtk_entry_new(); + gtk_widget_set_usize(filter_entry, 300, -2); + gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, TRUE, TRUE, 0); gtk_widget_show(filter_entry); gtk_box_pack_start(GTK_BOX(dlg_box), filter_box, TRUE, TRUE, 0); gtk_widget_show(filter_box); + /* button box */ + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_DEFAULT_STYLE); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX(dlg_box), bbox, FALSE, FALSE, 0); + gtk_widget_show(bbox); /* the start button */ start_button=gtk_button_new_with_label("Create Stat"); SIGNAL_CONNECT_OBJECT(start_button, "clicked", dhcp_start_button_clicked, NULL); - gtk_box_pack_start(GTK_BOX(dlg_box), start_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(bbox), start_button, TRUE, TRUE, 0); + GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); + gtk_widget_grab_default(start_button); gtk_widget_show(start_button); +#if GTK_MAJOR_VERSION < 2 + cancel_button=gtk_button_new_with_label("Cancel"); +#else + cancel_button=gtk_button_new_from_stock(GTK_STOCK_CANCEL); +#endif + SIGNAL_CONNECT(cancel_button, "clicked", dlg_cancel_cb, dlg); + GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), cancel_button, TRUE, TRUE, 0); + gtk_widget_show(cancel_button); + + /* Catch the "activate" signal on the filter text entry, so that + if the user types Return there, we act as if the "Create Stat" + button had been selected, as happens if Return is typed if + some widget that *doesn't* handle the Return key has the input + focus. */ + dlg_set_activate(filter_entry, start_button); + + /* Catch the "key_press_event" signal in the window, so that we can + catch the ESC key being pressed and act as if the "Cancel" button + had been selected. */ + dlg_set_cancel(dlg, cancel_button); + + /* Give the initial focus to the "Filter" entry box. */ + gtk_widget_grab_focus(filter_entry); + gtk_widget_show_all(dlg); } @@ -332,6 +374,6 @@ register_tap_listener_gtkdhcpstat(void) void register_tap_menu_gtkdhcpstat(void) { - register_tap_menu_item("Statistics/Watch protocol/BOOTP-DHCP", + register_tap_menu_item("Statistics/Watch protocol/BOOTP-DHCP...", gtk_dhcpstat_cb, NULL, NULL); } diff --git a/gtk/dcerpc_stat.c b/gtk/dcerpc_stat.c index 816f56524a..5d341a981d 100644 --- a/gtk/dcerpc_stat.c +++ b/gtk/dcerpc_stat.c @@ -1,7 +1,7 @@ /* dcerpc_stat.c * dcerpc_stat 2002 Ronnie Sahlberg * - * $Id: dcerpc_stat.c,v 1.23 2003/09/24 02:36:34 guy Exp $ + * $Id: dcerpc_stat.c,v 1.24 2003/09/26 02:09:43 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -80,16 +80,23 @@ uuid_equal(e_uuid_t *uuid1, e_uuid_t *uuid2) } return 1; } - + +static void +dcerpcstat_set_title(rpcstat_t *rs) +{ + char *title; + + title = g_strdup_printf("DCE-RPC Service Response Time statistics for %s version %d.%d: %s", + rs->prog, rs->ver&0xff, rs->ver>>8, cf_get_display_name(&cfile)); + gtk_window_set_title(GTK_WINDOW(rs->win), title); + g_free(title); +} static void dcerpcstat_reset(rpcstat_t *rs) { - char title_string[256]; reset_srt_table_data(&rs->srt_table); - - snprintf(title_string, 255, "DCE-RPC Service Response Time statistics for %s version %d.%d : %s", rs->prog, rs->ver&0xff, rs->ver>>8, cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(rs->win), title_string); + dcerpcstat_set_title(rs); } @@ -212,8 +219,7 @@ gtk_dcerpcstat_init(char *optarg) rs->win=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(rs->win), 550, 400); - snprintf(title_string, 255, "DCE-RPC Service Response Time statistics for %s version %d.%d : %s", rs->prog, rs->ver&0xff, rs->ver>>8, cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(rs->win), title_string); + dcerpcstat_set_title(rs); SIGNAL_CONNECT(rs->win, "destroy", win_destroy_cb, rs); vbox=gtk_vbox_new(FALSE, 0); @@ -276,13 +282,10 @@ gtk_dcerpcstat_init(char *optarg) static e_uuid_t *dcerpc_uuid_program=NULL; static guint16 dcerpc_version; -static GtkWidget *dlg=NULL, *dlg_box; -static GtkWidget *prog_box; -static GtkWidget *prog_label, *prog_opt, *prog_menu; -static GtkWidget *vers_label, *vers_opt, *vers_menu; -static GtkWidget *filter_box; -static GtkWidget *filter_label, *filter_entry; -static GtkWidget *start_button; +static GtkWidget *dlg=NULL; +static GtkWidget *prog_menu; +static GtkWidget *vers_opt, *vers_menu; +static GtkWidget *filter_entry; static dcerpc_uuid_key *current_uuid_key=NULL; static dcerpc_uuid_value *current_uuid_value=NULL; static dcerpc_uuid_key *new_uuid_key=NULL; @@ -292,18 +295,26 @@ static dcerpc_uuid_value *new_uuid_value=NULL; static void dcerpcstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_) { + GString *str; char *filter; - char str[256]; + str = g_string_new("dcerpc,srt"); + g_string_sprintfa(str, + ",%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x,%d.%d", + dcerpc_uuid_program->Data1, dcerpc_uuid_program->Data2, + dcerpc_uuid_program->Data3, + dcerpc_uuid_program->Data4[0], dcerpc_uuid_program->Data4[1], + dcerpc_uuid_program->Data4[2], dcerpc_uuid_program->Data4[3], + dcerpc_uuid_program->Data4[4], dcerpc_uuid_program->Data4[5], + dcerpc_uuid_program->Data4[6], dcerpc_uuid_program->Data4[7], + dcerpc_version&0xff, dcerpc_version>>8); filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry)); - if(filter[0]==0){ - sprintf(str, "dcerpc,srt,%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x,%d.%d",dcerpc_uuid_program->Data1,dcerpc_uuid_program->Data2,dcerpc_uuid_program->Data3,dcerpc_uuid_program->Data4[0],dcerpc_uuid_program->Data4[1],dcerpc_uuid_program->Data4[2],dcerpc_uuid_program->Data4[3],dcerpc_uuid_program->Data4[4],dcerpc_uuid_program->Data4[5],dcerpc_uuid_program->Data4[6],dcerpc_uuid_program->Data4[7],dcerpc_version&0xff,dcerpc_version>>8); - - } else { - sprintf(str, "dcerpc,srt,%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x,%d.%d,%s",dcerpc_uuid_program->Data1,dcerpc_uuid_program->Data2,dcerpc_uuid_program->Data3,dcerpc_uuid_program->Data4[0],dcerpc_uuid_program->Data4[1],dcerpc_uuid_program->Data4[2],dcerpc_uuid_program->Data4[3],dcerpc_uuid_program->Data4[4],dcerpc_uuid_program->Data4[5],dcerpc_uuid_program->Data4[6],dcerpc_uuid_program->Data4[7],dcerpc_version&0xff,dcerpc_version>>8, filter); + if(filter[0]!=0){ + g_string_sprintfa(str, ",%s", filter); } - gtk_dcerpcstat_init(str); + gtk_dcerpcstat_init(str->str); + g_string_free(str, TRUE); } @@ -444,7 +455,11 @@ dlg_cancel_cb(GtkWidget *cancel_bt _U_, gpointer parent_w) static void gtk_dcerpcstat_cb(GtkWidget *w _U_, gpointer d _U_) { - GtkWidget *bbox, *cancel_button; + GtkWidget *dlg_box; + GtkWidget *prog_box, *prog_label, *prog_opt; + GtkWidget *vers_label; + GtkWidget *filter_box, *filter_label; + GtkWidget *bbox, *start_button, *cancel_button; char *filter; /* if the window is already open, bring it to front and @@ -454,14 +469,17 @@ gtk_dcerpcstat_cb(GtkWidget *w _U_, gpointer d _U_) return; } - dlg=dlg_window_new("Ethereal: DCE-RPC SRT Statistics"); + dlg=dlg_window_new("Ethereal: Compute DCE-RPC SRT statistics"); SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL); - dlg_box=gtk_vbox_new(FALSE, 0); + + dlg_box=gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(dlg_box), 10); gtk_container_add(GTK_CONTAINER(dlg), dlg_box); gtk_widget_show(dlg_box); + /* Program box */ + prog_box=gtk_hbox_new(FALSE, 3); - prog_box=gtk_hbox_new(FALSE, 10); /* Program label */ gtk_container_set_border_width(GTK_CONTAINER(prog_box), 10); prog_label=gtk_label_new("Program:"); @@ -484,7 +502,6 @@ gtk_dcerpcstat_cb(GtkWidget *w _U_, gpointer d _U_) current_uuid_value=new_uuid_value; } while(new_uuid_key!=NULL); - gtk_option_menu_set_menu(GTK_OPTION_MENU(prog_opt), prog_menu); gtk_box_pack_start(GTK_BOX(prog_box), prog_opt, TRUE, TRUE, 0); gtk_widget_show(prog_opt); @@ -507,17 +524,18 @@ gtk_dcerpcstat_cb(GtkWidget *w _U_, gpointer d _U_) gtk_box_pack_start(GTK_BOX(dlg_box), prog_box, TRUE, TRUE, 0); gtk_widget_show(prog_box); + /* Filter box */ + filter_box=gtk_hbox_new(FALSE, 3); - /* filter box */ - filter_box=gtk_hbox_new(FALSE, 10); /* Filter label */ - gtk_container_set_border_width(GTK_CONTAINER(filter_box), 10); filter_label=gtk_label_new("Filter:"); gtk_box_pack_start(GTK_BOX(filter_box), filter_label, FALSE, FALSE, 0); gtk_widget_show(filter_label); - filter_entry=gtk_entry_new_with_max_length(250); - gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, FALSE, FALSE, 0); + /* Filter entry */ + filter_entry=gtk_entry_new(); + gtk_widget_set_usize(filter_entry, 300, -2); + gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, TRUE, TRUE, 0); filter=gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget)); if(filter){ gtk_entry_set_text(GTK_ENTRY(filter_entry), filter); @@ -527,19 +545,19 @@ gtk_dcerpcstat_cb(GtkWidget *w _U_, gpointer d _U_) gtk_box_pack_start(GTK_BOX(dlg_box), filter_box, TRUE, TRUE, 0); gtk_widget_show(filter_box); - + /* button box */ bbox=gtk_hbutton_box_new(); - gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_DEFAULT_STYLE); gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - gtk_container_add(GTK_CONTAINER(dlg_box), bbox); + gtk_box_pack_start(GTK_BOX(dlg_box), bbox, FALSE, FALSE, 0); gtk_widget_show(bbox); /* the start button */ start_button=gtk_button_new_with_label("Create Stat"); SIGNAL_CONNECT_OBJECT(start_button, "clicked", dcerpcstat_start_button_clicked, NULL); - GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(bbox), start_button, TRUE, TRUE, 0); + GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); gtk_widget_grab_default(start_button); gtk_widget_show(start_button); @@ -580,6 +598,6 @@ register_tap_listener_gtkdcerpcstat(void) void register_tap_menu_gtkdcerpcstat(void) { - register_tap_menu_item("Statistics/Service Response Time/DCE-RPC", + register_tap_menu_item("Statistics/Service Response Time/DCE-RPC...", gtk_dcerpcstat_cb, NULL, NULL); } diff --git a/gtk/fc_stat.c b/gtk/fc_stat.c index 2de4a8b40e..72b38c49b6 100644 --- a/gtk/fc_stat.c +++ b/gtk/fc_stat.c @@ -1,7 +1,7 @@ /* fc_stat.c * fc_stat 2003 Ronnie Sahlberg * - * $Id: fc_stat.c,v 1.11 2003/09/24 02:36:34 guy Exp $ + * $Id: fc_stat.c,v 1.12 2003/09/26 02:09:44 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -44,6 +44,7 @@ #include "../timestats.h" #include "compat_macros.h" #include "../simple_dialog.h" +#include "dlg_utils.h" #include "../file.h" #include "../globals.h" #include "service_response_time_table.h" @@ -56,17 +57,24 @@ typedef struct _fcstat_t { srt_stat_table fc_srt_table; } fcstat_t; +static void +fcstat_set_title(fcstat_t *fc) +{ + char *title; + title = g_strdup_printf("Fibre Channel Service Response Time statistics: %s", + cf_get_display_name(&cfile)); + gtk_window_set_title(GTK_WINDOW(fc->win), title); + g_free(title); +} static void fcstat_reset(void *pfc) { fcstat_t *fc=(fcstat_t *)pfc; - char title[256]; reset_srt_table_data(&fc->fc_srt_table); - snprintf(title, 255, "Fibre Channel Service Response Time statistics: %s", cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(fc->win), title); + fcstat_set_title(fc); } static int @@ -126,7 +134,6 @@ gtk_fcstat_init(char *optarg) GString *error_string; int i; GtkWidget *vbox; - char title[256]; if(!strncmp(optarg,"fc,srt,",7)){ filter=optarg+7; @@ -138,8 +145,7 @@ gtk_fcstat_init(char *optarg) fc->win=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(fc->win), 550, 400); - snprintf(title, 255, "Fibre Channel Service Response Time statistics: %s", cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(fc->win), title); + fcstat_set_title(fc); SIGNAL_CONNECT(fc->win, "destroy", win_destroy_cb, fc); vbox=gtk_vbox_new(FALSE, 0); @@ -184,10 +190,8 @@ gtk_fcstat_init(char *optarg) -static GtkWidget *dlg=NULL, *dlg_box; -static GtkWidget *filter_box; -static GtkWidget *filter_label, *filter_entry; -static GtkWidget *start_button; +static GtkWidget *dlg=NULL; +static GtkWidget *filter_entry; static void dlg_destroy_cb(void) @@ -195,24 +199,33 @@ dlg_destroy_cb(void) dlg=NULL; } +static void +dlg_cancel_cb(GtkWidget *cancel_bt _U_, gpointer parent_w) +{ + gtk_widget_destroy(GTK_WIDGET(parent_w)); +} + static void fcstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_) { + GString *str; char *filter; - char str[256]; + str = g_string_new("fc,srt"); filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry)); - if(filter[0]==0){ - gtk_fcstat_init("fc,srt"); - } else { - sprintf(str,"fc,srt,%s", filter); - gtk_fcstat_init(str); + if(filter[0]!=0){ + g_string_sprintfa(str,",%s", filter); } + gtk_fcstat_init(str->str); + g_string_free(str, TRUE); } static void gtk_fcstat_cb(GtkWidget *w _U_, gpointer d _U_) { + GtkWidget *dlg_box; + GtkWidget *filter_box, *filter_label; + GtkWidget *bbox, *start_button, *cancel_button; char *filter; /* if the window is already open, bring it to front */ @@ -221,24 +234,26 @@ gtk_fcstat_cb(GtkWidget *w _U_, gpointer d _U_) return; } - dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(dlg), "Fibre Channel Service Response Time statistics"); + dlg=dlg_window_new("Ethereal: Compute Fibre Channel Service Response Time statistics"); SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL); - dlg_box=gtk_vbox_new(FALSE, 0); + + dlg_box=gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(dlg_box), 10); gtk_container_add(GTK_CONTAINER(dlg), dlg_box); gtk_widget_show(dlg_box); + /* Filter box */ + filter_box=gtk_hbox_new(FALSE, 3); - /* filter box */ - filter_box=gtk_hbox_new(FALSE, 10); /* Filter label */ - gtk_container_set_border_width(GTK_CONTAINER(filter_box), 10); filter_label=gtk_label_new("Filter:"); gtk_box_pack_start(GTK_BOX(filter_box), filter_label, FALSE, FALSE, 0); gtk_widget_show(filter_label); - filter_entry=gtk_entry_new_with_max_length(250); - gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, FALSE, FALSE, 0); + /* Filter entry */ + filter_entry=gtk_entry_new(); + gtk_widget_set_usize(filter_entry, 300, -2); + gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, TRUE, TRUE, 0); filter=gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget)); if(filter){ gtk_entry_set_text(GTK_ENTRY(filter_entry), filter); @@ -248,14 +263,47 @@ gtk_fcstat_cb(GtkWidget *w _U_, gpointer d _U_) gtk_box_pack_start(GTK_BOX(dlg_box), filter_box, TRUE, TRUE, 0); gtk_widget_show(filter_box); + /* button box */ + bbox=gtk_hbutton_box_new(); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_DEFAULT_STYLE); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX(dlg_box), bbox, FALSE, FALSE, 0); + gtk_widget_show(bbox); /* the start button */ start_button=gtk_button_new_with_label("Create Stat"); SIGNAL_CONNECT_OBJECT(start_button, "clicked", fcstat_start_button_clicked, NULL); - gtk_box_pack_start(GTK_BOX(dlg_box), start_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(bbox), start_button, TRUE, TRUE, 0); + GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); + gtk_widget_grab_default(start_button); gtk_widget_show(start_button); +#if GTK_MAJOR_VERSION < 2 + cancel_button=gtk_button_new_with_label("Cancel"); +#else + cancel_button=gtk_button_new_from_stock(GTK_STOCK_CANCEL); +#endif + SIGNAL_CONNECT(cancel_button, "clicked", dlg_cancel_cb, dlg); + GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), cancel_button, TRUE, TRUE, 0); + gtk_widget_show(cancel_button); + + /* Catch the "activate" signal on the filter text entry, so that + if the user types Return there, we act as if the "Create Stat" + button had been selected, as happens if Return is typed if some + widget that *doesn't* handle the Return key has the input + focus. */ + dlg_set_activate(filter_entry, start_button); + + /* Catch the "key_press_event" signal in the window, so that we can + catch the ESC key being pressed and act as if the "Cancel" button + had been selected. */ + dlg_set_cancel(dlg, cancel_button); + + /* Give the initial focus to the "Filter" entry box. */ + gtk_widget_grab_focus(filter_entry); + gtk_widget_show_all(dlg); } @@ -268,6 +316,6 @@ register_tap_listener_gtkfcstat(void) void register_tap_menu_gtkfcstat(void) { - register_tap_menu_item("Statistics/Service Response Time/Fibre Channel", + register_tap_menu_item("Statistics/Service Response Time/Fibre Channel...", gtk_fcstat_cb, NULL, NULL); } diff --git a/gtk/http_stat.c b/gtk/http_stat.c index 158f537525..5eb30b5132 100644 --- a/gtk/http_stat.c +++ b/gtk/http_stat.c @@ -1,7 +1,7 @@ /* http_stat.c * http_stat 2003 Jean-Michel FAYARD * - * $Id: http_stat.c,v 1.5 2003/09/24 02:36:34 guy Exp $ + * $Id: http_stat.c,v 1.6 2003/09/26 02:09:44 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -31,6 +31,7 @@ #include "epan/epan.h" #include "menu.h" #include "simple_dialog.h" +#include "dlg_utils.h" #include "tap.h" #include "../register.h" #include "../globals.h" @@ -77,10 +78,8 @@ typedef struct _http_request_methode_t { httpstat_t *sp; } http_request_methode_t; -static GtkWidget *dlg=NULL, *dlg_box; -static GtkWidget *filter_box; -static GtkWidget *filter_label, *filter_entry; -static GtkWidget *start_button; +static GtkWidget *dlg=NULL; +static GtkWidget *filter_entry; static const value_string vals_status_code[] = { { 100, "Continue" }, @@ -389,10 +388,10 @@ gtk_httpstat_init(char *optarg) if(filter){ sp->filter=g_malloc(strlen(filter)+1); strcpy(sp->filter,filter); - title=g_strdup_printf("HTTP Stats with filter: %s", filter); + title=g_strdup_printf("HTTP statistics with filter: %s", filter); } else { sp->filter=NULL; - title=g_strdup("HTTP Stats"); + title=g_strdup("HTTP statistics"); } /* top level window */ @@ -506,16 +505,14 @@ gtk_httpstat_init(char *optarg) static void httpstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_) { + GString *str; char *filter; - char str[256]; + str = g_string_new("http,stat,"); filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry)); - if(filter[0]==0){ - gtk_httpstat_init("http,stat,"); - } else { - sprintf(str, "http,stat,%s", filter); - gtk_httpstat_init(str); - } + str = g_string_append(str, filter); + gtk_httpstat_init(str->str); + g_string_free(str, TRUE); } static void @@ -524,46 +521,91 @@ dlg_destroy_cb(void) dlg=NULL; } +static void +dlg_cancel_cb(GtkWidget *cancel_bt _U_, gpointer parent_w) +{ + gtk_widget_destroy(GTK_WIDGET(parent_w)); +} + static void gtk_httpstat_cb(GtkWidget *w _U_, gpointer d _U_) { + GtkWidget *dlg_box; + GtkWidget *filter_box, *filter_label; + GtkWidget *bbox, *start_button, *cancel_button; + /* if the window is already open, bring it to front */ if(dlg){ gdk_window_raise(dlg->window); return; } - dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(dlg), "HTTP Statistics"); + dlg=dlg_window_new("Ethereal: Compute HTTP statistics"); SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL); - dlg_box=gtk_vbox_new(FALSE, 0); + + dlg_box=gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(dlg_box), 10); gtk_container_add(GTK_CONTAINER(dlg), dlg_box); gtk_widget_show(dlg_box); + /* Filter box */ + filter_box=gtk_hbox_new(FALSE, 3); - /* filter box */ - filter_box=gtk_hbox_new(FALSE, 10); /* Filter label */ - gtk_container_set_border_width(GTK_CONTAINER(filter_box), 10); filter_label=gtk_label_new("Filter:"); gtk_box_pack_start(GTK_BOX(filter_box), filter_label, FALSE, FALSE, 0); gtk_widget_show(filter_label); - filter_entry=gtk_entry_new_with_max_length(250); - gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, FALSE, FALSE, 0); + /* Filter entry */ + filter_entry=gtk_entry_new(); + gtk_widget_set_usize(filter_entry, 300, -2); + gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, TRUE, TRUE, 0); gtk_widget_show(filter_entry); gtk_box_pack_start(GTK_BOX(dlg_box), filter_box, TRUE, TRUE, 0); gtk_widget_show(filter_box); + /* button box */ + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_DEFAULT_STYLE); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX(dlg_box), bbox, FALSE, FALSE, 0); + gtk_widget_show(bbox); /* the start button */ start_button=gtk_button_new_with_label("Create Stat"); SIGNAL_CONNECT_OBJECT(start_button, "clicked", httpstat_start_button_clicked, NULL); - gtk_box_pack_start(GTK_BOX(dlg_box), start_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(bbox), start_button, TRUE, TRUE, 0); + GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); + gtk_widget_grab_default(start_button); gtk_widget_show(start_button); +#if GTK_MAJOR_VERSION < 2 + cancel_button=gtk_button_new_with_label("Cancel"); +#else + cancel_button=gtk_button_new_from_stock(GTK_STOCK_CANCEL); +#endif + SIGNAL_CONNECT(cancel_button, "clicked", dlg_cancel_cb, dlg); + GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), cancel_button, TRUE, TRUE, 0); + gtk_widget_show(cancel_button); + + /* Catch the "activate" signal on the filter text entry, so that + if the user types Return there, we act as if the "Create Stat" + button had been selected, as happens if Return is typed if + some widget that *doesn't* handle the Return key has the input + focus. */ + dlg_set_activate(filter_entry, start_button); + + /* Catch the "key_press_event" signal in the window, so that we can + catch the ESC key being pressed and act as if the "Cancel" button + had been selected. */ + dlg_set_cancel(dlg, cancel_button); + + /* Give the initial focus to the "Filter" entry box. */ + gtk_widget_grab_focus(filter_entry); + gtk_widget_show_all(dlg); } @@ -577,6 +619,6 @@ register_tap_listener_gtkhttpstat(void) void register_tap_menu_gtkhttpstat(void) { - register_tap_menu_item("Statistics/Watch protocol/HTTP", + register_tap_menu_item("Statistics/Watch protocol/HTTP...", gtk_httpstat_cb, NULL, NULL); } diff --git a/gtk/io_stat.c b/gtk/io_stat.c index 51531af8e8..23cbf55446 100644 --- a/gtk/io_stat.c +++ b/gtk/io_stat.c @@ -1,7 +1,7 @@ /* io_stat.c * io_stat 2002 Ronnie Sahlberg * - * $Id: io_stat.c,v 1.29 2003/09/24 02:36:34 guy Exp $ + * $Id: io_stat.c,v 1.30 2003/09/26 02:09:44 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -194,14 +194,21 @@ io_stat_widget_equal(gconstpointer k1, gconstpointer k2) return frame1==frame2; } +static void +io_stat_set_title(io_stat_t *io) +{ + char *title; + title = g_strdup_printf("IO-Stat: %s", cf_get_display_name(&cfile)); + gtk_window_set_title(GTK_WINDOW(io->window), title); + g_free(title); +} static void gtk_iostat_reset(void *g) { io_stat_graph_t *gio=g; io_stat_item_t *it; - char title[256]; gio->io->needs_redraw=1; @@ -223,8 +230,7 @@ gtk_iostat_reset(void *g) gio->io->last_interval=0xffffffff; gio->io->max_interval=0; - snprintf(title, 255, "IO-Stat: %s", cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(gio->io->window), title); + io_stat_set_title(gio->io); } @@ -1620,7 +1626,6 @@ init_io_stat_window(io_stat_t *io) { GtkWidget *vbox; GtkWidget *hbox; - char title[256]; /* create the main window */ io->window=gtk_window_new(GTK_WINDOW_TOPLEVEL); @@ -1641,9 +1646,8 @@ init_io_stat_window(io_stat_t *io) create_filter_area(io, hbox); create_ctrl_area(io, hbox); + io_stat_set_title(io); gtk_widget_show(io->window); - snprintf(title, 255, "IO-Stat: %s", cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(io->window), title); } diff --git a/gtk/mgcp_stat.c b/gtk/mgcp_stat.c index b43ae9849a..7b16ff3cb7 100644 --- a/gtk/mgcp_stat.c +++ b/gtk/mgcp_stat.c @@ -2,7 +2,7 @@ * mgcp-statistics for ethereal * Copyright 2003 Lars Roland * - * $Id: mgcp_stat.c,v 1.16 2003/09/24 02:36:35 guy Exp $ + * $Id: mgcp_stat.c,v 1.17 2003/09/26 02:09:44 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -46,6 +46,7 @@ #include "gtk_stat_util.h" #include "compat_macros.h" #include "../simple_dialog.h" +#include "dlg_utils.h" #include "../file.h" #include "../globals.h" @@ -80,10 +81,8 @@ static const value_string mgcp_mesage_type[] = { { 0, NULL} }; -static GtkWidget *dlg=NULL, *dlg_box; -static GtkWidget *filter_box; -static GtkWidget *filter_label, *filter_entry; -static GtkWidget *start_button; +static GtkWidget *dlg=NULL; +static GtkWidget *filter_entry; static void @@ -91,7 +90,7 @@ mgcpstat_reset(void *pms) { mgcpstat_t *ms=(mgcpstat_t *)pms; int i; - char title[256]; + char *title; for(i=0;irtd[i].num=0; @@ -110,10 +109,11 @@ mgcpstat_reset(void *pms) ms->req_dup_num=0; ms->rsp_dup_num=0; - snprintf(title, 255, "MGCP SRT Statistics: %s", cf_get_display_name(&cfile)); if (! dlg) dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL); + title = g_strdup_printf("MGCP SRT statistics: %s", cf_get_display_name(&cfile)); gtk_window_set_title(GTK_WINDOW(dlg), title); + g_free(title); } @@ -317,6 +317,12 @@ dlg_destroy_cb(void) dlg=NULL; } +static void +dlg_cancel_cb(GtkWidget *cancel_bt _U_, gpointer parent_w) +{ + gtk_widget_destroy(GTK_WIDGET(parent_w)); +} + static void mgcpstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_) { @@ -338,7 +344,10 @@ static void gtk_mgcpstat_cb(GtkWidget *w _U_, gpointer d _U_) { char *filter; - char title[256]; + char *title; + GtkWidget *dlg_box; + GtkWidget *filter_box, *filter_label; + GtkWidget *bbox, *start_button, *cancel_button; /* if the window is already open, bring it to front */ if(dlg){ @@ -346,25 +355,29 @@ gtk_mgcpstat_cb(GtkWidget *w _U_, gpointer d _U_) return; } - dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL); - snprintf(title, 255, "MGCP SRT Statistics: %s", cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(dlg), title); + title = g_strdup_printf("Ethereal: Compute MGCP SRT statistics: %s", cf_get_display_name(&cfile)); + + dlg=dlg_window_new(title); + g_free(title); SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL); - dlg_box=gtk_vbox_new(FALSE, 0); + + dlg_box=gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(dlg_box), 10); gtk_container_add(GTK_CONTAINER(dlg), dlg_box); gtk_widget_show(dlg_box); + /* Filter box */ + filter_box=gtk_hbox_new(FALSE, 3); - /* filter box */ - filter_box=gtk_hbox_new(FALSE, 10); /* Filter label */ - gtk_container_set_border_width(GTK_CONTAINER(filter_box), 10); filter_label=gtk_label_new("Filter:"); gtk_box_pack_start(GTK_BOX(filter_box), filter_label, FALSE, FALSE, 0); gtk_widget_show(filter_label); - filter_entry=gtk_entry_new_with_max_length(250); - gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, FALSE, FALSE, 0); + /* Filter entry */ + filter_entry=gtk_entry_new(); + gtk_widget_set_usize(filter_entry, 300, -2); + gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, TRUE, TRUE, 0); filter=gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget)); if(filter){ gtk_entry_set_text(GTK_ENTRY(filter_entry), filter); @@ -374,14 +387,47 @@ gtk_mgcpstat_cb(GtkWidget *w _U_, gpointer d _U_) gtk_box_pack_start(GTK_BOX(dlg_box), filter_box, TRUE, TRUE, 0); gtk_widget_show(filter_box); + /* button box */ + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_DEFAULT_STYLE); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX(dlg_box), bbox, FALSE, FALSE, 0); + gtk_widget_show(bbox); /* the start button */ start_button=gtk_button_new_with_label("Create Stat"); SIGNAL_CONNECT_OBJECT(start_button, "clicked", mgcpstat_start_button_clicked, NULL); - gtk_box_pack_start(GTK_BOX(dlg_box), start_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(bbox), start_button, TRUE, TRUE, 0); + GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); + gtk_widget_grab_default(start_button); gtk_widget_show(start_button); +#if GTK_MAJOR_VERSION < 2 + cancel_button=gtk_button_new_with_label("Cancel"); +#else + cancel_button=gtk_button_new_from_stock(GTK_STOCK_CANCEL); +#endif + SIGNAL_CONNECT(cancel_button, "clicked", dlg_cancel_cb, dlg); + GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), cancel_button, TRUE, TRUE, 0); + gtk_widget_show(cancel_button); + + /* Catch the "activate" signal on the filter text entry, so that + if the user types Return there, we act as if the "Create Stat" + button had been selected, as happens if Return is typed if + some widget that *doesn't* handle the Return key has the input + focus. */ + dlg_set_activate(filter_entry, start_button); + + /* Catch the "key_press_event" signal in the window, so that we can + catch the ESC key being pressed and act as if the "Cancel" button + had been selected. */ + dlg_set_cancel(dlg, cancel_button); + + /* Give the initial focus to the "Filter" entry box. */ + gtk_widget_grab_focus(filter_entry); + gtk_widget_show_all(dlg); } @@ -395,7 +441,7 @@ void register_tap_menu_gtkmgcpstat(void) { if (find_tap_id("mgcp")) - register_tap_menu_item("Statistics/Service Response Time/MGCP", + register_tap_menu_item("Statistics/Service Response Time/MGCP...", gtk_mgcpstat_cb, NULL, NULL); } diff --git a/gtk/rpc_stat.c b/gtk/rpc_stat.c index f885ea46b5..e5c1828535 100644 --- a/gtk/rpc_stat.c +++ b/gtk/rpc_stat.c @@ -1,7 +1,7 @@ /* rpc_stat.c * rpc_stat 2002 Ronnie Sahlberg * - * $Id: rpc_stat.c,v 1.22 2003/09/24 02:36:35 guy Exp $ + * $Id: rpc_stat.c,v 1.23 2003/09/26 02:09:44 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -37,6 +37,7 @@ #include "epan/epan.h" #include "menu.h" #include "simple_dialog.h" +#include "dlg_utils.h" #include "tap.h" #include "../register.h" #include "packet-rpc.h" @@ -56,18 +57,31 @@ typedef struct _rpcstat_t { guint32 num_procedures; } rpcstat_t; +static char * +rpcstat_gen_title(rpcstat_t *rs) +{ + char *title; + + title = g_strdup_printf("ONC-RPC Service Response Time statistics for %s version %d: %s", + rs->prog, rs->version, cf_get_display_name(&cfile)); + return title; +} +static void +rpcstat_set_title(rpcstat_t *rs) +{ + char *title; + title = rpcstat_gen_title(rs); + gtk_window_set_title(GTK_WINDOW(rs->win), title); + g_free(title); +} static void rpcstat_reset(rpcstat_t *rs) { - char title_string[256]; - reset_srt_table_data(&rs->srt_table); - - snprintf(title_string, 256, "ONC-RPC Service Response Time statistics for %s version %d: %s", rs->prog, rs->version, cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(rs->win), title_string); + rpcstat_set_title(rs); } @@ -182,7 +196,7 @@ gtk_rpcstat_init(char *optarg) { rpcstat_t *rs; guint32 i; - char title_string[256]; + char *title_string; char filter_string[256]; GtkWidget *vbox; GtkWidget *stat_label; @@ -216,8 +230,7 @@ gtk_rpcstat_init(char *optarg) rs->win=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(rs->win), 550, 400); - snprintf(title_string, 256, "ONC-RPC Service Response Time statistics for %s version %d: %s", rs->prog, rs->version, cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(rs->win), title_string); + rpcstat_set_title(rs); SIGNAL_CONNECT(rs->win, "destroy", win_destroy_cb, rs); vbox=gtk_vbox_new(FALSE, 0); @@ -225,7 +238,9 @@ gtk_rpcstat_init(char *optarg) gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); gtk_widget_show(vbox); + title_string = rpcstat_gen_title(rs); stat_label=gtk_label_new(title_string); + g_free(title_string); gtk_box_pack_start(GTK_BOX(vbox), stat_label, FALSE, FALSE, 0); gtk_widget_show(stat_label); @@ -266,29 +281,27 @@ gtk_rpcstat_init(char *optarg) -static GtkWidget *dlg=NULL, *dlg_box; -static GtkWidget *prog_box; -static GtkWidget *prog_label, *prog_opt, *prog_menu; -static GtkWidget *vers_label, *vers_opt, *vers_menu; -static GtkWidget *filter_box; -static GtkWidget *filter_label, *filter_entry; -static GtkWidget *start_button; +static GtkWidget *dlg=NULL; +static GtkWidget *prog_menu; +static GtkWidget *vers_opt, *vers_menu; +static GtkWidget *filter_entry; static void rpcstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_) { + GString *str; char *filter; - char str[256]; + str = g_string_new("rpc,srt"); + g_string_sprintfa(str, ",%d,%d", rpc_program, rpc_version); filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry)); - if(filter[0]==0){ - sprintf(str, "rpc,srt,%d,%d", rpc_program, rpc_version); - filter=""; - } else { - sprintf(str, "rpc,srt,%d,%d,%s", rpc_program, rpc_version, filter); + if(filter[0]!=0){ + g_string_sprintfa(str, ",%s", filter); } - gtk_rpcstat_init(str); + + gtk_rpcstat_init(str->str); + g_string_free(str, TRUE); } @@ -358,9 +371,20 @@ dlg_destroy_cb(void) dlg=NULL; } +static void +dlg_cancel_cb(GtkWidget *cancel_bt _U_, gpointer parent_w) +{ + gtk_widget_destroy(GTK_WIDGET(parent_w)); +} + static void gtk_rpcstat_cb(GtkWidget *w _U_, gpointer d _U_) { + GtkWidget *dlg_box; + GtkWidget *prog_box, *prog_label, *prog_opt; + GtkWidget *vers_label; + GtkWidget *filter_box, *filter_label; + GtkWidget *bbox, *start_button, *cancel_button; int i; char *filter; @@ -370,15 +394,17 @@ gtk_rpcstat_cb(GtkWidget *w _U_, gpointer d _U_) return; } - dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(dlg), "ONC-RPC Service Response Time statistics"); + dlg=dlg_window_new("Ethereal: Compute ONC-RPC SRT statistics"); SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL); - dlg_box=gtk_vbox_new(FALSE, 0); + + dlg_box=gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(dlg_box), 10); gtk_container_add(GTK_CONTAINER(dlg), dlg_box); gtk_widget_show(dlg_box); - + /* Program box */ prog_box=gtk_hbox_new(FALSE, 10); + /* Program label */ gtk_container_set_border_width(GTK_CONTAINER(prog_box), 10); prog_label=gtk_label_new("Program:"); @@ -417,7 +443,6 @@ gtk_rpcstat_cb(GtkWidget *w _U_, gpointer d _U_) gtk_widget_show(menu_item); gtk_menu_append(GTK_MENU(vers_menu), menu_item); } - gtk_option_menu_set_menu(GTK_OPTION_MENU(vers_opt), vers_menu); gtk_box_pack_start(GTK_BOX(prog_box), vers_opt, TRUE, TRUE, 0); gtk_widget_show(vers_opt); @@ -425,17 +450,18 @@ gtk_rpcstat_cb(GtkWidget *w _U_, gpointer d _U_) gtk_box_pack_start(GTK_BOX(dlg_box), prog_box, TRUE, TRUE, 0); gtk_widget_show(prog_box); + /* Filter box */ + filter_box=gtk_hbox_new(FALSE, 3); - /* filter box */ - filter_box=gtk_hbox_new(FALSE, 10); /* Filter label */ - gtk_container_set_border_width(GTK_CONTAINER(filter_box), 10); filter_label=gtk_label_new("Filter:"); gtk_box_pack_start(GTK_BOX(filter_box), filter_label, FALSE, FALSE, 0); gtk_widget_show(filter_label); - filter_entry=gtk_entry_new_with_max_length(250); - gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, FALSE, FALSE, 0); + /* Filter entry */ + filter_entry=gtk_entry_new(); + gtk_widget_set_usize(filter_entry, 300, -2); + gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, TRUE, TRUE, 0); filter=gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget)); if(filter){ gtk_entry_set_text(GTK_ENTRY(filter_entry), filter); @@ -445,14 +471,47 @@ gtk_rpcstat_cb(GtkWidget *w _U_, gpointer d _U_) gtk_box_pack_start(GTK_BOX(dlg_box), filter_box, TRUE, TRUE, 0); gtk_widget_show(filter_box); + /* button box */ + bbox=gtk_hbutton_box_new(); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_DEFAULT_STYLE); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX(dlg_box), bbox, FALSE, FALSE, 0); + gtk_widget_show(bbox); /* the start button */ start_button=gtk_button_new_with_label("Create Stat"); SIGNAL_CONNECT_OBJECT(start_button, "clicked", rpcstat_start_button_clicked, NULL); - gtk_box_pack_start(GTK_BOX(dlg_box), start_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(bbox), start_button, TRUE, TRUE, 0); + GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); + gtk_widget_grab_default(start_button); gtk_widget_show(start_button); +#if GTK_MAJOR_VERSION < 2 + cancel_button=gtk_button_new_with_label("Cancel"); +#else + cancel_button=gtk_button_new_from_stock(GTK_STOCK_CANCEL); +#endif + SIGNAL_CONNECT(cancel_button, "clicked", dlg_cancel_cb, dlg); + GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), cancel_button, TRUE, TRUE, 0); + gtk_widget_show(cancel_button); + + /* Catch the "activate" signal on the filter text entry, so that + if the user types Return there, we act as if the "Create Stat" + button had been selected, as happens if Return is typed if some + widget that *doesn't* handle the Return key has the input + focus. */ + dlg_set_activate(filter_entry, start_button); + + /* Catch the "key_press_event" signal in the window, so that we can + catch the ESC key being pressed and act as if the "Cancel" button + had been selected. */ + dlg_set_cancel(dlg, cancel_button); + + /* Give the initial focus to the "Filter" entry box. */ + gtk_widget_grab_focus(filter_entry); + gtk_widget_show_all(dlg); } @@ -466,6 +525,6 @@ register_tap_listener_gtkrpcstat(void) void register_tap_menu_gtkrpcstat(void) { - register_tap_menu_item("Statistics/Service Response Time/ONC-RPC", + register_tap_menu_item("Statistics/Service Response Time/ONC-RPC...", gtk_rpcstat_cb, NULL, NULL); } diff --git a/gtk/rtp_analysis.c b/gtk/rtp_analysis.c index f763fab4e6..6716185cf6 100644 --- a/gtk/rtp_analysis.c +++ b/gtk/rtp_analysis.c @@ -1,7 +1,7 @@ /* rtp_analysis.c * RTP analysis addition for ethereal * - * $Id: rtp_analysis.c,v 1.2 2003/09/25 19:35:14 guy Exp $ + * $Id: rtp_analysis.c,v 1.3 2003/09/26 02:09:44 guy Exp $ * * Copyright 2003, Alcatel Business Systems * By Lars Ruoff @@ -1559,7 +1559,8 @@ void create_rtp_dialog(user_data_t* user_data) gchar str_ip_dst[16]; - window = dlg_window_new("Ethereal: RTP Stream Analysis"); + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), "Ethereal: RTP Stream Analysis"); gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(on_destroy), user_data); diff --git a/gtk/rtp_stream_dlg.c b/gtk/rtp_stream_dlg.c index 8811cf3892..a7761387ef 100644 --- a/gtk/rtp_stream_dlg.c +++ b/gtk/rtp_stream_dlg.c @@ -1,7 +1,7 @@ /* rtp_stream_dlg.c * RTP streams summary addition for ethereal * - * $Id: rtp_stream_dlg.c,v 1.1 2003/09/24 07:48:11 guy Exp $ + * $Id: rtp_stream_dlg.c,v 1.2 2003/09/26 02:09:44 guy Exp $ * * Copyright 2003, Alcatel Business Systems * By Lars Ruoff @@ -501,7 +501,7 @@ static void rtpstream_dlg_create (void) GtkWidget *bt_analyse; GtkWidget *bt_close; - rtpstream_dlg_w = gtk_dialog_new (); + rtpstream_dlg_w = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (rtpstream_dlg_w), "Ethereal: RTP Streams"); dialog_vbox1 = GTK_DIALOG (rtpstream_dlg_w)->vbox; diff --git a/gtk/smb_stat.c b/gtk/smb_stat.c index b00dad787d..6b0dfd9ac8 100644 --- a/gtk/smb_stat.c +++ b/gtk/smb_stat.c @@ -1,7 +1,7 @@ /* smb_stat.c * smb_stat 2003 Ronnie Sahlberg * - * $Id: smb_stat.c,v 1.19 2003/09/24 02:36:35 guy Exp $ + * $Id: smb_stat.c,v 1.20 2003/09/26 02:09:44 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -44,6 +44,7 @@ #include "../timestats.h" #include "compat_macros.h" #include "../simple_dialog.h" +#include "dlg_utils.h" #include "../file.h" #include "../globals.h" #include "service_response_time_table.h" @@ -58,19 +59,26 @@ typedef struct _smbstat_t { srt_stat_table nt_trans_srt_table; } smbstat_t; +static void +smbstat_set_title(smbstat_t *ss) +{ + char *title; + title = g_strdup_printf("SMB Service Response Time statistics: %s", + cf_get_display_name(&cfile)); + gtk_window_set_title(GTK_WINDOW(ss->win), title); + g_free(title); +} static void smbstat_reset(void *pss) { smbstat_t *ss=(smbstat_t *)pss; - char title[256]; reset_srt_table_data(&ss->smb_srt_table); reset_srt_table_data(&ss->trans2_srt_table); reset_srt_table_data(&ss->nt_trans_srt_table); - snprintf(title, 255, "SMB Service Response Time statistics: %s", cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(ss->win), title); + smbstat_set_title(ss); } static int @@ -144,7 +152,6 @@ gtk_smbstat_init(char *optarg) GString *error_string; int i; GtkWidget *vbox; - char title[256]; if(!strncmp(optarg,"smb,srt,",8)){ filter=optarg+8; @@ -156,8 +163,7 @@ gtk_smbstat_init(char *optarg) ss->win=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(ss->win), 550, 600); - snprintf(title, 255, "SMB Service Response Time statistics: %s", cf_get_display_name(&cfile)); - gtk_window_set_title(GTK_WINDOW(ss->win), title); + smbstat_set_title(ss); SIGNAL_CONNECT(ss->win, "destroy", win_destroy_cb, ss); vbox=gtk_vbox_new(FALSE, 0); @@ -220,10 +226,8 @@ gtk_smbstat_init(char *optarg) -static GtkWidget *dlg=NULL, *dlg_box; -static GtkWidget *filter_box; -static GtkWidget *filter_label, *filter_entry; -static GtkWidget *start_button; +static GtkWidget *dlg=NULL; +static GtkWidget *filter_entry; static void dlg_destroy_cb(void) @@ -231,24 +235,33 @@ dlg_destroy_cb(void) dlg=NULL; } +static void +dlg_cancel_cb(GtkWidget *cancel_bt _U_, gpointer parent_w) +{ + gtk_widget_destroy(GTK_WIDGET(parent_w)); +} + static void smbstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_) { + GString *str; char *filter; - char str[256]; + str = g_string_new("smb,srt"); filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry)); - if(filter[0]==0){ - gtk_smbstat_init("smb,srt"); - } else { - sprintf(str,"smb,srt,%s", filter); - gtk_smbstat_init(str); + if(filter[0]!=0){ + g_string_sprintfa(str,",%s", filter); } + gtk_smbstat_init(str->str); + g_string_free(str, TRUE); } static void gtk_smbstat_cb(GtkWidget *w _U_, gpointer d _U_) { + GtkWidget *dlg_box; + GtkWidget *filter_box, *filter_label; + GtkWidget *bbox, *start_button, *cancel_button; char *filter; /* if the window is already open, bring it to front */ @@ -257,24 +270,26 @@ gtk_smbstat_cb(GtkWidget *w _U_, gpointer d _U_) return; } - dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(dlg), "SMB Service Response Time statistics"); + dlg=dlg_window_new("Ethereal: Compute SMB SRT statistics"); SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL); - dlg_box=gtk_vbox_new(FALSE, 0); + + dlg_box=gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(dlg_box), 10); gtk_container_add(GTK_CONTAINER(dlg), dlg_box); gtk_widget_show(dlg_box); + /* Filter box */ + filter_box=gtk_hbox_new(FALSE, 3); - /* filter box */ - filter_box=gtk_hbox_new(FALSE, 10); /* Filter label */ - gtk_container_set_border_width(GTK_CONTAINER(filter_box), 10); filter_label=gtk_label_new("Filter:"); gtk_box_pack_start(GTK_BOX(filter_box), filter_label, FALSE, FALSE, 0); gtk_widget_show(filter_label); - filter_entry=gtk_entry_new_with_max_length(250); - gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, FALSE, FALSE, 0); + /* Filter entry */ + filter_entry=gtk_entry_new(); + gtk_widget_set_usize(filter_entry, 300, -2); + gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, TRUE, TRUE, 0); filter=gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget)); if(filter){ gtk_entry_set_text(GTK_ENTRY(filter_entry), filter); @@ -284,14 +299,47 @@ gtk_smbstat_cb(GtkWidget *w _U_, gpointer d _U_) gtk_box_pack_start(GTK_BOX(dlg_box), filter_box, TRUE, TRUE, 0); gtk_widget_show(filter_box); + /* button box */ + bbox=gtk_hbutton_box_new(); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_DEFAULT_STYLE); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX(dlg_box), bbox, FALSE, FALSE, 0); + gtk_widget_show(bbox); /* the start button */ start_button=gtk_button_new_with_label("Create Stat"); SIGNAL_CONNECT_OBJECT(start_button, "clicked", smbstat_start_button_clicked, NULL); - gtk_box_pack_start(GTK_BOX(dlg_box), start_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(bbox), start_button, TRUE, TRUE, 0); + GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); + gtk_widget_grab_default(start_button); gtk_widget_show(start_button); +#if GTK_MAJOR_VERSION < 2 + cancel_button=gtk_button_new_with_label("Cancel"); +#else + cancel_button=gtk_button_new_from_stock(GTK_STOCK_CANCEL); +#endif + SIGNAL_CONNECT(cancel_button, "clicked", dlg_cancel_cb, dlg); + GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), cancel_button, TRUE, TRUE, 0); + gtk_widget_show(cancel_button); + + /* Catch the "activate" signal on the filter text entry, so that + if the user types Return there, we act as if the "Create Stat" + button had been selected, as happens if Return is typed if some + widget that *doesn't* handle the Return key has the input + focus. */ + dlg_set_activate(filter_entry, start_button); + + /* Catch the "key_press_event" signal in the window, so that we can + catch the ESC key being pressed and act as if the "Cancel" button + had been selected. */ + dlg_set_cancel(dlg, cancel_button); + + /* Give the initial focus to the "Filter" entry box. */ + gtk_widget_grab_focus(filter_entry); + gtk_widget_show_all(dlg); } @@ -304,6 +352,6 @@ register_tap_listener_gtksmbstat(void) void register_tap_menu_gtksmbstat(void) { - register_tap_menu_item("Statistics/Service Response Time/SMB", + register_tap_menu_item("Statistics/Service Response Time/SMB...", gtk_smbstat_cb, NULL, NULL); } diff --git a/gtk/wsp_stat.c b/gtk/wsp_stat.c index 1a8faddfa3..f8f9d049a4 100644 --- a/gtk/wsp_stat.c +++ b/gtk/wsp_stat.c @@ -1,7 +1,7 @@ /* wsp_stat.c * wsp_stat 2003 Jean-Michel FAYARD * - * $Id: wsp_stat.c,v 1.4 2003/09/24 02:36:35 guy Exp $ + * $Id: wsp_stat.c,v 1.5 2003/09/26 02:09:44 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -32,6 +32,7 @@ #include "epan/epan.h" #include "menu.h" #include "simple_dialog.h" +#include "dlg_utils.h" #include "tap.h" #include "../register.h" #include "../globals.h" @@ -64,10 +65,8 @@ typedef struct _wsp_status_code_t { wspstat_t *sp; /* entire program interface */ } wsp_status_code_t; -static GtkWidget *dlg=NULL, *dlg_box; -static GtkWidget *filter_box; -static GtkWidget *filter_label, *filter_entry; -static GtkWidget *start_button; +static GtkWidget *dlg=NULL; +static GtkWidget *filter_entry; static void wsp_free_hash( gpointer key, gpointer value, gpointer user_data _U_ ) @@ -339,10 +338,10 @@ gtk_wspstat_init(char *optarg) if(filter){ sp->filter=g_malloc(strlen(filter)+1); strcpy(sp->filter,filter); - title=g_strdup_printf("WSP Stats with filter: %s", filter); + title=g_strdup_printf("Ethereal: WSP statistics with filter: %s", filter); } else { sp->filter=NULL; - title=g_strdup("WSP Stats"); + title=g_strdup("Ethereal: WSP statistics"); } for (i=0;i<=sp->num_pdus; i++) { @@ -409,16 +408,14 @@ gtk_wspstat_init(char *optarg) static void wspstat_start_button_clicked(GtkWidget *item _U_, gpointer data _U_) { + GString *str; char *filter; - char str[256]; + str = g_string_new("wsp,stat,"); filter=(char *)gtk_entry_get_text(GTK_ENTRY(filter_entry)); - if(filter[0]==0){ - gtk_wspstat_init("wsp,stat,"); - } else { - sprintf(str, "wsp,stat,%s", filter); - gtk_wspstat_init(str); - } + str = g_string_append(str, filter); + gtk_wspstat_init(str->str); + g_string_free(str, TRUE); } static void @@ -427,46 +424,91 @@ dlg_destroy_cb(void) dlg=NULL; } +static void +dlg_cancel_cb(GtkWidget *cancel_bt _U_, gpointer parent_w) +{ + gtk_widget_destroy(GTK_WIDGET(parent_w)); +} + static void gtk_wspstat_cb(GtkWidget *w _U_, gpointer d _U_) { + GtkWidget *dlg_box; + GtkWidget *filter_box, *filter_label; + GtkWidget *bbox, *start_button, *cancel_button; + /* if the window is already open, bring it to front */ if(dlg){ gdk_window_raise(dlg->window); return; } - dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(dlg), "WSP Statistics"); + dlg=dlg_window_new("Ethereal: Compute WSP statistics"); SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL); - dlg_box=gtk_vbox_new(FALSE, 0); + + dlg_box=gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(dlg_box), 10); gtk_container_add(GTK_CONTAINER(dlg), dlg_box); gtk_widget_show(dlg_box); + /* Filter box */ + filter_box=gtk_hbox_new(FALSE, 3); - /* filter box */ - filter_box=gtk_hbox_new(FALSE, 10); /* Filter label */ - gtk_container_set_border_width(GTK_CONTAINER(filter_box), 10); filter_label=gtk_label_new("Filter:"); gtk_box_pack_start(GTK_BOX(filter_box), filter_label, FALSE, FALSE, 0); gtk_widget_show(filter_label); - filter_entry=gtk_entry_new_with_max_length(250); - gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, FALSE, FALSE, 0); + /* Filter entry */ + filter_entry=gtk_entry_new(); + gtk_widget_set_usize(filter_entry, 300, -2); + gtk_box_pack_start(GTK_BOX(filter_box), filter_entry, TRUE, TRUE, 0); gtk_widget_show(filter_entry); gtk_box_pack_start(GTK_BOX(dlg_box), filter_box, TRUE, TRUE, 0); gtk_widget_show(filter_box); + /* button box */ + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_DEFAULT_STYLE); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX(dlg_box), bbox, FALSE, FALSE, 0); + gtk_widget_show(bbox); /* the start button */ start_button=gtk_button_new_with_label("Create Stat"); SIGNAL_CONNECT_OBJECT(start_button, "clicked", wspstat_start_button_clicked, NULL); - gtk_box_pack_start(GTK_BOX(dlg_box), start_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(bbox), start_button, TRUE, TRUE, 0); + GTK_WIDGET_SET_FLAGS(start_button, GTK_CAN_DEFAULT); + gtk_widget_grab_default(start_button); gtk_widget_show(start_button); +#if GTK_MAJOR_VERSION < 2 + cancel_button=gtk_button_new_with_label("Cancel"); +#else + cancel_button=gtk_button_new_from_stock(GTK_STOCK_CANCEL); +#endif + SIGNAL_CONNECT(cancel_button, "clicked", dlg_cancel_cb, dlg); + GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), cancel_button, TRUE, TRUE, 0); + gtk_widget_show(cancel_button); + + /* Catch the "activate" signal on the filter text entry, so that + if the user types Return there, we act as if the "Create Stat" + button had been selected, as happens if Return is typed if + some widget that *doesn't* handle the Return key has the input + focus. */ + dlg_set_activate(filter_entry, start_button); + + /* Catch the "key_press_event" signal in the window, so that we can + catch the ESC key being pressed and act as if the "Cancel" button + had been selected. */ + dlg_set_cancel(dlg, cancel_button); + + /* Give the initial focus to the "Filter" entry box. */ + gtk_widget_grab_focus(filter_entry); + gtk_widget_show_all(dlg); } @@ -480,6 +522,6 @@ register_tap_listener_gtkwspstat(void) void register_tap_menu_gtkwspstat(void) { - register_tap_menu_item("Statistics/Watch protocol/WAP-WSP", + register_tap_menu_item("Statistics/Watch protocol/WAP-WSP...", gtk_wspstat_cb, NULL, NULL); } -- cgit v1.2.3