aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2003-09-24 02:36:35 +0000
committerGuy Harris <guy@alum.mit.edu>2003-09-24 02:36:35 +0000
commit4e64afcb25c1a0b3e83bb5f1eaa8452649144314 (patch)
treeee96c6533894bae683e842a7c328f187e608bf78 /gtk
parentdd628e00c742885fc3b212e00942880f81956bf0 (diff)
Pass a pointer to a "capture_file" structure to
"set_menus_for_selected_packet()" and "set_menus_for_selected_tree_row()", and have them decide whether to enable or disable menu items based on whether that structure indicates that a packet or field is selected and, if one is, on its properties. Pass to the "selected packet enabled" routine for a menu item the "frame_data" and "edt" members of the "capture_file" structure, and pass to the "selected tree row enabled" routine the "field_info" member of that structure. Clear "cf->current_frame" if no packet is selected. svn path=/trunk/; revision=8525
Diffstat (limited to 'gtk')
-rw-r--r--gtk/bootp_stat.c5
-rw-r--r--gtk/dcerpc_stat.c5
-rw-r--r--gtk/endpoint_talkers_eth.c4
-rw-r--r--gtk/endpoint_talkers_fc.c5
-rw-r--r--gtk/endpoint_talkers_fddi.c4
-rw-r--r--gtk/endpoint_talkers_ip.c4
-rw-r--r--gtk/endpoint_talkers_ipx.c4
-rw-r--r--gtk/endpoint_talkers_tcpip.c4
-rw-r--r--gtk/endpoint_talkers_tr.c4
-rw-r--r--gtk/endpoint_talkers_udpip.c4
-rw-r--r--gtk/fc_stat.c5
-rw-r--r--gtk/http_stat.c5
-rw-r--r--gtk/io_stat.c4
-rw-r--r--gtk/main.c4
-rw-r--r--gtk/menu.c133
-rw-r--r--gtk/menu.h23
-rw-r--r--gtk/mgcp_stat.c5
-rw-r--r--gtk/rpc_progs.c5
-rw-r--r--gtk/rpc_stat.c5
-rw-r--r--gtk/smb_stat.c5
-rw-r--r--gtk/wsp_stat.c5
21 files changed, 120 insertions, 122 deletions
diff --git a/gtk/bootp_stat.c b/gtk/bootp_stat.c
index c10f72dbbe..b72bfd4178 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.3 2003/09/19 07:24:37 guy Exp $
+ * $Id: bootp_stat.c,v 1.4 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -28,8 +28,9 @@
#endif
#include <gtk/gtk.h>
-#include "menu.h"
#include "epan/packet_info.h"
+#include "epan/epan.h"
+#include "menu.h"
#include "simple_dialog.h"
#include "tap.h"
#include "../register.h"
diff --git a/gtk/dcerpc_stat.c b/gtk/dcerpc_stat.c
index d949db5756..816f56524a 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.22 2003/09/19 07:24:37 guy Exp $
+ * $Id: dcerpc_stat.c,v 1.23 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -35,8 +35,9 @@
#include <string.h>
#include <gtk/gtk.h>
-#include "menu.h"
#include "epan/packet_info.h"
+#include "epan/epan.h"
+#include "menu.h"
#include "simple_dialog.h"
#include "dlg_utils.h"
#include "ui_util.h"
diff --git a/gtk/endpoint_talkers_eth.c b/gtk/endpoint_talkers_eth.c
index 2bef0e0b35..573fbc9c95 100644
--- a/gtk/endpoint_talkers_eth.c
+++ b/gtk/endpoint_talkers_eth.c
@@ -1,7 +1,7 @@
/* endpoint_talkers_eth.c
* endpoint_talkers_eth 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_eth.c,v 1.17 2003/09/19 07:24:37 guy Exp $
+ * $Id: endpoint_talkers_eth.c,v 1.18 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "epan/packet.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "endpoint_talkers_table.h"
diff --git a/gtk/endpoint_talkers_fc.c b/gtk/endpoint_talkers_fc.c
index 3d3559bf84..01a4d9309d 100644
--- a/gtk/endpoint_talkers_fc.c
+++ b/gtk/endpoint_talkers_fc.c
@@ -1,7 +1,7 @@
/* endpoint_talkers_fc.c
* endpoint_talkers_fc 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_fc.c,v 1.17 2003/09/19 07:24:37 guy Exp $
+ * $Id: endpoint_talkers_fc.c,v 1.18 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,9 +34,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
-#include "menu.h"
#include "epan/packet.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "endpoint_talkers_table.h"
diff --git a/gtk/endpoint_talkers_fddi.c b/gtk/endpoint_talkers_fddi.c
index 73fa81600a..51d4596659 100644
--- a/gtk/endpoint_talkers_fddi.c
+++ b/gtk/endpoint_talkers_fddi.c
@@ -1,7 +1,7 @@
/* endpoint_talkers_fddi.c
* endpoint_talkers_fddi 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_fddi.c,v 1.12 2003/09/19 07:24:37 guy Exp $
+ * $Id: endpoint_talkers_fddi.c,v 1.13 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "epan/packet.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "endpoint_talkers_table.h"
diff --git a/gtk/endpoint_talkers_ip.c b/gtk/endpoint_talkers_ip.c
index 09f6aed9c2..51fc3d5854 100644
--- a/gtk/endpoint_talkers_ip.c
+++ b/gtk/endpoint_talkers_ip.c
@@ -1,7 +1,7 @@
/* endpoint_talkers_ip.c
* endpoint_talkers_ip 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_ip.c,v 1.18 2003/09/19 07:24:37 guy Exp $
+ * $Id: endpoint_talkers_ip.c,v 1.19 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "epan/packet.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "endpoint_talkers_table.h"
diff --git a/gtk/endpoint_talkers_ipx.c b/gtk/endpoint_talkers_ipx.c
index d1ed463d71..4c350586c9 100644
--- a/gtk/endpoint_talkers_ipx.c
+++ b/gtk/endpoint_talkers_ipx.c
@@ -1,7 +1,7 @@
/* endpoint_talkers_ipx.c
* endpoint_talkers_ipx 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_ipx.c,v 1.16 2003/09/19 07:24:37 guy Exp $
+ * $Id: endpoint_talkers_ipx.c,v 1.17 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "epan/packet.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "endpoint_talkers_table.h"
diff --git a/gtk/endpoint_talkers_tcpip.c b/gtk/endpoint_talkers_tcpip.c
index c17b38bb56..78d1177b4a 100644
--- a/gtk/endpoint_talkers_tcpip.c
+++ b/gtk/endpoint_talkers_tcpip.c
@@ -1,7 +1,7 @@
/* endpoint_talkers_tcpip.c
* endpoint_talkers_tcpip 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_tcpip.c,v 1.19 2003/09/19 07:24:37 guy Exp $
+ * $Id: endpoint_talkers_tcpip.c,v 1.20 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "epan/packet.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "endpoint_talkers_table.h"
diff --git a/gtk/endpoint_talkers_tr.c b/gtk/endpoint_talkers_tr.c
index c126634bc9..e8c0bd4561 100644
--- a/gtk/endpoint_talkers_tr.c
+++ b/gtk/endpoint_talkers_tr.c
@@ -1,7 +1,7 @@
/* endpoint_talkers_tr.c
* endpoint_talkers_tr 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_tr.c,v 1.18 2003/09/19 07:24:38 guy Exp $
+ * $Id: endpoint_talkers_tr.c,v 1.19 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "epan/packet.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "endpoint_talkers_table.h"
diff --git a/gtk/endpoint_talkers_udpip.c b/gtk/endpoint_talkers_udpip.c
index 39ccc61499..13a77b101a 100644
--- a/gtk/endpoint_talkers_udpip.c
+++ b/gtk/endpoint_talkers_udpip.c
@@ -1,7 +1,7 @@
/* endpoint_talkers_udpip.c
* endpoint_talkers_udpip 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_udpip.c,v 1.19 2003/09/19 07:24:38 guy Exp $
+ * $Id: endpoint_talkers_udpip.c,v 1.20 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "epan/packet.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "endpoint_talkers_table.h"
diff --git a/gtk/fc_stat.c b/gtk/fc_stat.c
index 3fa13e158b..2de4a8b40e 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.10 2003/09/19 07:24:38 guy Exp $
+ * $Id: fc_stat.c,v 1.11 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,9 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "../epan/packet_info.h"
+#include "../epan/epan.h"
+#include "menu.h"
#include "../tap.h"
#include "../epan/value_string.h"
#include "../packet-fc.h"
diff --git a/gtk/http_stat.c b/gtk/http_stat.c
index c578c27e00..158f537525 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.4 2003/09/19 07:24:38 guy Exp $
+ * $Id: http_stat.c,v 1.5 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -27,8 +27,9 @@
#endif
#include <gtk/gtk.h>
-#include "menu.h"
#include "epan/packet_info.h"
+#include "epan/epan.h"
+#include "menu.h"
#include "simple_dialog.h"
#include "tap.h"
#include "../register.h"
diff --git a/gtk/io_stat.c b/gtk/io_stat.c
index 6e0cafa9c1..51531af8e8 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.28 2003/09/19 07:24:38 guy Exp $
+ * $Id: io_stat.c,v 1.29 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -39,9 +39,9 @@
#include <gtk/gtk.h>
#include "gtkglobals.h"
-#include "menu.h"
#include "epan/epan_dissect.h"
#include "epan/packet_info.h"
+#include "menu.h"
#include "../tap.h"
#include "../register.h"
#include "simple_dialog.h"
diff --git a/gtk/main.c b/gtk/main.c
index f759ed718c..d9844742c7 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -1,6 +1,6 @@
/* main.c
*
- * $Id: main.c,v 1.317 2003/09/24 00:47:37 guy Exp $
+ * $Id: main.c,v 1.318 2003/09/24 02:36:34 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -921,7 +921,7 @@ tree_view_selection_changed_cb(GtkTreeSelection *sel, gpointer user_data _U_)
g_assert(byte_data != NULL);
cfile.finfo_selected = finfo;
- set_menus_for_selected_tree_row(TRUE);
+ set_menus_for_selected_tree_row(&cfile);
if (finfo->hfinfo) {
if (finfo->hfinfo->blurb != NULL &&
diff --git a/gtk/menu.c b/gtk/menu.c
index 0e5067b5a6..939f948f5d 100644
--- a/gtk/menu.c
+++ b/gtk/menu.c
@@ -1,7 +1,7 @@
/* menu.c
* Menu routines
*
- * $Id: menu.c,v 1.99 2003/09/24 00:47:37 guy Exp $
+ * $Id: menu.c,v 1.100 2003/09/24 02:36:35 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -30,8 +30,6 @@
#include <string.h>
-#include "../menu.h"
-
#include "main.h"
#include "menu.h"
#include <epan/packet.h>
@@ -60,6 +58,8 @@
#include "compat_macros.h"
#include "gtkglobals.h"
#include "../tap.h"
+#include "../menu.h"
+#include "../ipproto.h"
GtkWidget *popup_menu_object;
@@ -408,16 +408,16 @@ menus_init(void) {
#endif
set_menus_for_captured_packets(FALSE);
- set_menus_for_selected_packet(FALSE);
- set_menus_for_selected_tree_row(FALSE);
+ set_menus_for_selected_packet(&cfile);
+ set_menus_for_selected_tree_row(&cfile);
}
}
typedef struct _menu_item {
char *name;
gboolean enabled;
- gboolean (*selected_packet_enabled)(gboolean);
- gboolean (*selected_tree_row_enabled)(gboolean);
+ gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *);
+ gboolean (*selected_tree_row_enabled)(field_info *);
struct _menu_item *parent;
struct _menu_item *children;
struct _menu_item *next;
@@ -448,8 +448,8 @@ static menu_item_t tap_menu_tree_root;
*/
void
register_tap_menu_item(char *name, GtkItemFactoryCallback callback,
- gboolean (*selected_packet_enabled)(gboolean),
- gboolean (*selected_tree_row_enabled)(gboolean))
+ gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *),
+ gboolean (*selected_tree_row_enabled)(field_info *))
{
static const char toolspath[] = "/Tools/";
char *p;
@@ -814,9 +814,11 @@ set_menus_for_captured_packets(gboolean have_captured_packets)
have_captured_packets);
}
+/* Enable or disable menu items based on whether a packet is selected and,
+ if so, on the properties of the packet. */
static gboolean
-walk_menu_tree_for_selected_packet(menu_item_t *node,
- gboolean have_selected_packet)
+walk_menu_tree_for_selected_packet(menu_item_t *node, frame_data *fd,
+ epan_dissect_t *edt)
{
gboolean is_enabled;
menu_item_t *child;
@@ -837,10 +839,8 @@ walk_menu_tree_for_selected_packet(menu_item_t *node,
* call it and set the item's enabled/disabled status
* based on its return value.
*/
- if (node->selected_packet_enabled != NULL) {
- node->enabled =
- node->selected_packet_enabled(have_selected_packet);
- }
+ if (node->selected_packet_enabled != NULL)
+ node->enabled = node->selected_packet_enabled(fd, edt);
} else {
/*
* It's an interior node; call
@@ -854,8 +854,7 @@ walk_menu_tree_for_selected_packet(menu_item_t *node,
is_enabled = FALSE;
for (child = node->children; child != NULL; child =
child->next) {
- if (walk_menu_tree_for_selected_packet(child,
- have_selected_packet))
+ if (walk_menu_tree_for_selected_packet(child, fd, edt))
is_enabled = TRUE;
}
node->enabled = is_enabled;
@@ -873,52 +872,52 @@ walk_menu_tree_for_selected_packet(menu_item_t *node,
}
void
-set_menus_for_selected_packet(gboolean have_selected_packet)
+set_menus_for_selected_packet(capture_file *cf)
{
set_menu_sensitivity(main_menu_factory, "/File/Print Packet",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(packet_list_menu_factory, "/Print Packet",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Edit/Mark Frame",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(packet_list_menu_factory, "/Mark Frame",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Edit/Mark All Frames",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Edit/Unmark All Frames",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Display/Collapse All",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(tree_view_menu_factory, "/Collapse All",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Display/Expand All",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(tree_view_menu_factory, "/Expand All",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Display/Show Packet In New Window",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(packet_list_menu_factory, "/Show Packet In New Window",
- have_selected_packet);
+ cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Tools/Follow TCP Stream",
- have_selected_packet ? (cfile.edt->pi.ipproto == 6) : FALSE);
+ cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE);
set_menu_sensitivity(NULL, "/Follow TCP Stream",
- have_selected_packet ? (cfile.edt->pi.ipproto == 6) : FALSE);
+ cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE);
set_menu_sensitivity(main_menu_factory, "/Tools/Decode As...",
- have_selected_packet && decode_as_ok());
+ cf->current_frame != NULL && decode_as_ok());
set_menu_sensitivity(NULL, "/Decode As...",
- have_selected_packet && decode_as_ok());
+ cf->current_frame != NULL && decode_as_ok());
set_menu_sensitivity(tree_view_menu_factory, "/Resolve Name",
- have_selected_packet && g_resolv_flags == 0);
+ cf->current_frame != NULL && g_resolv_flags == 0);
set_menu_sensitivity(main_menu_factory, "/Tools/TCP Stream Analysis",
- have_selected_packet ? (cfile.edt->pi.ipproto == 6) : FALSE);
- walk_menu_tree_for_selected_packet(&tap_menu_tree_root, have_selected_packet);
+ cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE);
+ walk_menu_tree_for_selected_packet(&tap_menu_tree_root, cf->current_frame,
+ cf->edt);
}
/* Enable or disable menu items based on whether a tree row is selected
- and on whether a "Match" can be done. */
+ and, if so, on the properties of the tree row. */
static gboolean
-walk_menu_tree_for_selected_tree_row(menu_item_t *node,
- gboolean have_selected_tree_row)
+walk_menu_tree_for_selected_tree_row(menu_item_t *node, field_info *fi)
{
gboolean is_enabled;
menu_item_t *child;
@@ -939,10 +938,8 @@ walk_menu_tree_for_selected_tree_row(menu_item_t *node,
* call it and set the item's enabled/disabled status
* based on its return value.
*/
- if (node->selected_tree_row_enabled != NULL) {
- node->enabled =
- node->selected_tree_row_enabled(have_selected_tree_row);
- }
+ if (node->selected_tree_row_enabled != NULL)
+ node->enabled = node->selected_tree_row_enabled(fi);
} else {
/*
* It's an interior node; call
@@ -956,8 +953,7 @@ walk_menu_tree_for_selected_tree_row(menu_item_t *node,
is_enabled = FALSE;
for (child = node->children; child != NULL; child =
child->next) {
- if (walk_menu_tree_for_selected_tree_row(child,
- have_selected_tree_row))
+ if (walk_menu_tree_for_selected_tree_row(child, fi))
is_enabled = TRUE;
}
node->enabled = is_enabled;
@@ -975,50 +971,43 @@ walk_menu_tree_for_selected_tree_row(menu_item_t *node,
}
void
-set_menus_for_selected_tree_row(gboolean have_selected_tree_row)
+set_menus_for_selected_tree_row(capture_file *cf)
{
- gboolean properties = FALSE;
+ gboolean properties;
- if (cfile.finfo_selected) {
- header_field_info *hfinfo = cfile.finfo_selected->hfinfo;
+ if (cf->finfo_selected != NULL) {
+ header_field_info *hfinfo = cf->finfo_selected->hfinfo;
if (hfinfo->parent == -1) {
properties = prefs_is_registered_protocol(hfinfo->abbrev);
} else {
properties = prefs_is_registered_protocol(proto_registrar_get_abbrev(hfinfo->parent));
}
- if (hfinfo->type == FT_FRAMENUM) {
- set_menu_sensitivity(main_menu_factory,
- "/Tools/Go To Corresponding Frame", TRUE);
- set_menu_sensitivity(tree_view_menu_factory,
- "/Go To Corresponding Frame", TRUE);
- } else {
- set_menu_sensitivity(main_menu_factory,
- "/Tools/Go To Corresponding Frame", FALSE);
- set_menu_sensitivity(tree_view_menu_factory,
- "/Go To Corresponding Frame", FALSE);
- }
+ set_menu_sensitivity(main_menu_factory,
+ "/Tools/Go To Corresponding Frame", hfinfo->type == FT_FRAMENUM);
+ set_menu_sensitivity(tree_view_menu_factory,
+ "/Go To Corresponding Frame", hfinfo->type == FT_FRAMENUM);
set_menu_sensitivity(main_menu_factory, "/Display/Match",
- proto_can_match_selected(cfile.finfo_selected, cfile.edt));
+ proto_can_match_selected(cf->finfo_selected, cf->edt));
set_menu_sensitivity(tree_view_menu_factory, "/Match",
- proto_can_match_selected(cfile.finfo_selected, cfile.edt));
+ proto_can_match_selected(cf->finfo_selected, cf->edt));
set_menu_sensitivity(main_menu_factory, "/Display/Prepare",
- proto_can_match_selected(cfile.finfo_selected, cfile.edt));
+ proto_can_match_selected(cf->finfo_selected, cf->edt));
set_menu_sensitivity(tree_view_menu_factory, "/Prepare",
- proto_can_match_selected(cfile.finfo_selected, cfile.edt));
+ proto_can_match_selected(cf->finfo_selected, cf->edt));
+ set_menu_sensitivity(tree_view_menu_factory, "/Protocol Properties...",
+ properties);
} else {
+ set_menu_sensitivity(tree_view_menu_factory,
+ "/Go To Corresponding Frame", FALSE);
set_menu_sensitivity(main_menu_factory, "/Display/Match", FALSE);
set_menu_sensitivity(tree_view_menu_factory, "/Match", FALSE);
set_menu_sensitivity(main_menu_factory, "/Display/Prepare", FALSE);
set_menu_sensitivity(tree_view_menu_factory, "/Prepare", FALSE);
set_menu_sensitivity(main_menu_factory,
"/Tools/Go To Corresponding Frame", FALSE);
- set_menu_sensitivity(tree_view_menu_factory,
- "/Go To Corresponding Frame", FALSE);
+ set_menu_sensitivity(tree_view_menu_factory, "/Protocol Properties...",
+ FALSE);
}
- set_menu_sensitivity(tree_view_menu_factory, "/Protocol Properties...",
- have_selected_tree_row && properties);
-
- walk_menu_tree_for_selected_tree_row(&tap_menu_tree_root,
- have_selected_tree_row);
+ walk_menu_tree_for_selected_tree_row(&tap_menu_tree_root, cf->finfo_selected);
}
diff --git a/gtk/menu.h b/gtk/menu.h
index d19df6440e..6bef198aa5 100644
--- a/gtk/menu.h
+++ b/gtk/menu.h
@@ -1,7 +1,7 @@
/* menu.h
* Menu definitions
*
- * $Id: menu.h,v 1.10 2003/09/19 07:24:38 guy Exp $
+ * $Id: menu.h,v 1.11 2003/09/24 02:36:35 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -44,20 +44,21 @@ gint popup_menu_handler(GtkWidget *widget, GdkEvent *event, gpointer data);
* the work of creating the tap window.
*
* "selected_packet_enabled" gets called by "set_menus_for_selected_packet()";
- * it's passed a Boolean that's TRUE if a packet is selected and FALSE
- * otherwise, and should return TRUE if the tap will work now (which
- * might depend on whether a packet is selected and, if one is, on the
- * packet) and FALSE if not.
+ * it's passed a pointer to the "frame_data" structure for the current frame,
+ * if any, and to the "epan_dissect_t" structure for that frame, if any, and
+ * should return TRUE if the tap will work now (which might depend on whether
+ * a frame is selected and, if one is, on the frame) and FALSE if not.
*
* "selected_tree_row_enabled" gets called by
- * "set_menus_for_selected_tree_row()"; it's passed a Boolean that's TRUE if
- * a protocol tree row is selected and FALSE otherwise, and should return
- * TRUE if the tap will work now (which might depend on whether a tree row
- * is selected and, if one is, on the tree row) and FALSE if not.
+ * "set_menus_for_selected_tree_row()"; it's passed a pointer to the
+ * "field_info" structure for the currently selected field, if any,
+ * and should return TRUE if the tap will work now (which might depend on
+ * whether a tree row is selected and, if one is, on the tree row) and
+ * FALSE if not.
*/
extern void register_tap_menu_item(char *name, GtkItemFactoryCallback callback,
- gboolean (*selected_packet_enabled)(gboolean),
- gboolean (*selected_tree_row_enabled)(gboolean));
+ gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *),
+ gboolean (*selected_tree_row_enabled)(field_info *));
extern GtkWidget *popup_menu_object;
diff --git a/gtk/mgcp_stat.c b/gtk/mgcp_stat.c
index b44d3fd077..b43ae9849a 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.15 2003/09/21 20:06:02 gerald Exp $
+ * $Id: mgcp_stat.c,v 1.16 2003/09/24 02:36:35 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -35,8 +35,9 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "../epan/packet_info.h"
+#include "../epan/epan.h"
+#include "menu.h"
#include "../tap.h"
#include "../epan/value_string.h"
#include "../register.h"
diff --git a/gtk/rpc_progs.c b/gtk/rpc_progs.c
index d63d6c6451..d321630cf1 100644
--- a/gtk/rpc_progs.c
+++ b/gtk/rpc_progs.c
@@ -1,7 +1,7 @@
/* rpc_progs.c
* rpc_progs 2002 Ronnie Sahlberg
*
- * $Id: rpc_progs.c,v 1.11 2003/09/19 07:24:38 guy Exp $
+ * $Id: rpc_progs.c,v 1.12 2003/09/24 02:36:35 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -33,8 +33,9 @@
#endif
#include <gtk/gtk.h>
-#include "menu.h"
#include "epan/packet_info.h"
+#include "epan/epan.h"
+#include "menu.h"
#include "tap.h"
#include "../register.h"
#include "packet-rpc.h"
diff --git a/gtk/rpc_stat.c b/gtk/rpc_stat.c
index d2f019a9b4..f885ea46b5 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.21 2003/09/19 07:24:38 guy Exp $
+ * $Id: rpc_stat.c,v 1.22 2003/09/24 02:36:35 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -33,8 +33,9 @@
#endif
#include <gtk/gtk.h>
-#include "menu.h"
#include "epan/packet_info.h"
+#include "epan/epan.h"
+#include "menu.h"
#include "simple_dialog.h"
#include "tap.h"
#include "../register.h"
diff --git a/gtk/smb_stat.c b/gtk/smb_stat.c
index 04878af25b..b00dad787d 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.18 2003/09/19 07:24:38 guy Exp $
+ * $Id: smb_stat.c,v 1.19 2003/09/24 02:36:35 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,8 +34,9 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "menu.h"
#include "../epan/packet_info.h"
+#include "../epan/epan.h"
+#include "menu.h"
#include "../tap.h"
#include "../epan/value_string.h"
#include "../smb.h"
diff --git a/gtk/wsp_stat.c b/gtk/wsp_stat.c
index c80ca17f1a..1a8faddfa3 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.3 2003/09/19 07:24:39 guy Exp $
+ * $Id: wsp_stat.c,v 1.4 2003/09/24 02:36:35 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -28,8 +28,9 @@
#endif
#include <gtk/gtk.h>
-#include "menu.h"
#include "epan/packet_info.h"
+#include "epan/epan.h"
+#include "menu.h"
#include "simple_dialog.h"
#include "tap.h"
#include "../register.h"