#include "gtk/main_welcome.h"
#include "gtk/uat_gui.h"
#include "gtk/gui_utils.h"
+#include "gtk/manual_addr_resolv.h"
#ifdef NEW_PACKET_LIST
#include "gtk/new_packet_list.h"
static void show_hide_cb(GtkWidget *w, gpointer data, gint action);
static void timestamp_format_cb(GtkWidget *w, gpointer d, gint action);
static void timestamp_precision_cb(GtkWidget *w, gpointer d, gint action);
+static void timestamp_seconds_time_cb(GtkWidget *w, gpointer d, gint action);
static void name_resolution_cb(GtkWidget *w, gpointer d, gint action);
#ifdef HAVE_LIBPCAP
static void auto_scroll_live_cb(GtkWidget *w, gpointer d);
if( (action>>8) == 255 ) {
color_filters_reset_tmp();
#ifdef NEW_PACKET_LIST
- new_packet_list_colorize_packets();
+ new_packet_list_colorize_packets();
#else
cf_colorize_packets(&cfile);
#endif
{"/Edit/Find Previous Mark", "<shift><control>B", GTK_MENU_FUNC(find_prev_mark_cb),
0, NULL, NULL,},
#ifdef NEW_PACKET_LIST
- {"/Edit/Mark _All Packets", "<control>A", GTK_MENU_FUNC(new_packet_list_mark_all_frames_cb), 0, NULL, NULL,},
+ {"/Edit/Mark _All Displayed Packets", "<control>A", GTK_MENU_FUNC(new_packet_list_mark_all_frames_cb), 0, NULL, NULL,},
{"/Edit/_Unmark All Packets", "<control>D", GTK_MENU_FUNC(new_packet_list_unmark_all_frames_cb), 0, NULL, NULL,},
#else
- {"/Edit/Mark _All Packets", "<control>A", GTK_MENU_FUNC(packet_list_mark_all_frames_cb), 0, NULL, NULL,},
+ {"/Edit/Mark _All Displayed Packets", "<control>A", GTK_MENU_FUNC(packet_list_mark_all_frames_cb), 0, NULL, NULL,},
{"/Edit/_Unmark All Packets", "<control>D", GTK_MENU_FUNC(packet_list_unmark_all_frames_cb), 0, NULL, NULL,},
+#endif /* NEW_PACKET_LIST */
+ {"/Edit/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+#ifdef NEW_PACKET_LIST
+ {"/Edit/_Ignore Packet (toggle)", "<control>X", GTK_MENU_FUNC(new_packet_list_ignore_frame_cb),
+ 0, NULL, NULL,},
+ {"/Edit/Ignore All Displayed Packets", "<alt><shift><control>X", GTK_MENU_FUNC(new_packet_list_ignore_all_frames_cb),
+ 0, NULL, NULL,},
+ {"/Edit/U_n-Ignore All Packets", "<shift><control>X", GTK_MENU_FUNC(new_packet_list_unignore_all_frames_cb),
+ 0, NULL, NULL,},
+#else
+ {"/Edit/_Ignore Packet (toggle)", "<control>X", GTK_MENU_FUNC(packet_list_ignore_frame_cb),
+ 0, NULL, NULL,},
+ {"/Edit/Ignore All Displayed Packets", "<alt><shift><control>X", GTK_MENU_FUNC(packet_list_ignore_all_frames_cb),
+ 0, NULL, NULL,},
+ {"/Edit/U_n-Ignore All Packets", "<shift><control>X", GTK_MENU_FUNC(packet_list_unignore_all_frames_cb),
+ 0, NULL, NULL,},
#endif /* NEW_PACKET_LIST */
{"/Edit/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
{"/Edit/Set Time Reference (toggle)", "<control>T", GTK_MENU_FUNC(reftime_frame_cb),
{"/Edit/Find Previous Reference", "<alt><shift><control>B", GTK_MENU_FUNC(reftime_frame_cb), REFTIME_FIND_PREV, NULL, NULL,},
{"/Edit/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
{"/Edit/_Configuration Profiles...", "<shift><control>A", GTK_MENU_FUNC(profile_dialog_cb), 0, NULL, NULL,},
- {"/Edit/_Preferences...", "<shift><control>P", GTK_MENU_FUNC(prefs_cb),
- 0, "<StockItem>", GTK_STOCK_PREFERENCES,},
+ {"/Edit/_Preferences...", "<shift><control>P", GTK_MENU_FUNC(prefs_page_cb),
+ PREFS_PAGE_USER_INTERFACE, "<StockItem>", GTK_STOCK_PREFERENCES,},
{"/_View", NULL, NULL, 0, "<Branch>", NULL,},
{"/View/_Main Toolbar", NULL, GTK_MENU_FUNC(show_hide_cb), SHOW_HIDE_MAIN_TOOLBAR, "<CheckItem>", NULL,},
{"/View/_Filter Toolbar", NULL, GTK_MENU_FUNC(show_hide_cb), SHOW_HIDE_FILTER_TOOLBAR, "<CheckItem>", NULL,},
TS_PREC_FIXED_USEC, "/View/Time Display Format/Automatic (File Format Precision)", NULL,},
{"/View/Time Display Format/Nanoseconds: 0.123456789", NULL, GTK_MENU_FUNC(timestamp_precision_cb),
TS_PREC_FIXED_NSEC, "/View/Time Display Format/Automatic (File Format Precision)", NULL,},
+ {"/View/Time Display Format/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+ {"/View/Time Display Format/Display Seconds with hours and minutes", "<alt><control>0", GTK_MENU_FUNC(timestamp_seconds_time_cb), 0, "<CheckItem>", NULL,},
{"/View/Name Resol_ution", NULL, NULL, 0, "<Branch>", NULL,},
{"/View/Name Resolution/_Resolve Name", NULL, GTK_MENU_FUNC(resolve_name_cb), 0, NULL, NULL,},
{"/View/Name Resolution/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
0, "<StockItem>", WIRESHARK_STOCK_DISPLAY_FILTER,},
{"/Analyze/Display Filter _Macros...", NULL, GTK_MENU_FUNC(macros_dialog_cb), 0, NULL, NULL,},
{"/Analyze/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+ {"/Analyze/Apply as Column", NULL, GTK_MENU_FUNC(apply_as_custom_column_cb), 0, NULL, NULL},
{"/Analyze/Appl_y as Filter", NULL, NULL, 0, "<Branch>", NULL,},
{"/Analyze/Apply as Filter/_Selected", NULL, GTK_MENU_FUNC(match_selected_ptree_cb),
MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL,},
/* calculate the number of menu_items */
static int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]);
+/* packet list heading popup */
+static GtkItemFactoryEntry packet_list_heading_items[] =
+{
+#ifdef NEW_PACKET_LIST
+ {"/Sort Ascending", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_SORT_ASCENDING, "<StockItem>", GTK_STOCK_SORT_ASCENDING,},
+ {"/Sort Descending", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_SORT_DESCENDING, "<StockItem>", GTK_STOCK_SORT_DESCENDING,},
+ {"/No Sorting", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_SORT_NONE, NULL, NULL,},
+
+ {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+
+ {"/Align Left", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_LEFT, "<StockItem>", GTK_STOCK_JUSTIFY_LEFT,},
+ {"/Align Center", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_CENTER, "<StockItem>", GTK_STOCK_JUSTIFY_CENTER,},
+ {"/Align Right", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_RIGHT, "<StockItem>", GTK_STOCK_JUSTIFY_RIGHT,},
+
+ {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+
+ {"/Column Preferences...", NULL, GTK_MENU_FUNC(prefs_page_cb), PREFS_PAGE_COLUMNS, "<StockItem>", GTK_STOCK_PREFERENCES,},
+ {"/Resize Column", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_RESIZE, "<StockItem>", WIRESHARK_STOCK_RESIZE_COLUMNS,},
+ {"/Rename Column Title...", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_RENAME, "<StockItem>", GTK_STOCK_BOLD,},
+
+ {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+
+ {"/Remove Column", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_REMOVE, "<StockItem>", GTK_STOCK_DELETE,}
+#else
+ {"/Sort Ascending", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_SORT_ASCENDING, "<StockItem>", GTK_STOCK_SORT_ASCENDING,},
+ {"/Sort Descending", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_SORT_DESCENDING, "<StockItem>", GTK_STOCK_SORT_DESCENDING,},
+ {"/No Sorting", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_SORT_NONE, NULL, NULL,},
+
+ {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+
+ {"/Align Left", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_LEFT, "<StockItem>", GTK_STOCK_JUSTIFY_LEFT,},
+ {"/Align Center", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_CENTER, "<StockItem>", GTK_STOCK_JUSTIFY_CENTER,},
+ {"/Align Right", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_RIGHT, "<StockItem>", GTK_STOCK_JUSTIFY_RIGHT,},
+
+ {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+
+ {"/Column Preferences...", NULL, GTK_MENU_FUNC(prefs_page_cb), PREFS_PAGE_COLUMNS, "<StockItem>", GTK_STOCK_PREFERENCES,},
+ {"/Resize Column", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_RESIZE, "<StockItem>", WIRESHARK_STOCK_RESIZE_COLUMNS,},
+ {"/Rename Column Title...", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_RENAME, "<StockItem>", GTK_STOCK_BOLD,},
+
+ {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+
+ {"/Remove Column", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_REMOVE, "<StockItem>", GTK_STOCK_DELETE,}
+#endif
+};
+
/* packet list popup */
static GtkItemFactoryEntry packet_list_menu_items[] =
{
#ifdef NEW_PACKET_LIST
{"/Mark Packet (toggle)", NULL, GTK_MENU_FUNC(new_packet_list_mark_frame_cb), 0, NULL, NULL,},
+ {"/Ignore Packet (toggle)", NULL, GTK_MENU_FUNC(new_packet_list_ignore_frame_cb), 0, NULL, NULL,},
#else
{"/Mark Packet (toggle)", NULL, GTK_MENU_FUNC(packet_list_mark_frame_cb), 0, NULL, NULL,},
+ {"/Ignore Packet (toggle)", NULL, GTK_MENU_FUNC(packet_list_ignore_frame_cb), 0, NULL, NULL,},
#endif /* NEW_PACKET_LIST */
{"/Set Time Reference (toggle)", NULL, GTK_MENU_FUNC(reftime_frame_cb), REFTIME_TOGGLE, "<StockItem>", WIRESHARK_STOCK_TIME,},
+ {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+ {"/Manually Resolve Address", NULL, GTK_MENU_FUNC(manual_addr_resolv_dlg), 0, NULL, NULL,},
{"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
{"/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL,},
{"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+ {"/Apply as Column", NULL, GTK_MENU_FUNC(apply_as_custom_column_cb), 0, NULL, NULL},
+
+ {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
+
{"/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL,},
{"/Apply as Filter/_Selected", NULL, GTK_MENU_FUNC(match_selected_ptree_cb),
MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL,},
static int initialize = TRUE;
static GtkItemFactory *main_menu_factory = NULL;
+static GtkItemFactory *packet_list_heading_factory = NULL;
static GtkItemFactory *packet_list_menu_factory = NULL;
static GtkItemFactory *tree_view_menu_factory = NULL;
static GtkItemFactory *bytes_menu_factory = NULL;
if (initialize) {
initialize = FALSE;
+ popup_menu_object = gtk_menu_new();
+
+ /* packet list heading pop-up menu */
+ packet_list_heading_factory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", NULL);
+ gtk_item_factory_create_items_ac(packet_list_heading_factory, sizeof(packet_list_heading_items)/sizeof(packet_list_heading_items[0]), packet_list_heading_items, popup_menu_object, 2);
+ g_object_set_data(G_OBJECT(popup_menu_object), PM_PACKET_LIST_COL_KEY,
+ packet_list_heading_factory->widget);
+ popup_menu_list = g_slist_append((GSList *)popup_menu_list, packet_list_heading_factory);
+
/* packet list pop-up menu */
packet_list_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", NULL);
- popup_menu_object = gtk_menu_new();
gtk_item_factory_create_items_ac(packet_list_menu_factory, sizeof(packet_list_menu_items)/sizeof(packet_list_menu_items[0]), packet_list_menu_items, popup_menu_object, 2);
g_object_set_data(G_OBJECT(popup_menu_object), PM_PACKET_LIST_KEY,
packet_list_menu_factory->widget);
/* open and read the capture file (this will close an existing file) */
if (cf_open(&cfile, cf_name, FALSE, &err) == CF_OK) {
- cf_read(&cfile);
+ cf_read(&cfile, FALSE);
} else {
/* the capture file apparently no longer exists; remove menu item */
/* XXX: ask user to remove item, it's maybe only a temporary problem */
/* open and read the capture file (this will close an existing file) */
if (cf_open(&cfile, cf_name, FALSE, &err) == CF_OK) {
- cf_read(&cfile);
+ cf_read(&cfile, FALSE);
} else {
/* the capture file apparently no longer exists; remove menu item */
/* XXX: ask user to remove item, it's maybe only a temporary problem */
}
}
+static void
+timestamp_seconds_time_cb(GtkWidget *w, gpointer d _U_, gint action _U_)
+{
+ if (GTK_CHECK_MENU_ITEM(w)->active) {
+ recent.gui_seconds_format = TS_SECONDS_HOUR_MIN_SEC;
+ } else {
+ recent.gui_seconds_format = TS_SECONDS_DEFAULT;
+ }
+ timestamp_set_seconds_type (recent.gui_seconds_format);
+
+#ifdef NEW_PACKET_LIST
+ /* This call adjusts column width */
+ cf_timestamp_auto_precision(&cfile);
+ new_packet_list_queue_draw();
+#else
+ cf_change_time_formats(&cfile);
+#endif
+}
void
menu_name_resolution_changed(void)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), FALSE);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);
+ /* don't change the seconds format, if we had a command line value */
+ if (timestamp_get_seconds_type() != TS_SECONDS_NOT_SET) {
+ recent.gui_seconds_format = timestamp_get_seconds_type();
+ }
+
+ menu = gtk_item_factory_get_widget(main_menu_factory,
+ "/View/Time Display Format/Display Seconds with hours and minutes");
+ switch (recent.gui_seconds_format) {
+ case TS_SECONDS_DEFAULT:
+ recent.gui_seconds_format = -1;
+ /* set_active will not trigger the callback when deactivating an inactive item! */
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), FALSE);
+ break;
+ case TS_SECONDS_HOUR_MIN_SEC:
+ recent.gui_seconds_format = -1;
+ /* set_active will not trigger the callback when activating an active item! */
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), FALSE);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);
+ break;
+ default:
+ g_assert_not_reached();
+ }
+
menu_colorize_changed(recent.packet_list_colorize);
switch (recent.gui_bytes_view) {
}
/* Check if we are on tree_view object */
- if (widget == tree_view) {
+ if (widget == tree_view_gbl) {
tree_view_select(widget, (GdkEventButton *) event);
}
}
/* Check if we are on byte_view object */
- if(widget == get_notebook_bv_ptr(byte_nb_ptr)) {
+ if(widget == get_notebook_bv_ptr(byte_nb_ptr_gbl)) {
byte_view_select(widget, (GdkEventButton *) event);
}
/* GDK_2BUTTON_PRESS is a doubleclick -> expand/collapse tree row */
/* GTK version 1 seems to be doing this automatically */
- if (widget == tree_view && event->type == GDK_2BUTTON_PRESS) {
+ if (widget == tree_view_gbl && event->type == GDK_2BUTTON_PRESS) {
GtkTreePath *path;
if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget),
cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Edit/Find Previous Mark",
cf->current_frame != NULL);
- set_menu_sensitivity(main_menu_factory, "/Edit/Mark All Packets",
+ set_menu_sensitivity(main_menu_factory, "/Edit/Mark All Displayed Packets",
cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Edit/Unmark All Packets",
cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Ignore Packet (toggle)",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Ignore All Displayed Packets",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Un-Ignore All Packets",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(packet_list_menu_factory, "/Ignore Packet (toggle)",
+ cf->current_frame != NULL);
set_menu_sensitivity(main_menu_factory, "/Edit/Set Time Reference (toggle)",
cf->current_frame != NULL);
set_menu_sensitivity(packet_list_menu_factory, "/Set Time Reference (toggle)",
cf->current_frame != NULL);
set_menu_sensitivity(packet_list_menu_factory, "/Show Packet in New Window",
cf->current_frame != NULL);
+ set_menu_sensitivity(packet_list_menu_factory, "/Manually Resolve Address",
+ cf->current_frame != NULL ? ((cf->edt->pi.ethertype == ETHERTYPE_IP)||(cf->edt->pi.ethertype == ETHERTYPE_IPv6)) : FALSE);
set_menu_sensitivity(packet_list_menu_factory, "/SCTP",
cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_SCTP) : FALSE);
set_menu_sensitivity(main_menu_factory, "/Analyze/Follow TCP Stream",
}
static void
-rebuild_protocol_prefs_menu (module_t *prefs, gboolean preferences)
+rebuild_protocol_prefs_menu (module_t *prefs_module_p, gboolean preferences)
{
GtkWidget *menu_preferences, *menu_item;
GtkWidget *sub_menu;
sub_menu = gtk_menu_new();
gtk_menu_item_set_submenu (GTK_MENU_ITEM(menu_preferences), sub_menu);
- label = g_strdup_printf ("%s Preferences...", prefs->description);
+ label = g_strdup_printf ("%s Preferences...", prefs_module_p->description);
menu_item = gtk_image_menu_item_new_with_label (label);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(menu_item),
gtk_image_new_from_stock(GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU));
gtk_menu_shell_append (GTK_MENU_SHELL(sub_menu), menu_item);
gtk_widget_show (menu_item);
- prefs_pref_foreach(prefs, add_protocol_prefs_menu, prefs);
+ prefs_pref_foreach(prefs_module_p, add_protocol_prefs_menu, prefs_module_p);
} else {
/* No preferences, remove sub menu */
gtk_menu_item_set_submenu (GTK_MENU_ITEM(menu_preferences), NULL);
}
+void
+menus_set_column_align_default (gboolean right_justify)
+{
+ GtkWidget *submenu, *menu_item_child;
+ GList *child_list, *child_list_item;
+ const gchar *menu_item_name;
+ size_t menu_item_len;
+
+ /* get the submenu container item */
+ submenu = packet_list_heading_factory->widget;
+
+ /* find the corresponding menu items to update */
+ child_list = gtk_container_get_children(GTK_CONTAINER(submenu));
+ child_list_item = child_list;
+ while(child_list_item) {
+ menu_item_child = (GTK_BIN(child_list_item->data))->child;
+ if (menu_item_child != NULL) {
+ menu_item_name = gtk_label_get_text(GTK_LABEL(menu_item_child));
+ menu_item_len = strlen (menu_item_name);
+ if(strncmp(menu_item_name, "Align Left", 10) == 0) {
+ if (!right_justify && menu_item_len == 10) {
+ gtk_label_set_text(GTK_LABEL(menu_item_child), "Align Left\t(default)");
+ } else if (right_justify && menu_item_len > 10) {
+ gtk_label_set_text(GTK_LABEL(menu_item_child), "Align Left");
+ }
+ } else if (strncmp (menu_item_name, "Align Right", 11) == 0) {
+ if (right_justify && menu_item_len == 11) {
+ gtk_label_set_text(GTK_LABEL(menu_item_child), "Align Right\t(default)");
+ } else if (!right_justify && menu_item_len > 11) {
+ gtk_label_set_text(GTK_LABEL(menu_item_child), "Align Right");
+ }
+ }
+ }
+ child_list_item = g_list_next(child_list_item);
+ }
+ g_list_free(child_list);
+}
+
void
set_menus_for_selected_tree_row(capture_file *cf)
{
TRUE);
set_menu_sensitivity(tree_view_menu_factory, "/Copy/As Filter",
proto_can_match_selected(cf->finfo_selected, cf->edt));
+ set_menu_sensitivity(main_menu_factory, "/Analyze/Apply as Column",
+ hfinfo->type != FT_NONE);
set_menu_sensitivity(main_menu_factory, "/Analyze/Apply as Filter",
proto_can_match_selected(cf->finfo_selected, cf->edt));
+ set_menu_sensitivity(tree_view_menu_factory, "/Apply as Column",
+ hfinfo->type != FT_NONE);
set_menu_sensitivity(tree_view_menu_factory, "/Apply as Filter",
proto_can_match_selected(cf->finfo_selected, cf->edt));
set_menu_sensitivity(main_menu_factory, "/Analyze/Prepare a Filter",
set_menu_sensitivity(main_menu_factory, "/View/Expand Subtrees", cf->finfo_selected->tree_type != -1);
set_menu_sensitivity(tree_view_menu_factory, "/Expand Subtrees", cf->finfo_selected->tree_type != -1);
set_menu_sensitivity(tree_view_menu_factory, "/Wiki Protocol Page",
- TRUE);
+ (id == -1) ? FALSE : TRUE);
set_menu_sensitivity(tree_view_menu_factory, "/Filter Field Reference",
- TRUE);
+ (id == -1) ? FALSE : TRUE);
prev_abbrev = g_object_get_data(G_OBJECT(tree_view_menu_factory), "menu_abbrev");
if (!prev_abbrev || (strcmp (prev_abbrev, abbrev) != 0)) {
/* No previous protocol or protocol changed - update Protocol Preferences menu */
- module_t *prefs = prefs_find_module(abbrev);
- rebuild_protocol_prefs_menu (prefs, properties);
+ module_t *prefs_module_p = prefs_find_module(abbrev);
+ rebuild_protocol_prefs_menu (prefs_module_p, properties);
g_object_set_data(G_OBJECT(tree_view_menu_factory), "menu_abbrev", g_strdup(abbrev));
g_free (prev_abbrev);
set_menu_sensitivity(main_menu_factory, "/Edit/Copy/Value", FALSE);
set_menu_sensitivity(main_menu_factory, "/Edit/Copy/As Filter", FALSE);
set_menu_sensitivity(tree_view_menu_factory, "/Copy", FALSE);
+ set_menu_sensitivity(main_menu_factory, "/Analyze/Apply as Column", FALSE);
+ set_menu_sensitivity(tree_view_menu_factory, "/Apply as Column", FALSE);
set_menu_sensitivity(main_menu_factory, "/Analyze/Apply as Filter", FALSE);
set_menu_sensitivity(tree_view_menu_factory, "/Apply as Filter", FALSE);
set_menu_sensitivity(main_menu_factory, "/Analyze/Prepare a Filter", FALSE);