2009-06-21 19:16:37 +00:00
/* menus.c
* Menu routines
2004-07-18 00:24:25 +00:00
*
* $ Id $
*
2006-05-21 05:12:17 +00:00
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
2004-07-18 00:24:25 +00:00
* Copyright 1998 Gerald Combs
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
# ifdef HAVE_CONFIG_H
# include "config.h"
# endif
# include <gtk/gtk.h>
2009-08-27 03:54:57 +00:00
# include <stdio.h>
2004-07-18 00:24:25 +00:00
# include <string.h>
# include <epan/packet.h>
2004-08-06 19:57:49 +00:00
# include <epan/addr_resolv.h>
2004-09-27 22:55:15 +00:00
# include <epan/prefs.h>
2008-11-26 23:28:06 +00:00
# include <epan/prefs-int.h>
2004-09-29 00:06:36 +00:00
# include <epan/tap.h>
# include <epan/timestamp.h>
2008-10-15 07:43:24 +00:00
# include <epan/etypes.h>
2004-09-29 00:52:45 +00:00
# include <epan/ipproto.h>
2007-08-16 22:03:10 +00:00
# include <epan/dissector_filters.h>
2008-03-01 09:05:40 +00:00
# include <epan/strutil.h>
2004-07-18 00:24:25 +00:00
# include <epan/plugins.h>
# include <epan/epan_dissect.h>
2010-06-20 16:23:43 +00:00
# include <epan/column.h>
2007-02-28 23:20:40 +00:00
2008-04-13 00:55:59 +00:00
# include "../print.h"
# include "../ui_util.h"
# include "../simple_dialog.h"
# include "../color_filters.h"
2008-04-12 19:38:29 +00:00
# include "../stat_menu.h"
2008-04-13 00:55:59 +00:00
# include "gtk/about_dlg.h"
# include "gtk/capture_dlg.h"
2009-02-01 23:14:07 +00:00
# include "gtk/capture_if_dlg.h"
2008-04-13 00:55:59 +00:00
# include "gtk/color_dlg.h"
# include "gtk/filter_dlg.h"
# include "gtk/profile_dlg.h"
# include "gtk/dlg_utils.h"
# include "gtk/capture_file_dlg.h"
# include "gtk/fileset_dlg.h"
# include "gtk/find_dlg.h"
# include "gtk/goto_dlg.h"
# include "gtk/summary_dlg.h"
# include "gtk/prefs_dlg.h"
# include "gtk/packet_win.h"
# include "gtk/follow_tcp.h"
# include "gtk/follow_udp.h"
# include "gtk/follow_ssl.h"
# include "gtk/decode_as_dlg.h"
# include "gtk/help_dlg.h"
# include "gtk/supported_protos_dlg.h"
# include "gtk/proto_dlg.h"
# include "gtk/proto_hier_stats_dlg.h"
# include "gtk/keys.h"
# include "gtk/stock_icons.h"
# include "gtk/gtkglobals.h"
# include "gtk/recent.h"
# include "gtk/main_proto_draw.h"
# include "gtk/conversations_table.h"
# include "gtk/hostlist_table.h"
# include "gtk/packet_history.h"
# include "gtk/sctp_stat.h"
# include "gtk/firewall_dlg.h"
# include "gtk/u3.h"
# include "gtk/macros_dlg.h"
# include "gtk/export_object.h"
# include "gtk/gui_stat_menu.h"
# include "gtk/main.h"
2009-06-21 19:16:37 +00:00
# include "gtk/menus.h"
2008-04-13 00:55:59 +00:00
# include "gtk/main_toolbar.h"
2008-04-15 22:46:35 +00:00
# include "gtk/main_welcome.h"
2008-11-26 23:28:06 +00:00
# include "gtk/uat_gui.h"
2009-03-08 13:19:49 +00:00
# include "gtk/gui_utils.h"
2010-04-27 06:51:16 +00:00
# include "gtk/manual_addr_resolv.h"
2010-05-27 15:51:25 +00:00
# include "gtk/proto_help.h"
2010-10-01 16:29:37 +00:00
# include "gtk/dissector_tables_dlg.h"
2010-10-03 16:09:25 +00:00
# include "gtk/utf8_entities.h"
2008-04-12 19:38:29 +00:00
2009-07-28 20:46:23 +00:00
# ifdef NEW_PACKET_LIST
# include "gtk/new_packet_list.h"
2009-08-18 14:40:51 +00:00
# else
# include "gtk/main_packet_list.h"
2009-07-28 20:46:23 +00:00
# endif
2008-10-27 04:40:54 +00:00
# ifdef HAVE_IGE_MAC_INTEGRATION
# include <ige-mac-menu.h>
# endif
2010-05-25 00:35:44 +00:00
# ifdef HAVE_GTKOSXAPPLICATION
# include <igemacintegration/gtkosxapplication.h>
# endif
2010-10-10 19:33:42 +00:00
static int initialize = TRUE ;
# ifdef MAIN_MENU_USE_UIMANAGER
GtkActionGroup * main_menu_bar_action_group ;
# else
static GtkItemFactory * main_menu_factory = NULL ;
# endif /* MAIN_MENU_USE_UIMANAGER */
static GtkUIManager * ui_manager_main_menubar = NULL ;
static GtkUIManager * ui_manager_packet_list_heading = NULL ;
static GtkUIManager * ui_manager_packet_list_menu = NULL ;
static GtkUIManager * ui_manager_tree_view_menu = NULL ;
static GtkUIManager * ui_manager_bytes_menu = NULL ;
static GtkUIManager * ui_manager_statusbar_profiles_menu = NULL ;
static GSList * popup_menu_list = NULL ;
static GtkAccelGroup * grp ;
2004-07-18 00:24:25 +00:00
typedef struct _menu_item {
char * name ;
gint group ;
2010-10-24 16:14:01 +00:00
const char * label ;
2008-04-13 23:55:32 +00:00
const char * stock_id ;
2004-07-18 00:24:25 +00:00
gboolean enabled ;
GtkItemFactoryCallback callback ;
gpointer callback_data ;
2007-08-16 22:03:10 +00:00
gboolean ( * selected_packet_enabled ) ( frame_data * , epan_dissect_t * , gpointer callback_data ) ;
gboolean ( * selected_tree_row_enabled ) ( field_info * , gpointer callback_data ) ;
2004-07-18 00:24:25 +00:00
GList * children ;
} menu_item_t ;
static GList * tap_menu_tree_root = NULL ;
2008-04-12 18:28:01 +00:00
GtkWidget * popup_menu_object ;
2004-07-18 00:24:25 +00:00
# define GTK_MENU_FUNC(a) ((GtkItemFactoryCallback)(a))
2008-04-12 18:28:01 +00:00
static void merge_all_tap_menus ( GList * node ) ;
2010-10-11 19:29:52 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-18 19:19:27 +00:00
static void menu_open_recent_file_cmd_cb ( GtkAction * action , gpointer data _U_ ) ;
2010-10-11 19:29:52 +00:00
static void add_recent_items ( guint merge_id , GtkUIManager * ui_manager ) ;
# endif /* MAIN_MENU_USE_UIMANAGER */
2008-04-12 18:28:01 +00:00
2004-07-18 00:24:25 +00:00
static void menus_init ( void ) ;
2010-09-12 19:26:42 +00:00
static void set_menu_sensitivity ( GtkUIManager * ui_manager , const gchar * , gint ) ;
2010-10-04 10:36:38 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2010-10-24 16:14:01 +00:00
static void clear_menu_recent_capture_file_cmd_cb ( GtkWidget * w , gpointer unused _U_ ) ;
2010-10-08 02:17:37 +00:00
static void set_menu_sensitivity_old ( const gchar * , gint ) ;
2010-10-04 10:36:38 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2008-04-12 18:28:01 +00:00
static void show_hide_cb ( GtkWidget * w , gpointer data , gint action ) ;
2010-10-04 08:43:15 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2008-04-12 18:28:01 +00:00
static void timestamp_format_cb ( GtkWidget * w , gpointer d , gint action ) ;
static void timestamp_precision_cb ( GtkWidget * w , gpointer d , gint action ) ;
2010-10-04 08:43:15 +00:00
# endif
2010-05-06 10:32:59 +00:00
static void timestamp_seconds_time_cb ( GtkWidget * w , gpointer d , gint action ) ;
2008-04-12 18:28:01 +00:00
static void name_resolution_cb ( GtkWidget * w , gpointer d , gint action ) ;
2004-07-18 00:24:25 +00:00
# ifdef HAVE_LIBPCAP
2010-10-04 08:43:15 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2008-04-12 18:28:01 +00:00
static void auto_scroll_live_cb ( GtkWidget * w , gpointer d ) ;
2004-07-18 00:24:25 +00:00
# endif
2010-10-04 08:43:15 +00:00
# endif
2008-04-12 18:28:01 +00:00
static void colorize_cb ( GtkWidget * w , gpointer d ) ;
2004-07-18 00:24:25 +00:00
2004-07-28 17:19:17 +00:00
/* As a general GUI guideline, we try to follow the Gnome Human Interface Guidelines, which can be found at:
http : //developer.gnome.org/projects/gup/hig/1.0/index.html
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
2004-07-28 17:19:17 +00:00
Please note : there are some differences between the Gnome HIG menu suggestions and our implementation :
File / Open Recent : the Gnome HIG suggests putting the list of recently used files as elements into the File menuitem .
As this is ok for only a few items , this will become unhandy for 10 or even more list entries .
For this reason , we use a submenu for this .
File / Close : the Gnome HIG suggests putting this item just above the Quit item .
This results in unintuitive behaviour as both Close and Quit items are very near together .
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
By putting the Close item near the open item ( s ) , it better suggests that it will close the
2004-07-28 17:19:17 +00:00
currently opened / captured file only .
*/
2008-04-12 18:28:01 +00:00
typedef enum {
SHOW_HIDE_MAIN_TOOLBAR = 1 ,
SHOW_HIDE_FILTER_TOOLBAR ,
SHOW_HIDE_AIRPCAP_TOOLBAR ,
SHOW_HIDE_STATUSBAR ,
SHOW_HIDE_PACKET_LIST ,
SHOW_HIDE_TREE_VIEW ,
SHOW_HIDE_BYTE_VIEW
} show_hide_values_e ;
typedef enum {
CONV_ETHER = 1 ,
CONV_IP ,
CONV_TCP ,
CONV_UDP ,
CONV_CBA
} conv_values_e ;
2006-08-12 22:38:08 +00:00
2008-10-15 07:43:24 +00:00
static char *
2007-11-24 11:38:16 +00:00
build_conversation_filter ( int action , gboolean show_dialog )
2006-08-12 22:38:08 +00:00
{
packet_info * pi = & cfile . edt - > pi ;
2007-11-24 11:38:16 +00:00
char * buf ;
2006-08-12 22:38:08 +00:00
switch ( action ) {
case ( CONV_CBA ) :
2007-11-24 11:38:16 +00:00
if ( pi - > profinet_type = = 0 ) {
if ( show_dialog ) {
simple_dialog ( ESD_TYPE_ERROR , ESD_BTN_OK ,
" Error filtering conversation. Please make \n "
" sure you have a PROFINET CBA packet selected. " ) ;
}
return NULL ;
}
2006-08-12 22:38:08 +00:00
2007-11-24 11:38:16 +00:00
if ( pi - > net_src . type = = AT_IPv4 & & pi - > net_dst . type = = AT_IPv4
2008-10-15 07:43:24 +00:00
& & pi - > ipproto = = IP_PROTO_TCP ) {
2007-11-24 11:38:16 +00:00
/* IPv4 */
switch ( pi - > profinet_type ) {
case ( 1 ) :
buf = g_strdup_printf ( " (ip.src eq %s and ip.dst eq %s and cba.acco.dcom == 1) || (ip.src eq %s and ip.dst eq %s and cba.acco.dcom == 0) " ,
ip_to_str ( pi - > net_dst . data ) ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_dst . data ) ) ;
break ;
case ( 2 ) :
buf = g_strdup_printf ( " (ip.src eq %s and ip.dst eq %s and cba.acco.dcom == 1) || (ip.src eq %s and ip.dst eq %s and cba.acco.dcom == 0) " ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_dst . data ) ,
ip_to_str ( pi - > net_dst . data ) ,
ip_to_str ( pi - > net_src . data ) ) ;
break ;
case ( 3 ) :
buf = g_strdup_printf ( " (ip.src eq %s and ip.dst eq %s and cba.acco.srt == 1) || (ip.src eq %s and ip.dst eq %s and cba.acco.srt == 0) " ,
ip_to_str ( pi - > net_dst . data ) ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_dst . data ) ) ;
break ;
case ( 4 ) :
buf = g_strdup_printf ( " (ip.src eq %s and ip.dst eq %s and cba.acco.srt == 1) || (ip.src eq %s and ip.dst eq %s and cba.acco.srt == 0) " ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_dst . data ) ,
ip_to_str ( pi - > net_dst . data ) ,
ip_to_str ( pi - > net_src . data ) ) ;
break ;
default :
return NULL ;
}
} else {
return NULL ;
}
break ;
2006-08-12 22:38:08 +00:00
case ( CONV_TCP ) :
2008-10-15 07:43:24 +00:00
if ( pi - > ipproto ! = IP_PROTO_TCP ) {
2007-11-24 11:38:16 +00:00
if ( show_dialog ) {
simple_dialog ( ESD_TYPE_ERROR , ESD_BTN_OK ,
" Error filtering conversation. Please make \n "
" sure you have a TCP packet selected. " ) ;
}
return NULL ;
}
2006-08-12 22:38:08 +00:00
2008-10-15 07:43:24 +00:00
if ( pi - > net_src . type = = AT_IPv4 & & pi - > net_dst . type = = AT_IPv4 ) {
2007-11-24 11:38:16 +00:00
/* TCP over IPv4 */
buf = g_strdup_printf ( " (ip.addr eq %s and ip.addr eq %s) and (tcp.port eq %d and tcp.port eq %d) " ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_dst . data ) ,
pi - > srcport , pi - > destport ) ;
2008-10-15 07:43:24 +00:00
} else if ( pi - > net_src . type = = AT_IPv6 & & pi - > net_dst . type = = AT_IPv6 ) {
2007-11-24 11:38:16 +00:00
/* TCP over IPv6 */
buf = g_strdup_printf ( " (ipv6.addr eq %s and ipv6.addr eq %s) and (tcp.port eq %d and tcp.port eq %d) " ,
ip6_to_str ( ( const struct e_in6_addr * ) pi - > net_src . data ) ,
ip6_to_str ( ( const struct e_in6_addr * ) pi - > net_dst . data ) ,
pi - > srcport , pi - > destport ) ;
} else {
return NULL ;
}
break ;
2006-08-12 22:38:08 +00:00
case ( CONV_UDP ) :
2008-10-15 07:43:24 +00:00
if ( pi - > ipproto ! = IP_PROTO_UDP ) {
2007-11-24 11:38:16 +00:00
if ( show_dialog ) {
simple_dialog ( ESD_TYPE_ERROR , ESD_BTN_OK ,
" Error filtering conversation. Please make \n "
" sure you have a UDP packet selected. " ) ;
}
return NULL ;
}
2006-08-12 22:38:08 +00:00
2008-10-15 07:43:24 +00:00
if ( pi - > net_src . type = = AT_IPv4 & & pi - > net_dst . type = = AT_IPv4 ) {
2007-11-24 11:38:16 +00:00
/* UDP over IPv4 */
buf = g_strdup_printf ( " (ip.addr eq %s and ip.addr eq %s) and (udp.port eq %d and udp.port eq %d) " ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_dst . data ) ,
pi - > srcport , pi - > destport ) ;
2008-10-15 07:43:24 +00:00
} else if ( pi - > net_src . type = = AT_IPv6 & & pi - > net_dst . type = = AT_IPv6 ) {
2007-11-24 11:38:16 +00:00
/* UDP over IPv6 */
buf = g_strdup_printf ( " (ipv6.addr eq %s and ipv6.addr eq %s) and (udp.port eq %d and udp.port eq %d) " ,
ip6_to_str ( ( const struct e_in6_addr * ) pi - > net_src . data ) ,
ip6_to_str ( ( const struct e_in6_addr * ) pi - > net_dst . data ) ,
pi - > srcport , pi - > destport ) ;
} else {
return NULL ;
}
break ;
2006-08-12 22:38:08 +00:00
case ( CONV_IP ) :
2008-10-15 07:43:24 +00:00
if ( ( pi - > ethertype ! = ETHERTYPE_IP ) & & ( pi - > ethertype ! = ETHERTYPE_IPv6 ) ) {
2007-11-24 11:38:16 +00:00
if ( show_dialog ) {
simple_dialog ( ESD_TYPE_ERROR , ESD_BTN_OK ,
" Error filtering conversation. Please make \n "
" sure you have a IP packet selected. " ) ;
}
return NULL ;
}
2006-08-12 22:38:08 +00:00
2008-10-15 07:43:24 +00:00
if ( pi - > net_src . type = = AT_IPv4 & & pi - > net_dst . type = = AT_IPv4 ) {
2007-11-24 11:38:16 +00:00
/* IPv4 */
buf = g_strdup_printf ( " ip.addr eq %s and ip.addr eq %s " ,
ip_to_str ( pi - > net_src . data ) ,
ip_to_str ( pi - > net_dst . data ) ) ;
2008-10-15 07:43:24 +00:00
} else if ( pi - > net_src . type = = AT_IPv6 & & pi - > net_dst . type = = AT_IPv6 ) {
2007-11-24 11:38:16 +00:00
/* IPv6 */
buf = g_strdup_printf ( " ipv6.addr eq %s and ipv6.addr eq %s " ,
ip6_to_str ( ( const struct e_in6_addr * ) pi - > net_src . data ) ,
ip6_to_str ( ( const struct e_in6_addr * ) pi - > net_dst . data ) ) ;
} else {
return NULL ;
}
break ;
2006-08-12 22:38:08 +00:00
case ( CONV_ETHER ) :
/* XXX - is this the right way to check for Ethernet? */
2007-07-23 20:18:01 +00:00
/* check for the data link address type */
/* (ethertype will be 0 when used as length field) */
2008-10-15 07:43:24 +00:00
if ( pi - > dl_src . type ! = AT_ETHER ) {
2007-11-24 11:38:16 +00:00
if ( show_dialog ) {
simple_dialog ( ESD_TYPE_ERROR , ESD_BTN_OK ,
" Error filtering conversation. Please make \n "
" sure you have a Ethernet packet selected. " ) ;
}
return NULL ;
}
2006-08-12 22:38:08 +00:00
2008-10-15 07:43:24 +00:00
if ( pi - > dl_src . type = = AT_ETHER & & pi - > dl_dst . type = = AT_ETHER ) {
2007-11-24 11:38:16 +00:00
/* Ethernet */
buf = g_strdup_printf ( " eth.addr eq %s and eth.addr eq %s " ,
ether_to_str ( pi - > dl_src . data ) ,
ether_to_str ( pi - > dl_dst . data ) ) ;
} else {
return NULL ;
}
break ;
2006-08-12 22:38:08 +00:00
default :
2007-11-24 11:38:16 +00:00
return NULL ;
2006-08-12 22:38:08 +00:00
}
2007-11-24 11:38:16 +00:00
return buf ;
}
2006-08-12 22:38:08 +00:00
2010-10-08 03:09:15 +00:00
static void
2010-10-11 19:29:52 +00:00
conversation_cb ( GtkAction * a _U_ , gpointer data _U_ , int action )
2007-11-24 11:38:16 +00:00
{
gchar * filter ;
2009-04-11 18:03:11 +00:00
GtkWidget * filter_te ;
2006-08-12 22:38:08 +00:00
2007-11-26 11:16:04 +00:00
if ( cfile . current_frame ) {
2007-11-26 09:10:37 +00:00
/* create a filter-string based on the selected packet and action */
filter = build_conversation_filter ( action , TRUE ) ;
2006-08-12 22:38:08 +00:00
2007-11-26 09:10:37 +00:00
/* Run the display filter so it goes in effect - even if it's the
same as the previous display filter . */
2010-10-11 19:29:52 +00:00
filter_te = gtk_bin_get_child ( GTK_BIN ( g_object_get_data ( G_OBJECT ( top_level ) , E_DFILTER_CM_KEY ) ) ) ;
2007-11-26 09:10:37 +00:00
gtk_entry_set_text ( GTK_ENTRY ( filter_te ) , filter ) ;
main_filter_packets ( & cfile , filter , TRUE ) ;
2006-08-12 22:38:08 +00:00
2007-11-26 09:10:37 +00:00
g_free ( filter ) ;
}
2007-11-24 11:38:16 +00:00
}
2010-10-08 03:09:15 +00:00
static void
2007-11-24 11:38:16 +00:00
colorize_conversation_cb ( GtkWidget * w _U_ , gpointer data _U_ , int action )
{
gchar * filter = NULL ;
if ( ( action > > 8 ) = = 255 ) {
2007-11-25 14:17:56 +00:00
color_filters_reset_tmp ( ) ;
2009-09-02 18:18:57 +00:00
# ifdef NEW_PACKET_LIST
2009-11-19 18:22:26 +00:00
new_packet_list_colorize_packets ( ) ;
2009-09-02 18:18:57 +00:00
# else
2007-11-24 11:38:16 +00:00
cf_colorize_packets ( & cfile ) ;
2009-09-02 18:18:57 +00:00
# endif
2007-11-26 11:16:04 +00:00
} else if ( cfile . current_frame ) {
2007-11-24 11:38:16 +00:00
if ( ( action & 0xff ) = = 0 ) {
/* colorize_conversation_cb was called from the window-menu
* or through an accelerator key . Try to build a conversation
* filter in the order TCP , UDP , IP , Ethernet and apply the
* coloring */
filter = build_conversation_filter ( CONV_TCP , FALSE ) ;
if ( filter = = NULL )
filter = build_conversation_filter ( CONV_UDP , FALSE ) ;
if ( filter = = NULL )
filter = build_conversation_filter ( CONV_IP , FALSE ) ;
if ( filter = = NULL )
filter = build_conversation_filter ( CONV_ETHER , FALSE ) ;
if ( filter = = NULL ) {
simple_dialog ( ESD_TYPE_ERROR , ESD_BTN_OK , " Unable to build conversation filter. " ) ;
return ;
}
} else {
/* create a filter-string based on the selected packet and action */
filter = build_conversation_filter ( action & 0xff , TRUE ) ;
}
if ( ( action > > 8 ) = = 0 ) {
/* Open the "new coloring filter" dialog with the filter */
color_display_with_filter ( filter ) ;
} else {
/* Set one of the temporary coloring filters */
2007-11-25 14:17:56 +00:00
color_filters_set_tmp ( ( guint8 ) ( action > > 8 ) , filter , FALSE ) ;
2009-09-02 18:18:57 +00:00
# ifdef NEW_PACKET_LIST
2010-07-27 18:59:30 +00:00
new_packet_list_colorize_packets ( ) ;
2009-09-02 18:18:57 +00:00
# else
2010-07-27 18:59:30 +00:00
cf_colorize_packets ( & cfile ) ;
2009-09-02 18:18:57 +00:00
# endif
2007-11-24 11:38:16 +00:00
}
g_free ( filter ) ;
}
2006-08-12 22:38:08 +00:00
}
2010-10-08 03:09:15 +00:00
static void
2010-10-01 22:46:30 +00:00
goto_conversation_frame ( gboolean dir )
{
gchar * filter ;
dfilter_t * dfcode = NULL ;
gboolean found_packet = FALSE ;
filter = build_conversation_filter ( CONV_TCP , FALSE ) ;
if ( filter = = NULL )
filter = build_conversation_filter ( CONV_UDP , FALSE ) ;
if ( filter = = NULL )
filter = build_conversation_filter ( CONV_IP , FALSE ) ;
if ( filter = = NULL ) {
simple_status ( " Unable to build conversation filter. " ) ;
g_free ( filter ) ;
return ;
}
if ( ! dfilter_compile ( filter , & dfcode ) ) {
/* The attempt failed; report an error. */
simple_status ( " Error compiling filter for this conversation. " ) ;
g_free ( filter ) ;
return ;
}
found_packet = cf_find_packet_dfilter ( & cfile , dfcode , dir ) ;
if ( ! found_packet ) {
/* We didn't find a packet */
simple_status ( " No previous/next packet in conversation. " ) ;
}
dfilter_free ( dfcode ) ;
g_free ( filter ) ;
}
2010-10-10 19:33:42 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
static void
2010-10-13 19:04:14 +00:00
goto_next_frame_conversation_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-10-10 19:33:42 +00:00
{
goto_conversation_frame ( FALSE ) ;
}
static void
2010-10-13 19:04:14 +00:00
goto_previous_frame_conversation_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-10-10 19:33:42 +00:00
{
goto_conversation_frame ( TRUE ) ;
}
# else
2010-10-08 03:09:15 +00:00
static void
2010-10-01 22:46:30 +00:00
goto_next_frame_conversation_cb ( GtkWidget * w _U_ , gpointer d _U_ )
{
goto_conversation_frame ( FALSE ) ;
}
2010-10-08 03:09:15 +00:00
static void
2010-10-01 22:46:30 +00:00
goto_previous_frame_conversation_cb ( GtkWidget * w _U_ , gpointer d _U_ )
{
goto_conversation_frame ( TRUE ) ;
}
2010-10-10 19:33:42 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-10-01 22:46:30 +00:00
2010-09-24 06:46:14 +00:00
/*Apply a filter */
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_apply_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyAsFilter/Selected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_REPLACE | MATCH_SELECTED_APPLY_NOW ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_apply_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyAsFilter/NotSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_NOT | MATCH_SELECTED_APPLY_NOW ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_apply_and_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyAsFilter/AndSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_AND | MATCH_SELECTED_APPLY_NOW ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_apply_or_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyAsFilter/OrSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_OR | MATCH_SELECTED_APPLY_NOW ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_apply_and_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyAsFilter/AndNotSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_AND_NOT | MATCH_SELECTED_APPLY_NOW ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_apply_or_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyAsFilter/OrNotSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_OR_NOT | MATCH_SELECTED_APPLY_NOW ) ;
}
/* Prepare a filter */
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_prepare_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/PrepareaFilter/Selected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_REPLACE ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_prepare_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/PrepareaFilter/NotSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_NOT ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_prepare_and_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/PrepareaFilter/AndSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_AND ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_prepare_or_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/PrepareaFilter/OrSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_OR ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_prepare_and_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/PrepareaFilter/AndNotSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_AND_NOT ) ;
}
static void
2010-10-10 19:33:42 +00:00
tree_view_menu_prepare_or_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 19:33:42 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/PrepareaFilter/OrNotSelected " ) ;
2010-09-24 06:46:14 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_OR_NOT ) ;
}
2010-09-07 08:10:45 +00:00
/* Prepare for use of GTKUImanager */
2010-10-10 18:10:33 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-09-07 08:10:45 +00:00
static void
2010-10-10 19:33:42 +00:00
copy_description_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-07 08:10:45 +00:00
{
2010-10-10 19:33:42 +00:00
copy_selected_plist_cb ( NULL /* widget _U_ */ , user_data , COPY_SELECTED_DESCRIPTION ) ;
2010-09-07 08:10:45 +00:00
}
static void
2010-10-10 19:33:42 +00:00
copy_fieldname_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-07 08:10:45 +00:00
{
2010-10-10 19:33:42 +00:00
copy_selected_plist_cb ( NULL /* widget _U_ */ , user_data , COPY_SELECTED_FIELDNAME ) ;
2010-09-07 08:10:45 +00:00
}
static void
2010-10-10 19:33:42 +00:00
copy_value_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-07 08:10:45 +00:00
{
2010-10-10 19:33:42 +00:00
copy_selected_plist_cb ( NULL /* widget _U_ */ , user_data , COPY_SELECTED_VALUE ) ;
2010-09-07 08:10:45 +00:00
}
static void
2010-10-10 19:33:42 +00:00
copy_as_filter_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-07 08:10:45 +00:00
{
2010-10-10 19:33:42 +00:00
match_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_REPLACE | MATCH_SELECTED_COPY_ONLY ) ;
2010-09-07 08:10:45 +00:00
}
2010-09-21 05:32:32 +00:00
static void
2010-10-10 19:33:42 +00:00
set_reftime_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-10-10 19:33:42 +00:00
reftime_frame_cb ( NULL /* widget _U_ */ , user_data , REFTIME_TOGGLE ) ;
2010-09-21 05:32:32 +00:00
}
static void
2010-10-10 19:33:42 +00:00
find_next_ref_time_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-10-10 19:33:42 +00:00
reftime_frame_cb ( NULL /* widget _U_ */ , user_data , REFTIME_FIND_NEXT ) ;
2010-09-21 05:32:32 +00:00
}
static void
2010-10-10 19:33:42 +00:00
find_previous_ref_time_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-10-10 19:33:42 +00:00
reftime_frame_cb ( NULL /* widget _U_ */ , user_data , REFTIME_FIND_PREV ) ;
2010-09-21 05:32:32 +00:00
}
static void
2010-10-10 19:33:42 +00:00
menus_prefs_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-10-10 19:33:42 +00:00
prefs_page_cb ( NULL /* widget _U_ */ , user_data , PREFS_PAGE_USER_INTERFACE ) ;
2010-09-21 05:32:32 +00:00
}
static void
2010-10-04 08:01:55 +00:00
main_toolbar_show_hide_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/MainToolbar " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " main_toolbar_show_hide_cb: No widget found " ) ;
} else {
show_hide_cb ( widget , user_data , SHOW_HIDE_MAIN_TOOLBAR ) ;
}
2010-09-21 05:32:32 +00:00
}
static void
2010-10-04 08:01:55 +00:00
filter_toolbar_show_hide_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/FilterToolbar " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " filter_toolbar_show_hide_cb: No widget found " ) ;
} else {
show_hide_cb ( widget , user_data , SHOW_HIDE_FILTER_TOOLBAR ) ;
}
2010-09-21 05:32:32 +00:00
}
# ifdef HAVE_AIRPCAP
static void
2010-10-04 08:01:55 +00:00
wireless_toolbar_show_hide_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/WirelessToolbar " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " wireless_toolbar_show_hide_cb: No widget found " ) ;
} else {
show_hide_cb ( widget , user_data , SHOW_HIDE_AIRPCAP_TOOLBAR ) ;
}
2010-09-21 05:32:32 +00:00
}
2010-09-24 06:46:14 +00:00
# endif /* HAVE_AIRPCAP */
2010-09-21 05:32:32 +00:00
static void
2010-10-04 08:01:55 +00:00
status_bar_show_hide_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/Statusbar " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " status_bar_show_hide_cb: No widget found " ) ;
} else {
show_hide_cb ( widget , user_data , SHOW_HIDE_STATUSBAR ) ;
}
2010-09-21 05:32:32 +00:00
}
static void
2010-10-04 08:01:55 +00:00
packet_list_show_hide_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/PacketList " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " packet_list_show_hide_cb: No widget found " ) ;
} else {
show_hide_cb ( widget , user_data , SHOW_HIDE_PACKET_LIST ) ;
}
2010-09-21 05:32:32 +00:00
}
static void
2010-10-04 08:01:55 +00:00
packet_details_show_hide_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-10-01 14:20:59 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/PacketDetails " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " packet_details_show_hide_cb: No widget found " ) ;
} else {
show_hide_cb ( widget , user_data , SHOW_HIDE_TREE_VIEW ) ;
}
2010-09-21 05:32:32 +00:00
}
static void
2010-10-04 08:01:55 +00:00
packet_bytes_show_hide_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-10-01 14:20:59 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/PacketBytes " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " packet_bytes_show_hide_cb: No widget found " ) ;
} else {
show_hide_cb ( widget , user_data , SHOW_HIDE_BYTE_VIEW ) ;
}
2010-09-21 05:32:32 +00:00
}
static void
2010-10-01 14:20:59 +00:00
timestamp_format_new_cb ( GtkRadioAction * action , GtkRadioAction * current _U_ , gpointer user_data _U_ )
2010-09-21 05:32:32 +00:00
{
2010-10-08 01:31:47 +00:00
gint value ;
2010-09-21 05:32:32 +00:00
2010-10-08 01:31:47 +00:00
value = gtk_radio_action_get_current_value ( action ) ;
g_warning ( " timestamp_format_new_cb, value %u, recent.gui_time_format %u " , value , recent . gui_time_format ) ;
2010-10-01 14:20:59 +00:00
if ( recent . gui_time_format ! = value ) {
timestamp_set_type ( value ) ;
recent . gui_time_format = value ;
# 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
}
2010-09-21 05:32:32 +00:00
}
static void
2010-10-01 14:20:59 +00:00
timestamp_precision_new_cb ( GtkRadioAction * action , GtkRadioAction * current _U_ , gpointer user_data _U_ )
2010-09-21 05:32:32 +00:00
{
2010-10-08 01:31:47 +00:00
gint value ;
2010-09-21 05:32:32 +00:00
2010-10-08 01:31:47 +00:00
value = gtk_radio_action_get_current_value ( action ) ;
g_warning ( " timestamp_precision_new_cb, value %u, recent.gui_time_precision %u " , value , recent . gui_time_precision ) ;
2010-10-01 14:20:59 +00:00
if ( recent . gui_time_precision ! = value ) {
/* the actual precision will be set in cf_change_time_formats() below */
if ( value = = TS_PREC_AUTO ) {
timestamp_set_precision ( TS_PREC_AUTO_SEC ) ;
} else {
timestamp_set_precision ( value ) ;
}
recent . gui_time_precision = value ;
# 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
}
2010-09-21 05:32:32 +00:00
}
2010-10-03 19:11:10 +00:00
static void
2010-10-04 08:01:55 +00:00
view_menu_seconds_time_cb ( GtkAction * action _U_ , gpointer user_data )
2010-10-03 19:11:10 +00:00
{
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/DisplaySecondsWithHoursAndMinutes " ) ;
if ( ! widget ) {
g_warning ( " view_menu_seconds_time_cb: No widget found " ) ;
} else {
timestamp_seconds_time_cb ( widget , user_data , 0 ) ;
}
}
2010-09-21 05:32:32 +00:00
static void
2010-10-04 08:01:55 +00:00
view_menu_en_for_MAC_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-21 05:32:32 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/NameResolution/EnableforMACLayer " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " view_menu_en_for_MAC_cb: No widget found " ) ;
} else {
name_resolution_cb ( widget , user_data , RESOLV_MAC ) ;
}
2010-09-21 05:32:32 +00:00
}
2010-09-24 06:46:14 +00:00
static void
2010-10-04 08:01:55 +00:00
view_menu_en_for_network_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/NameResolution/EnableforNetworkLayer " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " view_menu_en_for_network_cb: No widget found " ) ;
} else {
name_resolution_cb ( widget , user_data , RESOLV_NETWORK ) ;
}
2010-09-24 06:46:14 +00:00
}
static void
2010-10-04 08:01:55 +00:00
view_menu_en_for_transport_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/NameResolution/EnableforTransportLayer " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " view_menu_en_for_transport_cb: No widget found " ) ;
} else {
name_resolution_cb ( widget , user_data , RESOLV_TRANSPORT ) ;
}
2010-09-24 06:46:14 +00:00
}
static void
2010-10-04 08:01:55 +00:00
view_menu_colorize_pkt_lst_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-09-30 21:23:49 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/ColorizePacketList " ) ;
2010-10-03 17:37:43 +00:00
if ( ! widget ) {
g_warning ( " view_menu_colorize_pkt_lst_cb: No widget found " ) ;
} else {
colorize_cb ( widget , user_data ) ;
}
2010-09-24 06:46:14 +00:00
}
static void
2010-10-08 03:00:54 +00:00
view_menu_auto_scroll_live_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-01 21:46:16 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/AutoScrollinLiveCapture " ) ;
2010-09-24 06:46:14 +00:00
2010-10-01 21:46:16 +00:00
if ( ! widget ) {
2010-10-08 03:00:54 +00:00
g_warning ( " view_menu_auto_scroll_live_cb: No widget found " ) ;
2010-10-01 21:46:16 +00:00
} else {
2010-10-01 14:39:35 +00:00
menu_auto_scroll_live_changed ( GTK_CHECK_MENU_ITEM ( widget ) - > active ) ;
2010-10-01 21:46:16 +00:00
}
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color1_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 1 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color2_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 2 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color3_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 3 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color4_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 4 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color5_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 5 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color6_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 6 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color7_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 7 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color8_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 8 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color9_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 9 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_color10_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 10 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_color_conv_new_rule_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 0 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
view_menu_reset_coloring_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_*/ , user_data , 255 * 256 ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_cont_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /*widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( HELP_CONTENT ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_faq_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /*widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( ONLINEPAGE_FAQ ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_wireshark_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /*widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( LOCALPAGE_MAN_WIRESHARK ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_wireshark_flt_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /*widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( LOCALPAGE_MAN_WIRESHARK_FILTER ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_Tshark_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /*widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( LOCALPAGE_MAN_TSHARK ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_RawShark_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /*widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( LOCALPAGE_MAN_RAWSHARK ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_Dumpcap_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /*widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( LOCALPAGE_MAN_DUMPCAP ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_Mergecap_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /*widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( LOCALPAGE_MAN_MERGECAP ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_Editcap_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /* widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( LOCALPAGE_MAN_EDITCAP ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_Text2pcap_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /* widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( LOCALPAGE_MAN_TEXT2PCAP ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_Website_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /* widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( ONLINEPAGE_HOME ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_Wiki_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /* widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( ONLINEPAGE_WIKI ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_Downloads_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /* widget _U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( ONLINEPAGE_DOWNLOAD ) ) ;
2010-09-24 06:46:14 +00:00
}
static void
2010-10-10 18:10:33 +00:00
help_menu_SampleCaptures_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-24 06:46:14 +00:00
{
2010-10-10 18:10:33 +00:00
topic_menu_cb ( NULL /* widget_U_ */ , NULL /*GdkEventButton *event _U_*/ , GINT_TO_POINTER ( ONLINEPAGE_SAMPLE_FILES ) ) ;
2010-09-24 06:46:14 +00:00
}
2010-09-21 05:32:32 +00:00
2010-09-07 08:10:45 +00:00
static const char * ui_desc_menubar =
" <ui> \n "
" <menubar name ='Menubar'> \n "
" <menu name= 'FileMenu' action='/File'> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='Open' action='/File/Open'/> \n "
2010-10-11 19:29:52 +00:00
" <menu name='OpenRecent' action='/File/OpenRecent'> \n "
" <placeholder name='RecentFiles'/> \n "
" </menu> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='Merge' action='/File/Merge'/> \n "
" <menuitem name='Close' action='/File/Close'/> \n "
2010-09-07 08:10:45 +00:00
" <separator/> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='Save' action='/File/Save'/> \n "
" <menuitem name='SaveAs' action='/File/SaveAs'/> \n "
2010-09-07 08:10:45 +00:00
" <separator/> \n "
2010-09-21 05:32:32 +00:00
" <menu name= 'Set' action='/File/Set'> \n "
" <menuitem name='ListFiles' action='/File/Set/ListFiles'/> \n "
" <menuitem name='NextFile' action='/File/Set/NextFile'/> \n "
" <menuitem name='PreviousFile' action='/File/Set/PreviousFile'/> \n "
2010-09-07 08:10:45 +00:00
" </menu> \n "
" <separator/> \n "
2010-09-21 05:32:32 +00:00
" <menu name= 'Export' action='/File/Export'> \n "
2010-09-07 08:10:45 +00:00
# if _WIN32
2010-09-21 05:32:32 +00:00
" <menuitem name='File' action='/File/Export/File'/> \n "
2010-09-07 08:10:45 +00:00
# else
2010-09-21 05:32:32 +00:00
" <menu name= 'File' action='/File/Export/File'> \n "
" <menuitem name='AsTxt' action='/File/Export/File/Text'/> \n "
" <menuitem name='AsPostScript' action='/File/Export/File/PostScript'/> \n "
" <menuitem name='AsCSV' action='/File/Export/File/CSV'/> \n "
" <menuitem name='AsCArrays' action='/File/Export/File/CArrays'/> \n "
2010-09-07 08:10:45 +00:00
" <separator/> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='AsPSML' action='/File/Export/File/PSML'/> \n "
" <menuitem name='AsPDML' action='/File/Export/File/PDML'/> \n "
2010-09-07 08:10:45 +00:00
" <separator/> \n "
" </menu> \n "
2010-09-24 06:46:14 +00:00
# endif /* _WIN32 */
2010-09-21 05:32:32 +00:00
" <menuitem name='SelectedPacketBytes' action='/File/Export/SelectedPacketBytes'/> \n "
" <menu name= 'Objects' action='/File/Export/Objects'> \n "
" <menuitem name='HTTP' action='/File/Export/Objects/HTTP'/> \n "
" <menuitem name='DICOM' action='/File/Export/Objects/DICOM'/> \n "
" <menuitem name='SMB' action='/File/Export/Objects/SMB'/> \n "
2010-09-07 08:10:45 +00:00
" </menu> \n "
" </menu> \n "
" <separator/> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='Print' action='/File/Print'/> \n "
2010-09-07 08:10:45 +00:00
" <separator/> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='Quit' action='/File/Quit'/> \n "
2010-09-07 08:10:45 +00:00
" </menu> \n "
" <menu name= 'EditMenu' action='/Edit'> \n "
2010-09-21 05:32:32 +00:00
" <menu name= 'Copy' action='/Edit/Copy'> \n "
" <menuitem name='Description' action='/Edit/Copy/Description'/> \n "
" <menuitem name='Fieldname' action='/Edit/Copy/Fieldname'/> \n "
" <menuitem name='Value' action='/Edit/Copy/Value'/> \n "
2010-09-07 08:10:45 +00:00
" <separator/> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='AsFilter' action='/Edit/Copy/AsFilter'/> \n "
2010-09-07 08:10:45 +00:00
" </menu> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='FindPacket' action='/Edit/FindPacket'/> \n "
" <menuitem name='FindNext' action='/Edit/FindNext'/> \n "
" <menuitem name='FindPrevious' action='/Edit/FindPrevious'/> \n "
" <separator/> \n "
2010-09-07 08:10:45 +00:00
# ifdef NEW_PACKET_LIST
2010-09-21 05:32:32 +00:00
" <menuitem name='MarkPacket' action='/Edit/MarkPacket'/> \n "
" <menuitem name='MarkAllDisplayedPackets' action='/Edit/MarkAllDisplayedPackets'/> \n "
" <menuitem name='UnmarkAllPackets' action='/Edit/UnmarkAllPackets'/> \n "
" <menuitem name='FindNextMark' action='/Edit/FindNextMark'/> \n "
" <menuitem name='FindPreviousMark' action='/Edit/FindPreviousMark'/> \n "
" <separator/> \n "
" <menuitem name='IgnorePacket' action='/Edit/IgnorePacket'/> \n "
" <menuitem name='IgnoreAllDisplayedPackets' action='/Edit/IgnoreAllDisplayedPackets'/> \n "
" <menuitem name='Un-IgnoreAllPackets' action='/Edit/Un-IgnoreAllPackets'/> \n "
" <separator/> \n "
" <menuitem name='SetTimeReference' action='/Edit/SetTimeReference'/> \n "
" <menuitem name='Un-TimeReferenceAllPackets' action='/Edit/Un-TimeReferenceAllPackets'/> \n "
" <menuitem name='FindNextTimeReference' action='/Edit/FindNextTimeReference'/> \n "
" <menuitem name='FindPreviousTimeReference' action='/Edit/FindPreviousTimeReference'/> \n "
" <separator/> \n "
2010-09-07 08:10:45 +00:00
# else /* NEW_PACKET_LIST */
2010-10-08 00:33:38 +00:00
# error "You must use the new packet list if you are using GTKUIManager for menus"
2010-09-07 08:10:45 +00:00
# endif
2010-09-21 05:32:32 +00:00
" <menuitem name='ConfigurationProfiles' action='/Edit/ConfigurationProfiles'/> \n "
" <menuitem name='Preferences' action='/Edit/Preferences'/> \n "
" </menu> \n "
" <menu name= 'ViewMenu' action='/View'> \n "
" <menuitem name='MainToolbar' action='/View/MainToolbar'/> \n "
" <menuitem name='FilterToolbar' action='/View/FilterToolbar'/> \n "
# ifdef HAVE_AIRPCAP
" <menuitem name='WirelessToolbar' action='/View/WirelessToolbar'/> \n "
# endif
" <menuitem name='Statusbar' action='/View/Statusbar'/> \n "
" <separator/> \n "
" <menuitem name='PacketList' action='/View/PacketList'/> \n "
" <menuitem name='PacketDetails' action='/View/PacketDetails'/> \n "
" <menuitem name='PacketBytes' action='/View/PacketBytes'/> \n "
" <separator/> \n "
" <menu name= 'TimeDisplayFormat' action='/View/TimeDisplayFormat'> \n "
" <menuitem name='DateandTimeofDay' action='/View/TimeDisplayFormat/DateandTimeofDay'/> \n "
" <menuitem name='TimeofDay' action='/View/TimeDisplayFormat/TimeofDay'/> \n "
" <menuitem name='SecondsSinceEpoch' action='/View/TimeDisplayFormat/SecondsSinceEpoch'/> \n "
" <menuitem name='SecondsSinceBeginningofCapture' action='/View/TimeDisplayFormat/SecondsSinceBeginningofCapture'/> \n "
" <menuitem name='SecondsSincePreviousCapturedPacket' action='/View/TimeDisplayFormat/SecondsSincePreviousCapturedPacket'/> \n "
" <menuitem name='SecondsSincePreviousDisplayedPacket' action='/View/TimeDisplayFormat/SecondsSincePreviousDisplayedPacket'/> \n "
" <separator/> \n "
" <menuitem name='FileFormatPrecision-Automatic' action='/View/TimeDisplayFormat/FileFormatPrecision-Automatic'/> \n "
" <menuitem name='FileFormatPrecision-Seconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Seconds'/> \n "
" <menuitem name='FileFormatPrecision-Deciseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Deciseconds'/> \n "
" <menuitem name='FileFormatPrecision-Centiseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Centiseconds'/> \n "
" <menuitem name='FileFormatPrecision-Milliseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Milliseconds'/> \n "
" <menuitem name='FileFormatPrecision-Microseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Microseconds'/> \n "
" <menuitem name='FileFormatPrecision-Nanoseconds' action='/View/TimeDisplayFormat/FileFormatPrecision-Nanoseconds'/> \n "
" <separator/> \n "
" <menuitem name='DisplaySecondsWithHoursAndMinutes' action='/View/TimeDisplayFormat/DisplaySecondsWithHoursAndMinutes'/> \n "
" </menu> \n "
2010-09-24 14:52:44 +00:00
" <menu name= 'NameResolution' action='/View/NameResolution'> \n "
2010-09-21 05:32:32 +00:00
" <menuitem name='ResolveName' action='/View/NameResolution/ResolveName'/> \n "
" <separator/> \n "
2010-09-24 06:46:14 +00:00
" <menuitem name='EnableforMACLayer' action='/View/NameResolution/EnableforMACLayer'/> \n "
" <menuitem name='EnableforNetworkLayer' action='/View/NameResolution/EnableforNetworkLayer'/> \n "
" <menuitem name='EnableforTransportLayer' action='/View/NameResolution/EnableforTransportLayer'/> \n "
" </menu> \n "
" <menuitem name='ColorizePacketList' action='/View/ColorizePacketList'/> \n "
" <menuitem name='AutoScrollinLiveCapture' action='/View/AutoScrollinLiveCapture'/> \n "
" <separator/> \n "
" <menuitem name='ZoomIn' action='/View/ZoomIn'/> \n "
" <menuitem name='ZoomOut' action='/View/ZoomOut'/> \n "
" <menuitem name='NormalSize' action='/View/NormalSize'/> \n "
" <separator/> \n "
" <menuitem name='ResizeAllColumns' action='/View/ResizeAllColumns'/> \n "
" <menuitem name='DisplayedColumns' action='/View/DisplayedColumns'/> \n "
" <separator/> \n "
" <menuitem name='ExpandSubtrees' action='/View/ExpandSubtrees'/> \n "
" <menuitem name='ExpandAll' action='/View/ExpandAll'/> \n "
" <menuitem name='CollapseAll' action='/View/CollapseAll'/> \n "
" <separator/> \n "
" <menu name= 'ColorizeConversation' action='/View/ColorizeConversation'> \n "
" <menuitem name='Color1' action='/View/ColorizeConversation/Color 1'/> \n "
" <menuitem name='Color2' action='/View/ColorizeConversation/Color 2'/> \n "
" <menuitem name='Color3' action='/View/ColorizeConversation/Color 3'/> \n "
" <menuitem name='Color4' action='/View/ColorizeConversation/Color 4'/> \n "
" <menuitem name='Color5' action='/View/ColorizeConversation/Color 5'/> \n "
" <menuitem name='Color6' action='/View/ColorizeConversation/Color 6'/> \n "
" <menuitem name='Color7' action='/View/ColorizeConversation/Color 7'/> \n "
" <menuitem name='Color8' action='/View/ColorizeConversation/Color 8'/> \n "
" <menuitem name='Color9' action='/View/ColorizeConversation/Color 9'/> \n "
" <menuitem name='Color10' action='/View/ColorizeConversation/Color 10'/> \n "
" <menuitem name='NewColoringRule' action='/View/ColorizeConversation/NewColoringRule'/> \n "
2010-09-21 05:32:32 +00:00
" </menu> \n "
2010-09-24 06:46:14 +00:00
" <separator/> \n "
" <menuitem name='ResetColoring1-10' action='/View/ResetColoring1-10'/> \n "
" <menuitem name='ColoringRules' action='/View/ColoringRules'/> \n "
" <separator/> \n "
" <menuitem name='ShowPacketinNewWindow' action='/View/ShowPacketinNewWindow'/> \n "
" <menuitem name='Reload' action='/View/Reload'/> \n "
" </menu> \n "
" <menu name= 'GoMenu' action='/Go'> \n "
" <menuitem name='Back' action='/Go/Back'/> \n "
" <menuitem name='Forward' action='/Go/Forward'/> \n "
" <menuitem name='GotoCorrespondingPacket' action='/Go/GotoCorrespondingPacket'/> \n "
" <separator/> \n "
" <menuitem name='PreviousPacket' action='/Go/PreviousPacket'/> \n "
" <menuitem name='NextPacket' action='/Go/NextPacket'/> \n "
" <menuitem name='FirstPacket' action='/Go/FirstPacket'/> \n "
" <menuitem name='LastPacket' action='/Go/LastPacket'/> \n "
2010-10-01 22:46:30 +00:00
" <menuitem name='PreviousPacketInConversation' action='/Go/PreviousPacketInConversation'/> \n "
" <menuitem name='NextPacketInConversation' action='/Go/NextPacketInConversation'/> \n "
2010-09-24 06:46:14 +00:00
" </menu> \n "
# ifdef HAVE_LIBPCAP
" <menu name= 'CaptureMenu' action='/Capture'> \n "
" <menuitem name='Interfaces' action='/Capture/Interfaces'/> \n "
" <menuitem name='Options' action='/Capture/Options'/> \n "
" <menuitem name='Start' action='/Capture/Start'/> \n "
" <menuitem name='Stop' action='/Capture/Stop'/> \n "
" <menuitem name='Restart' action='/Capture/Restart'/> \n "
" <menuitem name='CaptureFilters' action='/Capture/CaptureFilters'/> \n "
" </menu> \n "
# endif /* HAVE_LIBPCAP */
" <menu name= 'AnalyzeMenu' action='/Analyze'> \n "
" <menuitem name='DisplayFilters' action='/Analyze/DisplayFilters'/> \n "
" <separator/> \n "
" <menuitem name='ApplyasColumn' action='/Analyze/ApplyasColumn'/> \n "
" <menu name= 'ApplyAsFilter' action='/Analyze/ApplyasFilter'> \n "
" <menuitem name='Selected' action='/Analyze/ApplyasFilter/Selected'/> \n "
" <menuitem name='NotSelected' action='/Analyze/ApplyasFilter/NotSelected'/> \n "
" <menuitem name='AndSelected' action='/Analyze/ApplyasFilter/AndSelected'/> \n "
" <menuitem name='OrSelected' action='/Analyze/ApplyasFilter/OrSelected'/> \n "
" <menuitem name='AndNotSelected' action='/Analyze/ApplyasFilter/AndNotSelected'/> \n "
" <menuitem name='OrNotSelected' action='/Analyze/ApplyasFilter/OrNotSelected'/> \n "
" </menu> \n "
" <menu name= 'PrepareaFilter' action='/Analyze/PrepareaFilter'> \n "
" <menuitem name='Selected' action='/Analyze/PrepareaFilter/Selected'/> \n "
" <menuitem name='NotSelected' action='/Analyze/PrepareaFilter/NotSelected'/> \n "
" <menuitem name='AndSelected' action='/Analyze/PrepareaFilter/AndSelected'/> \n "
" <menuitem name='OrSelected' action='/Analyze/PrepareaFilter/OrSelected'/> \n "
" <menuitem name='AndNotSelected' action='/Analyze/PrepareaFilter/AndNotSelected'/> \n "
" <menuitem name='OrNotSelected' action='/Analyze/PrepareaFilter/OrNotSelected'/> \n "
" </menu> \n "
" <menuitem name='EnabledProtocols' action='/Analyze/EnabledProtocols'/> \n "
" <menuitem name='DecodeAs' action='/Analyze/DecodeAs'/> \n "
" <menuitem name='UserSpecifiedDecodes' action='/Analyze/UserSpecifiedDecodes'/> \n "
" <separator/> \n "
" <menuitem name='FollowTCPStream' action='/Analyze/FollowTCPStream'/> \n "
" <menuitem name='FollowUDPStream' action='/Analyze/FollowUDPStream'/> \n "
" <menuitem name='FollowSSLStream' action='/Analyze/FollowSSLStream'/> \n "
" </menu> \n "
" <menu name= 'StatisticsMenu' action='/Statistics'> \n "
" <menuitem name='Summary' action='/Statistics/Summary'/> \n "
" <menuitem name='ProtocolHierarchy' action='/Statistics/ProtocolHierarchy'/> \n "
" <menuitem name='Conversations' action='/Statistics/Conversations'/> \n "
" <menuitem name='Endpoints' action='/Statistics/Endpoints'/> \n "
" </menu> \n "
" <menu name= 'TelephonyMenu' action='/Telephony'> \n "
" </menu> \n "
" <menu name= 'ToolsMenu' action='/Tools'> \n "
" <menuitem name='FirewallACLRules' action='/Tools/FirewallACLRules'/> \n "
" </menu> \n "
" <menu name= 'WSinternalMenu' action='/WSinternal'> \n "
" <menuitem name='Dissectortables' action='/WSinternal/Dissectortables'/> \n "
" </menu> \n "
" <menu name= 'HelpMenu' action='/Help'> \n "
" <menuitem name='Contents' action='/Help/Contents'/> \n "
" <menuitem name='FAQs' action='/Help/FAQs'/> \n "
" <menu name= 'ManualPages' action='/Help/ManualPages'> \n "
" <menuitem name='Wireshark' action='/Help/ManualPages/Wireshark'/> \n "
" <menuitem name='WiresharkFilter' action='/Help/ManualPages/WiresharkFilter'/> \n "
" <separator/> \n "
" <menuitem name='TShark' action='/Help/ManualPages/TShark'/> \n "
" <menuitem name='RawShark' action='/Help/ManualPages/RawShark'/> \n "
" <menuitem name='Dumpcap' action='/Help/ManualPages/Dumpcap'/> \n "
" <menuitem name='Mergecap' action='/Help/ManualPages/Mergecap'/> \n "
" <menuitem name='Editcap' action='/Help/ManualPages/Editcap'/> \n "
" <menuitem name='Text2pcap' action='/Help/ManualPages/Text2pcap'/> \n "
" </menu> \n "
" <separator/> \n "
" <menuitem name='Website' action='/Help/Website'/> \n "
" <menuitem name='Wiki' action='/Help/Wiki'/> \n "
" <menuitem name='Downloads' action='/Help/Downloads'/> \n "
" <menuitem name='SampleCaptures' action='/Help/SampleCaptures'/> \n "
" <separator/> \n "
" <menuitem name='SupportedProtocols' action='/Help/SupportedProtocols'/> \n "
" <separator/> \n "
" <menuitem name='AboutWireshark' action='/Help/AboutWireshark'/> \n "
2010-09-07 08:10:45 +00:00
" </menu> \n "
" </menubar> \n "
" </ui> \n " ;
2010-09-21 05:32:32 +00:00
2010-10-08 00:33:38 +00:00
/*
* Main menu .
*
* Please do not use keystrokes that are used as " universal " shortcuts in
* various desktop environments :
*
* Windows :
* http : //support.microsoft.com/kb/126449
*
* GNOME :
* http : //library.gnome.org/users/user-guide/nightly/keyboard-skills.html.en
*
* KDE :
* http : //developer.kde.org/documentation/standards/kde/style/keys/shortcuts.html
*
* In particular , do not use the following < control > sequences for anything
* other than their standard purposes :
*
* < control > O File - > Open
* < control > S File - > Save
* < control > P File - > Print
* < control > W File - > Close
* < control > Q File - > Quit
* < control > Z Edit - > Undo ( which we don ' t currently have )
* < control > X Edit - > Cut ( which we don ' t currently have )
* < control > C Edit - > Copy ( which we don ' t currently have )
* < control > V Edit - > Paste ( which we don ' t currently have )
* < control > A Edit - > Select All ( which we don ' t currently have )
*
* Note that some if not all of the Edit keys above already perform those
* functions in text boxes , such as the Filter box . Do no , under any
* circumstances , make a change that keeps them from doing so .
*/
2010-09-21 05:32:32 +00:00
/*
2010-09-07 08:10:45 +00:00
* GtkActionEntry
* typedef struct {
* const gchar * name ;
* const gchar * stock_id ;
* const gchar * label ;
* const gchar * accelerator ;
* const gchar * tooltip ;
* GCallback callback ;
* } GtkActionEntry ;
2010-09-21 05:32:32 +00:00
* const gchar * name ; The name of the action .
* const gchar * stock_id ; The stock id for the action , or the name of an icon from the icon theme .
* const gchar * label ; The label for the action . This field should typically be marked for translation ,
* see gtk_action_group_set_translation_domain ( ) .
* If label is NULL , the label of the stock item with id stock_id is used .
* const gchar * accelerator ; The accelerator for the action , in the format understood by gtk_accelerator_parse ( ) .
* const gchar * tooltip ; The tooltip for the action . This field should typically be marked for translation ,
* see gtk_action_group_set_translation_domain ( ) .
* GCallback callback ; The function to call when the action is activated .
2010-09-07 08:10:45 +00:00
*
*/
static const GtkActionEntry main_menu_bar_entries [ ] = {
2010-09-21 05:32:32 +00:00
/* Top level */
2010-09-07 08:10:45 +00:00
{ " /File " , NULL , " _File " , NULL , NULL , NULL } ,
{ " /Edit " , NULL , " _Edit " , NULL , NULL , NULL } ,
2010-09-21 05:32:32 +00:00
{ " /View " , NULL , " _View " , NULL , NULL , NULL } ,
2010-09-24 14:52:44 +00:00
{ " /Go " , NULL , " _Go " , NULL , NULL , NULL } ,
# ifdef HAVE_LIBPCAP
{ " /Capture " , NULL , " _Capture " , NULL , NULL , NULL } ,
# endif
{ " /Analyze " , NULL , " _Analyze " , NULL , NULL , NULL } ,
{ " /Statistics " , NULL , " _Statistics " , NULL , NULL , NULL } ,
{ " /Telephony " , NULL , " Telephon_y " , NULL , NULL , NULL } ,
{ " /Tools " , NULL , " _Tools " , NULL , NULL , NULL } ,
{ " /WSinternal " , NULL , " WS internal " , NULL , NULL , NULL } ,
{ " /Help " , NULL , " _Help " , NULL , NULL , NULL } ,
2010-09-07 08:10:45 +00:00
{ " /File/Open " , GTK_STOCK_OPEN , " _Open... " , " <control>O " , " Open a file " , G_CALLBACK ( file_open_cmd_cb ) } ,
{ " /File/OpenRecent " , NULL , " Open _Recent " , NULL , NULL , NULL } ,
{ " /File/Merge " , NULL , " _Merge... " , NULL , NULL , G_CALLBACK ( file_merge_cmd_cb ) } ,
{ " /File/Close " , GTK_STOCK_CLOSE , " _Close " , " <control>W " , NULL , G_CALLBACK ( file_close_cmd_cb ) } ,
{ " /File/Save " , GTK_STOCK_SAVE , " _Save " , " <control>S " , NULL , G_CALLBACK ( file_save_cmd_cb ) } ,
{ " /File/SaveAs " , GTK_STOCK_SAVE_AS , " Save _As... " , " <shift><control>S " , NULL , G_CALLBACK ( file_save_as_cmd_cb ) } ,
2010-09-21 05:32:32 +00:00
{ " /File/Set " , NULL , " File Set " , NULL , NULL , NULL } ,
2010-09-07 08:10:45 +00:00
{ " /File/Export " , NULL , " Export " , NULL , NULL , NULL } ,
{ " /File/Print " , GTK_STOCK_PRINT , " _Print... " , " <control>P " , NULL , G_CALLBACK ( file_print_cmd_cb ) } ,
{ " /File/Quit " , GTK_STOCK_QUIT , " _Quit " , " <control>Q " , NULL , G_CALLBACK ( file_quit_cmd_cb ) } ,
2010-09-21 05:32:32 +00:00
{ " /File/Set/ListFiles " , WIRESHARK_STOCK_FILE_SET_LIST , " List Files " , NULL , NULL , G_CALLBACK ( fileset_cb ) } ,
{ " /File/Set/NextFile " , WIRESHARK_STOCK_FILE_SET_NEXT , " Next File " , NULL , NULL , G_CALLBACK ( fileset_next_cb ) } ,
{ " /File/Set/PreviousFile " , WIRESHARK_STOCK_FILE_SET_PREVIOUS , " Previous File " , NULL , NULL , G_CALLBACK ( fileset_previous_cb ) } ,
2010-09-07 08:10:45 +00:00
# if _WIN32
{ " /File/Export/File " , NULL , " File... " , NULL , NULL , G_CALLBACK ( export_text_cmd_cb ) } ,
# else
{ " /File/Export/File " , NULL , " File... " , NULL , NULL , NULL } ,
{ " /File/Export/File/Text " , NULL , " as \" Plain _Text \" file... " , NULL , NULL , G_CALLBACK ( export_text_cmd_cb ) } ,
{ " /File/Export/File/PostScript " , NULL , " as \" _PostScript \" file... " , NULL , NULL , G_CALLBACK ( export_ps_cmd_cb ) } ,
{ " /File/Export/File/CSV " , NULL , " as \" _CSV \" (Comma Separated Values packet summary) file... " ,
NULL , NULL , G_CALLBACK ( export_csv_cmd_cb ) } ,
{ " /File/Export/File/CArrays " , NULL , " as \" C _Arrays \" (packet bytes) file... " ,
NULL , NULL , G_CALLBACK ( export_carrays_cmd_cb ) } ,
{ " /File/Export/File/PSML " , NULL , " as XML - \" P_SML \" (packet summary) file... " ,
NULL , NULL , G_CALLBACK ( export_psml_cmd_cb ) } ,
2010-09-21 05:32:32 +00:00
{ " /File/Export/File/PDML " , NULL , " as XML - \" P_DML \" (packet details) file... " ,
2010-09-07 08:10:45 +00:00
NULL , NULL , G_CALLBACK ( export_pdml_cmd_cb ) } ,
2010-09-24 06:46:14 +00:00
# endif /* _WIN32 */
2010-09-07 08:10:45 +00:00
{ " /File/Export/SelectedPacketBytes " , NULL , " Selected Packet _Bytes... " , " <control>H " , NULL , G_CALLBACK ( savehex_cb ) } ,
{ " /File/Export/Objects " , NULL , " Objects " , NULL , NULL , NULL } ,
{ " /File/Export/Objects/HTTP " , NULL , " _HTTP " , NULL , NULL , G_CALLBACK ( eo_http_cb ) } ,
{ " /File/Export/Objects/DICOM " , NULL , " _DICOM " , NULL , NULL , G_CALLBACK ( eo_dicom_cb ) } ,
{ " /File/Export/Objects/SMB " , NULL , " _SMB " , NULL , NULL , G_CALLBACK ( eo_smb_cb ) } ,
{ " /Edit/Copy " , NULL , " Copy " , NULL , NULL , NULL } ,
{ " /Edit/Copy/Description " , NULL , " Description " , " <shift><control>D " , NULL , G_CALLBACK ( copy_description_cb ) } ,
{ " /Edit/Copy/Fieldname " , NULL , " Fieldname " , " <shift><control>F " , NULL , G_CALLBACK ( copy_fieldname_cb ) } ,
{ " /Edit/Copy/Value " , NULL , " Value " , " <shift><control>V " , NULL , G_CALLBACK ( copy_value_cb ) } ,
{ " /Edit/Copy/AsFilter " , NULL , " As Filter " , " <shift><control>C " , NULL , G_CALLBACK ( copy_as_filter_cb ) } ,
#if 0
/*
* Un - # if this when we actually implement Cut / Copy / Paste for the
* packet list and packet detail windows .
*
* Note : when we implement Cut / Copy / Paste in those windows , we
* will almost certainly want to allow multiple packets to be
* selected in the packet list pane and multiple packet detail
* items to be selected in the packet detail pane , so that
* the user can , for example , copy the summaries of multiple
* packets to the clipboard from the packet list pane and multiple
* packet detail items - perhaps * all * packet detail items - from
* the packet detail pane . Given that , we ' ll also want to
* implement Select All .
*
* If multiple packets are selected , we would probably display nothing
* in the packet detail pane , just as we do if no packet is selected ,
* and any menu items etc . that would pertain only to a single packet
* would be disabled .
*
* If multiple packet detail items are selected , we would probably
* disable all items that pertain only to a single packet detail
* item , such as some items in the status bar .
*
* XXX - the actions for these will be different depending on what
* widget we ' re in ; ^ C should copy from the filter text widget if
* we ' re in that widget , the packet list if we ' re in that widget
* ( presumably copying the summaries of selected packets to the
* clipboard , e . g . the text copy would be the text of the columns ) ,
* the packet detail if we ' re in that widget ( presumably copying
* the contents of selected protocol tree items to the clipboard ,
* e . g . the text copy would be the text displayed for those items ) ,
* etc . .
*
* Given that those menu items should also affect text widgets
* such as the filter box , we would again want Select All , and ,
* at least for the filter box , we would also want Undo and Redo .
* We would only want Cut , Paste , Undo , and Redo for the packet
* list and packet detail panes if we support modifying them .
*/
{ " /Edit/_Undo " , " <control>Z " , NULL ,
0 , " <StockItem> " , GTK_STOCK_UNDO , } ,
{ " /Edit/_Redo " , " <shift><control>Z " , NULL ,
0 , " <StockItem> " , GTK_STOCK_REDO , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/Cu_t " , " <control>X " , NULL ,
0 , " <StockItem> " , GTK_STOCK_CUT , } ,
{ " /Edit/_Copy " , " <control>C " , NULL ,
0 , " <StockItem> " , GTK_STOCK_COPY , } ,
{ " /Edit/_Paste " , " <control>V " , NULL ,
0 , " <StockItem> " , GTK_STOCK_PASTE , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/Select _All " , " <control>A " , NULL , 0 ,
# ifdef GTK_STOCK_SELECT_ALL /* first appeared in 2.10 */
" <StockItem> " , GTK_STOCK_SELECT_ALL ,
# else
NULL , NULL ,
# endif /* GTK_STOCK_SELECT_ALL */
# endif /* 0 */
{ " /Edit/FindPacket " , GTK_STOCK_FIND , " _Find Packet... " , " <control>F " , NULL , G_CALLBACK ( find_frame_cb ) } ,
{ " /Edit/FindNext " , NULL , " Find Ne_xt " , " <control>N " , NULL , G_CALLBACK ( find_next_cb ) } ,
{ " /Edit/FindPrevious " , NULL , " Find Pre_vious " , " <control>B " , NULL , G_CALLBACK ( find_previous_cb ) } ,
# ifdef NEW_PACKET_LIST
{ " /Edit/MarkPacket " , NULL , " _Mark Packet (toggle) " , " <control>M " , NULL , G_CALLBACK ( new_packet_list_mark_frame_cb ) } ,
2010-09-21 05:32:32 +00:00
{ " /Edit/FindNextMark " , NULL , " Find Next Mark " , " <shift><control>N " , NULL , G_CALLBACK ( find_next_mark_cb ) } ,
{ " /Edit/FindPreviousMark " , NULL , " Find Next Mark " , " <shift><control>B " , NULL , G_CALLBACK ( find_prev_mark_cb ) } ,
{ " /Edit/MarkAllDisplayedPackets " , NULL , " Mark All Displayed Packets (toggle) " , " <control>A " , NULL , G_CALLBACK ( new_packet_list_mark_all_displayed_frames_cb ) } ,
{ " /Edit/UnmarkAllPackets " , NULL , " _Unmark All Packets " , " <control>D " , NULL , G_CALLBACK ( new_packet_list_unmark_all_frames_cb ) } ,
{ " /Edit/IgnorePacket " , NULL , " _Ignore Packet (toggle) " , " <control>X " , NULL , G_CALLBACK ( new_packet_list_ignore_frame_cb ) } ,
/*
* XXX - this next one overrides / Edit / Copy / Description
*/
{ " /Edit/IgnoreAllDisplayedPackets " , NULL , " _Ignore All Displayed Packets (toggle) " , " <alt><shift><control>X " , NULL , G_CALLBACK ( new_packet_list_ignore_all_displayed_frames_cb ) } ,
{ " /Edit/Un-IgnoreAllPackets " , NULL , " U_n-Ignore All Packets " , " <shift><control>X " , NULL , G_CALLBACK ( new_packet_list_unignore_all_frames_cb ) } ,
{ " /Edit/SetTimeReference " , WIRESHARK_STOCK_TIME , " Set Time Reference (toggle) " , " <control>T " , NULL , G_CALLBACK ( set_reftime_cb ) } ,
{ " /Edit/Un-TimeReferenceAllPackets " , NULL , " Un-Time Reference All Packets " , " <alt><control>T " , NULL , G_CALLBACK ( new_packet_list_untime_reference_all_frames_cb ) } ,
{ " /Edit/FindNextTimeReference " , NULL , " Find Next Time Reference " , " <alt><control>N " , NULL , G_CALLBACK ( find_next_ref_time_cb ) } ,
{ " /Edit/FindPreviousTimeReference " , NULL , " Find Previous Time Reference " , " <alt><control>B " , NULL , G_CALLBACK ( find_previous_ref_time_cb ) } ,
2010-09-07 08:10:45 +00:00
# else /* NEW_PACKET_LIST */
2010-10-08 00:33:38 +00:00
# error "You must use the new packet list if you are using GTKUIManager for menus"
2010-09-07 08:10:45 +00:00
# endif /* NEW_PACKET_LIST */
2010-09-21 05:32:32 +00:00
{ " /Edit/ConfigurationProfiles " , NULL , " _Configuration Profiles... " , " <shift><control>A " , NULL , G_CALLBACK ( profile_dialog_cb ) } ,
2010-09-30 21:56:47 +00:00
{ " /Edit/Preferences " , GTK_STOCK_PREFERENCES , " _Preferences... " , " <shift><control>P " , NULL , G_CALLBACK ( menus_prefs_cb ) } ,
2010-09-21 05:32:32 +00:00
{ " /View/TimeDisplayFormat " , NULL , " _Time Display Format " , NULL , NULL , NULL } ,
2010-10-18 15:40:51 +00:00
{ " /View/NameResolution " , NULL , " Name Resol_ution " , NULL , NULL , NULL } ,
2010-09-24 06:46:14 +00:00
{ " /View/ZoomIn " , GTK_STOCK_ZOOM_IN , " _Zoom In " , " <control>plus " , NULL , G_CALLBACK ( view_zoom_in_cb ) } ,
{ " /View/ZoomOut " , GTK_STOCK_ZOOM_OUT , " Zoom _Out " , " <control>minus " , NULL , G_CALLBACK ( view_zoom_out_cb ) } ,
{ " /View/NormalSize " , GTK_STOCK_ZOOM_100 , " _Normal Size " , " <control>equal " , NULL , G_CALLBACK ( view_zoom_100_cb ) } ,
# ifdef NEW_PACKET_LIST
{ " /View/ResizeAllColumns " , WIRESHARK_STOCK_RESIZE_COLUMNS , " Resize All Columns " , " <shift><control>R " , NULL , G_CALLBACK ( new_packet_list_resize_columns_cb ) } ,
2010-09-29 16:09:42 +00:00
{ " /View/DisplayedColumns " , NULL , " Displayed Columns " , NULL , NULL , NULL } ,
2010-09-24 06:46:14 +00:00
# else
2010-10-08 00:33:38 +00:00
# error "You must use the new packet list if you are using GTKUIManager for menus"
2010-09-24 06:46:14 +00:00
# endif /* NEW_PACKET_LIST */
{ " /View/ExpandSubtrees " , NULL , " Expand Subtrees " , NULL , NULL , G_CALLBACK ( expand_tree_cb ) } ,
{ " /View/ExpandAll " , NULL , " Expand All " , NULL , NULL , G_CALLBACK ( expand_all_cb ) } ,
{ " /View/CollapseAll " , NULL , " Collapse All " , NULL , NULL , G_CALLBACK ( collapse_all_cb ) } ,
{ " /View/ColorizeConversation " , NULL , " Colorize Conversation " , NULL , NULL , NULL } ,
{ " /View/ColorizeConversation/Color 1 " , WIRESHARK_STOCK_COLOR1 , " Color 1 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color1_cb ) } ,
{ " /View/ColorizeConversation/Color 2 " , WIRESHARK_STOCK_COLOR2 , " Color 2 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color2_cb ) } ,
{ " /View/ColorizeConversation/Color 3 " , WIRESHARK_STOCK_COLOR3 , " Color 3 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color3_cb ) } ,
{ " /View/ColorizeConversation/Color 4 " , WIRESHARK_STOCK_COLOR4 , " Color 4 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color4_cb ) } ,
{ " /View/ColorizeConversation/Color 5 " , WIRESHARK_STOCK_COLOR5 , " Color 5 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color5_cb ) } ,
{ " /View/ColorizeConversation/Color 6 " , WIRESHARK_STOCK_COLOR6 , " Color 6 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color6_cb ) } ,
{ " /View/ColorizeConversation/Color 7 " , WIRESHARK_STOCK_COLOR7 , " Color 7 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color7_cb ) } ,
{ " /View/ColorizeConversation/Color 8 " , WIRESHARK_STOCK_COLOR8 , " Color 8 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color8_cb ) } ,
{ " /View/ColorizeConversation/Color 9 " , WIRESHARK_STOCK_COLOR9 , " Color 9 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color9_cb ) } ,
{ " /View/ColorizeConversation/Color 10 " , WIRESHARK_STOCK_COLOR0 , " Color 10 " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_color10_cb ) } ,
{ " /View/ColorizeConversation/NewColoringRule " , NULL , " New Coloring Rule... " , NULL , NULL , G_CALLBACK ( view_menu_color_conv_new_rule_cb ) } ,
{ " /View/ResetColoring1-10 " , NULL , " Reset Coloring 1-10 " , " <control>space " , NULL , G_CALLBACK ( view_menu_reset_coloring_cb ) } ,
{ " /View/ColoringRules " , GTK_STOCK_SELECT_COLOR , " _Coloring Rules... " , NULL , NULL , G_CALLBACK ( color_display_cb ) } ,
{ " /View/ShowPacketinNewWindow " , NULL , " Show Packet in New _Window " , NULL , NULL , G_CALLBACK ( new_window_cb ) } ,
{ " /View/Reload " , GTK_STOCK_REFRESH , " _Reload " , " <control>R " , NULL , G_CALLBACK ( file_reload_cmd_cb ) } ,
{ " /Go/Back " , GTK_STOCK_GO_BACK , " _Back " , " <alt>Left " , NULL , G_CALLBACK ( history_back_cb ) } ,
{ " /Go/Forward " , GTK_STOCK_JUMP_TO , " _Forward " , " <control>G " , NULL , G_CALLBACK ( goto_frame_cb ) } ,
{ " /Go/GotoCorrespondingPacket " , NULL , " Go to _Corresponding Packet " , NULL , NULL , G_CALLBACK ( goto_framenum_cb ) } ,
{ " /Go/PreviousPacket " , GTK_STOCK_GO_UP , " Previous Packet " , " <control>Up " , NULL , G_CALLBACK ( goto_previous_frame_cb ) } ,
{ " /Go/NextPacket " , GTK_STOCK_GO_DOWN , " Next Packet " , " <control>Down " , NULL , G_CALLBACK ( goto_next_frame_cb ) } ,
{ " /Go/FirstPacket " , GTK_STOCK_GOTO_TOP , " F_irst Packet " , " <control>Home " , NULL , G_CALLBACK ( goto_top_frame_cb ) } ,
{ " /Go/LastPacket " , GTK_STOCK_GOTO_BOTTOM , " _Last Packet " , " <control>End " , NULL , G_CALLBACK ( goto_bottom_frame_cb ) } ,
2010-10-01 22:46:30 +00:00
{ " /Go/PreviousPacketInConversation " , GTK_STOCK_GO_UP , " Previous Packet In Conversation " , " <control>bracketleft " , NULL , G_CALLBACK ( goto_previous_frame_conversation_cb ) } ,
{ " /Go/NextPacketInConversation " , GTK_STOCK_GO_DOWN , " Next Packet In Conversation " , " <control>bracketright " , NULL , G_CALLBACK ( goto_next_frame_conversation_cb ) } ,
2010-09-24 06:46:14 +00:00
# ifdef HAVE_LIBPCAP
{ " /Capture/Interfaces " , WIRESHARK_STOCK_CAPTURE_INTERFACES , " _Interfaces... " , " <control>I " , NULL , G_CALLBACK ( capture_if_cb ) } ,
{ " /Capture/Options " , WIRESHARK_STOCK_CAPTURE_OPTIONS , " _Options... " , " <control>K " , NULL , G_CALLBACK ( capture_prep_cb ) } ,
{ " /Capture/Start " , WIRESHARK_STOCK_CAPTURE_START , " _Start " , " <control>E " , NULL , G_CALLBACK ( capture_start_cb ) } ,
{ " /Capture/Stop " , WIRESHARK_STOCK_CAPTURE_STOP , " S_top " , " <control>E " , NULL , G_CALLBACK ( capture_stop_cb ) } ,
{ " /Capture/Restart " , WIRESHARK_STOCK_CAPTURE_RESTART , " _Restart " , " <control>R " , NULL , G_CALLBACK ( capture_restart_cb ) } ,
{ " /Capture/CaptureFilters " , WIRESHARK_STOCK_CAPTURE_FILTER , " Capture _Filters... " , NULL , NULL , G_CALLBACK ( cfilter_dialog_cb ) } ,
2010-09-21 05:32:32 +00:00
2010-09-24 06:46:14 +00:00
# endif /* HAVE_LIBPCAP */
{ " /Analyze/DisplayFilters " , WIRESHARK_STOCK_DISPLAY_FILTER , " _Display Filters... " , NULL , NULL , G_CALLBACK ( dfilter_dialog_cb ) } ,
{ " /Analyze/DisplayFilterMacros " , NULL , " Display Filter _Macros... " , NULL , NULL , G_CALLBACK ( macros_dialog_cb ) } ,
{ " /Analyze/ApplyasColumn " , NULL , " Apply as Column " , NULL , NULL , G_CALLBACK ( apply_as_custom_column_cb ) } ,
{ " /Analyze/ApplyasFilter " , NULL , " Apply as Filter " , NULL , NULL , NULL } ,
{ " /Analyze/ApplyasFilter/Selected " , NULL , " _Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_selected_cb ) } ,
{ " /Analyze/ApplyasFilter/NotSelected " , NULL , " _Not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_not_selected_cb ) } ,
2010-10-03 16:09:25 +00:00
{ " /Analyze/ApplyasFilter/AndSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _and Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_and_selected_cb ) } ,
{ " /Analyze/ApplyasFilter/OrSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _or Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_or_selected_cb ) } ,
{ " /Analyze/ApplyasFilter/AndNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " a_nd not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_and_not_selected_cb ) } ,
{ " /Analyze/ApplyasFilter/OrNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " o_r not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_or_not_selected_cb ) } ,
2010-09-24 06:46:14 +00:00
{ " /Analyze/PrepareaFilter " , NULL , " Prepare a Filter " , NULL , NULL , NULL } ,
{ " /Analyze/PrepareaFilter/Selected " , NULL , " _Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_selected_cb ) } ,
{ " /Analyze/PrepareaFilter/NotSelected " , NULL , " _Not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_not_selected_cb ) } ,
2010-10-03 16:09:25 +00:00
{ " /Analyze/PrepareaFilter/AndSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _and Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_and_selected_cb ) } ,
{ " /Analyze/PrepareaFilter/OrSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _or Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_or_selected_cb ) } ,
{ " /Analyze/PrepareaFilter/AndNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " a_nd not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_and_not_selected_cb ) } ,
{ " /Analyze/PrepareaFilter/OrNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " o_r not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_or_not_selected_cb ) } ,
2010-09-24 06:46:14 +00:00
{ " /Analyze/EnabledProtocols " , WIRESHARK_STOCK_CHECKBOX , " _Enabled Protocols... " , " <shift><control>E " , NULL , G_CALLBACK ( proto_cb ) } ,
{ " /Analyze/DecodeAs " , WIRESHARK_STOCK_DECODE_AS , " Decode _As... " , NULL , NULL , G_CALLBACK ( decode_as_cb ) } ,
{ " /Analyze/UserSpecifiedDecodes " , WIRESHARK_STOCK_DECODE_AS , " _User Specified Decodes... " , NULL , NULL , G_CALLBACK ( decode_show_cb ) } ,
2010-09-24 14:52:44 +00:00
{ " /Analyze/FollowTCPStream " , NULL , " Follow TCP Stream " , NULL , NULL , G_CALLBACK ( follow_tcp_stream_cb ) } ,
{ " /Analyze/FollowUDPStream " , NULL , " Follow UDP Stream " , NULL , NULL , G_CALLBACK ( follow_udp_stream_cb ) } ,
{ " /Analyze/FollowSSLStream " , NULL , " Follow SSL Stream " , NULL , NULL , G_CALLBACK ( follow_ssl_stream_cb ) } ,
2010-09-24 06:46:14 +00:00
{ " /Statistics/Summary " , GTK_STOCK_PROPERTIES , " _Summary " , NULL , NULL , G_CALLBACK ( summary_open_cb ) } ,
{ " /Statistics/ProtocolHierarchy " , NULL , " _Protocol Hierarchy " , NULL , NULL , G_CALLBACK ( proto_hier_stats_cb ) } ,
{ " /Statistics/Conversations " , WIRESHARK_STOCK_CONVERSATIONS , " Conversations " , NULL , NULL , G_CALLBACK ( init_conversation_notebook_cb ) } ,
{ " /Statistics/Endpoints " , WIRESHARK_STOCK_ENDPOINTS , " Endpoints " , NULL , NULL , G_CALLBACK ( init_hostlist_notebook_cb ) } ,
{ " /Tools/FirewallACLRules " , NULL , " Firewall ACL Rules " , NULL , NULL , G_CALLBACK ( firewall_rule_cb ) } ,
{ " /WSinternal/Dissectortables " , NULL , " Dissector tables " , NULL , NULL , G_CALLBACK ( dissector_tables_dlg_cb ) } ,
{ " /Help/Contents " , GTK_STOCK_HELP , " _Contents " , " F1 " , NULL , G_CALLBACK ( help_menu_cont_cb ) } ,
{ " /Help/FAQs " , NULL , " FAQ's " , NULL , NULL , G_CALLBACK ( help_menu_faq_cb ) } ,
{ " /Help/ManualPages " , NULL , " ManualPages " , NULL , NULL , NULL } ,
{ " /Help/ManualPages/Wireshark " , NULL , " Wireshark " , NULL , NULL , G_CALLBACK ( help_menu_wireshark_cb ) } ,
{ " /Help/ManualPages/WiresharkFilter " , NULL , " Wireshark Filter " , NULL , NULL , G_CALLBACK ( help_menu_wireshark_flt_cb ) } ,
{ " /Help/ManualPages/TShark " , NULL , " Wireshark " , NULL , NULL , G_CALLBACK ( help_menu_Tshark_cb ) } ,
{ " /Help/ManualPages/RawShark " , NULL , " RawShark " , NULL , NULL , G_CALLBACK ( help_menu_RawShark_cb ) } ,
{ " /Help/ManualPages/Dumpcap " , NULL , " Dumpcap " , NULL , NULL , G_CALLBACK ( help_menu_Dumpcap_cb ) } ,
{ " /Help/ManualPages/Mergecap " , NULL , " Mergecap " , NULL , NULL , G_CALLBACK ( help_menu_Mergecap_cb ) } ,
{ " /Help/ManualPages/Editcap " , NULL , " Editcap " , NULL , NULL , G_CALLBACK ( help_menu_Editcap_cb ) } ,
{ " /Help/ManualPages/Text2pcap " , NULL , " Text2pcap " , NULL , NULL , G_CALLBACK ( help_menu_Text2pcap_cb ) } ,
{ " /Help/Website " , GTK_STOCK_HOME , " Website " , NULL , NULL , G_CALLBACK ( help_menu_Website_cb ) } ,
{ " /Help/Wiki " , WIRESHARK_STOCK_WIKI , " Wiki " , NULL , NULL , G_CALLBACK ( help_menu_Wiki_cb ) } ,
{ " /Help/Downloads " , NULL , " Downloads " , NULL , NULL , G_CALLBACK ( help_menu_Downloads_cb ) } ,
{ " /Help/SampleCaptures " , NULL , " Sample Captures " , NULL , NULL , G_CALLBACK ( help_menu_SampleCaptures_cb ) } ,
{ " /Help/SupportedProtocols " , NULL , " _Supported Protocols (slow!) " , NULL , NULL , G_CALLBACK ( supported_cb ) } ,
{ " /Help/AboutWireshark " , WIRESHARK_STOCK_ABOUT , " _About Wireshark " , NULL , NULL , G_CALLBACK ( about_wireshark_cb ) } ,
2010-09-21 05:32:32 +00:00
} ;
2010-09-24 06:46:14 +00:00
2010-09-21 05:32:32 +00:00
static const GtkToggleActionEntry main_menu_bar_toggle_action_entries [ ] =
{
/* name, stock id, label, accel, tooltip, callback, is_active */
{ " /View/MainToolbar " , NULL , " _Main Toolbar " , NULL , NULL , G_CALLBACK ( main_toolbar_show_hide_cb ) , TRUE } ,
{ " /View/FilterToolbar " , NULL , " _FilterToolbar " , NULL , NULL , G_CALLBACK ( filter_toolbar_show_hide_cb ) , TRUE } ,
# ifdef HAVE_AIRPCAP
{ " /View/WirelessToolbar " , NULL , " _WirelessToolbar " , NULL , NULL , G_CALLBACK ( wireless_toolbar_show_hide_cb ) , TRUE } ,
2010-09-24 06:46:14 +00:00
# endif /* HAVE_AIRPCAP */
2010-09-21 05:32:32 +00:00
{ " /View/Statusbar " , NULL , " _Statusbar " , NULL , NULL , G_CALLBACK ( status_bar_show_hide_cb ) , TRUE } ,
{ " /View/PacketList " , NULL , " Packet _List " , NULL , NULL , G_CALLBACK ( packet_list_show_hide_cb ) , TRUE } ,
{ " /View/PacketDetails " , NULL , " Packet _Details " , NULL , NULL , G_CALLBACK ( packet_details_show_hide_cb ) , TRUE } ,
{ " /View/PacketBytes " , NULL , " Packet _Bytes " , NULL , NULL , G_CALLBACK ( packet_bytes_show_hide_cb ) , TRUE } ,
2010-10-03 19:11:10 +00:00
{ " /View/TimeDisplayFormat/DisplaySecondsWithHoursAndMinutes " , NULL , " Display Seconds with hours and minutes " , NULL , NULL , G_CALLBACK ( view_menu_seconds_time_cb ) , FALSE } ,
2010-10-18 15:40:51 +00:00
{ " /View/NameResolution/ResolveName " , NULL , " _Resolve Name " , NULL , NULL , G_CALLBACK ( resolve_name_cb ) , FALSE } ,
2010-09-24 06:46:14 +00:00
{ " /View/NameResolution/EnableforMACLayer " , NULL , " Enable for _MAC Layer " , NULL , NULL , G_CALLBACK ( view_menu_en_for_MAC_cb ) , TRUE } ,
{ " /View/NameResolution/EnableforNetworkLayer " , NULL , " Enable for _Network Layer " , NULL , NULL , G_CALLBACK ( view_menu_en_for_network_cb ) , TRUE } ,
{ " /View/NameResolution/EnableforTransportLayer " , NULL , " Enable for _Transport Layer " , NULL , NULL , G_CALLBACK ( view_menu_en_for_transport_cb ) , TRUE } ,
{ " /View/ColorizePacketList " , NULL , " Colorize Packet List " , NULL , NULL , G_CALLBACK ( view_menu_colorize_pkt_lst_cb ) , TRUE } ,
# ifdef HAVE_LIBPCAP
2010-10-08 03:00:54 +00:00
{ " /View/AutoScrollinLiveCapture " , NULL , " Auto Scroll in Li_ve Capture " , NULL , NULL , G_CALLBACK ( view_menu_auto_scroll_live_cb ) , TRUE } ,
2010-10-08 01:22:54 +00:00
# endif
} ;
static const GtkRadioActionEntry main_menu_bar_radio_view_time_entries [ ] =
{
/* name, stock id, label, accel, tooltip, value */
{ " /View/TimeDisplayFormat/DateandTimeofDay " , NULL , " Date and Time of Day: 1970-01-01 01:02:03.123456 " , " <alt><control>1 " , NULL , TS_ABSOLUTE_WITH_DATE } ,
{ " /View/TimeDisplayFormat/TimeofDay " , NULL , " Time of Day: 01:02:03.123456 " , " <alt><control>2 " , NULL , TS_ABSOLUTE } ,
{ " /View/TimeDisplayFormat/SecondsSinceEpoch " , NULL , " Seconds Since Epoch (1970-01-01): 1234567890.123456 " , " <alt><control>3 " , NULL , TS_EPOCH } ,
{ " /View/TimeDisplayFormat/SecondsSinceBeginningofCapture " , NULL , " Seconds Since Beginning of Capture: 123.123456 " , " <alt><control>4 " , NULL , TS_RELATIVE } ,
{ " /View/TimeDisplayFormat/SecondsSincePreviousCapturedPacket " , NULL , " Seconds Since Previous Captured Packet: 1.123456 " , " <alt><control>5 " , NULL , TS_DELTA } ,
{ " /View/TimeDisplayFormat/SecondsSincePreviousDisplayedPacket " , NULL , " Seconds Since Previous Displayed Packet: 1.123456 " , " <alt><control>6 " , NULL , TS_DELTA_DIS } ,
} ;
static const GtkRadioActionEntry main_menu_bar_radio_view_time_fileformat_prec_entries [ ] =
{
/* name, stock id, label, accel, tooltip, value */
{ " /View/TimeDisplayFormat/FileFormatPrecision-Automatic " , NULL , " Automatic (File Format Precision) " , NULL , NULL , TS_PREC_AUTO } ,
{ " /View/TimeDisplayFormat/FileFormatPrecision-Seconds " , NULL , " Seconds: 0 " , NULL , NULL , TS_PREC_FIXED_SEC } ,
{ " /View/TimeDisplayFormat/FileFormatPrecision-Deciseconds " , NULL , " Deciseconds: 0.1 " , NULL , NULL , TS_PREC_FIXED_DSEC } ,
{ " /View/TimeDisplayFormat/FileFormatPrecision-Centiseconds " , NULL , " Centiseconds: 0.12 " , NULL , NULL , TS_PREC_FIXED_CSEC } ,
{ " /View/TimeDisplayFormat/FileFormatPrecision-Milliseconds " , NULL , " Milliseconds: 0.123 " , NULL , NULL , TS_PREC_FIXED_MSEC } ,
{ " /View/TimeDisplayFormat/FileFormatPrecision-Microseconds " , NULL , " Microseconds: 0.123456 " , NULL , NULL , TS_PREC_FIXED_USEC } ,
{ " /View/TimeDisplayFormat/FileFormatPrecision-Nanoseconds " , NULL , " Nanoseconds: 0.123456789 " , NULL , NULL , TS_PREC_FIXED_NSEC } ,
} ;
# else /* MAIN_MENU_USE_UIMANAGER */
/*
* Main menu .
*
* Please do not use keystrokes that are used as " universal " shortcuts in
* various desktop environments :
*
* Windows :
* http : //support.microsoft.com/kb/126449
*
* GNOME :
* http : //library.gnome.org/users/user-guide/nightly/keyboard-skills.html.en
*
* KDE :
* http : //developer.kde.org/documentation/standards/kde/style/keys/shortcuts.html
*
* In particular , do not use the following < control > sequences for anything
* other than their standard purposes :
*
* < control > O File - > Open
* < control > S File - > Save
* < control > P File - > Print
* < control > W File - > Close
* < control > Q File - > Quit
* < control > Z Edit - > Undo ( which we don ' t currently have )
* < control > X Edit - > Cut ( which we don ' t currently have )
* < control > C Edit - > Copy ( which we don ' t currently have )
* < control > V Edit - > Paste ( which we don ' t currently have )
* < control > A Edit - > Select All ( which we don ' t currently have )
*
* Note that some if not all of the Edit keys above already perform those
* functions in text boxes , such as the Filter box . Do no , under any
* circumstances , make a change that keeps them from doing so .
*/
2010-10-08 01:38:12 +00:00
/* This is the GtkItemFactoryEntry structure used to generate new menus.
Item 1 : The menu path . The letter after the underscore indicates an
accelerator key once the menu is open .
Item 2 : The accelerator key for the entry
Item 3 : The callback function .
Item 4 : The callback action . This changes the parameters with
which the function is called . The default is 0.
Item 5 : The item type , used to define what kind of an item it is .
Here are the possible values :
NULL - > " <Item> "
" " - > " <Item> "
" <Title> " - > create a title item
" <Item> " - > create a simple item
" <ImageItem> " - > create an item holding an image
" <StockItem> " - > create an item holding a stock image
" <CheckItem> " - > create a check item
" <ToggleItem> " - > create a toggle item
" <RadioItem> " - > create a radio item
< path > - > path of a radio item to link against
" <Separator> " - > create a separator
" <Tearoff> " - > create a tearoff separator
" <Branch> " - > create an item to hold sub items ( optional )
" <LastBranch> " - > create a right justified branch
Item 6 : extra data needed for ImageItem and StockItem
*/
2010-10-08 01:22:54 +00:00
static GtkItemFactoryEntry menu_items [ ] =
{
{ " /_File " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /File/_Open... " , " <control>O " , GTK_MENU_FUNC ( file_open_cmd_cb ) ,
0 , " <StockItem> " , GTK_STOCK_OPEN , } ,
{ " /File/Open _Recent " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /File/_Merge... " , NULL , GTK_MENU_FUNC ( file_merge_cmd_cb ) , 0 , NULL , NULL , } ,
{ " /File/_Close " , " <control>W " , GTK_MENU_FUNC ( file_close_cmd_cb ) ,
0 , " <StockItem> " , GTK_STOCK_CLOSE , } ,
{ " /File/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /File/_Save " , " <control>S " , GTK_MENU_FUNC ( file_save_cmd_cb ) ,
0 , " <StockItem> " , GTK_STOCK_SAVE , } ,
{ " /File/Save _As... " , " <shift><control>S " , GTK_MENU_FUNC ( file_save_as_cmd_cb ) ,
0 , " <StockItem> " , GTK_STOCK_SAVE_AS , } ,
{ " /File/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /File/File Set " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /File/File Set/List Files " , NULL , GTK_MENU_FUNC ( fileset_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_FILE_SET_LIST , } ,
{ " /File/File Set/Next File " , NULL , GTK_MENU_FUNC ( fileset_next_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_FILE_SET_NEXT , } ,
{ " /File/File Set/Previous File " , NULL , GTK_MENU_FUNC ( fileset_previous_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_FILE_SET_PREVIOUS , } ,
{ " /File/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /File/_Export " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
# if _WIN32
{ " /File/Export/File... " , NULL , GTK_MENU_FUNC ( export_text_cmd_cb ) ,
0 , NULL , NULL , } ,
# else
{ " /File/Export/as \" Plain _Text \" file... " , NULL , GTK_MENU_FUNC ( export_text_cmd_cb ) ,
0 , NULL , NULL , } ,
{ " /File/Export/as \" _PostScript \" file... " , NULL , GTK_MENU_FUNC ( export_ps_cmd_cb ) ,
0 , NULL , NULL , } ,
{ " /File/Export/as \" _CSV \" (Comma Separated Values packet summary) file... " ,
NULL , GTK_MENU_FUNC ( export_csv_cmd_cb ) , 0 , NULL , NULL , } ,
{ " /File/Export/as \" C _Arrays \" (packet bytes) file... " , NULL , GTK_MENU_FUNC ( export_carrays_cmd_cb ) ,
0 , NULL , NULL , } ,
{ " /File/Export/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /File/Export/as XML - \" P_SML \" (packet summary) file... " , NULL , GTK_MENU_FUNC ( export_psml_cmd_cb ) ,
0 , NULL , NULL , } ,
{ " /File/Export/as XML - \" P_DML \" (packet details) file... " , NULL , GTK_MENU_FUNC ( export_pdml_cmd_cb ) ,
0 , NULL , NULL , } ,
{ " /File/Export/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
# endif
{ " /File/Export/Selected Packet _Bytes... " , " <control>H " , GTK_MENU_FUNC ( savehex_cb ) ,
0 , NULL , NULL , } ,
{ " /File/Export/_Objects/_HTTP " , NULL , GTK_MENU_FUNC ( eo_http_cb ) , 0 , NULL , NULL , } ,
{ " /File/Export/_Objects/_DICOM " , NULL , GTK_MENU_FUNC ( eo_dicom_cb ) , 0 , NULL , NULL , } ,
{ " /File/Export/_Objects/_SMB " , NULL , GTK_MENU_FUNC ( eo_smb_cb ) , 0 , NULL , NULL , } ,
{ " /File/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /File/_Print... " , " <control>P " , GTK_MENU_FUNC ( file_print_cmd_cb ) ,
0 , " <StockItem> " , GTK_STOCK_PRINT , } ,
{ " /File/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /File/_Quit " , " <control>Q " , GTK_MENU_FUNC ( file_quit_cmd_cb ) ,
0 , " <StockItem> " , GTK_STOCK_QUIT , } ,
{ " /_Edit " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Edit/Copy " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Edit/Copy/Description " , " <shift><control>D " , GTK_MENU_FUNC ( copy_selected_plist_cb ) , COPY_SELECTED_DESCRIPTION , NULL , NULL , } ,
{ " /Edit/Copy/Fieldname " , " <shift><control>F " , GTK_MENU_FUNC ( copy_selected_plist_cb ) , COPY_SELECTED_FIELDNAME , NULL , NULL , } ,
{ " /Edit/Copy/Value " , " <shift><control>V " , GTK_MENU_FUNC ( copy_selected_plist_cb ) , COPY_SELECTED_VALUE , NULL , NULL , } ,
{ " /Edit/Copy/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/Copy/As Filter " , " <shift><control>C " , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_REPLACE | MATCH_SELECTED_COPY_ONLY , NULL , NULL , } ,
#if 0
/*
* Un - # if this when we actually implement Cut / Copy / Paste for the
* packet list and packet detail windows .
*
* Note : when we implement Cut / Copy / Paste in those windows , we
* will almost certainly want to allow multiple packets to be
* selected in the packet list pane and multiple packet detail
* items to be selected in the packet detail pane , so that
* the user can , for example , copy the summaries of multiple
* packets to the clipboard from the packet list pane and multiple
* packet detail items - perhaps * all * packet detail items - from
* the packet detail pane . Given that , we ' ll also want to
* implement Select All .
*
* If multiple packets are selected , we would probably display nothing
* in the packet detail pane , just as we do if no packet is selected ,
* and any menu items etc . that would pertain only to a single packet
* would be disabled .
*
* If multiple packet detail items are selected , we would probably
* disable all items that pertain only to a single packet detail
* item , such as some items in the status bar .
*
* XXX - the actions for these will be different depending on what
* widget we ' re in ; ^ C should copy from the filter text widget if
* we ' re in that widget , the packet list if we ' re in that widget
* ( presumably copying the summaries of selected packets to the
* clipboard , e . g . the text copy would be the text of the columns ) ,
* the packet detail if we ' re in that widget ( presumably copying
* the contents of selected protocol tree items to the clipboard ,
* e . g . the text copy would be the text displayed for those items ) ,
* etc . .
*
* Given that those menu items should also affect text widgets
* such as the filter box , we would again want Select All , and ,
* at least for the filter box , we would also want Undo and Redo .
* We would only want Cut , Paste , Undo , and Redo for the packet
* list and packet detail panes if we support modifying them .
*/
{ " /Edit/_Undo " , " <control>Z " , NULL ,
0 , " <StockItem> " , GTK_STOCK_UNDO , } ,
{ " /Edit/_Redo " , " <shift><control>Z " , NULL ,
0 , " <StockItem> " , GTK_STOCK_REDO , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/Cu_t " , " <control>X " , NULL ,
0 , " <StockItem> " , GTK_STOCK_CUT , } ,
{ " /Edit/_Copy " , " <control>C " , NULL ,
0 , " <StockItem> " , GTK_STOCK_COPY , } ,
{ " /Edit/_Paste " , " <control>V " , NULL ,
0 , " <StockItem> " , GTK_STOCK_PASTE , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/Select _All " , " <control>A " , NULL , 0 ,
# ifdef GTK_STOCK_SELECT_ALL /* first appeared in 2.10 */
" <StockItem> " , GTK_STOCK_SELECT_ALL ,
# else
NULL , NULL ,
# endif /* GTK_STOCK_SELECT_ALL */
} ,
# endif /* 0 */
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/_Find Packet... " , " <control>F " , GTK_MENU_FUNC ( find_frame_cb ) , 0 , " <StockItem> " , GTK_STOCK_FIND , } ,
{ " /Edit/Find Ne_xt " , " <control>N " , GTK_MENU_FUNC ( find_next_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/Find Pre_vious " , " <control>B " , GTK_MENU_FUNC ( find_previous_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
# ifdef NEW_PACKET_LIST
{ " /Edit/_Mark Packet (toggle) " , " <control>M " , GTK_MENU_FUNC ( new_packet_list_mark_frame_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/Mark All Displayed Packets (toggle) " , " <shift><control>M " , GTK_MENU_FUNC ( new_packet_list_mark_all_displayed_frames_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/Unmark All Packets " , " <alt><control>M " , GTK_MENU_FUNC ( new_packet_list_unmark_all_frames_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/Find Next Mark " , " <shift><control>N " , GTK_MENU_FUNC ( find_next_mark_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/Find Previous Mark " , " <shift><control>B " , GTK_MENU_FUNC ( find_prev_mark_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/_Ignore Packet (toggle) " , " <control>D " , GTK_MENU_FUNC ( new_packet_list_ignore_frame_cb ) , 0 , NULL , NULL , } ,
/*
* XXX - this next one overrides / Edit / Copy / Description
*/
{ " /Edit/Ignore All Displayed Packets (toggle) " , " <shift><control>D " , GTK_MENU_FUNC ( new_packet_list_ignore_all_displayed_frames_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/U_n-Ignore All Packets " , " <alt><control>D " , GTK_MENU_FUNC ( new_packet_list_unignore_all_frames_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/Set Time Reference (toggle) " , " <control>T " , GTK_MENU_FUNC ( reftime_frame_cb ) , REFTIME_TOGGLE , " <StockItem> " , WIRESHARK_STOCK_TIME , } ,
{ " /Edit/Un-Time Reference All Packets " , " <alt><control>T " , GTK_MENU_FUNC ( new_packet_list_untime_reference_all_frames_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/Find Next Time Reference " , " <alt><control>N " , GTK_MENU_FUNC ( reftime_frame_cb ) , REFTIME_FIND_NEXT , NULL , NULL , } ,
{ " /Edit/Find Previous Time Reference " , " <alt><control>B " , GTK_MENU_FUNC ( reftime_frame_cb ) , REFTIME_FIND_PREV , NULL , NULL , } ,
# else /* NEW_PACKET_LIST */
/*
* XXX - this should be changed to match the list used with the new
* packet list , assuming we don ' t just drop the old packet list
* code first .
*/
{ " /Edit/_Mark Packet (toggle) " , " <control>M " , GTK_MENU_FUNC ( packet_list_mark_frame_cb ) ,
0 , NULL , NULL , } ,
{ " /Edit/Find Next Mark " , " <shift><control>N " , GTK_MENU_FUNC ( find_next_mark_cb ) ,
0 , NULL , NULL , } ,
{ " /Edit/Find Previous Mark " , " <shift><control>B " , GTK_MENU_FUNC ( find_prev_mark_cb ) ,
0 , NULL , NULL , } ,
{ " /Edit/Mark _All Displayed Packets (toggle) " , " <shift><control>M " , GTK_MENU_FUNC ( packet_list_mark_all_frames_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/_Unmark All Packets " , " <alt><control>M " , GTK_MENU_FUNC ( packet_list_unmark_all_frames_cb ) , 0 , NULL , NULL , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/_Ignore Packet (toggle) " , " <control>D " , GTK_MENU_FUNC ( packet_list_ignore_frame_cb ) ,
0 , NULL , NULL , } ,
{ " /Edit/Ignore All Displayed Packets (toggle) " , " <shift><control>D " , GTK_MENU_FUNC ( packet_list_ignore_all_frames_cb ) ,
0 , NULL , NULL , } ,
{ " /Edit/U_n-Ignore All Packets " , " <alt><control>D " , GTK_MENU_FUNC ( packet_list_unignore_all_frames_cb ) ,
0 , NULL , NULL , } ,
{ " /Edit/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Edit/Set Time Reference (toggle) " , " <control>T " , GTK_MENU_FUNC ( reftime_frame_cb ) ,
REFTIME_TOGGLE , " <StockItem> " , WIRESHARK_STOCK_TIME , } ,
{ " /Edit/Find Next Time Reference " , " <alt><shift><control>N " , GTK_MENU_FUNC ( reftime_frame_cb ) , REFTIME_FIND_NEXT , NULL , NULL , } ,
{ " /Edit/Find Previous Time Reference " , " <alt><shift><control>B " , GTK_MENU_FUNC ( reftime_frame_cb ) , REFTIME_FIND_PREV , NULL , NULL , } ,
# endif /* NEW_PACKET_LIST */
{ " /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_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 , } ,
# ifdef HAVE_AIRPCAP
{ " /View/_Wireless Toolbar " , NULL , GTK_MENU_FUNC ( show_hide_cb ) , SHOW_HIDE_AIRPCAP_TOOLBAR , " <CheckItem> " , NULL , } ,
# endif
{ " /View/_Statusbar " , NULL , GTK_MENU_FUNC ( show_hide_cb ) , SHOW_HIDE_STATUSBAR , " <CheckItem> " , NULL , } ,
{ " /View/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /View/Packet _List " , NULL , GTK_MENU_FUNC ( show_hide_cb ) , SHOW_HIDE_PACKET_LIST , " <CheckItem> " , NULL , } ,
{ " /View/Packet _Details " , NULL , GTK_MENU_FUNC ( show_hide_cb ) , SHOW_HIDE_TREE_VIEW , " <CheckItem> " , NULL , } ,
{ " /View/Packet _Bytes " , NULL , GTK_MENU_FUNC ( show_hide_cb ) , SHOW_HIDE_BYTE_VIEW , " <CheckItem> " , NULL , } ,
{ " /View/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /View/_Time Display Format " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /View/Time Display Format/Date and Time of Day: 1970-01-01 01:02:03.123456 " , " <alt><control>1 " , GTK_MENU_FUNC ( timestamp_format_cb ) ,
TS_ABSOLUTE_WITH_DATE , " <RadioItem> " , NULL , } ,
{ " /View/Time Display Format/Time of Day: 01:02:03.123456 " , " <alt><control>2 " , GTK_MENU_FUNC ( timestamp_format_cb ) ,
TS_ABSOLUTE , " /View/Time Display Format/Date and Time of Day: 1970-01-01 01:02:03.123456 " , NULL , } ,
{ " /View/Time Display Format/Seconds Since Epoch (1970-01-01): 1234567890.123456 " , " <alt><control>3 " , GTK_MENU_FUNC ( timestamp_format_cb ) ,
TS_EPOCH , " /View/Time Display Format/Date and Time of Day: 1970-01-01 01:02:03.123456 " , NULL , } ,
{ " /View/Time Display Format/Seconds Since Beginning of Capture: 123.123456 " , " <alt><control>4 " , GTK_MENU_FUNC ( timestamp_format_cb ) ,
TS_RELATIVE , " /View/Time Display Format/Date and Time of Day: 1970-01-01 01:02:03.123456 " , NULL , } ,
{ " /View/Time Display Format/Seconds Since Previous Captured Packet: 1.123456 " , " <alt><control>5 " , GTK_MENU_FUNC ( timestamp_format_cb ) ,
TS_DELTA , " /View/Time Display Format/Date and Time of Day: 1970-01-01 01:02:03.123456 " , NULL , } ,
{ " /View/Time Display Format/Seconds Since Previous Displayed Packet: 1.123456 " , " <alt><control>6 " , GTK_MENU_FUNC ( timestamp_format_cb ) ,
TS_DELTA_DIS , " /View/Time Display Format/Date and Time of Day: 1970-01-01 01:02:03.123456 " , NULL , } ,
{ " /View/Time Display Format/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /View/Time Display Format/Automatic (File Format Precision) " , NULL , GTK_MENU_FUNC ( timestamp_precision_cb ) ,
TS_PREC_AUTO , " <RadioItem> " , NULL , } ,
{ " /View/Time Display Format/Seconds: 0 " , NULL , GTK_MENU_FUNC ( timestamp_precision_cb ) ,
TS_PREC_FIXED_SEC , " /View/Time Display Format/Automatic (File Format Precision) " , NULL , } ,
{ " /View/Time Display Format/Deciseconds: 0.1 " , NULL , GTK_MENU_FUNC ( timestamp_precision_cb ) ,
TS_PREC_FIXED_DSEC , " /View/Time Display Format/Automatic (File Format Precision) " , NULL , } ,
{ " /View/Time Display Format/Centiseconds: 0.12 " , NULL , GTK_MENU_FUNC ( timestamp_precision_cb ) ,
TS_PREC_FIXED_CSEC , " /View/Time Display Format/Automatic (File Format Precision) " , NULL , } ,
{ " /View/Time Display Format/Milliseconds: 0.123 " , NULL , GTK_MENU_FUNC ( timestamp_precision_cb ) ,
TS_PREC_FIXED_MSEC , " /View/Time Display Format/Automatic (File Format Precision) " , NULL , } ,
{ " /View/Time Display Format/Microseconds: 0.123456 " , NULL , GTK_MENU_FUNC ( timestamp_precision_cb ) ,
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 , } ,
{ " /View/Name Resolution/Enable for _MAC Layer " , NULL , GTK_MENU_FUNC ( name_resolution_cb ) , RESOLV_MAC , " <CheckItem> " , NULL , } ,
{ " /View/Name Resolution/Enable for _Network Layer " , NULL , GTK_MENU_FUNC ( name_resolution_cb ) , RESOLV_NETWORK , " <CheckItem> " , NULL , } ,
{ " /View/Name Resolution/Enable for _Transport Layer " , NULL , GTK_MENU_FUNC ( name_resolution_cb ) , RESOLV_TRANSPORT , " <CheckItem> " , NULL , } ,
{ " /View/Colorize Packet List " , NULL , colorize_cb , 0 , " <CheckItem> " , NULL , } ,
# ifdef HAVE_LIBPCAP
{ " /View/Auto Scroll in Li_ve Capture " , NULL , GTK_MENU_FUNC ( auto_scroll_live_cb ) , 0 , " <CheckItem> " , NULL , } ,
2010-09-24 06:46:14 +00:00
# endif
2010-10-08 01:22:54 +00:00
{ " /View/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /View/_Zoom In " , " <control>plus " , GTK_MENU_FUNC ( view_zoom_in_cb ) ,
0 , " <StockItem> " , GTK_STOCK_ZOOM_IN , } ,
{ " /View/Zoom _Out " , " <control>minus " , GTK_MENU_FUNC ( view_zoom_out_cb ) ,
0 , " <StockItem> " , GTK_STOCK_ZOOM_OUT , } ,
{ " /View/_Normal Size " , " <control>equal " , GTK_MENU_FUNC ( view_zoom_100_cb ) ,
0 , " <StockItem> " , GTK_STOCK_ZOOM_100 , } ,
# ifdef NEW_PACKET_LIST
{ " /View/Resize All Columns " , " <shift><control>R " , GTK_MENU_FUNC ( new_packet_list_resize_columns_cb ) ,
0 , " <StockItem> " , WIRESHARK_STOCK_RESIZE_COLUMNS , } ,
{ " /View/Displayed Columns " , NULL , NULL , 0 , NULL , NULL , } ,
# else
{ " /View/Resize All Columns " , " <shift><control>R " , GTK_MENU_FUNC ( packet_list_resize_columns_cb ) ,
0 , " <StockItem> " , WIRESHARK_STOCK_RESIZE_COLUMNS , } ,
# endif /* NEW_PACKET_LIST */
{ " /View/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /View/E_xpand Subtrees " , " <shift>Right " , GTK_MENU_FUNC ( expand_tree_cb ) , 0 , NULL , NULL , } ,
{ " /View/_Expand All " , " <control>Right " , GTK_MENU_FUNC ( expand_all_cb ) ,
0 , NULL , NULL , } ,
{ " /View/Collapse _All " , " <control>Left " , GTK_MENU_FUNC ( collapse_all_cb ) ,
0 , NULL , NULL , } ,
{ " /View/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /View/Colorize Conversation " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /View/Colorize Conversation/Color 1 " , " <control>1 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 1 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR1 , } ,
{ " /View/Colorize Conversation/Color 2 " , " <control>2 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 2 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR2 , } ,
{ " /View/Colorize Conversation/Color 3 " , " <control>3 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 3 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR3 , } ,
{ " /View/Colorize Conversation/Color 4 " , " <control>4 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 4 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR4 , } ,
{ " /View/Colorize Conversation/Color 5 " , " <control>5 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 5 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR5 , } ,
{ " /View/Colorize Conversation/Color 6 " , " <control>6 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 6 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR6 , } ,
{ " /View/Colorize Conversation/Color 7 " , " <control>7 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 7 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR7 , } ,
{ " /View/Colorize Conversation/Color 8 " , " <control>8 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 8 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR8 , } ,
{ " /View/Colorize Conversation/Color 9 " , " <control>9 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 9 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR9 , } ,
{ " /View/Colorize Conversation/Color 10 " , " <control>0 " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 10 * 256 , " <StockItem> " , WIRESHARK_STOCK_COLOR0 , } ,
{ " /View/Colorize Conversation/<separator> " , NULL ,
NULL , 0 , " <Separator> " , NULL , } ,
{ " /View/Colorize Conversation/New Coloring Rule... " , NULL ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 0 , " <StockItem> " , GTK_STOCK_SELECT_COLOR , } ,
{ " /View/Reset Coloring 1-10 " , " <control>space " ,
GTK_MENU_FUNC ( colorize_conversation_cb ) , 255 * 256 , NULL , NULL , } ,
{ " /View/_Coloring Rules... " , NULL , color_display_cb ,
0 , " <StockItem> " , GTK_STOCK_SELECT_COLOR , } ,
{ " /View/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
2010-09-24 06:46:14 +00:00
2010-10-08 01:22:54 +00:00
{ " /View/Show Packet in New _Window " , NULL ,
GTK_MENU_FUNC ( new_window_cb ) , 0 , NULL , NULL , } ,
{ " /View/_Reload " , " <control>R " , GTK_MENU_FUNC ( file_reload_cmd_cb ) ,
0 , " <StockItem> " , GTK_STOCK_REFRESH , } ,
{ " /_Go " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Go/_Back " , " <alt>Left " ,
GTK_MENU_FUNC ( history_back_cb ) , 0 , " <StockItem> " , GTK_STOCK_GO_BACK , } ,
{ " /Go/_Forward " , " <alt>Right " ,
GTK_MENU_FUNC ( history_forward_cb ) , 0 , " <StockItem> " , GTK_STOCK_GO_FORWARD , } ,
{ " /Go/_Go to Packet... " , " <control>G " ,
GTK_MENU_FUNC ( goto_frame_cb ) , 0 , " <StockItem> " , GTK_STOCK_JUMP_TO , } ,
{ " /Go/Go to _Corresponding Packet " , NULL , GTK_MENU_FUNC ( goto_framenum_cb ) ,
0 , NULL , NULL , } ,
{ " /Go/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Go/Previous Packet " , " <control>Up " ,
GTK_MENU_FUNC ( goto_previous_frame_cb ) , 0 , " <StockItem> " , GTK_STOCK_GO_UP , } ,
{ " /Go/Next Packet " , " <control>Down " ,
GTK_MENU_FUNC ( goto_next_frame_cb ) , 0 , " <StockItem> " , GTK_STOCK_GO_DOWN , } ,
{ " /Go/F_irst Packet " , " <control>Home " ,
GTK_MENU_FUNC ( goto_top_frame_cb ) , 0 , " <StockItem> " , GTK_STOCK_GOTO_TOP , } ,
{ " /Go/_Last Packet " , " <control>End " ,
GTK_MENU_FUNC ( goto_bottom_frame_cb ) , 0 , " <StockItem> " , GTK_STOCK_GOTO_BOTTOM , } ,
{ " /Go/Previous Packet In Conversation " , " <control>bracketleft " ,
GTK_MENU_FUNC ( goto_previous_frame_conversation_cb ) , 0 , NULL , NULL , } ,
{ " /Go/Next Packet In Conversation " , " <control>bracketright " ,
GTK_MENU_FUNC ( goto_next_frame_conversation_cb ) , 0 , NULL , NULL , } ,
# ifdef HAVE_LIBPCAP
{ " /_Capture " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Capture/_Interfaces... " , " <control>I " ,
GTK_MENU_FUNC ( capture_if_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_CAPTURE_INTERFACES , } ,
{ " /Capture/_Options... " , " <control>K " ,
GTK_MENU_FUNC ( capture_prep_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_CAPTURE_OPTIONS , } ,
{ " /Capture/_Start " , " <control>E " ,
GTK_MENU_FUNC ( capture_start_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_CAPTURE_START , } ,
{ " /Capture/S_top " , " <control>E " , GTK_MENU_FUNC ( capture_stop_cb ) ,
0 , " <StockItem> " , WIRESHARK_STOCK_CAPTURE_STOP , } ,
{ " /Capture/_Restart " , " <control>R " , GTK_MENU_FUNC ( capture_restart_cb ) ,
0 , " <StockItem> " , WIRESHARK_STOCK_CAPTURE_RESTART , } ,
{ " /Capture/Capture _Filters... " , NULL , GTK_MENU_FUNC ( cfilter_dialog_cb ) ,
0 , " <StockItem> " , WIRESHARK_STOCK_CAPTURE_FILTER , } ,
# endif /* HAVE_LIBPCAP */
{ " /_Analyze " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Analyze/_Display Filters... " , NULL , GTK_MENU_FUNC ( dfilter_dialog_cb ) ,
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 , } ,
{ " /Analyze/Apply as Filter/_Not Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_NOT | MATCH_SELECTED_APPLY_NOW , NULL , NULL , } ,
{ " /Analyze/Apply as Filter/ " UTF8_HORIZONTAL_ELLIPSIS " _and Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_AND | MATCH_SELECTED_APPLY_NOW , NULL , NULL , } ,
{ " /Analyze/Apply as Filter/ " UTF8_HORIZONTAL_ELLIPSIS " _or Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_OR | MATCH_SELECTED_APPLY_NOW , NULL , NULL , } ,
{ " /Analyze/Apply as Filter/ " UTF8_HORIZONTAL_ELLIPSIS " a_nd not Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_AND_NOT | MATCH_SELECTED_APPLY_NOW , NULL , NULL , } ,
{ " /Analyze/Apply as Filter/ " UTF8_HORIZONTAL_ELLIPSIS " o_r not Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_OR_NOT | MATCH_SELECTED_APPLY_NOW , NULL , NULL , } ,
{ " /Analyze/_Prepare a Filter " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Analyze/Prepare a Filter/_Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_REPLACE , NULL , NULL , } ,
{ " /Analyze/Prepare a Filter/_Not Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_NOT , NULL , NULL , } ,
{ " /Analyze/Prepare a Filter/ " UTF8_HORIZONTAL_ELLIPSIS " _and Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_AND , NULL , NULL , } ,
{ " /Analyze/Prepare a Filter/ " UTF8_HORIZONTAL_ELLIPSIS " _or Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_OR , NULL , NULL , } ,
{ " /Analyze/Prepare a Filter/ " UTF8_HORIZONTAL_ELLIPSIS " a_nd not Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_AND_NOT , NULL , NULL , } ,
{ " /Analyze/Prepare a Filter/ " UTF8_HORIZONTAL_ELLIPSIS " o_r not Selected " , NULL , GTK_MENU_FUNC ( match_selected_ptree_cb ) ,
MATCH_SELECTED_OR_NOT , NULL , NULL , } ,
{ " /Analyze/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Analyze/_Enabled Protocols... " , " <shift><control>E " , GTK_MENU_FUNC ( proto_cb ) ,
0 , " <StockItem> " , WIRESHARK_STOCK_CHECKBOX , } ,
{ " /Analyze/Decode _As... " , NULL , GTK_MENU_FUNC ( decode_as_cb ) ,
0 , " <StockItem> " , WIRESHARK_STOCK_DECODE_AS , } ,
{ " /Analyze/_User Specified Decodes... " , NULL ,
GTK_MENU_FUNC ( decode_show_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_DECODE_AS , } ,
{ " /Analyze/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Analyze/_Follow TCP Stream " , NULL ,
GTK_MENU_FUNC ( follow_tcp_stream_cb ) , 0 , NULL , NULL , } ,
{ " /Analyze/_Follow UDP Stream " , NULL ,
GTK_MENU_FUNC ( follow_udp_stream_cb ) , 0 , NULL , NULL , } ,
{ " /Analyze/_Follow SSL Stream " , NULL ,
GTK_MENU_FUNC ( follow_ssl_stream_cb ) , 0 , NULL , NULL , } ,
{ " /_Statistics " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Statistics/_Summary " , NULL , GTK_MENU_FUNC ( summary_open_cb ) , 0 , " <StockItem> " , GTK_STOCK_PROPERTIES , } ,
{ " /Statistics/_Protocol Hierarchy " , NULL ,
GTK_MENU_FUNC ( proto_hier_stats_cb ) , 0 , NULL , NULL , } ,
{ " /Statistics/Conversations " , NULL ,
GTK_MENU_FUNC ( init_conversation_notebook_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_CONVERSATIONS , } ,
{ " /Statistics/Endpoints " , NULL ,
GTK_MENU_FUNC ( init_hostlist_notebook_cb ) , 0 , " <StockItem> " , WIRESHARK_STOCK_ENDPOINTS , } ,
{ " /Telephon_y " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /_Tools " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Tools/Firewall ACL Rules " , NULL ,
firewall_rule_cb , 0 , NULL , NULL , } ,
{ " /WS internal " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /WS internal/Dissector tables " , NULL , GTK_MENU_FUNC ( dissector_tables_dlg_cb ) ,
0 , NULL , NULL , } ,
{ " /_Help " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Help/_Contents " , " F1 " , GTK_MENU_FUNC ( topic_menu_cb ) , HELP_CONTENT , " <StockItem> " , GTK_STOCK_HELP , } ,
{ " /Help/FAQ's " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , ONLINEPAGE_FAQ , NULL , NULL , } ,
{ " /Help/Manual Pages " , NULL , NULL , 0 , " <Branch> " , NULL , } ,
{ " /Help/Manual Pages/Wireshark " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , LOCALPAGE_MAN_WIRESHARK , NULL , NULL , } ,
{ " /Help/Manual Pages/Wireshark Filter " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , LOCALPAGE_MAN_WIRESHARK_FILTER , NULL , NULL , } ,
{ " /Help/Manual Pages/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Help/Manual Pages/TShark " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , LOCALPAGE_MAN_TSHARK , NULL , NULL , } ,
{ " /Help/Manual Pages/RawShark " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , LOCALPAGE_MAN_RAWSHARK , NULL , NULL , } ,
{ " /Help/Manual Pages/Dumpcap " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , LOCALPAGE_MAN_DUMPCAP , NULL , NULL , } ,
{ " /Help/Manual Pages/Mergecap " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , LOCALPAGE_MAN_MERGECAP , NULL , NULL , } ,
{ " /Help/Manual Pages/Editcap " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , LOCALPAGE_MAN_EDITCAP , NULL , NULL , } ,
{ " /Help/Manual Pages/Text2pcap " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , LOCALPAGE_MAN_TEXT2PCAP , NULL , NULL , } ,
{ " /Help/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Help/Website " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , ONLINEPAGE_HOME , " <StockItem> " , GTK_STOCK_HOME , } ,
{ " /Help/Wiki " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , ONLINEPAGE_WIKI , " <StockItem> " , WIRESHARK_STOCK_WIKI , } ,
{ " /Help/Downloads " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , ONLINEPAGE_DOWNLOAD , NULL , NULL , } ,
{ " /Help/Sample Captures " , NULL , GTK_MENU_FUNC ( topic_menu_cb ) , ONLINEPAGE_SAMPLE_FILES , NULL , NULL , } ,
{ " /Help/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Help/_Supported Protocols (slow!) " , NULL , GTK_MENU_FUNC ( supported_cb ) , 0 , NULL , NULL , } ,
{ " /Help/<separator> " , NULL , NULL , 0 , " <Separator> " , NULL , } ,
{ " /Help/_About Wireshark " , NULL , GTK_MENU_FUNC ( about_wireshark_cb ) ,
0 , " <StockItem> " , WIRESHARK_STOCK_ABOUT }
2010-09-21 05:32:32 +00:00
} ;
2004-07-18 00:24:25 +00:00
/* calculate the number of menu_items */
static int nmenu_items = sizeof ( menu_items ) / sizeof ( menu_items [ 0 ] ) ;
2010-10-04 08:43:15 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-21 09:53:44 +00:00
2010-09-12 19:26:42 +00:00
static void
2010-09-16 10:40:33 +00:00
select_bytes_view_cb ( GtkRadioAction * action , GtkRadioAction * current _U_ , gpointer user_data _U_ )
2010-09-12 19:26:42 +00:00
{
gint value ;
2009-11-05 10:16:49 +00:00
2010-09-12 19:26:42 +00:00
value = gtk_radio_action_get_current_value ( action ) ;
/* Fix me */
select_bytes_view ( NULL , NULL , value ) ;
}
static void
2010-10-10 18:10:33 +00:00
sort_ascending_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-12 19:26:42 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/SortAscending " ) ;
2010-09-12 19:26:42 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_SORT_ASCENDING ) ;
}
static void
2010-10-10 18:10:33 +00:00
sort_descending_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-12 19:26:42 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/SortDescending " ) ;
2010-09-12 19:26:42 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_SORT_DESCENDING ) ;
}
static void
2010-10-10 18:10:33 +00:00
no_sorting_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-12 19:26:42 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/NoSorting " ) ;
2010-09-12 19:26:42 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_SORT_NONE ) ;
}
2010-09-13 20:21:41 +00:00
static void
2010-09-21 09:59:45 +00:00
packet_list_heading_show_resolved_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-13 20:21:41 +00:00
{
2010-09-21 09:59:45 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/ShowResolved " ) ;
2010-09-21 05:24:02 +00:00
2010-09-30 21:23:49 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_TOGGLE_RESOLVED ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_heading_align_left_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/AlignLeft " ) ;
2010-09-13 20:21:41 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_ALIGN_LEFT ) ;
}
static void
2010-10-10 18:10:33 +00:00
packet_list_heading_align_center_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/AlignCenter " ) ;
2010-09-13 20:21:41 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_ALIGN_CENTER ) ;
}
static void
2010-10-10 18:10:33 +00:00
packet_list_heading_align_right_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/AlignRight " ) ;
2010-09-13 20:21:41 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_ALIGN_RIGHT ) ;
}
static void
2010-10-10 18:10:33 +00:00
packet_list_heading_col_pref_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/ColumnPreferences " ) ;
2010-09-13 20:21:41 +00:00
prefs_page_cb ( widget , user_data , PREFS_PAGE_COLUMNS ) ;
}
static void
2010-10-10 18:10:33 +00:00
packet_list_heading_resize_col_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/ResizeColumn " ) ;
2010-09-13 20:21:41 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_RESIZE ) ;
}
static void
2010-10-10 19:05:04 +00:00
packet_list_heading_change_col_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/RenameColumnTitle " ) ;
2010-10-10 19:05:04 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_CHANGE ) ;
2010-09-13 20:21:41 +00:00
}
2010-09-21 07:08:35 +00:00
static void
2010-10-10 18:10:33 +00:00
packet_list_heading_activate_all_columns_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-09-21 07:08:35 +00:00
{
new_packet_list_set_all_columns_visible ( ) ;
}
2010-09-13 20:21:41 +00:00
static void
2010-10-10 18:10:33 +00:00
packet_list_heading_hide_col_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/RenameColumnTitle " ) ;
2010-09-13 20:21:41 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_HIDE ) ;
}
static void
2010-10-10 18:10:33 +00:00
packet_list_heading_remove_col_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/RemoveColumn " ) ;
2010-09-13 20:21:41 +00:00
new_packet_list_column_menu_cb ( widget , user_data , COLUMN_SELECTED_REMOVE ) ;
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_set_ref_time_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
reftime_frame_cb ( NULL /* widget _U_ */ , user_data , REFTIME_TOGGLE ) ;
2010-09-13 20:21:41 +00:00
}
2010-09-15 20:51:44 +00:00
2010-09-13 20:21:41 +00:00
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_apply_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_REPLACE | MATCH_SELECTED_APPLY_NOW ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_apply_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_NOT | MATCH_SELECTED_APPLY_NOW ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_apply_and_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_AND | MATCH_SELECTED_APPLY_NOW ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_apply_or_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_OR | MATCH_SELECTED_APPLY_NOW ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_apply_and_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_AND_NOT | MATCH_SELECTED_APPLY_NOW ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_apply_or_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_OR_NOT | MATCH_SELECTED_APPLY_NOW ) ;
2010-09-13 20:21:41 +00:00
}
/* Prepare a filter */
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_prepare_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_REPLACE ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_prepare_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_NOT ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_prepare_and_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_AND ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_prepare_or_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_OR ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_prepare_and_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_AND_NOT ) ;
2010-09-13 20:21:41 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_prepare_or_not_selected_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-13 20:21:41 +00:00
{
2010-10-10 18:10:33 +00:00
match_selected_plist_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_OR_NOT ) ;
2010-09-13 20:21:41 +00:00
}
2010-09-14 20:50:03 +00:00
static void
2010-10-11 19:29:52 +00:00
packet_list_menu_conversation_ethernet_cb ( GtkAction * action , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-11 19:29:52 +00:00
conversation_cb ( action , user_data , CONV_ETHER ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_conversation_ip_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-11 19:29:52 +00:00
conversation_cb ( action , user_data , CONV_IP ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_conversation_tcp_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-11 19:29:52 +00:00
conversation_cb ( action , user_data , CONV_TCP ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_conversation_udp_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-11 19:29:52 +00:00
conversation_cb ( action , user_data , CONV_UDP ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_conversation_pn_cba_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-11 19:29:52 +00:00
conversation_cb ( action , user_data , CONV_CBA ) ;
2010-09-14 20:50:03 +00:00
}
2010-09-24 14:52:44 +00:00
/* Ethernet */
2010-09-14 20:50:03 +00:00
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color1_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color2_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color3_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 3 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color4_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 4 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color5_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 5 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color6_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 6 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color7_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 7 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color8_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 8 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color9_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 9 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_color10_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER + 10 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ethernet_new_rule_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_ETHER ) ;
2010-09-14 20:50:03 +00:00
}
/* IP */
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color1_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color2_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color3_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 3 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color4_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 4 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color5_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 5 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color6_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 6 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color7_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 7 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color8_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 8 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color9_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 9 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_color10_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_IP + 10 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_ip_new_rule_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP ) ;
2010-09-14 20:50:03 +00:00
}
/* TCP */
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color1_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color2_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color3_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 3 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color4_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 4 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color5_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 5 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color6_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 6 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color7_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 7 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color8_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 8 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color9_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 9 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_color10_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP + 10 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_tcp_new_rule_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_TCP ) ;
2010-09-14 20:50:03 +00:00
}
/* UDP */
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color1_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color2_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color3_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 3 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color4_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 4 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color5_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 5 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color6_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 6 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color7_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 7 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color8_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 8 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color9_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 9 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_color10_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP + 10 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_udp_new_rule_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_UDP ) ;
2010-09-14 20:50:03 +00:00
}
/* CONV_CBA */
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color1_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color2_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 1 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color3_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 3 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color4_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 4 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color5_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 5 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color6_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 6 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color7_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 7 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color8_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 8 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color9_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 9 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_color10_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA + 10 * 256 ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_color_conv_cba_new_rule_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_conversation_cb ( NULL /* widget _U_ */ , user_data , CONV_CBA ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_copy_sum_txt ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
copy_hex_cb ( NULL /* widget _U_ */ , user_data , CS_TEXT ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_copy_sum_csv ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
copy_hex_cb ( NULL /* widget _U_ */ , user_data , CS_CSV ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_copy_as_flt ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
copy_hex_cb ( NULL /* widget _U_ */ , user_data , MATCH_SELECTED_REPLACE | MATCH_SELECTED_COPY_ONLY ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_copy_bytes_oht_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
copy_hex_cb ( NULL /* widget _U_ */ , user_data , CD_ALLINFO | CD_FLAGS_SELECTEDONLY ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_copy_bytes_oh_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
copy_hex_cb ( NULL /* widget _U_ */ , user_data , CD_HEXCOLUMNS | CD_FLAGS_SELECTEDONLY ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_copy_bytes_text_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
copy_hex_cb ( NULL /* widget _U_ */ , user_data , CD_TEXTONLY | CD_FLAGS_SELECTEDONLY ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_copy_bytes_hex_strm_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
copy_hex_cb ( NULL /* widget _U_ */ , user_data , CD_HEX | CD_FLAGS_SELECTEDONLY ) ;
2010-09-14 20:50:03 +00:00
}
static void
2010-10-10 18:10:33 +00:00
packet_list_menu_copy_bytes_bin_strm_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-14 20:50:03 +00:00
{
2010-10-10 18:10:33 +00:00
copy_hex_cb ( NULL /* widget _U_ */ , user_data , CD_BINARY | CD_FLAGS_SELECTEDONLY ) ;
2010-09-14 20:50:03 +00:00
}
2010-09-15 20:51:44 +00:00
/* tree */
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color1_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 1 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color2_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 2 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color3_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 3 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color4_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 4 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color5_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 5 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color6_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 6 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color7_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 7 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color8_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 8 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color9_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 9 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_color10_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 10 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_color_with_flt_new_rule_cb ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
colorize_selected_ptree_cb ( NULL /* widget _U_ */ , user_data , 0 ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_copy_desc ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
copy_selected_plist_cb ( NULL /* widget _U_ */ , user_data , COPY_SELECTED_DESCRIPTION ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_copy_field ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
copy_selected_plist_cb ( NULL /* widget _U_ */ , user_data , COPY_SELECTED_FIELDNAME ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_copy_value ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
copy_selected_plist_cb ( NULL /* widget _U_ */ , user_data , COPY_SELECTED_VALUE ) ;
2010-09-15 20:51:44 +00:00
}
static void
2010-10-10 18:10:33 +00:00
tree_view_menu_copy_as_flt ( GtkAction * action _U_ , gpointer user_data )
2010-09-15 20:51:44 +00:00
{
2010-10-10 18:10:33 +00:00
GtkWidget * widget = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/Copy/AsFilter " ) ;
2010-09-15 20:51:44 +00:00
match_selected_ptree_cb ( widget , user_data , MATCH_SELECTED_REPLACE | MATCH_SELECTED_COPY_ONLY ) ;
}
2010-09-14 20:50:03 +00:00
2010-09-12 19:26:42 +00:00
static const char * ui_desc_packet_list_heading_menu_popup =
" <ui> \n "
" <popup name='PacketListHeadingPopup' action='PopupAction'> \n "
" <menuitem name='SortAscending' action='/Sort Ascending'/> \n "
" <menuitem name='SortDescending' action='/Sort Descending'/> \n "
" <menuitem name='NoSorting' action='/No Sorting'/> \n "
2010-09-13 20:21:41 +00:00
" <separator/> \n "
" <menuitem name='ShowResolved' action='/Show Resolved'/> \n "
" <separator/> \n "
" <menuitem name='AlignLeft' action='/Align Left'/> \n "
" <menuitem name='AlignCenter' action='/Align Center'/> \n "
" <menuitem name='AlignRight' action='/Align Right'/> \n "
" <separator/> \n "
" <menuitem name='ColumnPreferences' action='/Column Preferences'/> \n "
2010-10-09 15:22:53 +00:00
" <menuitem name='EditColumnDetails' action='/Edit Column Details'/> \n "
2010-09-21 07:08:35 +00:00
" <menuitem name='ResizeColumn' action='/Resize Column'/> \n "
2010-09-13 20:21:41 +00:00
" <separator/> \n "
2010-09-21 07:08:35 +00:00
" <menu name='DisplayedColumns' action='/Displayed Columns'> \n "
" <menuitem name='Display All' action='/Displayed Columns/Display All'/> \n "
2010-09-13 20:21:41 +00:00
" </menu> \n "
2010-09-21 07:08:35 +00:00
" <menuitem name='HideColumn' action='/Hide Column'/> \n "
" <menuitem name='RemoveColumn' action='/Remove Column'/> \n "
2010-09-12 19:26:42 +00:00
" </popup> \n "
" </ui> \n " ;
static const GtkActionEntry packet_list_heading_menu_popup_action_entries [ ] = {
2010-09-13 20:21:41 +00:00
{ " /Sort Ascending " , GTK_STOCK_SORT_ASCENDING , " Sort Ascending " , NULL , NULL , G_CALLBACK ( sort_ascending_cb ) } ,
{ " /Sort Descending " , GTK_STOCK_SORT_DESCENDING , " Sort Descending " , NULL , NULL , G_CALLBACK ( sort_descending_cb ) } ,
{ " /No Sorting " , NULL , " No Sorting " , NULL , NULL , G_CALLBACK ( no_sorting_cb ) } ,
{ " /Align Left " , GTK_STOCK_JUSTIFY_LEFT , " Align Left " , NULL , NULL , G_CALLBACK ( packet_list_heading_align_left_cb ) } ,
{ " /Align Center " , GTK_STOCK_JUSTIFY_CENTER , " Align Center " , NULL , NULL , G_CALLBACK ( packet_list_heading_align_center_cb ) } ,
{ " /Align Right " , GTK_STOCK_JUSTIFY_RIGHT , " Align Right " , NULL , NULL , G_CALLBACK ( packet_list_heading_align_right_cb ) } ,
{ " /Column Preferences " , GTK_STOCK_PREFERENCES , " Column Preferences... " , NULL , NULL , G_CALLBACK ( packet_list_heading_col_pref_cb ) } ,
2010-10-30 18:08:08 +00:00
{ " /Edit Column Details " , WIRESHARK_STOCK_EDIT , " Edit Column Details... " , NULL , NULL , G_CALLBACK ( packet_list_heading_change_col_cb ) } ,
2010-09-13 20:21:41 +00:00
{ " /Resize Column " , WIRESHARK_STOCK_RESIZE_COLUMNS , " Resize Column " , NULL , NULL , G_CALLBACK ( packet_list_heading_resize_col_cb ) } ,
{ " /Displayed Columns " , NULL , " Displayed Columns " , NULL , NULL , NULL } ,
2010-10-10 18:10:33 +00:00
{ " /Displayed Columns/Display All " , NULL , " Display All " , NULL , NULL , G_CALLBACK ( packet_list_heading_activate_all_columns_cb ) } ,
2010-09-13 20:21:41 +00:00
{ " /Hide Column " , NULL , " Hide Column " , NULL , NULL , G_CALLBACK ( packet_list_heading_hide_col_cb ) } ,
{ " /Remove Column " , GTK_STOCK_DELETE , " Remove Column " , NULL , NULL , G_CALLBACK ( packet_list_heading_remove_col_cb ) } ,
} ;
2010-09-16 13:12:02 +00:00
static const GtkToggleActionEntry packet_list_heading_menu_toggle_action_entries [ ] =
2010-09-13 20:21:41 +00:00
{
/* name, stock id, label, accel, tooltip, callback, is_active */
2010-09-21 05:24:02 +00:00
{ " /Show Resolved " , NULL , " Show Resolved " , NULL , NULL , G_CALLBACK ( packet_list_heading_show_resolved_cb ) , FALSE } ,
2010-09-12 19:26:42 +00:00
} ;
static const char * ui_desc_packet_list_menu_popup =
" <ui> \n "
" <popup name='PacketListMenuPopup' action='PopupAction'> \n "
" <menuitem name='MarkPacket' action='/MarkPacket'/> \n "
" <menuitem name='IgnorePacket' action='/IgnorePacket'/> \n "
2010-09-13 20:21:41 +00:00
" <menuitem name='SetTimeReference' action='/Set Time Reference'/> \n "
2010-10-03 16:37:58 +00:00
" <separator/> \n "
2010-09-15 20:51:44 +00:00
" <menuitem name='ManuallyResolveAddress' action='/ManuallyResolveAddress'/> \n "
2010-09-13 20:21:41 +00:00
" <separator/> \n "
" <menu name= 'ApplyAsFilter' action='/Apply as Filter'> \n "
" <menuitem name='Selected' action='/Apply as Filter/Selected'/> \n "
" <menuitem name='NotSelected' action='/Apply as Filter/Not Selected'/> \n "
" <menuitem name='AndSelected' action='/Apply as Filter/AndSelected'/> \n "
" <menuitem name='OrSelected' action='/Apply as Filter/OrSelected'/> \n "
" <menuitem name='AndNotSelected' action='/Apply as Filter/AndNotSelected'/> \n "
" <menuitem name='OrNotSelected' action='/Apply as Filter/OrNotSelected'/> \n "
" </menu> \n "
2010-09-14 20:50:03 +00:00
" <menu name= 'PrepareaFilter' action='/Prepare a Filter'> \n "
2010-09-13 20:21:41 +00:00
" <menuitem name='Selected' action='/Prepare a Filter/Selected'/> \n "
" <menuitem name='NotSelected' action='/Prepare a Filter/Not Selected'/> \n "
" <menuitem name='AndSelected' action='/Prepare a Filter/AndSelected'/> \n "
" <menuitem name='OrSelected' action='/Prepare a Filter/OrSelected'/> \n "
" <menuitem name='AndNotSelected' action='/Prepare a Filter/AndNotSelected'/> \n "
" <menuitem name='OrNotSelected' action='/Prepare a Filter/OrNotSelected'/> \n "
" </menu> \n "
2010-09-14 20:50:03 +00:00
" <menu name= 'ConversationFilter' action='/Conversation Filter'> \n "
" <menuitem name='Ethernet' action='/Conversation Filter/Ethernet'/> \n "
" <menuitem name='IP' action='/Conversation Filter/IP'/> \n "
" <menuitem name='TCP' action='/Conversation Filter/TCP'/> \n "
" <menuitem name='UDP' action='/Conversation Filter/UDP'/> \n "
" <menuitem name='PN-CBA' action='/Conversation Filter/PN-CBA'/> \n "
" </menu> \n "
" <menu name= 'ColorizeConversation' action='/Colorize Conversation'> \n "
" <menu name= 'Ethernet' action='/Colorize Conversation/Ethernet'> \n "
" <menuitem name='Color1' action='/Colorize Conversation/Ethernet/Color 1'/> \n "
" <menuitem name='Color2' action='/Colorize Conversation/Ethernet/Color 2'/> \n "
" <menuitem name='Color3' action='/Colorize Conversation/Ethernet/Color 3'/> \n "
" <menuitem name='Color4' action='/Colorize Conversation/Ethernet/Color 4'/> \n "
" <menuitem name='Color5' action='/Colorize Conversation/Ethernet/Color 5'/> \n "
" <menuitem name='Color6' action='/Colorize Conversation/Ethernet/Color 6'/> \n "
" <menuitem name='Color7' action='/Colorize Conversation/Ethernet/Color 7'/> \n "
" <menuitem name='Color8' action='/Colorize Conversation/Ethernet/Color 8'/> \n "
" <menuitem name='Color9' action='/Colorize Conversation/Ethernet/Color 9'/> \n "
" <menuitem name='Color10' action='/Colorize Conversation/Ethernet/Color 10'/> \n "
" <menuitem name='NewColoringRule' action='/Colorize Conversation/Ethernet/New Coloring Rule'/> \n "
" </menu> \n "
" <menu name= 'IP' action='/Colorize Conversation/IP'> \n "
" <menuitem name='Color1' action='/Colorize Conversation/IP/Color 1'/> \n "
" <menuitem name='Color2' action='/Colorize Conversation/IP/Color 2'/> \n "
" <menuitem name='Color3' action='/Colorize Conversation/IP/Color 3'/> \n "
" <menuitem name='Color4' action='/Colorize Conversation/IP/Color 4'/> \n "
" <menuitem name='Color5' action='/Colorize Conversation/IP/Color 5'/> \n "
" <menuitem name='Color6' action='/Colorize Conversation/IP/Color 6'/> \n "
" <menuitem name='Color7' action='/Colorize Conversation/IP/Color 7'/> \n "
" <menuitem name='Color8' action='/Colorize Conversation/IP/Color 8'/> \n "
" <menuitem name='Color9' action='/Colorize Conversation/IP/Color 9'/> \n "
" <menuitem name='Color10' action='/Colorize Conversation/IP/Color 10'/> \n "
" <menuitem name='NewColoringRule' action='/Colorize Conversation/IP/New Coloring Rule'/> \n "
" </menu> \n "
" <menu name= 'TCP' action='/Colorize Conversation/TCP'> \n "
" <menuitem name='Color1' action='/Colorize Conversation/TCP/Color 1'/> \n "
" <menuitem name='Color2' action='/Colorize Conversation/TCP/Color 2'/> \n "
" <menuitem name='Color3' action='/Colorize Conversation/TCP/Color 3'/> \n "
" <menuitem name='Color4' action='/Colorize Conversation/TCP/Color 4'/> \n "
" <menuitem name='Color5' action='/Colorize Conversation/TCP/Color 5'/> \n "
" <menuitem name='Color6' action='/Colorize Conversation/TCP/Color 6'/> \n "
" <menuitem name='Color7' action='/Colorize Conversation/TCP/Color 7'/> \n "
" <menuitem name='Color8' action='/Colorize Conversation/TCP/Color 8'/> \n "
" <menuitem name='Color9' action='/Colorize Conversation/TCP/Color 9'/> \n "
" <menuitem name='Color10' action='/Colorize Conversation/TCP/Color 10'/> \n "
" <menuitem name='NewColoringRule' action='/Colorize Conversation/TCP/New Coloring Rule'/> \n "
" </menu> \n "
" <menu name= 'UDP' action='/Colorize Conversation/UDP'> \n "
" <menuitem name='Color1' action='/Colorize Conversation/UDP/Color 1'/> \n "
" <menuitem name='Color2' action='/Colorize Conversation/UDP/Color 2'/> \n "
" <menuitem name='Color3' action='/Colorize Conversation/UDP/Color 3'/> \n "
" <menuitem name='Color4' action='/Colorize Conversation/UDP/Color 4'/> \n "
" <menuitem name='Color5' action='/Colorize Conversation/UDP/Color 5'/> \n "
" <menuitem name='Color6' action='/Colorize Conversation/UDP/Color 6'/> \n "
" <menuitem name='Color7' action='/Colorize Conversation/UDP/Color 7'/> \n "
" <menuitem name='Color8' action='/Colorize Conversation/UDP/Color 8'/> \n "
" <menuitem name='Color9' action='/Colorize Conversation/UDP/Color 9'/> \n "
" <menuitem name='Color10' action='/Colorize Conversation/UDP/Color 10'/> \n "
" <menuitem name='NewColoringRule' action='/Colorize Conversation/UDP/New Coloring Rule'/> \n "
" </menu> \n "
" <menu name= 'PN-CBA' action='/Colorize Conversation/PN-CBA'> \n "
" <menuitem name='Color1' action='/Colorize Conversation/PN-CBA/Color 1'/> \n "
" <menuitem name='Color2' action='/Colorize Conversation/PN-CBA/Color 2'/> \n "
" <menuitem name='Color3' action='/Colorize Conversation/PN-CBA/Color 3'/> \n "
" <menuitem name='Color4' action='/Colorize Conversation/PN-CBA/Color 4'/> \n "
" <menuitem name='Color5' action='/Colorize Conversation/PN-CBA/Color 5'/> \n "
" <menuitem name='Color6' action='/Colorize Conversation/PN-CBA/Color 6'/> \n "
" <menuitem name='Color7' action='/Colorize Conversation/PN-CBA/Color 7'/> \n "
" <menuitem name='Color8' action='/Colorize Conversation/PN-CBA/Color 8'/> \n "
" <menuitem name='Color9' action='/Colorize Conversation/PN-CBA/Color 9'/> \n "
" <menuitem name='Color10' action='/Colorize Conversation/PN-CBA/Color 10'/> \n "
" <menuitem name='NewColoringRule' action='/Colorize Conversation/PN-CBA/New Coloring Rule'/> \n "
" </menu> \n "
" </menu> \n "
" <menu name= 'SCTP' action='/SCTP'> \n "
" <menuitem name='AnalysethisAssociation' action='/SCTP/Analyse this Association'/> \n "
" <menuitem name='PrepareFilterforthisAssociation' action='/SCTP/Prepare Filter for this Association'/> \n "
" </menu> \n "
" <menuitem name='FollowTCPStream' action='/Follow TCP Stream'/> \n "
" <menuitem name='FollowUDPStream' action='/Follow UDP Stream'/> \n "
" <menuitem name='FollowSSLStream' action='/Follow SSL Stream'/> \n "
" <separator/> \n "
" <menu name= 'Copy' action='/Copy'> \n "
" <menuitem name='SummaryTxt' action='/Copy/SummaryTxt'/> \n "
" <menuitem name='SummaryCSV' action='/Copy/SummaryCSV'/> \n "
" <menuitem name='AsFilter' action='/Copy/AsFilter'/> \n "
" <separator/> \n "
" <menu name= 'Bytes' action='/Copy/Bytes'> \n "
" <menuitem name='OffsetHexText' action='/Copy/Bytes/OffsetHexText'/> \n "
" <menuitem name='OffsetHex' action='/Copy/Bytes/OffsetHex'/> \n "
" <menuitem name='PrintableTextOnly' action='/Copy/Bytes/PrintableTextOnly'/> \n "
" <separator/> \n "
" <menuitem name='HexStream' action='/Copy/Bytes/HexStream'/> \n "
" <menuitem name='BinaryStream' action='/Copy/Bytes/BinaryStream'/> \n "
" </menu> \n "
" </menu> \n "
" <separator/> \n "
" <menuitem name='DecodeAs' action='/DecodeAs'/> \n "
" <menuitem name='Print' action='/Print'/> \n "
" <menuitem name='ShowPacketinNewWindow' action='/ShowPacketinNewWindow'/> \n "
2010-09-12 19:26:42 +00:00
" </popup> \n "
" </ui> \n " ;
static const GtkActionEntry packet_list_menu_popup_action_entries [ ] = {
2010-09-13 20:21:41 +00:00
{ " /MarkPacket " , NULL , " Mark Packet (toggle) " , NULL , NULL , G_CALLBACK ( new_packet_list_mark_frame_cb ) } ,
{ " /IgnorePacket " , NULL , " Ignore Packet (toggle) " , NULL , NULL , G_CALLBACK ( new_packet_list_ignore_frame_cb ) } ,
{ " /Set Time Reference " , WIRESHARK_STOCK_TIME , " Set Time Reference (toggle) " , NULL , NULL , G_CALLBACK ( packet_list_menu_set_ref_time_cb ) } ,
2010-09-15 20:51:44 +00:00
{ " /ManuallyResolveAddress " , NULL , " Manually Resolve Address " , NULL , NULL , G_CALLBACK ( manual_addr_resolv_dlg ) } ,
2010-09-13 20:21:41 +00:00
{ " /Apply as Filter " , NULL , " Apply as Filter " , NULL , NULL , NULL } ,
{ " /Apply as Filter/Selected " , NULL , " _Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_apply_selected_cb ) } ,
{ " /Apply as Filter/Not Selected " , NULL , " _Not Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_apply_not_selected_cb ) } ,
2010-10-03 16:09:25 +00:00
{ " /Apply as Filter/AndSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _and Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_apply_and_selected_cb ) } ,
{ " /Apply as Filter/OrSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _or Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_apply_or_selected_cb ) } ,
{ " /Apply as Filter/AndNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " a_nd not Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_apply_and_not_selected_cb ) } ,
{ " /Apply as Filter/OrNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " o_r not Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_apply_or_not_selected_cb ) } ,
2010-09-13 20:21:41 +00:00
{ " /Prepare a Filter " , NULL , " Prepare a Filter " , NULL , NULL , NULL } ,
{ " /Prepare a Filter/Selected " , NULL , " _Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_prepare_selected_cb ) } ,
{ " /Prepare a Filter/Not Selected " , NULL , " _Not Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_prepare_not_selected_cb ) } ,
2010-10-03 16:09:25 +00:00
{ " /Prepare a Filter/AndSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _and Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_prepare_and_selected_cb ) } ,
{ " /Prepare a Filter/OrSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _or Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_prepare_or_selected_cb ) } ,
{ " /Prepare a Filter/AndNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " a_nd not Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_prepare_and_not_selected_cb ) } ,
{ " /Prepare a Filter/OrNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " o_r not Selected " , NULL , NULL , G_CALLBACK ( packet_list_menu_prepare_or_not_selected_cb ) } ,
2010-09-13 20:21:41 +00:00
2010-09-14 20:50:03 +00:00
{ " /Conversation Filter " , NULL , " Conversation Filter " , NULL , NULL , NULL } ,
{ " /Conversation Filter/Ethernet " , NULL , " Ethernet " , NULL , NULL , G_CALLBACK ( packet_list_menu_conversation_ethernet_cb ) } ,
{ " /Conversation Filter/IP " , NULL , " IP " , NULL , NULL , G_CALLBACK ( packet_list_menu_conversation_ip_cb ) } ,
{ " /Conversation Filter/TCP " , NULL , " TCP " , NULL , NULL , G_CALLBACK ( packet_list_menu_conversation_tcp_cb ) } ,
{ " /Conversation Filter/UDP " , NULL , " UDP " , NULL , NULL , G_CALLBACK ( packet_list_menu_conversation_udp_cb ) } ,
{ " /Conversation Filter/PN-CBA " , NULL , " PN-CBA " , NULL , NULL , G_CALLBACK ( packet_list_menu_conversation_pn_cba_cb ) } ,
{ " /Colorize Conversation " , NULL , " Colorize Conversation " , NULL , NULL , NULL } ,
2010-09-16 13:12:02 +00:00
2010-09-14 20:50:03 +00:00
{ " /Colorize Conversation/Ethernet " , NULL , " Ethernet " , NULL , NULL , NULL } ,
{ " /Colorize Conversation/Ethernet/Color 1 " , WIRESHARK_STOCK_COLOR1 , " Color 1 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color1_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 2 " , WIRESHARK_STOCK_COLOR2 , " Color 2 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color2_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 3 " , WIRESHARK_STOCK_COLOR3 , " Color 3 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color3_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 4 " , WIRESHARK_STOCK_COLOR4 , " Color 4 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color4_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 5 " , WIRESHARK_STOCK_COLOR5 , " Color 5 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color5_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 6 " , WIRESHARK_STOCK_COLOR6 , " Color 6 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color6_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 7 " , WIRESHARK_STOCK_COLOR7 , " Color 7 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color7_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 8 " , WIRESHARK_STOCK_COLOR8 , " Color 8 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color8_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 9 " , WIRESHARK_STOCK_COLOR9 , " Color 9 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color9_cb ) } ,
{ " /Colorize Conversation/Ethernet/Color 10 " , WIRESHARK_STOCK_COLOR0 , " Color 10 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_color10_cb ) } ,
{ " /Colorize Conversation/Ethernet/New Coloring Rule " , NULL , " New Coloring Rule... " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ethernet_new_rule_cb ) } ,
{ " /Colorize Conversation/IP " , NULL , " IP " , NULL , NULL , NULL } ,
{ " /Colorize Conversation/IP/Color 1 " , WIRESHARK_STOCK_COLOR1 , " Color 1 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color1_cb ) } ,
{ " /Colorize Conversation/IP/Color 2 " , WIRESHARK_STOCK_COLOR2 , " Color 2 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color2_cb ) } ,
{ " /Colorize Conversation/IP/Color 3 " , WIRESHARK_STOCK_COLOR3 , " Color 3 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color3_cb ) } ,
{ " /Colorize Conversation/IP/Color 4 " , WIRESHARK_STOCK_COLOR4 , " Color 4 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color4_cb ) } ,
{ " /Colorize Conversation/IP/Color 5 " , WIRESHARK_STOCK_COLOR5 , " Color 5 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color5_cb ) } ,
{ " /Colorize Conversation/IP/Color 6 " , WIRESHARK_STOCK_COLOR6 , " Color 6 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color6_cb ) } ,
{ " /Colorize Conversation/IP/Color 7 " , WIRESHARK_STOCK_COLOR7 , " Color 7 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color7_cb ) } ,
{ " /Colorize Conversation/IP/Color 8 " , WIRESHARK_STOCK_COLOR8 , " Color 8 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color8_cb ) } ,
{ " /Colorize Conversation/IP/Color 9 " , WIRESHARK_STOCK_COLOR9 , " Color 9 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color9_cb ) } ,
{ " /Colorize Conversation/IP/Color 10 " , WIRESHARK_STOCK_COLOR0 , " Color 10 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_color10_cb ) } ,
{ " /Colorize Conversation/IP/New Coloring Rule " , NULL , " New Coloring Rule... " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_ip_new_rule_cb ) } ,
{ " /Colorize Conversation/TCP " , NULL , " TCP " , NULL , NULL , NULL } ,
{ " /Colorize Conversation/TCP/Color 1 " , WIRESHARK_STOCK_COLOR1 , " Color 1 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color1_cb ) } ,
{ " /Colorize Conversation/TCP/Color 2 " , WIRESHARK_STOCK_COLOR2 , " Color 2 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color2_cb ) } ,
{ " /Colorize Conversation/TCP/Color 3 " , WIRESHARK_STOCK_COLOR3 , " Color 3 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color3_cb ) } ,
{ " /Colorize Conversation/TCP/Color 4 " , WIRESHARK_STOCK_COLOR4 , " Color 4 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color4_cb ) } ,
{ " /Colorize Conversation/TCP/Color 5 " , WIRESHARK_STOCK_COLOR5 , " Color 5 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color5_cb ) } ,
{ " /Colorize Conversation/TCP/Color 6 " , WIRESHARK_STOCK_COLOR6 , " Color 6 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color6_cb ) } ,
{ " /Colorize Conversation/TCP/Color 7 " , WIRESHARK_STOCK_COLOR7 , " Color 7 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color7_cb ) } ,
{ " /Colorize Conversation/TCP/Color 8 " , WIRESHARK_STOCK_COLOR8 , " Color 8 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color8_cb ) } ,
{ " /Colorize Conversation/TCP/Color 9 " , WIRESHARK_STOCK_COLOR9 , " Color 9 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color9_cb ) } ,
{ " /Colorize Conversation/TCP/Color 10 " , WIRESHARK_STOCK_COLOR0 , " Color 10 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_color10_cb ) } ,
{ " /Colorize Conversation/TCP/New Coloring Rule " , NULL , " New Coloring Rule... " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_tcp_new_rule_cb ) } ,
{ " /Colorize Conversation/UDP " , NULL , " UDP " , NULL , NULL , NULL } ,
{ " /Colorize Conversation/UDP/Color 1 " , WIRESHARK_STOCK_COLOR1 , " Color 1 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color1_cb ) } ,
{ " /Colorize Conversation/UDP/Color 2 " , WIRESHARK_STOCK_COLOR2 , " Color 2 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color2_cb ) } ,
{ " /Colorize Conversation/UDP/Color 3 " , WIRESHARK_STOCK_COLOR3 , " Color 3 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color3_cb ) } ,
{ " /Colorize Conversation/UDP/Color 4 " , WIRESHARK_STOCK_COLOR4 , " Color 4 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color4_cb ) } ,
{ " /Colorize Conversation/UDP/Color 5 " , WIRESHARK_STOCK_COLOR5 , " Color 5 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color5_cb ) } ,
{ " /Colorize Conversation/UDP/Color 6 " , WIRESHARK_STOCK_COLOR6 , " Color 6 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color6_cb ) } ,
{ " /Colorize Conversation/UDP/Color 7 " , WIRESHARK_STOCK_COLOR7 , " Color 7 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color7_cb ) } ,
{ " /Colorize Conversation/UDP/Color 8 " , WIRESHARK_STOCK_COLOR8 , " Color 8 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color8_cb ) } ,
{ " /Colorize Conversation/UDP/Color 9 " , WIRESHARK_STOCK_COLOR9 , " Color 9 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color9_cb ) } ,
{ " /Colorize Conversation/UDP/Color 10 " , WIRESHARK_STOCK_COLOR0 , " Color 10 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_color10_cb ) } ,
{ " /Colorize Conversation/UDP/New Coloring Rule " , NULL , " New Coloring Rule... " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_udp_new_rule_cb ) } ,
{ " /Colorize Conversation/PN-CBA " , NULL , " PN-CBA Server " , NULL , NULL , NULL } ,
{ " /Colorize Conversation/PN-CBA/Color 1 " , WIRESHARK_STOCK_COLOR1 , " Color 1 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color1_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 2 " , WIRESHARK_STOCK_COLOR2 , " Color 2 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color2_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 3 " , WIRESHARK_STOCK_COLOR3 , " Color 3 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color3_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 4 " , WIRESHARK_STOCK_COLOR4 , " Color 4 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color4_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 5 " , WIRESHARK_STOCK_COLOR5 , " Color 5 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color5_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 6 " , WIRESHARK_STOCK_COLOR6 , " Color 6 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color6_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 7 " , WIRESHARK_STOCK_COLOR7 , " Color 7 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color7_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 8 " , WIRESHARK_STOCK_COLOR8 , " Color 8 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color8_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 9 " , WIRESHARK_STOCK_COLOR9 , " Color 9 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color9_cb ) } ,
{ " /Colorize Conversation/PN-CBA/Color 10 " , WIRESHARK_STOCK_COLOR0 , " Color 10 " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_color10_cb ) } ,
{ " /Colorize Conversation/PN-CBA/New Coloring Rule " , NULL , " New Coloring Rule... " , NULL , NULL , G_CALLBACK ( packet_list_menu_color_conv_cba_new_rule_cb ) } ,
{ " /SCTP " , NULL , " SCTP " , NULL , NULL , NULL } ,
{ " /SCTP/Analyse this Association " , NULL , " Analyse this Association " , NULL , NULL , G_CALLBACK ( sctp_analyse_start ) } ,
{ " /SCTP/Prepare Filter for this Association " , NULL , " Prepare Filter for this Association " , NULL , NULL , G_CALLBACK ( sctp_set_assoc_filter ) } ,
{ " /Follow TCP Stream " , NULL , " Follow TCP Stream " , NULL , NULL , G_CALLBACK ( follow_tcp_stream_cb ) } ,
{ " /Follow UDP Stream " , NULL , " Follow UDP Stream " , NULL , NULL , G_CALLBACK ( follow_udp_stream_cb ) } ,
{ " /Follow SSL Stream " , NULL , " Follow SSL Stream " , NULL , NULL , G_CALLBACK ( follow_ssl_stream_cb ) } ,
{ " /Copy " , NULL , " Copy " , NULL , NULL , NULL } ,
{ " /Copy/SummaryTxt " , NULL , " Summary (Text) " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_sum_txt ) } ,
{ " /Copy/SummaryCSV " , NULL , " Summary (CSV) " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_sum_csv ) } ,
{ " /Copy/AsFilter " , NULL , " As Filter " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_as_flt ) } ,
{ " /Copy/Bytes " , NULL , " Bytes " , NULL , NULL , NULL } ,
{ " /Copy/Bytes/OffsetHexText " , NULL , " Offset Hex Text " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_oht_cb ) } ,
{ " /Copy/Bytes/OffsetHex " , NULL , " Offset Hex " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_oh_cb ) } ,
{ " /Copy/Bytes/PrintableTextOnly " , NULL , " Printable Text Only " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_text_cb ) } ,
{ " /Copy/Bytes/HexStream " , NULL , " Hex Stream " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_hex_strm_cb ) } ,
{ " /Copy/Bytes/BinaryStream " , NULL , " Binary Stream " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_bin_strm_cb ) } ,
{ " /DecodeAs " , WIRESHARK_STOCK_DECODE_AS , " Decode As... " , NULL , NULL , G_CALLBACK ( decode_as_cb ) } ,
{ " /Print " , GTK_STOCK_PRINT , " Print... " , NULL , NULL , G_CALLBACK ( file_print_selected_cmd_cb ) } ,
{ " /ShowPacketinNewWindow " , NULL , " Show Packet in New Window " , NULL , NULL , G_CALLBACK ( new_window_cb ) } ,
2010-09-12 19:26:42 +00:00
2010-09-14 20:50:03 +00:00
} ;
2010-09-12 19:26:42 +00:00
static const char * ui_desc_tree_view_menu_popup =
" <ui> \n "
" <popup name='TreeViewPopup' action='PopupAction'> \n "
" <menuitem name='ExpandSubtrees' action='/ExpandSubtrees'/> \n "
" <menuitem name='ExpandAll' action='/ExpandAll'/> \n "
" <menuitem name='CollapseAll' action='/CollapseAll'/> \n "
2010-09-13 20:21:41 +00:00
" <separator/> \n "
" <menuitem name='ApplyasColumn' action='/Apply as Column'/> \n "
2010-09-15 20:51:44 +00:00
" <separator/> \n "
" <menu name= 'ApplyAsFilter' action='/Apply as Filter'> \n "
" <menuitem name='Selected' action='/Apply as Filter/Selected'/> \n "
" <menuitem name='NotSelected' action='/Apply as Filter/Not Selected'/> \n "
" <menuitem name='AndSelected' action='/Apply as Filter/AndSelected'/> \n "
" <menuitem name='OrSelected' action='/Apply as Filter/OrSelected'/> \n "
" <menuitem name='AndNotSelected' action='/Apply as Filter/AndNotSelected'/> \n "
" <menuitem name='OrNotSelected' action='/Apply as Filter/OrNotSelected'/> \n "
" </menu> \n "
" <menu name= 'PrepareaFilter' action='/Prepare a Filter'> \n "
" <menuitem name='Selected' action='/Prepare a Filter/Selected'/> \n "
" <menuitem name='NotSelected' action='/Prepare a Filter/Not Selected'/> \n "
" <menuitem name='AndSelected' action='/Prepare a Filter/AndSelected'/> \n "
" <menuitem name='OrSelected' action='/Prepare a Filter/OrSelected'/> \n "
" <menuitem name='AndNotSelected' action='/Prepare a Filter/AndNotSelected'/> \n "
" <menuitem name='OrNotSelected' action='/Prepare a Filter/OrNotSelected'/> \n "
" </menu> \n "
" <menu name= 'ColorizewithFilter' action='/Colorize with Filter'> \n "
" <menuitem name='Color1' action='/Colorize with Filter/Color 1'/> \n "
" <menuitem name='Color2' action='/Colorize with Filter/Color 2'/> \n "
" <menuitem name='Color3' action='/Colorize with Filter/Color 3'/> \n "
" <menuitem name='Color4' action='/Colorize with Filter/Color 4'/> \n "
" <menuitem name='Color5' action='/Colorize with Filter/Color 5'/> \n "
" <menuitem name='Color6' action='/Colorize with Filter/Color 6'/> \n "
" <menuitem name='Color7' action='/Colorize with Filter/Color 7'/> \n "
" <menuitem name='Color8' action='/Colorize with Filter/Color 8'/> \n "
" <menuitem name='Color9' action='/Colorize with Filter/Color 9'/> \n "
" <menuitem name='Color10' action='/Colorize with Filter/Color 10'/> \n "
" <menuitem name='NewColoringRule' action='/Colorize with Filter/New Coloring Rule'/> \n "
" </menu> \n "
" <menuitem name='FollowTCPStream' action='/Follow TCP Stream'/> \n "
" <menuitem name='FollowUDPStream' action='/Follow UDP Stream'/> \n "
" <menuitem name='FollowSSLStream' action='/Follow SSL Stream'/> \n "
" <separator/> \n "
" <menu name= 'Copy' action='/Copy'> \n "
" <menuitem name='Description' action='/Copy/Description'/> \n "
" <menuitem name='Fieldname' action='/Copy/Fieldname'/> \n "
" <menuitem name='Value' action='/Copy/Value'/> \n "
" <separator/> \n "
" <menuitem name='AsFilter' action='/Copy/AsFilter'/> \n "
" <separator/> \n "
" <menu name= 'Bytes' action='/Copy/Bytes'> \n "
" <menuitem name='OffsetHexText' action='/Copy/Bytes/OffsetHexText'/> \n "
" <menuitem name='OffsetHex' action='/Copy/Bytes/OffsetHex'/> \n "
" <menuitem name='PrintableTextOnly' action='/Copy/Bytes/PrintableTextOnly'/> \n "
" <separator/> \n "
" <menuitem name='HexStream' action='/Copy/Bytes/HexStream'/> \n "
" <menuitem name='BinaryStream' action='/Copy/Bytes/BinaryStream'/> \n "
" </menu> \n "
" </menu> \n "
" <menuitem name='ExportSelectedPacketBytes' action='/ExportSelectedPacketBytes'/> \n "
" <separator/> \n "
" <menuitem name='WikiProtocolPage' action='/WikiProtocolPage'/> \n "
" <menuitem name='FilterFieldReference' action='/FilterFieldReference'/> \n "
# if GLIB_CHECK_VERSION(2,14,0) /* GRegex */
" <menuitem name='ProtocolHelp' action='/ProtocolHelp'/> \n "
# endif /* GLIB_CHECK_VERSION(2,14,0) */
" <menuitem name='ProtocolPreferences' action='/ProtocolPreferences'/> \n "
" <separator/> \n "
" <menuitem name='DecodeAs' action='/DecodeAs'/> \n "
" <menuitem name='DisableProtocol' action='/DisableProtocol'/> \n "
" <menuitem name='ResolveName' action='/ResolveName'/> \n "
" <menuitem name='GotoCorrespondingPacket' action='/GotoCorrespondingPacket'/> \n "
2010-09-12 19:26:42 +00:00
" </popup> \n "
" </ui> \n " ;
static const GtkActionEntry tree_view_menu_popup_action_entries [ ] = {
{ " /ExpandSubtrees " , NULL , " Expand Subtrees " , NULL , NULL , G_CALLBACK ( expand_tree_cb ) } ,
{ " /ExpandAll " , NULL , " Expand All " , NULL , NULL , G_CALLBACK ( expand_all_cb ) } ,
{ " /CollapseAll " , NULL , " Collapse All " , NULL , NULL , G_CALLBACK ( collapse_all_cb ) } ,
2010-09-13 20:21:41 +00:00
{ " /Apply as Column " , NULL , " Apply as Column " , NULL , NULL , G_CALLBACK ( apply_as_custom_column_cb ) } ,
2010-09-15 20:51:44 +00:00
{ " /Apply as Filter " , NULL , " Apply as Filter " , NULL , NULL , NULL } ,
{ " /Apply as Filter/Selected " , NULL , " _Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_selected_cb ) } ,
{ " /Apply as Filter/Not Selected " , NULL , " _Not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_not_selected_cb ) } ,
2010-10-03 16:09:25 +00:00
{ " /Apply as Filter/AndSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _and Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_and_selected_cb ) } ,
{ " /Apply as Filter/OrSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _or Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_or_selected_cb ) } ,
{ " /Apply as Filter/AndNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " a_nd not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_and_not_selected_cb ) } ,
{ " /Apply as Filter/OrNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " o_r not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_apply_or_not_selected_cb ) } ,
2010-09-15 20:51:44 +00:00
{ " /Prepare a Filter " , NULL , " Prepare a Filter " , NULL , NULL , NULL } ,
{ " /Prepare a Filter/Selected " , NULL , " _Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_selected_cb ) } ,
{ " /Prepare a Filter/Not Selected " , NULL , " _Not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_not_selected_cb ) } ,
2010-10-03 16:09:25 +00:00
{ " /Prepare a Filter/AndSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _and Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_and_selected_cb ) } ,
{ " /Prepare a Filter/OrSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " _or Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_or_selected_cb ) } ,
{ " /Prepare a Filter/AndNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " a_nd not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_and_not_selected_cb ) } ,
{ " /Prepare a Filter/OrNotSelected " , NULL , UTF8_HORIZONTAL_ELLIPSIS " o_r not Selected " , NULL , NULL , G_CALLBACK ( tree_view_menu_prepare_or_not_selected_cb ) } ,
2010-09-15 20:51:44 +00:00
{ " /Colorize with Filter " , NULL , " Colorize with Filter " , NULL , NULL , NULL } ,
{ " /Colorize with Filter/Color 1 " , WIRESHARK_STOCK_COLOR1 , " Color 1 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color1_cb ) } ,
{ " /Colorize with Filter/Color 2 " , WIRESHARK_STOCK_COLOR2 , " Color 2 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color2_cb ) } ,
{ " /Colorize with Filter/Color 3 " , WIRESHARK_STOCK_COLOR3 , " Color 3 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color3_cb ) } ,
{ " /Colorize with Filter/Color 4 " , WIRESHARK_STOCK_COLOR4 , " Color 4 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color4_cb ) } ,
{ " /Colorize with Filter/Color 5 " , WIRESHARK_STOCK_COLOR5 , " Color 5 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color5_cb ) } ,
{ " /Colorize with Filter/Color 6 " , WIRESHARK_STOCK_COLOR6 , " Color 6 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color6_cb ) } ,
{ " /Colorize with Filter/Color 7 " , WIRESHARK_STOCK_COLOR7 , " Color 7 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color7_cb ) } ,
{ " /Colorize with Filter/Color 8 " , WIRESHARK_STOCK_COLOR8 , " Color 8 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color8_cb ) } ,
{ " /Colorize with Filter/Color 9 " , WIRESHARK_STOCK_COLOR9 , " Color 9 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color9_cb ) } ,
{ " /Colorize with Filter/Color 10 " , WIRESHARK_STOCK_COLOR0 , " Color 10 " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_color10_cb ) } ,
{ " /Colorize with Filter/New Coloring Rule " , NULL , " New Coloring Rule... " , NULL , NULL , G_CALLBACK ( tree_view_menu_color_with_flt_new_rule_cb ) } ,
{ " /Follow TCP Stream " , NULL , " Follow TCP Stream " , NULL , NULL , G_CALLBACK ( follow_tcp_stream_cb ) } ,
{ " /Follow UDP Stream " , NULL , " Follow UDP Stream " , NULL , NULL , G_CALLBACK ( follow_udp_stream_cb ) } ,
{ " /Follow SSL Stream " , NULL , " Follow SSL Stream " , NULL , NULL , G_CALLBACK ( follow_ssl_stream_cb ) } ,
{ " /Copy " , NULL , " Copy " , NULL , NULL , NULL } ,
{ " /Copy/Description " , NULL , " Description " , NULL , NULL , G_CALLBACK ( tree_view_menu_copy_desc ) } ,
{ " /Copy/Fieldname " , NULL , " Fieldname " , NULL , NULL , G_CALLBACK ( tree_view_menu_copy_field ) } ,
{ " /Copy/Value " , NULL , " Value " , NULL , NULL , G_CALLBACK ( tree_view_menu_copy_value ) } ,
{ " /Copy/AsFilter " , NULL , " As Filter " , NULL , NULL , G_CALLBACK ( tree_view_menu_copy_as_flt ) } ,
{ " /Copy/Bytes " , NULL , " Bytes " , NULL , NULL , NULL } ,
{ " /Copy/Bytes/OffsetHexText " , NULL , " Offset Hex Text " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_oht_cb ) } ,
{ " /Copy/Bytes/OffsetHex " , NULL , " Offset Hex " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_oh_cb ) } ,
{ " /Copy/Bytes/PrintableTextOnly " , NULL , " Printable Text Only " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_text_cb ) } ,
{ " /Copy/Bytes/HexStream " , NULL , " Hex Stream " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_hex_strm_cb ) } ,
{ " /Copy/Bytes/BinaryStream " , NULL , " Binary Stream " , NULL , NULL , G_CALLBACK ( packet_list_menu_copy_bytes_bin_strm_cb ) } ,
{ " /ExportSelectedPacketBytes " , NULL , " Export Selected Packet Bytes... " , NULL , NULL , G_CALLBACK ( savehex_cb ) } ,
{ " /WikiProtocolPage " , WIRESHARK_STOCK_WIKI , " Wiki Protocol Page " , NULL , NULL , G_CALLBACK ( selected_ptree_info_cb ) } ,
{ " /FilterFieldReference " , WIRESHARK_STOCK_INTERNET , " Filter Field Reference " , NULL , NULL , G_CALLBACK ( selected_ptree_ref_cb ) } ,
# if GLIB_CHECK_VERSION(2,14,0) /* GRegex */
{ " /ProtocolHelp " , NULL , " Protocol Help " , NULL , NULL , NULL } ,
# endif /* GLIB_CHECK_VERSION(2,14,0) */
{ " /ProtocolPreferences " , NULL , " Protocol Preferences " , NULL , NULL , NULL } ,
{ " /DecodeAs " , WIRESHARK_STOCK_DECODE_AS , " Decode As... " , NULL , NULL , G_CALLBACK ( decode_as_cb ) } ,
{ " /DisableProtocol " , WIRESHARK_STOCK_CHECKBOX , " Disable Protocol... " , NULL , NULL , G_CALLBACK ( proto_disable_cb ) } ,
{ " /ResolveName " , NULL , " _Resolve Name " , NULL , NULL , G_CALLBACK ( resolve_name_cb ) } ,
{ " /GotoCorrespondingPacket " , NULL , " _Go to Corresponding Packet " , NULL , NULL , G_CALLBACK ( goto_framenum_cb ) } ,
2010-09-12 19:26:42 +00:00
} ;
static const char * ui_desc_bytes_menu_popup =
" <ui> \n "
" <popup name='BytesMenuPopup' action='PopupAction'> \n "
" <menuitem name='HexView' action='/HexView'/> \n "
" <menuitem name='BitsView' action='/BitsView'/> \n "
" </popup> \n "
" </ui> \n " ;
static const GtkRadioActionEntry bytes_menu_radio_action_entries [ ] =
{
2010-09-12 21:53:26 +00:00
/* name, stock id, label, accel, tooltip, value */
{ " /HexView " , NULL , " Hex View " , NULL , NULL , BYTES_HEX } ,
{ " /BitsView " , NULL , " Bits View " , NULL , NULL , BYTES_BITS } ,
2010-09-12 19:26:42 +00:00
} ;
2010-10-01 16:29:37 +00:00
static const char * ui_statusbar_profiles_menu_popup =
" <ui> \n "
" <popup name='ProfilesMenuPopup' action='PopupAction'> \n "
" <menuitem name='Profiles' action='/Profiles'/> \n "
" <separator/> \n "
" <menuitem name='New' action='/New'/> \n "
" <menuitem name='Copy' action='/Copy'/> \n "
" <menuitem name='Delete' action='/Delete'/> \n "
" <menuitem name='Rename' action='/Rename'/> \n "
" <separator/> \n "
" <menu name='Change' action='/Change'> \n "
" <menuitem name='Default' action='/Change/Default'/> \n "
" </menu> \n "
" </popup> \n "
" </ui> \n " ;
static const GtkActionEntry statusbar_profiles_menu_action_entries [ ] =
{
{ " /Profiles " , NULL , " Configuration Profiles... " , NULL , NULL , G_CALLBACK ( profile_dialog_cb ) } ,
{ " /New " , GTK_STOCK_NEW , " New... " , NULL , NULL , G_CALLBACK ( profile_new_cb ) } ,
{ " /Copy " , GTK_STOCK_COPY , " Copy... " , NULL , NULL , G_CALLBACK ( profile_copy_cb ) } ,
{ " /Delete " , GTK_STOCK_DELETE , " Delete " , NULL , NULL , G_CALLBACK ( profile_delete_cb ) } ,
2010-10-01 19:23:15 +00:00
# if GLIB_CHECK_VERSION(2,6,0)
2010-10-01 16:29:37 +00:00
{ " /Rename " , GTK_STOCK_EDIT , " Rename... " , NULL , NULL , G_CALLBACK ( profile_rename_cb ) } ,
2010-10-01 19:23:15 +00:00
# else
{ " /Rename " , NULL , " Rename... " , NULL , NULL , G_CALLBACK ( profile_rename_cb ) } ,
# endif
2010-10-01 16:29:37 +00:00
{ " /Change " , NULL , " Change " , NULL , NULL , NULL } ,
{ " /Change/Default " , NULL , " Default " , NULL , NULL , NULL } ,
} ;
2006-10-16 16:54:48 +00:00
2004-07-18 00:24:25 +00:00
GtkWidget *
main_menu_new ( GtkAccelGroup * * table ) {
2007-11-24 11:38:16 +00:00
GtkWidget * menubar ;
2008-10-27 04:40:54 +00:00
# ifdef HAVE_IGE_MAC_INTEGRATION
GtkWidget * quit_item , * about_item , * preferences_item ;
IgeMacMenuGroup * group ;
# endif
2010-05-25 00:35:44 +00:00
# ifdef HAVE_GTKOSXAPPLICATION
GtkOSXApplication * theApp ;
GtkWidget * item ;
GtkOSXApplicationMenuGroup * group ;
GtkWidget * dock_menu ;
# endif
2010-07-27 18:59:30 +00:00
2007-11-24 11:38:16 +00:00
grp = gtk_accel_group_new ( ) ;
2004-07-18 00:24:25 +00:00
2007-11-24 11:38:16 +00:00
if ( initialize )
menus_init ( ) ;
2004-07-18 00:24:25 +00:00
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-09-25 19:05:18 +00:00
menubar = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar " ) ;
2010-09-24 14:52:44 +00:00
# else
2007-11-24 11:38:16 +00:00
menubar = main_menu_factory - > widget ;
2010-09-24 14:52:44 +00:00
# endif
2008-10-27 04:40:54 +00:00
# ifdef HAVE_IGE_MAC_INTEGRATION
if ( prefs . gui_macosx_style ) {
ige_mac_menu_set_menu_bar ( GTK_MENU_SHELL ( menubar ) ) ;
2009-04-11 18:03:11 +00:00
ige_mac_menu_set_global_key_handler_enabled ( TRUE ) ;
/* Create menu items to populate the application menu with. We have to
* do this because we are still using the old GtkItemFactory API for
* the main menu . */
group = ige_mac_menu_add_app_menu_group ( ) ;
about_item = gtk_menu_item_new_with_label ( " About " ) ;
g_signal_connect ( about_item , " activate " , G_CALLBACK ( about_wireshark_cb ) ,
NULL ) ;
ige_mac_menu_add_app_menu_item ( group , GTK_MENU_ITEM ( about_item ) , NULL ) ;
group = ige_mac_menu_add_app_menu_group ( ) ;
preferences_item = gtk_menu_item_new_with_label ( " Preferences " ) ;
g_signal_connect ( preferences_item , " activate " , G_CALLBACK ( prefs_cb ) ,
NULL ) ;
ige_mac_menu_add_app_menu_item ( group , GTK_MENU_ITEM ( preferences_item ) ,
NULL ) ;
2008-10-27 04:40:54 +00:00
}
/* The quit item in the application menu shows up whenever ige mac
* integration is enabled , even if the OS X UI style in Wireshark isn ' t
* turned on . */
quit_item = gtk_menu_item_new_with_label ( " Quit " ) ;
2009-04-11 18:03:11 +00:00
g_signal_connect ( quit_item , " activate " , G_CALLBACK ( file_quit_cmd_cb ) , NULL ) ;
2008-10-27 04:40:54 +00:00
ige_mac_menu_set_quit_menu_item ( GTK_MENU_ITEM ( quit_item ) ) ;
# endif
2010-07-27 18:59:30 +00:00
2010-05-25 00:35:44 +00:00
# ifdef HAVE_GTKOSXAPPLICATION
theApp = g_object_new ( GTK_TYPE_OSX_APPLICATION , NULL ) ;
2010-07-27 18:59:30 +00:00
2010-05-25 00:35:44 +00:00
if ( prefs . gui_macosx_style ) {
gtk_osxapplication_set_menu_bar ( theApp , GTK_MENU_SHELL ( menubar ) ) ;
gtk_osxapplication_set_use_quartz_accelerators ( theApp , TRUE ) ;
group = gtk_osxapplication_add_app_menu_group ( theApp ) ;
item = gtk_item_factory_get_item ( main_menu_factory , " /Help/About Wireshark " ) ;
gtk_osxapplication_add_app_menu_item ( theApp , group , GTK_MENU_ITEM ( item ) ) ;
group = gtk_osxapplication_add_app_menu_group ( theApp ) ;
item = gtk_item_factory_get_item ( main_menu_factory , " /Edit/Preferences... " ) ;
gtk_osxapplication_add_app_menu_item ( theApp , group , GTK_MENU_ITEM ( item ) ) ;
group = gtk_osxapplication_add_app_menu_group ( theApp ) ;
item = gtk_item_factory_get_item ( main_menu_factory , " /Help " ) ;
gtk_osxapplication_set_help_menu ( theApp , GTK_MENU_ITEM ( item ) ) ;
/* Quit item is not needed */
gtk_item_factory_delete_item ( main_menu_factory , " /File/Quit " ) ;
}
/* generate dock menu */
dock_menu = gtk_menu_new ( ) ;
item = gtk_menu_item_new_with_label ( " Start " ) ;
2010-08-23 16:48:42 +00:00
g_signal_connect ( item , " activate " , G_CALLBACK ( capture_start_cb ) , NULL ) ;
2010-07-20 23:48:56 +00:00
gtk_menu_shell_append ( GTK_MENU_SHELL ( dock_menu ) , item ) ;
2010-05-25 00:35:44 +00:00
item = gtk_menu_item_new_with_label ( " Stop " ) ;
2010-08-23 16:48:42 +00:00
g_signal_connect ( item , " activate " , G_CALLBACK ( capture_stop_cb ) , NULL ) ;
2010-07-20 23:48:56 +00:00
gtk_menu_shell_append ( GTK_MENU_SHELL ( dock_menu ) , item ) ;
2010-05-25 00:35:44 +00:00
item = gtk_menu_item_new_with_label ( " Restart " ) ;
2010-08-23 16:48:42 +00:00
g_signal_connect ( item , " activate " , G_CALLBACK ( capture_restart_cb ) , NULL ) ;
2010-07-20 23:48:56 +00:00
gtk_menu_shell_append ( GTK_MENU_SHELL ( dock_menu ) , item ) ;
2010-05-25 00:35:44 +00:00
gtk_osxapplication_set_dock_menu ( theApp , GTK_MENU_SHELL ( dock_menu ) ) ;
# endif
2008-10-27 04:40:54 +00:00
2007-11-24 11:38:16 +00:00
if ( table )
* table = grp ;
2004-07-18 00:24:25 +00:00
2007-11-24 11:38:16 +00:00
return menubar ;
2004-07-18 00:24:25 +00:00
}
2007-08-16 22:03:10 +00:00
2007-08-16 23:35:28 +00:00
void menu_dissector_filter_cb ( GtkWidget * widget _U_ ,
2007-08-16 22:03:10 +00:00
gpointer callback_data ,
2007-08-16 23:35:28 +00:00
guint callback_action _U_ )
2007-08-16 22:03:10 +00:00
{
dissector_filter_t * filter_entry = callback_data ;
2009-04-11 18:03:11 +00:00
GtkWidget * filter_te ;
2010-05-25 00:35:44 +00:00
const char * buf ;
2007-08-16 22:03:10 +00:00
2010-10-11 19:29:52 +00:00
filter_te = gtk_bin_get_child ( GTK_BIN ( g_object_get_data ( G_OBJECT ( top_level ) , E_DFILTER_CM_KEY ) ) ) ;
2007-08-16 22:03:10 +00:00
/* XXX - this gets the packet_info of the last dissected packet, */
/* which is not necessarily the last selected packet */
/* e.g. "Update list of packets in real time" won't work correct */
buf = filter_entry - > build_filter_string ( & cfile . edt - > pi ) ;
2009-04-11 18:03:11 +00:00
gtk_entry_set_text ( GTK_ENTRY ( filter_te ) , buf ) ;
2007-08-16 22:03:10 +00:00
2009-04-11 18:03:11 +00:00
/* Run the display filter so it goes in effect - even if it's the
same as the previous display filter . */
main_filter_packets ( & cfile , buf , TRUE ) ;
2007-08-16 22:03:10 +00:00
g_free ( ( void * ) buf ) ;
}
2007-08-16 23:35:28 +00:00
gboolean menu_dissector_filter_spe_cb ( frame_data * fd _U_ , epan_dissect_t * edt , gpointer callback_data ) {
2007-08-16 22:03:10 +00:00
dissector_filter_t * filter_entry = callback_data ;
/* XXX - this gets the packet_info of the last dissected packet, */
/* which is not necessarily the last selected packet */
/* e.g. "Update list of packets in real time" won't work correct */
return ( edt ! = NULL ) ? filter_entry - > is_filter_valid ( & edt - > pi ) : FALSE ;
}
void menu_dissector_filter ( void ) {
GList * list_entry = dissector_filter_list ;
dissector_filter_t * filter_entry ;
while ( list_entry ! = NULL ) {
filter_entry = list_entry - > data ;
register_stat_menu_item ( filter_entry - > name , REGISTER_ANALYZE_GROUP_CONVERSATION_FILTER ,
menu_dissector_filter_cb ,
menu_dissector_filter_spe_cb ,
NULL /* selected_tree_row_enabled */ ,
filter_entry ) ;
list_entry = g_list_next ( list_entry ) ;
}
}
2004-07-18 00:24:25 +00:00
static void
menus_init ( void ) {
2010-09-25 19:05:18 +00:00
GtkActionGroup * packet_list_heading_action_group , * packet_list_action_group ,
2010-10-01 16:29:37 +00:00
* packet_list_details_action_group , * packet_list_byte_menu_action_group ,
* statusbar_profiles_action_group ;
2010-09-25 19:05:18 +00:00
GError * error = NULL ;
2010-10-11 19:29:52 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
guint merge_id ;
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-12 19:26:42 +00:00
2009-04-11 18:03:11 +00:00
if ( initialize ) {
initialize = FALSE ;
2004-07-18 00:24:25 +00:00
2010-10-08 01:31:47 +00:00
popup_menu_object = gtk_menu_new ( ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
/* packet list heading pop-up menu */
packet_list_heading_action_group = gtk_action_group_new ( " PacketListHeadingPopUpMenuActionGroup " ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_action_group_add_actions ( packet_list_heading_action_group , /* the action group */
2010-10-11 19:29:52 +00:00
packet_list_heading_menu_popup_action_entries , /* an array of action descriptions */
G_N_ELEMENTS ( packet_list_heading_menu_popup_action_entries ) , /* the number of entries */
2010-10-08 01:31:47 +00:00
popup_menu_object ) ; /* data to pass to the action callbacks */
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_action_group_add_toggle_actions ( packet_list_heading_action_group , /* the action group */
packet_list_heading_menu_toggle_action_entries , /* an array of action descriptions */
G_N_ELEMENTS ( packet_list_heading_menu_toggle_action_entries ) , /* the number of entries */
NULL ) ; /* data to pass to the action callbacks */
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
ui_manager_packet_list_heading = gtk_ui_manager_new ( ) ;
gtk_ui_manager_insert_action_group ( ui_manager_packet_list_heading ,
packet_list_heading_action_group ,
0 ) ; /* the position at which the group will be inserted. */
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_ui_manager_add_ui_from_string ( ui_manager_packet_list_heading , ui_desc_packet_list_heading_menu_popup , - 1 , & error ) ;
if ( error ! = NULL )
{
fprintf ( stderr , " Warning: building Packet List Heading Pop-Up failed: %s \n " ,
error - > message ) ;
g_error_free ( error ) ;
error = NULL ;
}
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
g_object_set_data ( G_OBJECT ( popup_menu_object ) , PM_PACKET_LIST_COL_KEY ,
gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup " ) ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
popup_menu_list = g_slist_append ( ( GSList * ) popup_menu_list , ui_manager_packet_list_heading ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
/* packet list pop-up menu */
packet_list_action_group = gtk_action_group_new ( " PacketListPopUpMenuActionGroup " ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_action_group_add_actions ( packet_list_action_group , /* the action group */
2010-10-11 19:29:52 +00:00
packet_list_menu_popup_action_entries , /* an array of action descriptions */
G_N_ELEMENTS ( packet_list_menu_popup_action_entries ) , /* the number of entries */
2010-10-08 01:31:47 +00:00
popup_menu_object ) ; /* data to pass to the action callbacks */
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
ui_manager_packet_list_menu = gtk_ui_manager_new ( ) ;
2004-07-18 00:24:25 +00:00
2010-10-08 01:31:47 +00:00
gtk_ui_manager_insert_action_group ( ui_manager_packet_list_menu ,
packet_list_action_group ,
0 ) ; /* the position at which the group will be inserted. */
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_ui_manager_add_ui_from_string ( ui_manager_packet_list_menu , ui_desc_packet_list_menu_popup , - 1 , & error ) ;
if ( error ! = NULL )
{
fprintf ( stderr , " Warning: building Packet List Pop-Up menu failed: %s \n " ,
error - > message ) ;
g_error_free ( error ) ;
error = NULL ;
}
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
g_object_set_data ( G_OBJECT ( popup_menu_object ) , PM_PACKET_LIST_KEY ,
gtk_ui_manager_get_widget ( ui_manager_packet_list_menu , " /PacketListMenuPopup " ) ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
popup_menu_list = g_slist_append ( ( GSList * ) popup_menu_list , ui_manager_packet_list_menu ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
/* packet detail pop-up menu */
packet_list_details_action_group = gtk_action_group_new ( " PacketListDetailsMenuPopUpActionGroup " ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_action_group_add_actions ( packet_list_details_action_group , /* the action group */
2010-10-11 19:29:52 +00:00
tree_view_menu_popup_action_entries , /* an array of action descriptions */
G_N_ELEMENTS ( tree_view_menu_popup_action_entries ) , /* the number of entries */
2010-10-08 01:31:47 +00:00
popup_menu_object ) ; /* data to pass to the action callbacks */
2004-07-18 00:24:25 +00:00
2010-10-08 01:31:47 +00:00
ui_manager_tree_view_menu = gtk_ui_manager_new ( ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_ui_manager_insert_action_group ( ui_manager_tree_view_menu ,
packet_list_details_action_group ,
0 ) ; /* the position at which the group will be inserted. */
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_ui_manager_add_ui_from_string ( ui_manager_tree_view_menu , ui_desc_tree_view_menu_popup , - 1 , & error ) ;
if ( error ! = NULL )
{
fprintf ( stderr , " Warning: building TreeWiew Pop-Up menu failed: %s \n " ,
error - > message ) ;
g_error_free ( error ) ;
error = NULL ;
}
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
g_object_set_data ( G_OBJECT ( popup_menu_object ) , PM_TREE_VIEW_KEY ,
gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup " ) ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
popup_menu_list = g_slist_append ( ( GSList * ) popup_menu_list , ui_manager_tree_view_menu ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
/*
* Hex dump pop - up menu .
* We provide our own empty menu to suppress the default pop - up menu
* for text widgets .
*/
packet_list_byte_menu_action_group = gtk_action_group_new ( " PacketListByteMenuPopUpActionGroup " ) ;
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
gtk_action_group_add_radio_actions ( packet_list_byte_menu_action_group , /* the action group */
bytes_menu_radio_action_entries , /* an array of radio action descriptions */
2010-10-11 19:29:52 +00:00
G_N_ELEMENTS ( bytes_menu_radio_action_entries ) , /* the number of entries */
recent . gui_bytes_view , /* the value of the action to activate initially, or -1 if no action should be activated */
G_CALLBACK ( select_bytes_view_cb ) , /* the callback to connect to the changed signal */
popup_menu_object ) ; /* data to pass to the action callbacks */
2010-09-12 19:26:42 +00:00
2010-10-08 01:31:47 +00:00
ui_manager_bytes_menu = gtk_ui_manager_new ( ) ;
gtk_ui_manager_insert_action_group ( ui_manager_bytes_menu ,
packet_list_byte_menu_action_group ,
0 ) ; /* the position at which the group will be inserted. */
gtk_ui_manager_add_ui_from_string ( ui_manager_bytes_menu , ui_desc_bytes_menu_popup , - 1 , & error ) ;
if ( error ! = NULL )
{
fprintf ( stderr , " Warning: building Bytes Pop-Up menu failed: %s \n " ,
error - > message ) ;
g_error_free ( error ) ;
error = NULL ;
}
2010-11-02 12:03:06 +00:00
g_object_unref ( packet_list_byte_menu_action_group ) ;
2010-10-08 01:31:47 +00:00
g_object_set_data ( G_OBJECT ( popup_menu_object ) , PM_BYTES_VIEW_KEY ,
gtk_ui_manager_get_widget ( ui_manager_bytes_menu , " /BytesMenuPopup " ) ) ;
popup_menu_list = g_slist_append ( ( GSList * ) popup_menu_list , ui_manager_bytes_menu ) ;
/* main */
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
main_menu_bar_action_group = gtk_action_group_new ( " MenuActionGroup " ) ;
2010-10-11 19:29:52 +00:00
gtk_action_group_add_actions ( main_menu_bar_action_group , /* the action group */
main_menu_bar_entries , /* an array of action descriptions */
G_N_ELEMENTS ( main_menu_bar_entries ) , /* the number of entries */
NULL ) ; /* data to pass to the action callbacks */
gtk_action_group_add_toggle_actions ( main_menu_bar_action_group , /* the action group */
main_menu_bar_toggle_action_entries , /* an array of action descriptions */
G_N_ELEMENTS ( main_menu_bar_toggle_action_entries ) , /* the number of entries */
NULL ) ; /* data to pass to the action callbacks */
gtk_action_group_add_radio_actions ( main_menu_bar_action_group , /* the action group */
main_menu_bar_radio_view_time_entries , /* an array of radio action descriptions */
G_N_ELEMENTS ( main_menu_bar_radio_view_time_entries ) , /* the number of entries */
recent . gui_time_format , /* the value of the action to activate initially, or -1 if no action should be activated */
G_CALLBACK ( timestamp_format_new_cb ) , /* the callback to connect to the changed signal */
NULL ) ; /* data to pass to the action callbacks */
2010-10-08 01:31:47 +00:00
gtk_action_group_add_radio_actions ( main_menu_bar_action_group , /* the action group */
2010-10-11 19:29:52 +00:00
main_menu_bar_radio_view_time_fileformat_prec_entries , /* an array of radio action descriptions */
2010-10-08 01:31:47 +00:00
G_N_ELEMENTS ( main_menu_bar_radio_view_time_fileformat_prec_entries ) , /* the number of entries */
recent . gui_time_precision , /* the value of the action to activate initially, or -1 if no action should be activated */
2010-10-11 19:29:52 +00:00
G_CALLBACK ( timestamp_precision_new_cb ) , /* the callback to connect to the changed signal */
2010-10-08 01:31:47 +00:00
NULL ) ; /* data to pass to the action callbacks */
ui_manager_main_menubar = gtk_ui_manager_new ( ) ;
gtk_ui_manager_insert_action_group ( ui_manager_main_menubar , main_menu_bar_action_group , 0 ) ;
gtk_ui_manager_add_ui_from_string ( ui_manager_main_menubar , ui_desc_menubar , - 1 , & error ) ;
if ( error ! = NULL )
{
fprintf ( stderr , " Warning: building main menubar failed: %s \n " ,
error - > message ) ;
g_error_free ( error ) ;
error = NULL ;
2010-11-02 12:03:06 +00:00
}
g_object_unref ( main_menu_bar_action_group ) ;
gtk_window_add_accel_group ( GTK_WINDOW ( top_level ) ,
gtk_ui_manager_get_accel_group ( ui_manager_main_menubar ) ) ;
/* Add the recent files items to the menu
* use place holders and
* gtk_ui_manager_add_ui ( ) .
*/
merge_id = gtk_ui_manager_new_merge_id ( ui_manager_main_menubar ) ;
add_recent_items ( merge_id , ui_manager_main_menubar ) ;
2010-09-24 14:52:44 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 01:31:47 +00:00
main_menu_factory = gtk_item_factory_new ( GTK_TYPE_MENU_BAR , " <main> " , grp ) ;
gtk_item_factory_create_items_ac ( main_menu_factory , nmenu_items , menu_items , NULL , 2 ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-10-01 16:29:37 +00:00
2010-10-08 01:31:47 +00:00
statusbar_profiles_action_group = gtk_action_group_new ( " StatusBarProfilesPopUpMenuActionGroup " ) ;
2010-10-01 16:29:37 +00:00
2010-10-08 01:31:47 +00:00
gtk_action_group_add_actions ( statusbar_profiles_action_group , /* the action group */
statusbar_profiles_menu_action_entries , /* an array of action descriptions */
G_N_ELEMENTS ( statusbar_profiles_menu_action_entries ) , /* the number of entries */
popup_menu_object ) ; /* data to pass to the action callbacks */
2010-10-01 16:29:37 +00:00
2010-10-08 01:31:47 +00:00
ui_manager_statusbar_profiles_menu = gtk_ui_manager_new ( ) ;
gtk_ui_manager_insert_action_group ( ui_manager_statusbar_profiles_menu ,
statusbar_profiles_action_group ,
0 ) ; /* the position at which the group will be inserted. */
2010-10-01 16:29:37 +00:00
2010-10-08 01:31:47 +00:00
gtk_ui_manager_add_ui_from_string ( ui_manager_statusbar_profiles_menu , ui_statusbar_profiles_menu_popup , - 1 , & error ) ;
if ( error ! = NULL )
{
fprintf ( stderr , " Warning: building Statusbar Profiles Pop-Up failed: %s \n " ,
error - > message ) ;
g_error_free ( error ) ;
error = NULL ;
}
2010-11-02 12:03:06 +00:00
g_object_unref ( statusbar_profiles_action_group ) ;
2010-10-08 01:31:47 +00:00
g_object_set_data ( G_OBJECT ( popup_menu_object ) , PM_STATUSBAR_PROFILES_KEY ,
gtk_ui_manager_get_widget ( ui_manager_statusbar_profiles_menu , " /ProfilesMenuPopup " ) ) ;
popup_menu_list = g_slist_append ( ( GSList * ) popup_menu_list , ui_manager_statusbar_profiles_menu ) ;
menu_dissector_filter ( ) ;
merge_all_tap_menus ( tap_menu_tree_root ) ;
2004-07-18 00:24:25 +00:00
2010-10-08 01:31:47 +00:00
/* Initialize enabled/disabled state of menu items */
set_menus_for_capture_file ( NULL ) ;
2004-07-18 00:24:25 +00:00
#if 0
2010-10-08 01:31:47 +00:00
/* Un-#if this when we actually implement Cut/Copy/Paste.
Then make sure you enable them when they can be done . */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Cut " , FALSE ) ;
set_menu_sensitivity_old ( " /Edit/Copy " , FALSE ) ;
set_menu_sensitivity_old ( " /Edit/Paste " , FALSE ) ;
2004-07-18 00:24:25 +00:00
# endif
2010-10-08 01:31:47 +00:00
set_menus_for_captured_packets ( FALSE ) ;
set_menus_for_selected_packet ( & cfile ) ;
set_menus_for_selected_tree_row ( & cfile ) ;
set_menus_for_capture_in_progress ( FALSE ) ;
set_menus_for_file_set ( /* dialog */ TRUE , /* previous file */ FALSE , /* next_file */ FALSE ) ;
2004-07-18 00:24:25 +00:00
2010-10-11 19:29:52 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
/* Init with an empty recent files list */
clear_menu_recent_capture_file_cmd_cb ( NULL , NULL ) ;
2010-10-11 19:29:52 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 01:31:47 +00:00
/* Protocol help links */
proto_help_menu_init ( gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup " ) ) ;
2009-04-11 18:03:11 +00:00
}
2004-07-18 00:24:25 +00:00
}
2005-08-02 08:30:33 +00:00
static gint tap_menu_item_add_compare ( gconstpointer a , gconstpointer b )
2004-07-18 00:24:25 +00:00
{
return strcmp (
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
( ( const menu_item_t * ) a ) - > name ,
2004-07-18 00:24:25 +00:00
( ( const menu_item_t * ) b ) - > name ) ;
}
/* add a menuitem below the current node */
2005-08-02 08:30:33 +00:00
static GList * tap_menu_item_add (
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
char * name ,
gint group ,
2010-10-24 16:14:01 +00:00
const char * label ,
2008-04-13 23:55:32 +00:00
const char * stock_id ,
2004-07-18 00:24:25 +00:00
GtkItemFactoryCallback callback ,
2007-08-16 22:03:10 +00:00
gboolean ( * selected_packet_enabled ) ( frame_data * , epan_dissect_t * , gpointer callback_data ) ,
gboolean ( * selected_tree_row_enabled ) ( field_info * , gpointer callback_data ) ,
2004-07-18 00:24:25 +00:00
gpointer callback_data ,
2007-12-14 07:06:22 +00:00
GList * curnode )
2004-07-18 00:24:25 +00:00
{
menu_item_t * curr ;
menu_item_t * child ;
child = g_malloc ( sizeof ( menu_item_t ) ) ;
child - > name = name ;
2008-04-13 23:55:32 +00:00
child - > group = group ;
2010-10-24 16:14:01 +00:00
child - > label = label ;
2008-04-13 23:55:32 +00:00
child - > stock_id = stock_id ;
2004-07-18 00:24:25 +00:00
child - > callback = callback ;
child - > selected_packet_enabled = selected_packet_enabled ;
child - > selected_tree_row_enabled = selected_tree_row_enabled ;
child - > callback_data = callback_data ;
child - > enabled = FALSE ;
child - > children = NULL ;
/* insert the new child node into the parent */
curr = curnode - > data ;
curr - > children = g_list_insert_sorted ( curr - > children , child , tap_menu_item_add_compare ) ;
/* return the new node */
/* XXX: improve this */
return g_list_find ( curr - > children , child ) ;
}
/*
* Add a new menu item for a tap .
* This must be called after we ' ve created the main menu , so it can ' t
* be called from the routine that registers taps - we have to introduce
* another per - tap registration routine .
*
* " callback " gets called when the menu item is selected ; it should do
* 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 .
*
* " 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 .
*/
2010-10-24 16:14:01 +00:00
2004-07-18 00:24:25 +00:00
void
2008-04-13 23:55:32 +00:00
register_stat_menu_item_stock (
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
const char * name ,
2006-09-27 17:12:42 +00:00
register_stat_group_t group ,
2008-04-13 23:55:32 +00:00
const char * stock_id ,
2004-07-18 00:24:25 +00:00
GtkItemFactoryCallback callback ,
2007-08-16 22:03:10 +00:00
gboolean ( * selected_packet_enabled ) ( frame_data * , epan_dissect_t * , gpointer callback_data ) ,
gboolean ( * selected_tree_row_enabled ) ( field_info * , gpointer callback_data ) ,
2004-07-18 00:24:25 +00:00
gpointer callback_data )
{
/*static const char toolspath[] = "/Statistics/";*/
2005-08-05 20:59:08 +00:00
const char * toolspath ;
2005-08-06 03:44:55 +00:00
const char * p ;
2004-07-18 00:24:25 +00:00
char * menupath ;
size_t menupathlen ;
menu_item_t * child ;
GList * curnode ;
GList * childnode ;
/*
* The menu path must be relative .
*/
g_assert ( * name ! = ' / ' ) ;
2010-10-24 16:14:01 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
switch ( group ) {
case ( REGISTER_STAT_GROUP_GENERIC ) : toolspath = " /Statistics/ " ; break ;
case ( REGISTER_STAT_GROUP_CONVERSATION_LIST ) : toolspath = " /Statistics/ConversationList/ " ; break ;
case ( REGISTER_STAT_GROUP_ENDPOINT_LIST ) : toolspath = " /Statistics/EndpointList/ " ; break ;
case ( REGISTER_STAT_GROUP_RESPONSE_TIME ) : toolspath = " /Statistics/ServiceResponseTime/ " ; break ;
case ( REGISTER_STAT_GROUP_UNSORTED ) : toolspath = " /Statistics/ " ; break ;
case ( REGISTER_ANALYZE_GROUP_UNSORTED ) : toolspath = " /Analyze/ " ; break ;
case ( REGISTER_ANALYZE_GROUP_CONVERSATION_FILTER ) : toolspath = " Analyze/ConversationFilter/ " ; break ;
case ( REGISTER_STAT_GROUP_TELEPHONY ) : toolspath = " /Telephony/ " ; break ;
case ( REGISTER_TOOLS_GROUP_UNSORTED ) : toolspath = " /Tools/ " ; break ;
default :
g_assert ( ! " no such menu group " ) ;
toolspath = NULL ;
}
# else
2004-07-18 00:24:25 +00:00
switch ( group ) {
2005-08-19 09:29:41 +00:00
case ( REGISTER_STAT_GROUP_GENERIC ) : toolspath = " /Statistics/ " ; break ;
case ( REGISTER_STAT_GROUP_CONVERSATION_LIST ) : toolspath = " /Statistics/_Conversation List/ " ; break ;
case ( REGISTER_STAT_GROUP_ENDPOINT_LIST ) : toolspath = " /Statistics/_Endpoint List/ " ; break ;
case ( REGISTER_STAT_GROUP_RESPONSE_TIME ) : toolspath = " /Statistics/Service _Response Time/ " ; break ;
2008-04-17 02:16:39 +00:00
case ( REGISTER_STAT_GROUP_UNSORTED ) : toolspath = " /Statistics/ " ; break ;
case ( REGISTER_ANALYZE_GROUP_UNSORTED ) : toolspath = " /Analyze/ " ; break ;
2007-08-16 22:03:10 +00:00
case ( REGISTER_ANALYZE_GROUP_CONVERSATION_FILTER ) : toolspath = " /Analyze/Conversation Filter/ " ; break ;
2009-01-29 01:38:08 +00:00
case ( REGISTER_STAT_GROUP_TELEPHONY ) : toolspath = " /Telephony/ " ; break ;
2008-04-17 02:16:39 +00:00
case ( REGISTER_TOOLS_GROUP_UNSORTED ) : toolspath = " /Tools/ " ; break ;
2004-07-18 00:24:25 +00:00
default :
2006-10-16 16:54:48 +00:00
g_assert ( ! " no such menu group " ) ;
2004-07-18 00:24:25 +00:00
toolspath = NULL ;
}
2010-10-24 16:14:01 +00:00
# endif
2004-07-18 00:24:25 +00:00
/* add the (empty) root node, if not already done */
if ( tap_menu_tree_root = = NULL ) {
2007-12-14 07:06:22 +00:00
child = g_malloc0 ( sizeof ( menu_item_t ) ) ;
2004-07-18 00:24:25 +00:00
tap_menu_tree_root = g_list_append ( NULL , child ) ;
}
/*
* Create any submenus required .
*/
curnode = tap_menu_tree_root ;
p = name ;
while ( ( p = strchr ( p , ' / ' ) ) ! = NULL ) {
/*
* OK , everything between " name " and " p " is
* a menu relative subtree into which the menu item
* will be placed .
*
* Construct the absolute path name of that subtree .
*/
menupathlen = strlen ( toolspath ) + 1 + ( p - name ) ;
menupath = g_malloc ( menupathlen ) ;
2008-02-29 13:33:37 +00:00
g_strlcpy ( menupath , toolspath , menupathlen ) ;
g_strlcat ( menupath , name , menupathlen ) ;
2004-07-18 00:24:25 +00:00
/*
* Does there exist an entry with that path at this
* level of the Analyze menu tree ?
*/
child = curnode - > data ;
for ( childnode = child - > children ; childnode ! = NULL ; childnode = childnode - > next ) {
child = childnode - > data ;
if ( strcmp ( child - > name , menupath ) = = 0 )
break ;
}
if ( childnode = = NULL ) {
/*
* No . Create such an item as a subtree , and
* add it to the Tools menu tree .
*/
childnode = tap_menu_item_add (
2010-10-24 16:14:01 +00:00
menupath , group , name , " " , NULL , NULL , NULL , NULL , curnode ) ;
2004-07-18 00:24:25 +00:00
} else {
/*
* Yes . We don ' t need this " menupath " any longer .
*/
g_free ( menupath ) ;
}
curnode = childnode ;
/*
* Skip over the ' / ' we found .
*/
p + + ;
}
/*
* Construct the main menu path for the menu item .
*/
menupathlen = strlen ( toolspath ) + 1 + strlen ( name ) ;
menupath = g_malloc ( menupathlen ) ;
2008-02-29 13:33:37 +00:00
g_strlcpy ( menupath , toolspath , menupathlen ) ;
g_strlcat ( menupath , name , menupathlen ) ;
2004-07-18 00:24:25 +00:00
/*
* Construct an item factory entry for the item , and add it to
* the main menu .
*/
tap_menu_item_add (
2010-10-24 16:14:01 +00:00
menupath , group , name , stock_id , callback ,
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
selected_packet_enabled , selected_tree_row_enabled ,
2004-07-18 00:24:25 +00:00
callback_data , curnode ) ;
}
2010-09-03 07:25:51 +00:00
/*
* Add a new menu item for a stat .
* This must be called after we ' ve created the main menu , so it can ' t
* be called from the routine that registers stats - we have to introduce
* another per - stat registration routine .
*
* @ param name the menu label
*
* @ param group the menu group this stat should be registered to
*
* @ param callback gets called when the menu item is selected ; it should do
* the work of creating the stat window .
*
* @ param selected_packet_enabled gets called by set_menus_for_selected_packet ( ) ;
* 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 stat will work now ( which might depend on whether
* a frame is selected and , if one is , on the frame ) and FALSE if not .
*
* @ param selected_tree_row_enabled gets called by
* 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 stat 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 .
*
* @ param callback_data data for callback function
2010-09-16 13:12:02 +00:00
*/
2008-04-13 23:55:32 +00:00
void
register_stat_menu_item (
const char * name ,
register_stat_group_t group ,
GtkItemFactoryCallback callback ,
gboolean ( * selected_packet_enabled ) ( frame_data * , epan_dissect_t * , gpointer callback_data ) ,
gboolean ( * selected_tree_row_enabled ) ( field_info * , gpointer callback_data ) ,
gpointer callback_data )
{
register_stat_menu_item_stock (
name ,
group ,
NULL ,
callback ,
selected_packet_enabled ,
selected_tree_row_enabled ,
callback_data ) ;
}
2010-09-28 20:27:28 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-24 16:14:01 +00:00
static guint merge_tap_menus_layered ( GList * node , gint group ) {
GtkItemFactoryEntry * entry ;
2010-10-24 18:08:07 +00:00
#if 0
gchar * p ;
# endif
2010-09-28 20:27:28 +00:00
GtkAction * action ;
2010-10-24 16:14:01 +00:00
guint merge_id ;
GtkActionGroup * action_group ;
GList * child ;
guint added = 0 ;
menu_item_t * node_data = node - > data ;
gchar * action_grp_name ;
/*
* Is this a leaf node or an interior node ?
*/
if ( node_data - > children = = NULL ) {
/*
* It ' s a leaf node .
*/
/*
* The root node doesn ' t correspond to a menu tree item ; it
* has a null name pointer .
*/
if ( node_data - > name ! = NULL & & group = = node_data - > group ) {
entry = g_malloc0 ( sizeof ( GtkItemFactoryEntry ) ) ;
entry - > path = node_data - > name ;
entry - > callback = node_data - > callback ;
switch ( group ) {
case ( REGISTER_STAT_GROUP_UNSORTED ) :
break ;
case ( REGISTER_STAT_GROUP_GENERIC ) :
break ;
case ( REGISTER_STAT_GROUP_CONVERSATION_LIST ) :
entry - > item_type = " <StockItem> " ;
entry - > extra_data = WIRESHARK_STOCK_CONVERSATIONS ;
break ;
case ( REGISTER_STAT_GROUP_ENDPOINT_LIST ) :
entry - > item_type = " <StockItem> " ;
entry - > extra_data = WIRESHARK_STOCK_ENDPOINTS ;
break ;
case ( REGISTER_STAT_GROUP_RESPONSE_TIME ) :
entry - > item_type = " <StockItem> " ;
entry - > extra_data = WIRESHARK_STOCK_TIME ;
break ;
case ( REGISTER_STAT_GROUP_TELEPHONY ) :
break ;
case ( REGISTER_ANALYZE_GROUP_UNSORTED ) :
break ;
case ( REGISTER_ANALYZE_GROUP_CONVERSATION_FILTER ) :
break ;
case ( REGISTER_TOOLS_GROUP_UNSORTED ) :
break ;
default :
g_assert_not_reached ( ) ;
}
if ( node_data - > stock_id ! = NULL ) {
entry - > item_type = " <StockItem> " ;
entry - > extra_data = node_data - > stock_id ;
}
2010-10-24 18:08:07 +00:00
#if 0
gtk_item_factory_create_item ( main_menu_factory , entry , node_data - > callback_data , /* callback_type */ 2 ) ;
set_menu_sensitivity_old ( main_menu_factory , node_data - > name , FALSE ) ; /* no capture file yet */
added + + ;
2010-10-24 16:14:01 +00:00
g_free ( entry ) ;
2010-10-24 18:08:07 +00:00
# endif
2010-10-24 16:14:01 +00:00
}
} else {
/*
* It ' s an interior node ; call
* " merge_tap_menus_layered() " on all its children
*/
/*
* The root node doesn ' t correspond to a menu tree item ; it
* has a null name pointer .
*/
if ( node_data - > name ! = NULL & & group = = node_data - > group ) {
gchar * dup ;
gchar * dest ;
/* the underscore character regularly confuses things, as it will prevent finding
* the menu_item , so it has to be removed first
*/
dup = g_strdup ( node_data - > name ) ;
dest = dup ;
while ( * node_data - > name ) {
if ( * node_data - > name ! = ' _ ' ) {
* dest = * node_data - > name ;
dest + + ;
}
node_data - > name + + ;
}
* dest = ' \0 ' ;
entry = g_malloc0 ( sizeof ( GtkItemFactoryEntry ) ) ;
entry - > path = node_data - > name ;
entry - > item_type = " <Branch> " ;
/* use the node_data->name(path) with the slashes replaced by "-" as the action group name */
action_grp_name = g_strdup ( dup + 1 ) ;
g_strdelimit ( action_grp_name , " / " , ' - ' ) ;
g_warning ( " <Branch> %s " , action_grp_name ) ;
action_group = gtk_action_group_new ( action_grp_name ) ;
switch ( group ) {
case ( REGISTER_STAT_GROUP_UNSORTED ) :
merge_id = gtk_ui_manager_new_merge_id ( ui_manager_main_menubar ) ;
gtk_ui_manager_insert_action_group ( ui_manager_main_menubar , action_group , 0 ) ;
g_object_set_data ( G_OBJECT ( ui_manager_main_menubar ) ,
" Menubar-StatisticsMenu-merge-id " , GUINT_TO_POINTER ( merge_id ) ) ;
action = gtk_action_new ( node_data - > name , /* name */
strrchr ( node_data - > name , ' / ' ) , /* label */
NULL , /* tooltip */
node_data - > stock_id ) ; /* stock_id */
gtk_action_group_add_action ( action_group , action ) ;
g_object_unref ( action ) ;
gtk_ui_manager_add_ui ( ui_manager_main_menubar , merge_id ,
" /Menubar/StatisticsMenu " , /* path */
strrchr ( node_data - > name , ' / ' ) , /* name */
node_data - > name , /* action */
GTK_UI_MANAGER_MENU , /* type */
FALSE ) ; /* "top" if TRUE, the UI element is added before its siblings */
g_warning ( " <Stat unsorted> %s " , action_grp_name ) ;
g_warning ( " label %s " , node_data - > label ) ;
break ;
case ( REGISTER_STAT_GROUP_GENERIC ) :
break ;
break ;
case ( REGISTER_STAT_GROUP_ENDPOINT_LIST ) :
break ;
case ( REGISTER_STAT_GROUP_RESPONSE_TIME ) :
break ;
case ( REGISTER_STAT_GROUP_TELEPHONY ) :
break ;
case ( REGISTER_ANALYZE_GROUP_UNSORTED ) :
break ;
case ( REGISTER_ANALYZE_GROUP_CONVERSATION_FILTER ) :
break ;
case ( REGISTER_TOOLS_GROUP_UNSORTED ) :
g_warning ( " <Tools> %s " , action_grp_name ) ;
g_warning ( " label %s " , node_data - > label ) ;
break ;
default :
g_assert_not_reached ( ) ;
}
2010-10-24 18:08:07 +00:00
#if 0
gtk_item_factory_create_item ( main_menu_factory , entry ,
NULL , 2 ) ;
set_menu_sensitivity_old ( main_menu_factory , node_data - > name ,
FALSE ) ; /* no children yet */
added + + ;
g_free ( entry ) ;
# endif
2010-10-24 16:14:01 +00:00
}
for ( child = node_data - > children ; child ! = NULL ; child =
child - > next ) {
added + = merge_tap_menus_layered ( child , group ) ;
}
}
return added ;
}
2010-09-28 20:27:28 +00:00
# else
2010-10-24 16:14:01 +00:00
static guint merge_tap_menus_layered ( GList * node , gint group ) {
2004-07-18 00:24:25 +00:00
GtkItemFactoryEntry * entry ;
2010-09-28 20:27:28 +00:00
2004-07-18 00:24:25 +00:00
GList * child ;
guint added = 0 ;
menu_item_t * node_data = node - > data ;
/*
* Is this a leaf node or an interior node ?
*/
if ( node_data - > children = = NULL ) {
/*
* It ' s a leaf node .
*/
/*
* The root node doesn ' t correspond to a menu tree item ; it
* has a null name pointer .
*/
if ( node_data - > name ! = NULL & & group = = node_data - > group ) {
entry = g_malloc0 ( sizeof ( GtkItemFactoryEntry ) ) ;
entry - > path = node_data - > name ;
entry - > callback = node_data - > callback ;
2005-04-16 10:53:09 +00:00
switch ( group ) {
2008-04-17 02:16:39 +00:00
case ( REGISTER_STAT_GROUP_UNSORTED ) :
2005-04-16 10:53:09 +00:00
break ;
2005-08-19 09:29:41 +00:00
case ( REGISTER_STAT_GROUP_GENERIC ) :
2005-04-16 10:53:09 +00:00
break ;
2005-08-19 09:29:41 +00:00
case ( REGISTER_STAT_GROUP_CONVERSATION_LIST ) :
2005-04-16 10:53:09 +00:00
entry - > item_type = " <StockItem> " ;
2006-05-28 17:19:08 +00:00
entry - > extra_data = WIRESHARK_STOCK_CONVERSATIONS ;
2005-04-16 10:53:09 +00:00
break ;
2005-08-19 09:29:41 +00:00
case ( REGISTER_STAT_GROUP_ENDPOINT_LIST ) :
2005-04-16 10:53:09 +00:00
entry - > item_type = " <StockItem> " ;
2006-05-28 17:19:08 +00:00
entry - > extra_data = WIRESHARK_STOCK_ENDPOINTS ;
2005-04-16 10:53:09 +00:00
break ;
2005-08-19 09:29:41 +00:00
case ( REGISTER_STAT_GROUP_RESPONSE_TIME ) :
2005-04-16 10:53:09 +00:00
entry - > item_type = " <StockItem> " ;
2006-05-28 17:19:08 +00:00
entry - > extra_data = WIRESHARK_STOCK_TIME ;
2005-04-16 10:53:09 +00:00
break ;
2005-08-19 09:29:41 +00:00
case ( REGISTER_STAT_GROUP_TELEPHONY ) :
2005-04-16 10:53:09 +00:00
break ;
2008-04-17 02:16:39 +00:00
case ( REGISTER_ANALYZE_GROUP_UNSORTED ) :
2005-09-13 18:45:52 +00:00
break ;
2007-08-16 22:03:10 +00:00
case ( REGISTER_ANALYZE_GROUP_CONVERSATION_FILTER ) :
break ;
2008-04-17 02:16:39 +00:00
case ( REGISTER_TOOLS_GROUP_UNSORTED ) :
2006-09-27 17:12:42 +00:00
break ;
2005-04-16 10:53:09 +00:00
default :
g_assert_not_reached ( ) ;
}
2008-04-13 23:55:32 +00:00
if ( node_data - > stock_id ! = NULL ) {
entry - > item_type = " <StockItem> " ;
entry - > extra_data = node_data - > stock_id ;
}
2007-08-16 22:03:10 +00:00
gtk_item_factory_create_item ( main_menu_factory , entry , node_data - > callback_data , /* callback_type */ 2 ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( node_data - > name , FALSE ) ; /* no capture file yet */
2004-07-18 00:24:25 +00:00
added + + ;
2009-04-11 18:03:11 +00:00
g_free ( entry ) ;
2004-07-18 00:24:25 +00:00
}
} else {
/*
* It ' s an interior node ; call
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
* " merge_tap_menus_layered() " on all its children
2004-07-18 00:24:25 +00:00
*/
/*
* The root node doesn ' t correspond to a menu tree item ; it
* has a null name pointer .
*/
if ( node_data - > name ! = NULL & & group = = node_data - > group ) {
entry = g_malloc0 ( sizeof ( GtkItemFactoryEntry ) ) ;
entry - > path = node_data - > name ;
entry - > item_type = " <Branch> " ;
2010-10-24 16:14:01 +00:00
gtk_item_factory_create_item ( main_menu_factory , entry ,
NULL , 2 ) ;
set_menu_sensitivity_old ( node_data - > name , FALSE ) ; /* no children yet */
added + + ;
g_free ( entry ) ;
}
for ( child = node_data - > children ; child ! = NULL ; child =
child - > next ) {
added + = merge_tap_menus_layered ( child , group ) ;
}
}
return added ;
}
# endif /* MAIN_MENU_USE_UIMANAGER */
#if 0
g_warning ( " entry->path = %s " , entry - > path ) ;
action = gtk_action_new ( entry - > path , /* name */
const gchar * label , /* label */
NULL , /* tooltip */
node_data - > stock_id ) ; /* stock_id */
gtk_action_group_add_action_with_accel ( main_menu_bar_action_group ,
action ,
NULL ) ; /*the accelerator for the action,
* in the format understood by gtk_accelerator_parse ( ) ,
* or " " for no accelerator , or NULL to use the stock accelerator .
* [ allow - none ]
*/
g_signal_connect ( action , " activate " ,
G_CALLBACK ( node_data - > callback ) ,
node_data - > callback_data ) ;
test code
g_warning ( " Group: %s " , node_data - > name ) ;
2010-10-08 01:31:47 +00:00
p = strrchr ( node_data - > name , ' / ' ) ;
if ( p ) {
p + + ;
action = gtk_action_new ( entry - > path , /* name */
2010-10-08 02:38:47 +00:00
p , /* label */
2010-10-08 01:31:47 +00:00
NULL , /* tooltip */
node_data - > stock_id ) ; /* stock_id */
gtk_action_group_add_action_with_accel ( main_menu_bar_action_group ,
action ,
NULL ) ; /*the accelerator for the action,
* in the format understood by gtk_accelerator_parse ( ) ,
* or " " for no accelerator , or NULL to use the stock accelerator .
* [ allow - none ]
*/
if ( group = = REGISTER_STAT_GROUP_RESPONSE_TIME ) {
gtk_ui_manager_add_ui ( ui_manager_main_menubar , merge_id ,
" /Menubar/StatisticsMenu " , /* path */
p , /* name */
2010-10-08 02:38:47 +00:00
entry - > path , /* action */
GTK_UI_MANAGER_MENU , /* type */
FALSE ) ; /* "top" if TRUE, the UI element is added before its siblings */
2010-10-08 01:31:47 +00:00
}
}
2004-07-18 00:24:25 +00:00
2010-10-24 16:14:01 +00:00
# endif /* 0 */
2004-07-18 00:24:25 +00:00
2010-10-24 16:14:01 +00:00
static void merge_all_tap_menus ( GList * node ) {
2008-04-13 23:55:32 +00:00
GtkItemFactoryEntry * sep_entry ;
2004-07-18 00:24:25 +00:00
2008-04-13 23:55:32 +00:00
sep_entry = g_malloc0 ( sizeof ( GtkItemFactoryEntry ) ) ;
sep_entry - > item_type = " <Separator> " ;
sep_entry - > path = " /Statistics/ " ;
2010-09-29 16:09:42 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
/* build the new menus */
2010-10-24 18:08:07 +00:00
#if 0
merge_id = gtk_ui_manager_new_merge_id ( ui_manager_main_menubar ) ;
# endif
2010-09-29 16:09:42 +00:00
# endif
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
/*
2004-07-18 00:24:25 +00:00
* merge only the menu items of the specific group ,
* and then append a seperator
*/
2005-08-19 09:29:41 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_STAT_GROUP_GENERIC ) ) {
2010-09-28 20:27:28 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
/* XXX fix me */
2010-09-28 20:27:28 +00:00
# else
2008-04-13 23:55:32 +00:00
gtk_item_factory_create_item ( main_menu_factory , sep_entry , NULL , 2 ) ;
2010-09-28 20:27:28 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
}
2005-08-19 09:29:41 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_STAT_GROUP_CONVERSATION_LIST ) ) {
2008-04-13 23:55:32 +00:00
/*gtk_item_factory_create_item(main_menu_factory, sep_entry, NULL, 2);*/
2004-07-18 00:24:25 +00:00
}
2005-08-19 09:29:41 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_STAT_GROUP_ENDPOINT_LIST ) ) {
2008-04-13 23:55:32 +00:00
/*gtk_item_factory_create_item(main_menu_factory, sep_entry, NULL, 2);*/
2004-07-18 00:24:25 +00:00
}
2005-08-19 09:29:41 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_STAT_GROUP_RESPONSE_TIME ) ) {
2010-09-28 20:27:28 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
/* XXX fix me */
2010-09-28 20:27:28 +00:00
# else
2008-04-13 23:55:32 +00:00
gtk_item_factory_create_item ( main_menu_factory , sep_entry , NULL , 2 ) ;
2010-09-28 20:27:28 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
}
2005-08-19 09:29:41 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_STAT_GROUP_TELEPHONY ) ) {
2009-01-29 01:38:08 +00:00
/*gtk_item_factory_create_item(main_menu_factory, sep_entry, NULL, 2);*/
2005-04-16 10:53:09 +00:00
}
2008-04-17 02:16:39 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_STAT_GROUP_UNSORTED ) ) {
2008-04-13 23:55:32 +00:00
/*gtk_item_factory_create_item(main_menu_factory, sep_entry, NULL, 2);*/
2004-07-18 00:24:25 +00:00
}
2008-04-17 02:16:39 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_ANALYZE_GROUP_UNSORTED ) ) {
2008-04-13 23:55:32 +00:00
sep_entry - > path = " /Analyze/ " ;
/*gtk_item_factory_create_item(main_menu_factory, sep_entry, NULL, 2);*/
2005-09-13 18:45:52 +00:00
}
2007-08-16 22:03:10 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_ANALYZE_GROUP_CONVERSATION_FILTER ) ) {
2008-04-13 23:55:32 +00:00
sep_entry - > path = " /Analyze/Conversation Filter/ " ;
/*gtk_item_factory_create_item(main_menu_factory, sep_entry, NULL, 2);*/
2007-08-16 22:03:10 +00:00
}
2008-04-17 02:16:39 +00:00
if ( merge_tap_menus_layered ( node , REGISTER_TOOLS_GROUP_UNSORTED ) ) {
2008-04-13 23:55:32 +00:00
/*gtk_item_factory_create_item(main_menu_factory, sep_entry, NULL, 2);*/
2006-09-27 17:12:42 +00:00
}
2009-05-18 21:48:48 +00:00
g_free ( sep_entry ) ;
2004-07-18 00:24:25 +00:00
}
2010-09-12 19:26:42 +00:00
/*
* Enable / disable menu sensitivity .
*/
static void
set_menu_sensitivity ( GtkUIManager * ui_manager , const gchar * path , gint val )
{
GtkAction * action ;
2010-09-12 22:36:52 +00:00
action = gtk_ui_manager_get_action ( ui_manager , path ) ;
if ( ! action ) {
2010-10-24 18:08:07 +00:00
#if 0
fprintf ( stderr , " Warning: couldn't find action path= %s \n " ,
path ) ;
# endif
2010-09-25 18:44:20 +00:00
return ;
2010-09-12 22:36:52 +00:00
}
2010-09-16 08:58:46 +00:00
# if GLIB_CHECK_VERSION(2,6,0)
gtk_action_set_sensitive ( action ,
2010-09-25 18:44:20 +00:00
val ) ; /* TRUE to make the action sensitive */
2010-09-16 08:58:46 +00:00
# else
g_object_set ( G_OBJECT ( action ) , " sensitive " , val , NULL ) ;
# endif
2010-09-12 19:26:42 +00:00
}
2010-09-12 22:36:52 +00:00
2010-10-08 02:17:37 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2004-07-18 00:24:25 +00:00
/*
2010-10-08 02:17:37 +00:00
* Enable / disable menu sensitivity for the old menubar code .
2004-07-18 00:24:25 +00:00
*/
static void
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( const gchar * path , gint val )
2004-07-18 00:24:25 +00:00
{
2009-04-11 18:03:11 +00:00
GtkWidget * menu_item ;
gchar * dup ;
gchar * dest ;
/* the underscore character regularly confuses things, as it will prevent finding
* the menu_item , so it has to be removed first */
dup = g_strdup ( path ) ;
dest = dup ;
while ( * path ) {
if ( * path ! = ' _ ' ) {
* dest = * path ;
dest + + ;
}
path + + ;
}
* dest = ' \0 ' ;
2010-10-08 02:17:37 +00:00
if ( ( menu_item = gtk_item_factory_get_widget ( main_menu_factory , dup ) ) ! = NULL ) {
if ( GTK_IS_MENU ( menu_item ) ) {
/*
* " dup " refers to a submenu ; " gtk_item_factory_get_widget() "
* gets the menu , not the item that , when selected , pops up
* the submenu .
*
* We have to change the latter item ' s sensitivity , so that
* it shows up normally if sensitive and grayed - out if
* insensitive .
*/
menu_item = gtk_menu_get_attach_widget ( GTK_MENU ( menu_item ) ) ;
}
gtk_widget_set_sensitive ( menu_item , val ) ;
} else {
2009-06-30 18:05:04 +00:00
# ifndef NEW_PACKET_LIST
2010-10-08 02:17:37 +00:00
/* be sure this menu item *is* existing */
g_assert_not_reached ( ) ;
2009-06-30 18:05:04 +00:00
# endif
2004-07-18 00:24:25 +00:00
}
2009-04-11 18:03:11 +00:00
g_free ( dup ) ;
2004-07-18 00:24:25 +00:00
}
2010-10-04 10:36:38 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-13 20:21:41 +00:00
2005-08-02 08:30:33 +00:00
static void
2010-09-13 20:21:41 +00:00
set_menu_object_data_meat ( GtkUIManager * ui_manager , const gchar * path , const gchar * key , gpointer data )
{
GtkWidget * menu = NULL ;
2010-10-10 19:05:04 +00:00
if ( ( menu = gtk_ui_manager_get_widget ( ui_manager , path ) ) ! = NULL ) {
2010-09-13 20:21:41 +00:00
g_object_set_data ( G_OBJECT ( menu ) , key , data ) ;
2010-10-10 19:05:04 +00:00
} else {
2010-10-10 18:10:33 +00:00
#if 0
2010-10-10 19:05:04 +00:00
g_warning ( " set_menu_object_data_meat: no menu, path: %s " , path ) ;
2010-10-10 18:10:33 +00:00
# endif
2010-10-10 19:05:04 +00:00
}
2010-09-13 20:21:41 +00:00
}
2010-10-04 08:43:15 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2010-09-13 20:21:41 +00:00
static void
2010-10-08 02:38:47 +00:00
set_menu_object_data_meat_old ( const gchar * path , const gchar * key , gpointer data )
2004-07-18 00:24:25 +00:00
{
2009-04-11 18:03:11 +00:00
GtkWidget * menu = NULL ;
2004-07-18 00:24:25 +00:00
2010-10-10 18:10:33 +00:00
if ( ( menu = gtk_item_factory_get_widget ( main_menu_factory , path ) ) ! = NULL ) {
2009-04-11 18:03:11 +00:00
g_object_set_data ( G_OBJECT ( menu ) , key , data ) ;
2010-10-10 19:05:04 +00:00
}
2004-07-18 00:24:25 +00:00
}
2010-10-10 18:10:33 +00:00
2004-07-18 00:24:25 +00:00
2010-10-10 18:10:33 +00:00
void
set_menu_object_data_old ( const gchar * path , const gchar * key , gpointer data ) {
set_menu_object_data_meat_old ( path , key , data ) ;
}
# endif
2004-07-18 00:24:25 +00:00
void
2005-08-05 20:59:08 +00:00
set_menu_object_data ( const gchar * path , const gchar * key , gpointer data ) {
2010-10-10 19:05:04 +00:00
if ( strncmp ( path , " /Menubar " , 8 ) = = 0 ) {
set_menu_object_data_meat ( ui_manager_main_menubar , path , key , data ) ;
} else if ( strncmp ( path , " /PacketListMenuPopup " , 20 ) = = 0 ) {
set_menu_object_data_meat ( ui_manager_packet_list_menu , path , key , data ) ;
} else if ( strncmp ( path , " /TreeViewPopup " , 14 ) = = 0 ) {
set_menu_object_data_meat ( ui_manager_tree_view_menu , path , key , data ) ;
} else if ( strncmp ( path , " /BytesMenuPopup " , 15 ) = = 0 ) {
set_menu_object_data_meat ( ui_manager_bytes_menu , path , key , data ) ;
} else if ( strncmp ( path , " /ProfilesMenuPopup " , 18 ) = = 0 ) {
set_menu_object_data_meat ( ui_manager_statusbar_profiles_menu , path , key , data ) ;
}
2004-07-18 00:24:25 +00:00
}
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
/* Recently used capture files submenu:
2004-07-18 00:24:25 +00:00
* Submenu containing the recently used capture files .
* The capture filenames are always kept with the absolute path , to be independant
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
* of the current path .
2004-07-18 00:24:25 +00:00
* They are only stored inside the labels of the submenu ( no separate list ) . */
2010-09-24 14:52:44 +00:00
# define MENU_RECENT_FILES_PATH_OLD " / File / Open Recent"
# define MENU_RECENT_FILES_PATH " / Menubar / FileMenu / OpenRecent"
2004-07-18 00:24:25 +00:00
# define MENU_RECENT_FILES_KEY "Recent File Name"
2008-04-15 22:46:35 +00:00
2010-10-24 16:14:01 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2005-08-02 08:30:33 +00:00
static void
2004-07-18 00:24:25 +00:00
update_menu_recent_capture_file1 ( GtkWidget * widget , gpointer cnt ) {
gchar * widget_cf_name ;
2008-04-11 16:26:32 +00:00
widget_cf_name = g_object_get_data ( G_OBJECT ( widget ) , MENU_RECENT_FILES_KEY ) ;
2004-07-18 00:24:25 +00:00
/* if this menu item is a file, count it */
if ( widget_cf_name ) {
( * ( guint * ) cnt ) + + ;
2008-04-15 22:46:35 +00:00
main_welcome_add_recent_capture_files ( widget_cf_name ) ;
2004-07-18 00:24:25 +00:00
}
}
/* update the menu */
2005-08-14 23:25:20 +00:00
static void
2004-07-18 00:24:25 +00:00
update_menu_recent_capture_file ( GtkWidget * submenu_recent_files ) {
guint cnt = 0 ;
2010-10-08 06:05:06 +00:00
GtkWidget * menu_item ;
2004-07-18 00:24:25 +00:00
2008-04-15 22:46:35 +00:00
main_welcome_reset_recent_capture_files ( ) ;
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
gtk_container_foreach ( GTK_CONTAINER ( submenu_recent_files ) ,
2009-04-11 18:03:11 +00:00
update_menu_recent_capture_file1 , & cnt ) ;
2004-07-18 00:24:25 +00:00
2010-10-10 19:05:04 +00:00
if ( cnt = = 0 ) {
/* Empty list */
menu_item = gtk_menu_item_new_with_label ( " No recently used files " ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( submenu_recent_files ) , menu_item ) ;
gtk_widget_show ( menu_item ) ;
}
2010-10-08 06:05:06 +00:00
2004-07-18 00:24:25 +00:00
/* make parent menu item sensitive only, if we have any valid files in the list */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( MENU_RECENT_FILES_PATH_OLD , cnt ) ;
2004-07-18 00:24:25 +00:00
}
2010-10-24 16:14:01 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2008-04-15 22:46:35 +00:00
2010-10-13 19:04:14 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2008-04-15 22:46:35 +00:00
/* remove the capture filename from the "Recent Files" menu */
static void
remove_menu_recent_capture_filename ( gchar * cf_name ) {
GtkWidget * submenu_recent_files ;
GList * child_list ;
GList * child_list_item ;
2009-04-11 18:03:11 +00:00
GtkWidget * menu_item_child ;
const gchar * menu_item_cf_name ;
2008-04-15 22:46:35 +00:00
/* get the submenu container item */
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
submenu_recent_files = gtk_ui_manager_get_widget ( ui_manager_main_menubar , MENU_RECENT_FILES_PATH ) ;
2010-09-25 18:44:20 +00:00
if ( ! submenu_recent_files ) {
g_warning ( " remove_menu_recent_capture_filename: No submenu_recent_files found, path= MENU_RECENT_FILES_PATH " ) ;
}
2010-09-24 14:52:44 +00:00
# else
submenu_recent_files = gtk_item_factory_get_widget ( main_menu_factory , MENU_RECENT_FILES_PATH_OLD ) ;
# endif
2008-04-15 22:46:35 +00:00
/* find the corresponding menu item to be removed */
child_list = gtk_container_get_children ( GTK_CONTAINER ( submenu_recent_files ) ) ;
child_list_item = child_list ;
while ( child_list_item ) {
2009-04-11 18:03:11 +00:00
menu_item_child = ( GTK_BIN ( child_list_item - > data ) ) - > child ;
if ( menu_item_child ! = NULL ) { /* Note: there are two "extra" items on the end of the child_list: */
/* - a separator (with no menu_item_child and thus no text label) */
/* - a 2nd item with a menu_child with text label "Clear" */
/* [See add_menu_recent_capture_file_absolute() ] */
/* 'if (menu_item_child != NULL)' skips the separator item; */
/* An absolute filename in cf_name will never match "Clear". */
menu_item_cf_name = gtk_label_get_text ( GTK_LABEL ( menu_item_child ) ) ;
if ( strcmp ( menu_item_cf_name , cf_name ) = = 0 ) {
/* XXX: is this all we need to do, to free the menu item and its label?
The reference count of widget will go to 0 , so it ' ll be freed ;
will that free the label ? */
gtk_container_remove ( GTK_CONTAINER ( submenu_recent_files ) , child_list_item - > data ) ;
}
2008-04-15 22:46:35 +00:00
}
child_list_item = g_list_next ( child_list_item ) ;
}
g_list_free ( child_list ) ;
update_menu_recent_capture_file ( submenu_recent_files ) ;
}
2010-10-13 19:04:14 +00:00
# endif
2008-04-15 22:46:35 +00:00
2004-07-18 00:24:25 +00:00
/* remove the capture filename from the "Recent Files" menu */
2005-08-14 23:25:20 +00:00
static void
2004-07-18 00:24:25 +00:00
remove_menu_recent_capture_file ( GtkWidget * widget , gpointer unused _U_ ) {
GtkWidget * submenu_recent_files ;
gchar * widget_cf_name ;
2008-04-11 16:26:32 +00:00
widget_cf_name = g_object_get_data ( G_OBJECT ( widget ) , MENU_RECENT_FILES_KEY ) ;
2004-07-18 00:24:25 +00:00
g_free ( widget_cf_name ) ;
/* get the submenu container item */
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
submenu_recent_files = gtk_ui_manager_get_widget ( ui_manager_main_menubar , MENU_RECENT_FILES_PATH ) ;
2010-09-25 18:44:20 +00:00
if ( ! submenu_recent_files ) {
g_warning ( " remove_menu_recent_capture_file: No submenu_recent_files found, path= MENU_RECENT_FILES_PATH " ) ;
}
2010-09-24 14:52:44 +00:00
# else
submenu_recent_files = gtk_item_factory_get_widget ( main_menu_factory , MENU_RECENT_FILES_PATH_OLD ) ;
# endif
2004-07-18 00:24:25 +00:00
/* XXX: is this all we need to do, to free the menu item and its label?
The reference count of widget will go to 0 , so it ' ll be freed ;
will that free the label ? */
gtk_container_remove ( GTK_CONTAINER ( submenu_recent_files ) , widget ) ;
}
2010-10-11 19:29:52 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-18 15:40:51 +00:00
/* Add a file name to the top of the list, if its allrady present remove it first */
static GList *
2010-10-18 19:19:27 +00:00
remove_present_file_name ( GList * recent_files_list , const gchar * cf_name ) {
2010-10-18 15:40:51 +00:00
GList * li ;
gchar * widget_cf_name ;
for ( li = g_list_first ( recent_files_list ) ; li ; li = li - > next ) {
widget_cf_name = li - > data ;
if (
# ifdef _WIN32
/* do a case insensitive compare on win32 */
g_ascii_strncasecmp ( widget_cf_name , cf_name , 1000 ) = = 0 ) {
# else /* _WIN32 */
/* do a case sensitive compare on unix */
2010-10-24 16:14:01 +00:00
strncmp ( widget_cf_name , cf_name , 1000 ) = = 0 ) {
2010-10-18 15:40:51 +00:00
# endif
recent_files_list = g_list_remove ( recent_files_list , widget_cf_name ) ;
}
}
return recent_files_list ;
}
2010-10-13 11:22:23 +00:00
static void
recent_changed_cb ( GtkUIManager * ui_manager ,
gpointer user_data _U_ )
{
guint merge_id ;
GList * action_groups , * l ;
merge_id = GPOINTER_TO_UINT ( g_object_get_data ( G_OBJECT ( ui_manager ) ,
" recent-files-merge-id " ) ) ;
/* remove the UI */
gtk_ui_manager_remove_ui ( ui_manager , merge_id ) ;
/* remove the action group; gtk_ui_manager_remove_action_group()
* should really take the action group ' s name instead of its
* pointer .
*/
action_groups = gtk_ui_manager_get_action_groups ( ui_manager ) ;
for ( l = action_groups ; l ! = NULL ; l = l - > next )
{
GtkActionGroup * group = l - > data ;
if ( strcmp ( gtk_action_group_get_name ( group ) , " recent-files-group " ) = = 0 ) {
/* this unrefs the action group and all of its actions */
gtk_ui_manager_remove_action_group ( ui_manager , group ) ;
break ;
}
}
/* generate a new merge id and re-add everything */
merge_id = gtk_ui_manager_new_merge_id ( ui_manager ) ;
add_recent_items ( merge_id , ui_manager ) ;
}
static void
2010-10-13 19:04:14 +00:00
recent_clear_cb ( GtkAction * action _U_ , gpointer user_data _U_ )
2010-10-13 11:22:23 +00:00
{
GtkWidget * submenu_recent_files ;
GList * recent_files_list ;
/* Get the list of recent files, free the list and store the empty list with the widget */
submenu_recent_files = gtk_ui_manager_get_widget ( ui_manager_main_menubar , MENU_RECENT_FILES_PATH ) ;
recent_files_list = g_object_get_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " ) ;
/* Free the name strings ?? */
g_list_free ( recent_files_list ) ;
recent_files_list = NULL ;
g_object_set_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " , recent_files_list ) ;
/* Calling recent_changed_cb will rebuild the GUI call add_recent_items which will in turn call
* main_welcome_reset_recent_capture_files
*/
recent_changed_cb ( ui_manager_main_menubar , NULL ) ;
}
2010-10-11 19:29:52 +00:00
static void
add_recent_items ( guint merge_id , GtkUIManager * ui_manager )
{
GtkActionGroup * action_group ;
GtkAction * action ;
GtkWidget * submenu_recent_files ;
GList * items , * l ;
2010-10-12 21:33:08 +00:00
gchar * name ;
gchar * action_name ;
guint i ;
2010-10-11 19:29:52 +00:00
2010-10-13 11:22:23 +00:00
/* Reset the recent files list in the welcome screen */
main_welcome_reset_recent_capture_files ( ) ;
2010-10-11 19:29:52 +00:00
action_group = gtk_action_group_new ( " recent-files-group " ) ;
2004-07-18 00:24:25 +00:00
2010-10-11 19:29:52 +00:00
submenu_recent_files = gtk_ui_manager_get_widget ( ui_manager_main_menubar , MENU_RECENT_FILES_PATH ) ;
if ( ! submenu_recent_files ) {
g_warning ( " add_recent_items: No submenu_recent_files found, path= MENU_RECENT_FILES_PATH " ) ;
}
items = g_object_get_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " ) ;
gtk_ui_manager_insert_action_group ( ui_manager , action_group , 0 ) ;
g_object_set_data ( G_OBJECT ( ui_manager ) ,
" recent-files-merge-id " , GUINT_TO_POINTER ( merge_id ) ) ;
2010-10-12 01:27:58 +00:00
/* no items */
2010-10-11 19:29:52 +00:00
if ( ! items ) {
action = g_object_new ( GTK_TYPE_ACTION ,
" name " , " recent-info-empty " ,
" label " , " No recently used files " ,
" sensitive " , FALSE ,
NULL ) ;
gtk_action_group_add_action ( action_group , action ) ;
g_object_unref ( action ) ;
gtk_ui_manager_add_ui ( ui_manager , merge_id ,
" /Menubar/FileMenu/OpenRecent/RecentFiles " ,
" recent-info-empty " ,
" recent-info-empty " ,
GTK_UI_MANAGER_MENUITEM ,
FALSE ) ;
return ;
}
2010-10-12 01:27:58 +00:00
for ( i = 0 , l = items ;
2010-10-12 21:33:08 +00:00
i < prefs . gui_recent_files_count_max & & l ! = NULL ;
2010-10-12 01:27:58 +00:00
i + = 1 , l = l - > next )
{
2010-10-18 15:40:51 +00:00
gchar * item_name = l - > data ;
2010-10-12 21:33:08 +00:00
name = g_strdup_printf ( " recent-info-%u " , i ) ;
action_name = g_strdup ( name ) ;
2010-10-12 01:27:58 +00:00
action = g_object_new ( GTK_TYPE_ACTION ,
2010-10-12 21:33:08 +00:00
" name " , action_name ,
" label " , item_name ,
2010-10-13 11:22:23 +00:00
" stock_id " , WIRESHARK_STOCK_FILE ,
2010-10-12 01:27:58 +00:00
NULL ) ;
g_signal_connect ( action , " activate " ,
2010-10-18 19:19:27 +00:00
G_CALLBACK ( menu_open_recent_file_cmd_cb ) , NULL ) ;
2010-10-12 01:27:58 +00:00
gtk_action_group_add_action ( action_group , action ) ;
g_object_unref ( action ) ;
gtk_ui_manager_add_ui ( ui_manager , merge_id ,
2010-10-12 21:33:08 +00:00
" /Menubar/FileMenu/OpenRecent/RecentFiles " ,
2010-10-12 01:27:58 +00:00
name ,
action_name ,
GTK_UI_MANAGER_MENUITEM ,
FALSE ) ;
2010-10-13 11:22:23 +00:00
/* Add the file name to the recent files list on the Welcome screen */
main_welcome_add_recent_capture_files ( item_name ) ;
2010-10-12 01:27:58 +00:00
g_free ( action_name ) ;
g_free ( name ) ;
}
2010-10-13 11:22:23 +00:00
/* Add a Separator */
gtk_ui_manager_add_ui ( ui_manager , merge_id ,
" /Menubar/FileMenu/OpenRecent/RecentFiles " ,
" separator-recent-info " ,
2010-10-13 15:52:10 +00:00
NULL ,
2010-10-13 11:22:23 +00:00
GTK_UI_MANAGER_SEPARATOR ,
FALSE ) ;
/* Add a clear Icon */
action = g_object_new ( GTK_TYPE_ACTION ,
" name " , " clear-recent-info " ,
" label " , " Clear the recent files list " ,
" stock_id " , GTK_STOCK_CLEAR ,
NULL ) ;
g_signal_connect ( action , " activate " ,
G_CALLBACK ( recent_clear_cb ) , NULL ) ;
gtk_action_group_add_action ( action_group , action ) ;
g_object_unref ( action ) ;
gtk_ui_manager_add_ui ( ui_manager , merge_id ,
" /Menubar/FileMenu/OpenRecent/RecentFiles " ,
" clear-recent-info " ,
" clear-recent-info " ,
GTK_UI_MANAGER_MENUITEM ,
FALSE ) ;
2010-10-12 01:27:58 +00:00
2010-10-11 19:29:52 +00:00
}
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-10-24 16:14:01 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2008-04-15 22:46:35 +00:00
/* callback, if the user pushed the <Clear> menu item */
2004-07-18 00:24:25 +00:00
static void
clear_menu_recent_capture_file_cmd_cb ( GtkWidget * w _U_ , gpointer unused _U_ ) {
GtkWidget * submenu_recent_files ;
2010-09-24 14:52:44 +00:00
submenu_recent_files = gtk_item_factory_get_widget ( main_menu_factory , MENU_RECENT_FILES_PATH_OLD ) ;
2004-07-18 00:24:25 +00:00
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
gtk_container_foreach ( GTK_CONTAINER ( submenu_recent_files ) ,
2009-04-11 18:03:11 +00:00
remove_menu_recent_capture_file , NULL ) ;
2004-07-18 00:24:25 +00:00
update_menu_recent_capture_file ( submenu_recent_files ) ;
}
2010-10-24 16:14:01 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
2008-04-15 22:46:35 +00:00
/* Open a file by it's name
( Beware : will not ask to close existing capture file ! ) */
void
menu_open_filename ( gchar * cf_name )
{
2009-04-11 18:03:11 +00:00
GtkWidget * submenu_recent_files ;
int err ;
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-13 15:52:10 +00:00
GList * recent_files_list ;
2010-09-24 14:52:44 +00:00
submenu_recent_files = gtk_ui_manager_get_widget ( ui_manager_main_menubar , MENU_RECENT_FILES_PATH ) ;
2010-09-25 18:44:20 +00:00
if ( ! submenu_recent_files ) {
g_warning ( " menu_open_filename: No submenu_recent_files found, path= MENU_RECENT_FILES_PATH " ) ;
}
2010-10-13 15:52:10 +00:00
recent_files_list = g_object_get_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " ) ;
/* 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 , FALSE ) ;
2010-10-18 15:40:51 +00:00
} else {
recent_files_list = remove_present_file_name ( recent_files_list , cf_name ) ;
g_object_set_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " , recent_files_list ) ;
/* Calling recent_changed_cb will rebuild the GUI call add_recent_items which will in turn call
* main_welcome_reset_recent_capture_files
*/
recent_changed_cb ( ui_manager_main_menubar , NULL ) ;
}
2010-09-24 14:52:44 +00:00
# else
submenu_recent_files = gtk_item_factory_get_widget ( main_menu_factory , MENU_RECENT_FILES_PATH_OLD ) ;
2009-04-11 18:03:11 +00:00
/* open and read the capture file (this will close an existing file) */
if ( cf_open ( & cfile , cf_name , FALSE , & err ) = = CF_OK ) {
2009-12-14 22:05:29 +00:00
cf_read ( & cfile , FALSE ) ;
2009-04-11 18:03:11 +00:00
} else {
/* the capture file apparently no longer exists; remove menu item */
/* XXX: ask user to remove item, it's maybe only a temporary problem */
remove_menu_recent_capture_filename ( cf_name ) ;
}
2008-04-15 22:46:35 +00:00
2009-04-11 18:03:11 +00:00
update_menu_recent_capture_file ( submenu_recent_files ) ;
2010-10-13 15:52:10 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2008-04-15 22:46:35 +00:00
}
2010-10-18 19:19:27 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
void
menu_open_recent_file_cmd ( GtkAction * action )
{
GtkWidget * submenu_recent_files ;
GList * recent_files_list ;
const gchar * cf_name ;
int err ;
cf_name = gtk_action_get_label ( action ) ;
2008-04-15 22:46:35 +00:00
2010-10-18 19:19:27 +00:00
/* 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 , FALSE ) ;
} else {
submenu_recent_files = gtk_ui_manager_get_widget ( ui_manager_main_menubar , MENU_RECENT_FILES_PATH ) ;
recent_files_list = g_object_get_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " ) ;
recent_files_list = remove_present_file_name ( recent_files_list , cf_name ) ;
g_object_set_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " , recent_files_list ) ;
/* Calling recent_changed_cb will rebuild the GUI call add_recent_items which will in turn call
* main_welcome_reset_recent_capture_files
*/
recent_changed_cb ( ui_manager_main_menubar , NULL ) ;
}
}
# else
2004-07-18 00:24:25 +00:00
/* callback, if the user pushed a recent file submenu item */
void
menu_open_recent_file_cmd ( GtkWidget * w )
{
2009-04-11 18:03:11 +00:00
GtkWidget * submenu_recent_files ;
GtkWidget * menu_item_child ;
const gchar * cf_name ;
int err ;
2010-10-18 19:19:27 +00:00
2010-09-25 18:44:20 +00:00
submenu_recent_files = gtk_item_factory_get_widget ( main_menu_factory , MENU_RECENT_FILES_PATH_OLD ) ;
2010-10-18 19:19:27 +00:00
/* get capture filename from the menu item label */
2009-04-11 18:03:11 +00:00
menu_item_child = ( GTK_BIN ( w ) ) - > child ;
cf_name = gtk_label_get_text ( GTK_LABEL ( menu_item_child ) ) ;
/* open and read the capture file (this will close an existing file) */
if ( cf_open ( & cfile , cf_name , FALSE , & err ) = = CF_OK ) {
2009-12-14 22:05:29 +00:00
cf_read ( & cfile , FALSE ) ;
2009-04-11 18:03:11 +00:00
} else {
/* the capture file apparently no longer exists; remove menu item */
/* XXX: ask user to remove item, it's maybe only a temporary problem */
remove_menu_recent_capture_file ( w , NULL ) ;
}
update_menu_recent_capture_file ( submenu_recent_files ) ;
2004-07-18 00:24:25 +00:00
}
2010-10-18 19:19:27 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
2008-04-15 22:46:35 +00:00
static void menu_open_recent_file_answered_cb ( gpointer dialog _U_ , gint btn , gpointer data )
2004-07-18 00:24:25 +00:00
{
switch ( btn ) {
case ( ESD_BTN_YES ) :
/* save file first */
file_save_as_cmd ( after_save_open_recent_file , data ) ;
break ;
case ( ESD_BTN_NO ) :
cf_close ( & cfile ) ;
menu_open_recent_file_cmd ( data ) ;
break ;
case ( ESD_BTN_CANCEL ) :
break ;
default :
g_assert_not_reached ( ) ;
}
}
2010-10-18 19:19:27 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
static void
menu_open_recent_file_cmd_cb ( GtkAction * action , gpointer data _U_ ) {
gpointer dialog ;
2004-07-18 00:24:25 +00:00
2010-10-18 19:19:27 +00:00
if ( ( cfile . state ! = FILE_CLOSED ) & & ! cfile . user_saved & & prefs . gui_ask_unsaved ) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog ( ESD_TYPE_CONFIRMATION , ESD_BTNS_YES_NO_CANCEL ,
" %sSave capture file before opening a new one?%s \n \n "
" If you open a new capture file without saving, your current capture data will be discarded. " ,
simple_dialog_primary_start ( ) , simple_dialog_primary_end ( ) ) ;
simple_dialog_set_cb ( dialog , menu_open_recent_file_answered_cb , action ) ;
} else {
/* unchanged file */
menu_open_recent_file_cmd ( action ) ;
}
}
# else
2005-08-14 23:25:20 +00:00
static void
2004-07-18 00:24:25 +00:00
menu_open_recent_file_cmd_cb ( GtkWidget * widget , gpointer data _U_ ) {
2009-04-11 18:03:11 +00:00
gpointer dialog ;
if ( ( cfile . state ! = FILE_CLOSED ) & & ! cfile . user_saved & & prefs . gui_ask_unsaved ) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog ( ESD_TYPE_CONFIRMATION , ESD_BTNS_YES_NO_CANCEL ,
" %sSave capture file before opening a new one?%s \n \n "
" If you open a new capture file without saving, your current capture data will be discarded. " ,
simple_dialog_primary_start ( ) , simple_dialog_primary_end ( ) ) ;
simple_dialog_set_cb ( dialog , menu_open_recent_file_answered_cb , widget ) ;
} else {
/* unchanged file */
menu_open_recent_file_cmd ( widget ) ;
}
2004-07-18 00:24:25 +00:00
}
2010-10-18 19:19:27 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
2010-10-18 15:40:51 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2005-08-14 23:25:20 +00:00
static void
2004-07-18 00:24:25 +00:00
add_menu_recent_capture_file_absolute ( gchar * cf_name ) {
2009-04-11 18:03:11 +00:00
GtkWidget * submenu_recent_files ;
GList * li ;
gchar * widget_cf_name ;
gchar * normalized_cf_name ;
guint cnt ;
2010-10-18 15:40:51 +00:00
GList * recent_files_list ;
2004-07-18 00:24:25 +00:00
2009-04-11 18:03:11 +00:00
normalized_cf_name = g_strdup ( cf_name ) ;
2004-09-11 23:03:36 +00:00
# ifdef _WIN32
2009-04-11 18:03:11 +00:00
/* replace all slashes by backslashes */
g_strdelimit ( normalized_cf_name , " / " , ' \\ ' ) ;
2004-07-18 00:24:25 +00:00
# endif
2009-04-11 18:03:11 +00:00
/* get the submenu container item */
2010-09-24 14:52:44 +00:00
submenu_recent_files = gtk_ui_manager_get_widget ( ui_manager_main_menubar , MENU_RECENT_FILES_PATH ) ;
2010-09-25 18:44:20 +00:00
if ( ! submenu_recent_files ) {
g_warning ( " add_menu_recent_capture_file_absolute: No submenu_recent_files found, path= MENU_RECENT_FILES_PATH " ) ;
2010-10-12 21:33:08 +00:00
return ;
2010-09-25 18:44:20 +00:00
}
2010-10-11 19:29:52 +00:00
recent_files_list = g_object_get_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " ) ;
2010-10-12 21:33:08 +00:00
cnt = 1 ;
for ( li = g_list_first ( recent_files_list ) ; li ; li = li - > next , cnt + + ) {
widget_cf_name = li - > data ;
if (
# ifdef _WIN32
/* do a case insensitive compare on win32 */
g_ascii_strncasecmp ( widget_cf_name , normalized_cf_name , 1000 ) = = 0 | |
# else /* _WIN32 */
/* do a case sensitive compare on unix */
strncmp ( widget_cf_name , normalized_cf_name , 1000 ) = = 0 | |
# endif
cnt > = prefs . gui_recent_files_count_max ) {
recent_files_list = g_list_remove ( recent_files_list , widget_cf_name ) ;
cnt - - ;
}
}
recent_files_list = g_list_prepend ( recent_files_list , normalized_cf_name ) ;
g_object_set_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " , recent_files_list ) ;
recent_changed_cb ( ui_manager_main_menubar , NULL ) ;
2010-10-18 15:40:51 +00:00
}
# else /* MAIN_MENU_USE_UIMANAGER */
/* add the capture filename (with an absolute path) to the "Recent Files" menu */
static void
add_menu_recent_capture_file_absolute ( gchar * cf_name ) {
GtkWidget * submenu_recent_files ;
GList * menu_item_list_old ;
GList * li ;
gchar * widget_cf_name ;
gchar * normalized_cf_name ;
GtkWidget * menu_item ;
guint cnt ;
normalized_cf_name = g_strdup ( cf_name ) ;
# ifdef _WIN32
/* replace all slashes by backslashes */
g_strdelimit ( normalized_cf_name , " / " , ' \\ ' ) ;
2010-09-24 14:52:44 +00:00
# endif
2010-10-18 15:40:51 +00:00
submenu_recent_files = gtk_item_factory_get_widget ( main_menu_factory , MENU_RECENT_FILES_PATH_OLD ) ;
2009-04-11 18:03:11 +00:00
/* convert container to a GList */
2010-10-11 19:29:52 +00:00
menu_item_list_old = gtk_container_get_children ( GTK_CONTAINER ( submenu_recent_files ) ) ;
2009-04-11 18:03:11 +00:00
/* iterate through list items of menu_item_list,
* removing special items , a maybe duplicate entry and every item above count_max */
cnt = 1 ;
2010-10-11 19:29:52 +00:00
for ( li = g_list_first ( menu_item_list_old ) ; li ; li = li - > next , cnt + + ) {
2009-04-11 18:03:11 +00:00
/* get capture filename */
menu_item = GTK_WIDGET ( li - > data ) ;
widget_cf_name = g_object_get_data ( G_OBJECT ( menu_item ) , MENU_RECENT_FILES_KEY ) ;
/* if this element string is one of our special items (seperator, ...) or
* already in the list or
2010-10-18 15:40:51 +00:00
* this element is above maximum count ( too old ) , remove it
*/
2009-04-11 18:03:11 +00:00
if ( ! widget_cf_name | |
2004-09-11 23:03:36 +00:00
# ifdef _WIN32
2009-04-11 18:03:11 +00:00
/* do a case insensitive compare on win32 */
g_ascii_strncasecmp ( widget_cf_name , normalized_cf_name , 1000 ) = = 0 | |
2004-09-11 23:03:36 +00:00
# else /* _WIN32 */
2009-04-11 18:03:11 +00:00
/* do a case sensitive compare on unix */
strncmp ( widget_cf_name , normalized_cf_name , 1000 ) = = 0 | |
2004-07-18 00:24:25 +00:00
# endif
2009-04-11 18:03:11 +00:00
cnt > = prefs . gui_recent_files_count_max ) {
remove_menu_recent_capture_file ( li - > data , NULL ) ;
cnt - - ;
}
}
2010-10-11 19:29:52 +00:00
g_list_free ( menu_item_list_old ) ;
2010-10-12 21:33:08 +00:00
/* add new item at latest position */
2009-04-11 18:03:11 +00:00
menu_item = gtk_menu_item_new_with_label ( normalized_cf_name ) ;
g_object_set_data ( G_OBJECT ( menu_item ) , MENU_RECENT_FILES_KEY , normalized_cf_name ) ;
gtk_menu_shell_prepend ( GTK_MENU_SHELL ( submenu_recent_files ) , menu_item ) ;
g_signal_connect_swapped ( GTK_OBJECT ( menu_item ) , " activate " ,
G_CALLBACK ( menu_open_recent_file_cmd_cb ) , ( GtkObject * ) menu_item ) ;
gtk_widget_show ( menu_item ) ;
/* add seperator at last position */
menu_item = gtk_menu_item_new ( ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( submenu_recent_files ) , menu_item ) ;
gtk_widget_show ( menu_item ) ;
/* add new "clear list" item at last position */
menu_item = gtk_image_menu_item_new_from_stock ( GTK_STOCK_CLEAR , NULL ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( submenu_recent_files ) , menu_item ) ;
g_signal_connect_swapped ( GTK_OBJECT ( menu_item ) , " activate " ,
G_CALLBACK ( clear_menu_recent_capture_file_cmd_cb ) , ( GtkObject * ) menu_item ) ;
gtk_widget_show ( menu_item ) ;
update_menu_recent_capture_file ( submenu_recent_files ) ;
2004-07-18 00:24:25 +00:00
}
2010-10-18 15:40:51 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
/* add the capture filename to the "Recent Files" menu */
/* (will change nothing, if this filename is already in the menu) */
2009-01-22 21:26:54 +00:00
/*
* XXX - We might want to call SHAddToRecentDocs under Windows 7 :
* http : //stackoverflow.com/questions/437212/how-do-you-register-a-most-recently-used-list-with-windows-in-preparation-for-win
*/
2004-07-18 00:24:25 +00:00
void
add_menu_recent_capture_file ( gchar * cf_name ) {
2009-04-11 18:03:11 +00:00
gchar * curr ;
gchar * absolute ;
/* if this filename is an absolute path, we can use it directly */
if ( g_path_is_absolute ( cf_name ) ) {
add_menu_recent_capture_file_absolute ( cf_name ) ;
return ;
}
/* this filename is not an absolute path, prepend the current dir */
curr = g_get_current_dir ( ) ;
absolute = g_strdup_printf ( " %s%s%s " , curr , G_DIR_SEPARATOR_S , cf_name ) ;
add_menu_recent_capture_file_absolute ( absolute ) ;
g_free ( curr ) ;
g_free ( absolute ) ;
2004-07-18 00:24:25 +00:00
}
/* write all capture filenames of the menu to the user's recent file */
void
menu_recent_file_write_all ( FILE * rf ) {
GtkWidget * submenu_recent_files ;
GList * children ;
GList * child ;
gchar * cf_name ;
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-12 21:33:08 +00:00
GList * recent_files_list , * list ;
2010-10-03 19:11:10 +00:00
submenu_recent_files = gtk_ui_manager_get_widget ( ui_manager_main_menubar , MENU_RECENT_FILES_PATH ) ;
2010-10-01 21:46:16 +00:00
if ( ! submenu_recent_files ) {
2010-10-11 19:29:52 +00:00
g_warning ( " menu_recent_file_write_all: No submenu_recent_files found, path= MENU_RECENT_FILES_PATH " ) ;
2010-10-08 01:31:47 +00:00
}
2010-10-12 21:33:08 +00:00
recent_files_list = g_object_get_data ( G_OBJECT ( submenu_recent_files ) , " recent-files-list " ) ;
list = g_list_last ( recent_files_list ) ;
while ( list ! = NULL ) {
cf_name = list - > data ;
if ( cf_name ) {
if ( u3_active ( ) )
fprintf ( rf , RECENT_KEY_CAPTURE_FILE " : %s \n " , u3_contract_device_path ( cf_name ) ) ;
else
fprintf ( rf , RECENT_KEY_CAPTURE_FILE " : %s \n " , cf_name ) ;
}
list = g_list_previous ( list ) ;
}
g_list_free ( recent_files_list ) ;
return ;
2010-09-24 14:52:44 +00:00
# else
submenu_recent_files = gtk_item_factory_get_widget ( main_menu_factory , MENU_RECENT_FILES_PATH_OLD ) ;
# endif
2004-07-18 00:24:25 +00:00
/* we have to iterate backwards through the children's list,
* so we get the latest item last in the file .
* ( don ' t use gtk_container_foreach ( ) here , it will return the wrong iteration order ) */
2008-06-29 15:51:43 +00:00
children = gtk_container_get_children ( GTK_CONTAINER ( submenu_recent_files ) ) ;
2004-07-18 00:24:25 +00:00
child = g_list_last ( children ) ;
while ( child ! = NULL ) {
/* get capture filename from the menu item label */
2008-04-11 16:26:32 +00:00
cf_name = g_object_get_data ( G_OBJECT ( child - > data ) , MENU_RECENT_FILES_KEY ) ;
2004-07-18 00:24:25 +00:00
if ( cf_name ) {
2007-12-14 07:06:22 +00:00
if ( u3_active ( ) )
fprintf ( rf , RECENT_KEY_CAPTURE_FILE " : %s \n " , u3_contract_device_path ( cf_name ) ) ;
else
fprintf ( rf , RECENT_KEY_CAPTURE_FILE " : %s \n " , cf_name ) ;
2004-07-18 00:24:25 +00:00
}
child = g_list_previous ( child ) ;
}
g_list_free ( children ) ;
}
static void
2008-04-12 18:28:01 +00:00
show_hide_cb ( GtkWidget * w , gpointer data _U_ , gint action )
2004-07-18 00:24:25 +00:00
{
/* save current setting in recent */
2008-04-12 18:28:01 +00:00
switch ( action ) {
2010-10-08 02:38:47 +00:00
case ( SHOW_HIDE_MAIN_TOOLBAR ) :
2008-04-12 18:28:01 +00:00
recent . main_toolbar_show = GTK_CHECK_MENU_ITEM ( w ) - > active ;
break ;
2010-10-08 02:38:47 +00:00
case ( SHOW_HIDE_FILTER_TOOLBAR ) :
2008-04-12 18:28:01 +00:00
recent . filter_toolbar_show = GTK_CHECK_MENU_ITEM ( w ) - > active ;
break ;
2006-08-16 18:01:25 +00:00
# ifdef HAVE_AIRPCAP
2010-10-08 02:38:47 +00:00
case ( SHOW_HIDE_AIRPCAP_TOOLBAR ) :
2008-04-12 18:28:01 +00:00
recent . airpcap_toolbar_show = GTK_CHECK_MENU_ITEM ( w ) - > active ;
break ;
2006-08-16 18:01:25 +00:00
# endif
2010-10-08 02:38:47 +00:00
case ( SHOW_HIDE_STATUSBAR ) :
2008-04-12 18:28:01 +00:00
recent . statusbar_show = GTK_CHECK_MENU_ITEM ( w ) - > active ;
break ;
2010-10-08 02:38:47 +00:00
case ( SHOW_HIDE_PACKET_LIST ) :
2008-04-12 18:28:01 +00:00
recent . packet_list_show = GTK_CHECK_MENU_ITEM ( w ) - > active ;
break ;
2010-10-08 02:38:47 +00:00
case ( SHOW_HIDE_TREE_VIEW ) :
2008-04-12 18:28:01 +00:00
recent . tree_view_show = GTK_CHECK_MENU_ITEM ( w ) - > active ;
break ;
2010-10-08 02:38:47 +00:00
case ( SHOW_HIDE_BYTE_VIEW ) :
2008-04-12 18:28:01 +00:00
recent . byte_view_show = GTK_CHECK_MENU_ITEM ( w ) - > active ;
break ;
2010-10-08 02:38:47 +00:00
default :
g_assert_not_reached ( ) ;
2004-07-18 00:24:25 +00:00
}
2008-04-12 18:28:01 +00:00
main_widgets_show_or_hide ( ) ;
2004-07-18 00:24:25 +00:00
}
2010-10-04 08:43:15 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
2007-03-23 18:08:17 +00:00
static void
2008-04-12 18:28:01 +00:00
timestamp_format_cb ( GtkWidget * w _U_ , gpointer d _U_ , gint action )
2007-03-23 18:08:17 +00:00
{
2008-04-12 18:28:01 +00:00
if ( recent . gui_time_format ! = action ) {
timestamp_set_type ( action ) ;
recent . gui_time_format = action ;
2009-07-28 10:53:57 +00:00
# ifdef NEW_PACKET_LIST
2010-05-25 00:35:44 +00:00
/* This call adjusts column width */
cf_timestamp_auto_precision ( & cfile ) ;
new_packet_list_queue_draw ( ) ;
2009-07-28 10:53:57 +00:00
# else
2007-03-23 18:08:17 +00:00
cf_change_time_formats ( & cfile ) ;
2009-07-28 10:53:57 +00:00
# endif
2007-03-23 18:08:17 +00:00
}
}
2006-12-05 03:19:51 +00:00
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
static void
2008-04-12 18:28:01 +00:00
timestamp_precision_cb ( GtkWidget * w _U_ , gpointer d _U_ , gint action )
2005-08-25 21:29:54 +00:00
{
2008-04-12 18:28:01 +00:00
if ( recent . gui_time_precision ! = action ) {
2008-06-21 13:36:31 +00:00
/* the actual precision will be set in cf_change_time_formats() below */
if ( action = = TS_PREC_AUTO ) {
2008-04-12 18:28:01 +00:00
timestamp_set_precision ( TS_PREC_AUTO_SEC ) ;
} else {
timestamp_set_precision ( action ) ;
}
recent . gui_time_precision = action ;
2009-07-28 14:07:15 +00:00
# ifdef NEW_PACKET_LIST
2010-05-25 00:35:44 +00:00
/* This call adjusts column width */
cf_timestamp_auto_precision ( & cfile ) ;
new_packet_list_queue_draw ( ) ;
2009-07-28 14:07:15 +00:00
# else
2005-08-25 21:29:54 +00:00
cf_change_time_formats ( & cfile ) ;
2009-07-28 14:07:15 +00:00
# endif
2005-08-25 21:29:54 +00:00
}
}
2010-10-04 08:43:15 +00:00
# endif
2005-08-25 21:29:54 +00:00
2010-05-06 10:32:59 +00:00
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
}
2005-08-25 21:29:54 +00:00
2004-07-18 00:24:25 +00:00
void
menu_name_resolution_changed ( void )
{
GtkWidget * menu = NULL ;
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-09-25 18:44:20 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/NameResolution/EnableforMACLayer " ) ;
if ( ! menu ) {
g_warning ( " menu_name_resolution_changed: No menu found, path= /Menubar/ViewMenu/NameResolution/EnableforMACLayer " ) ;
}
2010-10-12 13:15:08 +00:00
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , gbl_resolv_flags & RESOLV_MAC ) ;
2010-09-24 14:52:44 +00:00
2010-09-25 18:44:20 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/NameResolution/EnableforNetworkLayer " ) ;
if ( ! menu ) {
g_warning ( " menu_name_resolution_changed: No menu found, path= /Menubar/ViewMenu/NameResolution/EnableforNetworkLayer " ) ;
}
2010-10-12 13:15:08 +00:00
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , gbl_resolv_flags & RESOLV_NETWORK ) ;
2004-07-18 00:24:25 +00:00
2010-09-25 18:44:20 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/NameResolution/EnableforTransportLayer " ) ;
if ( ! menu ) {
g_warning ( " menu_name_resolution_changed: No menu found, path= /Menubar/ViewMenu/NameResolution/EnableforTransportLayer " ) ;
}
2010-10-12 13:15:08 +00:00
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , gbl_resolv_flags & RESOLV_TRANSPORT ) ;
2010-09-24 14:52:44 +00:00
# else
2004-07-18 00:24:25 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Name Resolution/Enable for MAC Layer " ) ;
2010-10-12 13:15:08 +00:00
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , gbl_resolv_flags & RESOLV_MAC ) ;
2004-07-18 00:24:25 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Name Resolution/Enable for Network Layer " ) ;
2010-10-12 13:15:08 +00:00
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , gbl_resolv_flags & RESOLV_NETWORK ) ;
2004-07-18 00:24:25 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Name Resolution/Enable for Transport Layer " ) ;
2010-10-12 13:15:08 +00:00
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , gbl_resolv_flags & RESOLV_TRANSPORT ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
}
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
static void
2008-04-12 18:28:01 +00:00
name_resolution_cb ( GtkWidget * w , gpointer d _U_ , gint action )
2004-07-18 00:24:25 +00:00
{
if ( GTK_CHECK_MENU_ITEM ( w ) - > active ) {
2010-10-12 13:15:08 +00:00
gbl_resolv_flags | = action ;
2004-07-18 00:24:25 +00:00
} else {
2010-10-12 13:15:08 +00:00
gbl_resolv_flags & = ~ action ;
2004-07-18 00:24:25 +00:00
}
}
# ifdef HAVE_LIBPCAP
2005-04-16 10:53:09 +00:00
void
menu_auto_scroll_live_changed ( gboolean auto_scroll_live_in ) {
GtkWidget * menu ;
/* tell menu about it */
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-09-25 18:44:20 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/AutoScrollinLiveCapture " ) ;
if ( ! menu ) {
g_warning ( " menu_auto_scroll_live_changed: No menu found, path= /Menubar/ViewMenu/AutoScrollinLiveCapture " ) ;
}
2010-09-24 14:52:44 +00:00
# else
2005-04-16 10:53:09 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Auto Scroll in Live Capture " ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2005-04-16 10:53:09 +00:00
if ( ( ( gboolean ) GTK_CHECK_MENU_ITEM ( menu ) - > active ) ! = auto_scroll_live_in ) {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , auto_scroll_live_in ) ;
}
/* tell toolbar about it */
toolbar_auto_scroll_live_changed ( auto_scroll_live_in ) ;
/* change auto scroll */
if ( auto_scroll_live_in ! = auto_scroll_live ) {
auto_scroll_live = auto_scroll_live_in ;
}
}
2010-10-04 08:43:15 +00:00
# ifndef MAIN_MENU_USE_UIMANAGER
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
static void
2004-07-18 00:24:25 +00:00
auto_scroll_live_cb ( GtkWidget * w _U_ , gpointer d _U_ )
{
2005-04-16 10:53:09 +00:00
menu_auto_scroll_live_changed ( GTK_CHECK_MENU_ITEM ( w ) - > active ) ;
2004-07-18 00:24:25 +00:00
}
2010-10-08 02:38:47 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
2010-10-08 02:38:47 +00:00
# endif /*HAVE_LIBPCAP */
2010-10-04 08:43:15 +00:00
2005-04-16 10:53:09 +00:00
void
menu_colorize_changed ( gboolean packet_list_colorize ) {
GtkWidget * menu ;
/* tell menu about it */
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-09-25 18:44:20 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/ColorizePacketList " ) ;
if ( ! menu ) {
g_warning ( " menu_colorize_changed: No menu found, path= /Menubar/ViewMenu/ColorizePacketList " ) ;
}
2010-09-24 14:52:44 +00:00
# else
2005-04-16 10:53:09 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Colorize Packet List " ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2005-04-16 10:53:09 +00:00
if ( ( ( gboolean ) GTK_CHECK_MENU_ITEM ( menu ) - > active ) ! = packet_list_colorize ) {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , packet_list_colorize ) ;
}
/* tell toolbar about it */
toolbar_colorize_changed ( packet_list_colorize ) ;
/* change colorization */
if ( packet_list_colorize ! = recent . packet_list_colorize ) {
recent . packet_list_colorize = packet_list_colorize ;
color_filters_enable ( packet_list_colorize ) ;
2009-09-02 18:18:57 +00:00
# ifdef NEW_PACKET_LIST
2010-05-25 00:35:44 +00:00
new_packet_list_colorize_packets ( ) ;
2009-09-02 18:18:57 +00:00
# else
2005-04-16 10:53:09 +00:00
cf_colorize_packets ( & cfile ) ;
2009-07-20 06:21:35 +00:00
# endif
2005-04-16 10:53:09 +00:00
}
}
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
static void
2005-04-16 10:53:09 +00:00
colorize_cb ( GtkWidget * w , gpointer d _U_ )
2005-03-27 02:19:51 +00:00
{
2005-04-16 10:53:09 +00:00
menu_colorize_changed ( GTK_CHECK_MENU_ITEM ( w ) - > active ) ;
2005-03-27 02:19:51 +00:00
}
2005-04-16 10:53:09 +00:00
2004-07-18 00:24:25 +00:00
/* the recent file read has finished, update the menu corresponding */
void
menu_recent_read_finished ( void ) {
GtkWidget * menu = NULL ;
2010-09-29 16:09:42 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/MainToolbar " ) ;
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/MainToolbar " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . main_toolbar_show ) ;
}
2010-09-30 21:23:49 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/FilterToolbar " ) ;
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/FilterToolbar " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . filter_toolbar_show ) ;
} ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Main Toolbar " ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . main_toolbar_show ) ;
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Filter Toolbar " ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . filter_toolbar_show ) ;
2010-09-29 16:09:42 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER*/
2006-08-21 14:40:05 +00:00
# ifdef HAVE_AIRPCAP
2010-09-30 21:23:49 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/WirelessToolbar " ) ;
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/WirelessToolbar " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . airpcap_toolbar_show ) ;
}
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2007-12-14 07:06:22 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Wireless Toolbar " ) ;
2006-08-16 18:01:25 +00:00
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . airpcap_toolbar_show ) ;
2010-09-30 21:23:49 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
# endif /* HAVE_AIRPCAP */
2006-08-16 18:01:25 +00:00
2010-09-29 16:09:42 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
/* Fix me? */
2010-09-30 21:23:49 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/Statusbar " ) ;
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/Statusbar " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . statusbar_show ) ;
}
2010-09-30 21:23:49 +00:00
2010-10-08 01:31:47 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/PacketList " ) ;
2010-09-30 21:23:49 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/PacketList " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . packet_list_show ) ;
}
2010-09-30 21:23:49 +00:00
2010-10-08 01:31:47 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/PacketDetails " ) ;
2010-09-30 21:23:49 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/PacketDetails " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . tree_view_show ) ;
}
2010-09-30 21:23:49 +00:00
2010-10-08 01:31:47 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/PacketBytes " ) ;
2010-09-30 21:23:49 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/PacketBytes " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . byte_view_show ) ;
}
2010-09-30 21:23:49 +00:00
2010-10-08 01:31:47 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/ColorizePacketList " ) ;
2010-09-30 21:23:49 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/ColorizePacketList " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . packet_list_colorize ) ;
}
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Statusbar " ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . statusbar_show ) ;
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Packet List " ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . packet_list_show ) ;
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Packet Details " ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . tree_view_show ) ;
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Packet Bytes " ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . byte_view_show ) ;
2005-03-27 02:19:51 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Colorize Packet List " ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , recent . packet_list_colorize ) ;
2010-09-29 16:09:42 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER*/
2005-03-27 02:19:51 +00:00
2004-07-18 00:24:25 +00:00
menu_name_resolution_changed ( ) ;
# ifdef HAVE_LIBPCAP
2010-09-29 16:09:42 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/AutoScrollinLiveCapture " ) ;
2010-09-30 21:23:49 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/AutoScrollinLiveCapture " ) ;
2010-10-08 01:31:47 +00:00
} else {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , auto_scroll_live ) ;
}
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory , " /View/Auto Scroll in Live Capture " ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , auto_scroll_live ) ;
2010-09-29 16:09:42 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER*/
2010-10-08 02:38:47 +00:00
# endif /* HAVE_LIBPCAP */
2004-07-18 00:24:25 +00:00
main_widgets_rearrange ( ) ;
/* don't change the time format, if we had a command line value */
2005-08-25 21:29:54 +00:00
if ( timestamp_get_type ( ) ! = TS_NOT_SET ) {
recent . gui_time_format = timestamp_get_type ( ) ;
2004-07-18 00:24:25 +00:00
}
2010-09-29 16:09:42 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
/* XXX Fix me */
2010-10-08 02:38:47 +00:00
timestamp_set_type ( recent . gui_time_format ) ;
2010-10-01 14:20:59 +00:00
# ifdef NEW_PACKET_LIST
2010-10-08 02:38:47 +00:00
/* This call adjusts column width */
cf_timestamp_auto_precision ( & cfile ) ;
new_packet_list_queue_draw ( ) ;
# else /* NEW_PACKET_LIST */
cf_change_time_formats ( & cfile ) ;
# endif /* NEW_PACKET_LIST */
2010-10-01 14:20:59 +00:00
#if 0
/* This should not be needed as we set the active radioItem when we crate the actiongroup */
switch ( recent . gui_time_format ) {
case ( TS_ABSOLUTE_WITH_DATE ) :
2010-10-08 01:31:47 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/DateandTimeofDay " ) ;
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/TimeDisplayFormat/DateandTimeofDay " ) ;
}
2010-10-01 14:20:59 +00:00
break ;
case ( TS_ABSOLUTE ) :
2010-10-08 01:31:47 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/TimeofDay " ) ;
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/TimeDisplayFormat/TimeofDay " ) ;
}
2010-10-01 14:20:59 +00:00
break ;
case ( TS_RELATIVE ) :
2010-10-08 01:31:47 +00:00
g_warning ( " TS_RELATIVE " ) ;
action = gtk_ui_manager_get_action ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/SecondsSinceBeginningofCapture " ) ;
gtk_action_activate ( action ) ;
if ( gtk_action_is_sensitive ( action ) )
g_warning ( " ACTION IS SENSIBLE " ) ;
if ( ! action )
g_warning ( " NO ACTION " ) ;
2010-10-01 14:20:59 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/SecondsSinceBeginningofCapture " ) ;
2010-10-08 01:31:47 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/TimeDisplayFormat/SecondsSinceBeginningofCapture " ) ;
}
2010-10-01 14:20:59 +00:00
break ;
case ( TS_DELTA ) :
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/SecondsSincePreviousCapturedPacket " ) ;
2010-10-08 01:31:47 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/TimeDisplayFormat/SecondsSincePreviousCapturedPacket " ) ;
}
2010-10-01 14:20:59 +00:00
break ;
case ( TS_DELTA_DIS ) :
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/SecondsSincePreviousDisplayedPacket " ) ;
2010-10-08 01:31:47 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/TimeDisplayFormat/SecondsSincePreviousDisplayedPacket " ) ;
}
2010-10-01 14:20:59 +00:00
break ;
case ( TS_EPOCH ) :
2010-10-04 11:21:01 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/SecondsSinceEpoch " ) ;
2010-10-08 01:31:47 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/TimeDisplayFormat/SecondsSinceEpoch " ) ;
}
2010-10-01 14:20:59 +00:00
break ;
default :
g_assert_not_reached ( ) ;
}
/* set_active will not trigger the callback when activating an active item! */
recent . gui_time_format = - 1 ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , FALSE ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , TRUE ) ;
# endif /* 0 */
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2004-07-18 00:24:25 +00:00
switch ( recent . gui_time_format ) {
2005-08-25 21:29:54 +00:00
case ( TS_ABSOLUTE_WITH_DATE ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Date and Time of Day: 1970-01-01 01:02:03.123456 " ) ;
2004-07-18 00:24:25 +00:00
break ;
2005-08-25 21:29:54 +00:00
case ( TS_ABSOLUTE ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Time of Day: 01:02:03.123456 " ) ;
2004-07-18 00:24:25 +00:00
break ;
case ( TS_RELATIVE ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Seconds Since Beginning of Capture: 123.123456 " ) ;
2004-07-18 00:24:25 +00:00
break ;
case ( TS_DELTA ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2007-03-23 18:08:17 +00:00
" /View/Time Display Format/Seconds Since Previous Captured Packet: 1.123456 " ) ;
break ;
case ( TS_DELTA_DIS ) :
menu = gtk_item_factory_get_widget ( main_menu_factory ,
" /View/Time Display Format/Seconds Since Previous Displayed Packet: 1.123456 " ) ;
2004-07-18 00:24:25 +00:00
break ;
2006-12-05 03:19:51 +00:00
case ( TS_EPOCH ) :
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2006-12-09 09:32:21 +00:00
" /View/Time Display Format/Seconds Since Epoch (1970-01-01): 1234567890.123456 " ) ;
2006-12-05 03:19:51 +00:00
break ;
2004-07-18 00:24:25 +00:00
default :
g_assert_not_reached ( ) ;
}
2009-09-02 19:56:39 +00:00
/* set_active will not trigger the callback when activating an active item! */
recent . gui_time_format = - 1 ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , FALSE ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , TRUE ) ;
2010-09-29 16:09:42 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-01 14:20:59 +00:00
/* the actual precision will be set in cf_change_time_formats() below */
if ( recent . gui_time_precision = = TS_PREC_AUTO ) {
timestamp_set_precision ( TS_PREC_AUTO_SEC ) ;
} else {
timestamp_set_precision ( recent . gui_time_precision ) ;
}
# ifdef NEW_PACKET_LIST
/* This call adjusts column width */
cf_timestamp_auto_precision ( & cfile ) ;
new_packet_list_queue_draw ( ) ;
2010-10-08 02:38:47 +00:00
# else /* NEW_PACKET_LIST */
2010-10-01 14:20:59 +00:00
cf_change_time_formats ( & cfile ) ;
2010-10-08 02:38:47 +00:00
# endif /* NEW_PACKET_LIST */
# else /* MAIN_MENU_USE_UIMANAGER */
2005-08-25 21:29:54 +00:00
switch ( recent . gui_time_precision ) {
case ( TS_PREC_AUTO ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Automatic (File Format Precision) " ) ;
break ;
case ( TS_PREC_FIXED_SEC ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Seconds: 0 " ) ;
break ;
case ( TS_PREC_FIXED_DSEC ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Deciseconds: 0.1 " ) ;
break ;
case ( TS_PREC_FIXED_CSEC ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Centiseconds: 0.12 " ) ;
break ;
case ( TS_PREC_FIXED_MSEC ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Milliseconds: 0.123 " ) ;
break ;
case ( TS_PREC_FIXED_USEC ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Microseconds: 0.123456 " ) ;
break ;
case ( TS_PREC_FIXED_NSEC ) :
Add support for generating firewall ACL rules. MAC, IPv4, port, and
IPv4+port rules are supported along with several syntaxes: IOS standard,
IOS extended, ipfilter, ipfw, pf, and netsh. IPv6 is currently not
supported, but shouldn't be too difficult to add.
All of the rules were created using the documentation for each product.
None of them have been tested. For the time being, use them with
caution.
svn path=/trunk/; revision=18737
2006-07-14 20:14:39 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
2005-08-25 21:29:54 +00:00
" /View/Time Display Format/Nanoseconds: 0.123456789 " ) ;
break ;
default :
g_assert_not_reached ( ) ;
}
2009-09-02 21:04:41 +00:00
/* set_active will not trigger the callback when activating an active item! */
recent . gui_time_precision = - 1 ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , FALSE ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , TRUE ) ;
2010-09-29 16:09:42 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-09-02 21:04:41 +00:00
2010-05-06 10:32:59 +00:00
/* 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 ( ) ;
}
2010-09-29 16:09:42 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-04 11:21:01 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/TimeDisplayFormat/DisplaySecondsWithHoursAndMinutes " ) ;
2010-10-08 01:31:47 +00:00
if ( ! menu ) {
g_warning ( " menu_recent_read_finished: No menu found, path= /Menubar/ViewMenu/TimeDisplayFormat/DisplaySecondsWithHoursAndMinutes " ) ;
}
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-05-06 10:32:59 +00:00
menu = gtk_item_factory_get_widget ( main_menu_factory ,
" /View/Time Display Format/Display Seconds with hours and minutes " ) ;
2010-10-04 11:21:01 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-05-06 10:32:59 +00:00
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 ( ) ;
}
2005-04-16 10:53:09 +00:00
menu_colorize_changed ( recent . packet_list_colorize ) ;
2004-07-18 00:24:25 +00:00
}
2010-07-30 12:41:56 +00:00
gboolean
2004-07-18 00:24:25 +00:00
popup_menu_handler ( GtkWidget * widget , GdkEvent * event , gpointer data )
{
GtkWidget * menu = ( GtkWidget * ) data ;
GdkEventButton * event_button = NULL ;
gint row , column ;
if ( widget = = NULL | | event = = NULL | | data = = NULL ) {
return FALSE ;
}
/*
* If we ever want to make the menu differ based on what row
* and / or column we ' re above , we ' d use " eth_clist_get_selection_info() "
* to find the row and column number for the coordinates ; a CTree is ,
* I guess , like a CList with one column ( ? ) and the expander widget
* as a pixmap .
*/
/* Check if we are on packet_list object */
2008-04-11 16:26:32 +00:00
if ( widget = = g_object_get_data ( G_OBJECT ( popup_menu_object ) , E_MPACKET_LIST_KEY ) & &
2009-04-11 18:03:11 +00:00
( ( GdkEventButton * ) event ) - > button ! = 1 ) {
2009-07-28 20:46:23 +00:00
# ifdef NEW_PACKET_LIST
2009-08-14 19:35:01 +00:00
gint physical_row ;
if ( new_packet_list_get_event_row_column ( ( GdkEventButton * ) event , & physical_row , & row , & column ) ) {
2009-07-28 20:46:23 +00:00
# else
if ( packet_list_get_event_row_column ( widget , ( GdkEventButton * ) event , & row , & column ) ) {
# endif
2008-04-11 16:26:32 +00:00
g_object_set_data ( G_OBJECT ( popup_menu_object ) , E_MPACKET_LIST_ROW_KEY ,
2009-08-14 19:35:01 +00:00
# ifdef NEW_PACKET_LIST
2010-06-29 21:29:53 +00:00
GINT_TO_POINTER ( row ) ) ;
2009-08-14 19:35:01 +00:00
# else
2004-07-18 00:24:25 +00:00
GINT_TO_POINTER ( row ) ) ;
2009-08-14 19:35:01 +00:00
# endif
2008-04-11 16:26:32 +00:00
g_object_set_data ( G_OBJECT ( popup_menu_object ) , E_MPACKET_LIST_COL_KEY ,
2004-07-18 00:24:25 +00:00
GINT_TO_POINTER ( column ) ) ;
2009-07-28 20:46:23 +00:00
# ifdef NEW_PACKET_LIST
new_packet_list_set_selected_row ( row ) ;
# else
2004-07-18 00:24:25 +00:00
packet_list_set_selected_row ( row ) ;
2009-07-28 20:46:23 +00:00
# endif
2004-07-18 00:24:25 +00:00
}
}
/* Check if we are on tree_view object */
2010-01-29 19:09:01 +00:00
if ( widget = = tree_view_gbl ) {
2004-07-18 00:24:25 +00:00
tree_view_select ( widget , ( GdkEventButton * ) event ) ;
}
2008-11-18 16:39:49 +00:00
/* context menu handler */
if ( event - > type = = GDK_BUTTON_PRESS ) {
2004-07-18 00:24:25 +00:00
event_button = ( GdkEventButton * ) event ;
2010-07-27 18:59:30 +00:00
/* To quote the "Gdk Event Structures" doc:
2004-07-18 00:24:25 +00:00
* " Normally button 1 is the left mouse button, 2 is the middle button, and 3 is the right button " */
if ( event_button - > button = = 3 ) {
2009-11-05 10:16:49 +00:00
gtk_menu_popup ( GTK_MENU ( menu ) , NULL , NULL , NULL , NULL ,
event_button - > button ,
event_button - > time ) ;
2008-04-11 05:03:33 +00:00
g_signal_stop_emission_by_name ( widget , " button_press_event " ) ;
2004-07-18 00:24:25 +00:00
return TRUE ;
}
}
2009-11-05 10:16:49 +00:00
/* Check if we are on byte_view object */
2010-01-29 19:09:01 +00:00
if ( widget = = get_notebook_bv_ptr ( byte_nb_ptr_gbl ) ) {
2009-11-05 10:16:49 +00:00
byte_view_select ( widget , ( GdkEventButton * ) event ) ;
}
2004-07-18 00:24:25 +00:00
/* GDK_2BUTTON_PRESS is a doubleclick -> expand/collapse tree row */
/* GTK version 1 seems to be doing this automatically */
2010-01-29 19:09:01 +00:00
if ( widget = = tree_view_gbl & & event - > type = = GDK_2BUTTON_PRESS ) {
2004-07-18 00:24:25 +00:00
GtkTreePath * path ;
if ( gtk_tree_view_get_path_at_pos ( GTK_TREE_VIEW ( widget ) ,
( gint ) ( ( ( GdkEventButton * ) event ) - > x ) ,
( gint ) ( ( ( GdkEventButton * ) event ) - > y ) ,
& path , NULL , NULL , NULL ) )
{
if ( gtk_tree_view_row_expanded ( GTK_TREE_VIEW ( widget ) , path ) )
gtk_tree_view_collapse_row ( GTK_TREE_VIEW ( widget ) , path ) ;
else
gtk_tree_view_expand_row ( GTK_TREE_VIEW ( widget ) , path ,
FALSE ) ;
gtk_tree_path_free ( path ) ;
}
}
return FALSE ;
}
/* Enable or disable menu items based on whether you have a capture file
2007-03-14 19:30:19 +00:00
you ' ve finished reading and , if you have one , whether it ' s been saved
and whether it could be saved except by copying the raw packet data . */
2004-07-18 00:24:25 +00:00
void
2007-03-14 19:30:19 +00:00
set_menus_for_capture_file ( capture_file * cf )
2004-07-18 00:24:25 +00:00
{
2009-04-11 18:03:11 +00:00
if ( cf = = NULL ) {
/* We have no capture file */
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Merge " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Close " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Save " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/SaveAs " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Export " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/Reload " , FALSE ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Merge... " , FALSE ) ;
set_menu_sensitivity_old ( " /File/Close " , FALSE ) ;
set_menu_sensitivity_old ( " /File/Save " , FALSE ) ;
set_menu_sensitivity_old ( " /File/Save As... " , FALSE ) ;
set_menu_sensitivity_old ( " /File/Export " , FALSE ) ;
set_menu_sensitivity_old ( " /View/Reload " , FALSE ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-04-11 18:03:11 +00:00
set_toolbar_for_capture_file ( FALSE ) ;
set_toolbar_for_unsaved_capture_file ( FALSE ) ;
} else {
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Merge " , TRUE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Close " , TRUE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Save " , ! cf - > user_saved ) ;
/*
* " Save As... " works only if we can write the file out in at least
* one format ( so we can save the whole file or just a subset ) or
* if we have an unsaved capture ( so writing the whole file out
* with a raw data copy makes sense ) .
*/
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/SaveAs " ,
cf_can_save_as ( cf ) | | ! cf - > user_saved ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Export " , TRUE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/Reload " , TRUE ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Merge... " , TRUE ) ;
set_menu_sensitivity_old ( " /File/Close " , TRUE ) ;
set_menu_sensitivity_old ( " /File/Save " , ! cf - > user_saved ) ;
2009-04-11 18:03:11 +00:00
/*
* " Save As... " works only if we can write the file out in at least
* one format ( so we can save the whole file or just a subset ) or
* if we have an unsaved capture ( so writing the whole file out
* with a raw data copy makes sense ) .
*/
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Save As... " ,
2009-04-11 18:03:11 +00:00
cf_can_save_as ( cf ) | | ! cf - > user_saved ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Export " , TRUE ) ;
set_menu_sensitivity_old ( " /View/Reload " , TRUE ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-04-11 18:03:11 +00:00
set_toolbar_for_unsaved_capture_file ( ! cf - > user_saved ) ;
set_toolbar_for_capture_file ( TRUE ) ;
}
2004-07-18 00:24:25 +00:00
}
/* Enable or disable menu items based on whether there's a capture in
progress . */
void
set_menus_for_capture_in_progress ( gboolean capture_in_progress )
{
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Open " ,
! capture_in_progress ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/OpenRecent " ,
! capture_in_progress ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Export " ,
capture_in_progress ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Set " ,
! capture_in_progress ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Open... " ,
2009-04-11 18:03:11 +00:00
! capture_in_progress ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Open Recent " ,
2009-04-11 18:03:11 +00:00
! capture_in_progress ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Export " ,
2009-04-11 18:03:11 +00:00
capture_in_progress ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/File Set " ,
2010-09-24 12:39:15 +00:00
! capture_in_progress ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-23 18:07:49 +00:00
set_menu_sensitivity ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/SortAscending " ,
! capture_in_progress ) ;
set_menu_sensitivity ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/SortDescending " ,
! capture_in_progress ) ;
set_menu_sensitivity ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/NoSorting " ,
! capture_in_progress ) ;
2004-07-18 00:24:25 +00:00
# ifdef HAVE_LIBPCAP
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/CaptureMenu/Options " ,
! capture_in_progress ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/CaptureMenu/Start " ,
! capture_in_progress ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/CaptureMenu/Stop " ,
capture_in_progress ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/CaptureMenu/Restart " ,
capture_in_progress ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Capture/Options... " ,
2009-04-11 18:03:11 +00:00
! capture_in_progress ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Capture/Start " ,
2009-04-11 18:03:11 +00:00
! capture_in_progress ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Capture/Stop " ,
2009-04-11 18:03:11 +00:00
capture_in_progress ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Capture/Restart " ,
2009-04-11 18:03:11 +00:00
capture_in_progress ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-04-11 18:03:11 +00:00
set_toolbar_for_capture_in_progress ( capture_in_progress ) ;
set_capture_if_dialog_for_capture_in_progress ( capture_in_progress ) ;
2004-12-02 00:12:54 +00:00
# endif /* HAVE_LIBPCAP */
2004-07-18 00:24:25 +00:00
}
/* Enable or disable menu items based on whether you have some captured
packets . */
static gboolean
walk_menu_tree_for_captured_packets ( GList * node ,
gboolean have_captured_packets )
{
2009-04-11 18:03:11 +00:00
gboolean is_enabled ;
GList * child ;
menu_item_t * node_data = node - > data ;
/*
* Is this a leaf node or an interior node ?
*/
if ( node_data - > children = = NULL ) {
/*
* It ' s a leaf node .
*
* If it has no " selected_packet_enabled() " or
* " selected_tree_row_enabled() " routines , we enable
* it . This allows tap windows to be popped up even
* if you have no capture file ; this is done to let
* the user pop up multiple tap windows before reading
* in a capture file , so that they can be processed in
* parallel while the capture file is being read rather
* than one at at time as you pop up the windows , and to
* let the user pop up tap windows before starting an
* " Update list of packets in real time " capture , so that
* the statistics can be displayed while the capture is
* in progress .
*
* If it has either of those routines , we disable it for
* now - as long as , when a capture is first available ,
* we don ' t get called after a packet or tree row is
* selected , that ' s OK .
* XXX - that should be done better .
*/
if ( node_data - > selected_packet_enabled = = NULL & &
node_data - > selected_tree_row_enabled = = NULL )
node_data - > enabled = TRUE ;
else
node_data - > enabled = FALSE ;
} else {
/*
* It ' s an interior node ; call
* " walk_menu_tree_for_captured_packets() " on all its
* children and , if any of them are enabled , enable
* this node , otherwise disable it .
*
* XXX - should we just leave all interior nodes enabled ?
* Which is a better UI choice ?
*/
is_enabled = FALSE ;
for ( child = node_data - > children ; child ! = NULL ; child =
child - > next ) {
if ( walk_menu_tree_for_captured_packets ( child ,
have_captured_packets ) )
is_enabled = TRUE ;
}
node_data - > enabled = is_enabled ;
}
/*
* The root node doesn ' t correspond to a menu tree item ; it
* has a null name pointer .
*/
if ( node_data - > name ! = NULL ) {
2010-09-28 20:27:28 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , node_data - > name ,
node_data - > enabled ) ;
# else
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( node_data - > name ,
2009-04-11 18:03:11 +00:00
node_data - > enabled ) ;
2010-09-28 20:27:28 +00:00
# endif
2009-04-11 18:03:11 +00:00
}
return node_data - > enabled ;
2004-07-18 00:24:25 +00:00
}
void
set_menus_for_captured_packets ( gboolean have_captured_packets )
{
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Print " ,
have_captured_packets ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Print... " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/Print " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-09-16 13:12:02 +00:00
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/FindPacket " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/FindNext " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/FindPrevious " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/ZoomIn " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/ZoomOut " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/NormalSize " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/GotoCorrespondingPacket " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/PreviousPacket " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/NextPacket " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/FirstPacket " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/LastPacket " ,
have_captured_packets ) ;
2010-10-01 22:46:30 +00:00
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/PreviousPacketInConversation " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/NextPacketInConversation " ,
have_captured_packets ) ;
2010-09-24 14:52:44 +00:00
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/StatisticsMenu/Summary " ,
have_captured_packets ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/StatisticsMenu/ProtocolHierarchy " ,
have_captured_packets ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Find Packet... " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Find Next " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Find Previous " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Zoom In " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Zoom Out " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Normal Size " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Go/Go to Packet... " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Go/Previous Packet " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Go/Next Packet " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Go/First Packet " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Go/Last Packet " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Go/Previous Packet In Conversation " ,
2010-10-01 22:46:30 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Go/Next Packet In Conversation " ,
2010-10-01 22:46:30 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Statistics/Summary " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Statistics/Protocol Hierarchy " ,
2009-04-11 18:03:11 +00:00
have_captured_packets ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-04-11 18:03:11 +00:00
walk_menu_tree_for_captured_packets ( tap_menu_tree_root ,
have_captured_packets ) ;
set_toolbar_for_captured_packets ( have_captured_packets ) ;
2004-07-18 00:24:25 +00:00
}
/* 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 ( GList * node , frame_data * fd ,
epan_dissect_t * edt )
{
2009-04-11 18:03:11 +00:00
gboolean is_enabled ;
GList * child ;
menu_item_t * node_data = node - > data ;
/*
* Is this a leaf node or an interior node ?
*/
if ( node_data - > children = = NULL ) {
/*
* It ' s a leaf node .
*
* If it has no " selected_packet_enabled() " routine ,
* leave its enabled / disabled status alone - it
* doesn ' t depend on whether we have a packet selected
* or not or on the selected packet .
*
* If it has a " selected_packet_enabled() " routine ,
* call it and set the item ' s enabled / disabled status
* based on its return value .
*/
if ( node_data - > selected_packet_enabled ! = NULL )
node_data - > enabled = node_data - > selected_packet_enabled ( fd , edt , node_data - > callback_data ) ;
} else {
/*
* It ' s an interior node ; call
* " walk_menu_tree_for_selected_packet() " on all its
* children and , if any of them are enabled , enable
* this node , otherwise disable it .
*
* XXX - should we just leave all interior nodes enabled ?
* Which is a better UI choice ?
*/
is_enabled = FALSE ;
for ( child = node_data - > children ; child ! = NULL ; child =
child - > next ) {
if ( walk_menu_tree_for_selected_packet ( child , fd , edt ) )
is_enabled = TRUE ;
}
node_data - > enabled = is_enabled ;
}
/*
* The root node doesn ' t correspond to a menu tree item ; it
* has a null name pointer .
*/
if ( node_data - > name ! = NULL ) {
2010-09-28 20:27:28 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , node_data - > name ,
node_data - > enabled ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( node_data - > name ,
2009-04-11 18:03:11 +00:00
node_data - > enabled ) ;
2010-09-28 20:27:28 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-04-11 18:03:11 +00:00
}
return node_data - > enabled ;
2004-07-18 00:24:25 +00:00
}
2007-12-14 07:06:22 +00:00
gboolean
2006-02-14 14:53:03 +00:00
packet_is_ssl ( epan_dissect_t * edt )
{
2009-04-11 18:03:11 +00:00
GPtrArray * array ;
int ssl_id ;
gboolean is_ssl ;
if ( ! edt | | ! edt - > tree )
return FALSE ;
ssl_id = proto_get_id_by_filter_name ( " ssl " ) ;
if ( ssl_id < 0 )
return FALSE ;
array = proto_find_finfo ( edt - > tree , ssl_id ) ;
is_ssl = ( array - > len > 0 ) ? TRUE : FALSE ;
2009-09-01 17:09:36 +00:00
g_ptr_array_free ( array , TRUE ) ;
2009-04-11 18:03:11 +00:00
return is_ssl ;
2006-02-14 14:53:03 +00:00
}
2004-07-18 00:24:25 +00:00
void
set_menus_for_selected_packet ( capture_file * cf )
{
2010-08-16 23:26:36 +00:00
/* Making the menu context-sensitive allows for easier selection of the
desired item and has the added benefit , with large captures , of
avoiding needless looping through huge lists for marked , ignored ,
2010-08-18 07:48:37 +00:00
or time - referenced packets . */
2010-08-16 23:26:36 +00:00
gboolean is_ssl = packet_is_ssl ( cf - > edt ) ;
gboolean frame_selected = cf - > current_frame ! = NULL ;
/* A frame is selected */
gboolean have_marked = frame_selected & & cf - > marked_count > 0 ;
/* We have marked frames. (XXX - why check frame_selected?) */
gboolean another_is_marked = have_marked & &
! ( cf - > marked_count = = 1 & & cf - > current_frame - > flags . marked ) ;
/* We have a marked frame other than the current frame (i.e.,
we have at least one marked frame , and either there ' s more
than one marked frame or the current frame isn ' t marked ) . */
gboolean have_time_ref = cf - > ref_time_count > 0 ;
gboolean another_is_time_ref = frame_selected & & have_time_ref & &
! ( cf - > ref_time_count = = 1 & & cf - > current_frame - > flags . ref_time ) ;
/* We have a time reference frame other than the current frame (i.e.,
we have at least one time reference frame , and either there ' s more
than one time reference frame or the current frame isn ' t a
time reference frame ) . ( XXX - why check frame_selected ? ) */
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/MarkPacket " ,
frame_selected ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Mark Packet (toggle) " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-13 20:21:41 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/MarkPacket " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/MarkAllDisplayedPackets " ,
2010-09-25 18:44:20 +00:00
cf - > displayed_count > 0 ) ;
2010-09-24 14:52:44 +00:00
/* Unlike un-ignore, do not allow unmark of all frames when no frames are displayed */
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/UnmarkAllPackets " ,
have_marked ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/FindNextMark " ,
another_is_marked ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/FindPreviousMark " ,
another_is_marked ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/IgnorePacket " ,
frame_selected ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Mark All Displayed Packets (toggle) " ,
2010-09-25 18:44:20 +00:00
cf - > displayed_count > 0 ) ;
2010-08-18 07:48:37 +00:00
/* Unlike un-ignore, do not allow unmark of all frames when no frames are displayed */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Unmark All Packets " ,
2010-08-16 23:26:36 +00:00
have_marked ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Find Next Mark " ,
2010-08-16 23:26:36 +00:00
another_is_marked ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Find Previous Mark " ,
2010-08-16 23:26:36 +00:00
another_is_marked ) ;
2010-08-16 18:17:45 +00:00
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Ignore Packet (toggle) " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-10-07 15:23:45 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/IgnorePacket " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/IgnoreAllDisplayedPackets " ,
2010-09-25 18:44:20 +00:00
cf - > displayed_count > 0 & & cf - > displayed_count ! = cf - > count ) ;
2010-09-24 14:52:44 +00:00
/* Allow un-ignore of all frames even with no frames currently displayed */
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/Un-IgnoreAllPackets " ,
cf - > ignored_count > 0 ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/SetTimeReference " ,
frame_selected ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Ignore All Displayed Packets (toggle) " ,
2010-09-25 18:44:20 +00:00
cf - > displayed_count > 0 & & cf - > displayed_count ! = cf - > count ) ;
2010-08-16 23:26:36 +00:00
/* Allow un-ignore of all frames even with no frames currently displayed */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Un-Ignore All Packets " ,
2010-08-16 18:17:45 +00:00
cf - > ignored_count > 0 ) ;
2010-08-30 16:10:01 +00:00
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Set Time Reference (toggle) " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-17 08:48:19 +00:00
# ifdef NEW_PACKET_LIST
2010-09-28 20:27:28 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-09-29 16:09:42 +00:00
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/Un-TimeReferenceAllPackets " ,
2010-09-28 20:27:28 +00:00
have_time_ref ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Un-Time Reference All Packets " ,
2010-08-16 23:26:36 +00:00
have_time_ref ) ;
2010-09-28 20:27:28 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
# endif /* NEW_PACKET_LIST */
2010-09-13 20:21:41 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/SetTimeReference " ,
2010-09-12 19:26:42 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/FindNextTimeReference " ,
another_is_time_ref ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/FindPreviousTimeReference " ,
another_is_time_ref ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/ResizeAllColumns " ,
frame_selected ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/CollapseAll " ,
frame_selected ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Find Next Time Reference " ,
2010-08-16 23:26:36 +00:00
another_is_time_ref ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Find Previous Time Reference " ,
2010-08-16 23:26:36 +00:00
another_is_time_ref ) ;
2010-08-30 16:10:01 +00:00
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Resize All Columns " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Collapse All " ,
2010-09-12 19:26:42 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/CollapseAll " ,
2010-09-12 19:26:42 +00:00
frame_selected ) ;
2010-09-28 20:27:28 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-09-29 16:09:42 +00:00
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/ExpandAll " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Expand All " ,
2010-09-28 20:27:28 +00:00
frame_selected ) ;
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ExpandAll " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/ColorizeConversation " ,
frame_selected ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/ResetColoring1-10 " ,
tmp_color_filters_used ( ) ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/ShowPacketinNewWindow " ,
frame_selected ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Colorize Conversation " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Reset Coloring 1-10 " ,
2009-04-11 18:03:11 +00:00
tmp_color_filters_used ( ) ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Show Packet in New Window " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ShowPacketinNewWindow " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ManuallyResolveAddress " ,
2010-08-16 23:26:36 +00:00
frame_selected ? ( ( cf - > edt - > pi . ethertype = = ETHERTYPE_IP ) | | ( cf - > edt - > pi . ethertype = = ETHERTYPE_IPv6 ) ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/SCTP " ,
2010-08-16 23:26:36 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_SCTP ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/FollowTCPStream " ,
2010-08-16 23:26:36 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_TCP ) : FALSE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/FollowTCPStream " ,
2010-08-16 23:26:36 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_TCP ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/FollowUDPStream " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_UDP ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/FollowSSLStream " ,
2010-09-12 19:26:42 +00:00
frame_selected ? is_ssl : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/FollowSSLStream " ,
2010-09-12 19:26:42 +00:00
frame_selected ? is_ssl : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ConversationFilter " ,
2010-09-12 19:26:42 +00:00
frame_selected ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ConversationFilter/Ethernet " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( cf - > edt - > pi . dl_src . type = = AT_ETHER ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ConversationFilter/IP " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( ( cf - > edt - > pi . ethertype = = ETHERTYPE_IP ) | | ( cf - > edt - > pi . ethertype = = ETHERTYPE_IPv6 ) ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ConversationFilter/TCP " ,
2010-08-16 23:26:36 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_TCP ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ConversationFilter/UDP " ,
2010-08-16 23:26:36 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_UDP ) : FALSE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/FollowUDPStream " ,
2010-08-16 23:26:36 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_UDP ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ConversationFilter/PN-CBA " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( cf - > edt - > pi . profinet_type ! = 0 & & cf - > edt - > pi . profinet_type < 10 ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ColorizeConversation " ,
2010-09-12 19:26:42 +00:00
frame_selected ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ColorizeConversation/Ethernet " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( cf - > edt - > pi . dl_src . type = = AT_ETHER ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ColorizeConversation/IP " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( ( cf - > edt - > pi . ethertype = = ETHERTYPE_IP ) | | ( cf - > edt - > pi . ethertype = = ETHERTYPE_IPv6 ) ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ColorizeConversation/TCP " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_TCP ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ColorizeConversation/UDP " ,
2010-08-16 23:26:36 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_UDP ) : FALSE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ColorizeConversation/PN-CBA " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( cf - > edt - > pi . profinet_type ! = 0 & & cf - > edt - > pi . profinet_type < 10 ) : FALSE ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/DecodeAs " ,
2010-09-12 19:26:42 +00:00
frame_selected & & decode_as_ok ( ) ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/DecodeAs " ,
2010-09-12 19:26:42 +00:00
frame_selected & & decode_as_ok ( ) ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/Copy " ,
2010-09-12 19:26:42 +00:00
frame_selected ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/ApplyAsFilter " ,
2010-09-12 19:26:42 +00:00
frame_selected ) ;
2010-09-14 20:50:03 +00:00
set_menu_sensitivity ( ui_manager_packet_list_menu , " /PacketListMenuPopup/PrepareaFilter " ,
2010-09-12 19:26:42 +00:00
frame_selected ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ResolveName " ,
2010-10-12 13:15:08 +00:00
frame_selected & & ( gbl_resolv_flags & RESOLV_ALL_ADDRS ) ! = RESOLV_ALL_ADDRS ) ;
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/AnalyzeMenu/FollowTCPStream " ,
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_TCP ) : FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/AnalyzeMenu/FollowUDPStream " ,
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_UDP ) : FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/AnalyzeMenu/FollowSSLStream " ,
frame_selected ? is_ssl : FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/AnalyzeMenu/DecodeAs " ,
frame_selected & & decode_as_ok ( ) ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/NameResolution/ResolveName " ,
2010-10-12 13:15:08 +00:00
frame_selected & & ( gbl_resolv_flags & RESOLV_ALL_ADDRS ) ! = RESOLV_ALL_ADDRS ) ;
2010-09-24 14:52:44 +00:00
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ToolsMenu/FirewallACLRules " ,
frame_selected ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Analyze/Follow TCP Stream " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_TCP ) : FALSE ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Analyze/Follow UDP Stream " ,
2010-09-12 19:26:42 +00:00
frame_selected ? ( cf - > edt - > pi . ipproto = = IP_PROTO_UDP ) : FALSE ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Analyze/Follow SSL Stream " ,
2010-09-12 19:26:42 +00:00
frame_selected ? is_ssl : FALSE ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Analyze/Decode As... " ,
2010-09-12 19:26:42 +00:00
frame_selected & & decode_as_ok ( ) ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Name Resolution/Resolve Name " ,
2010-10-12 13:15:08 +00:00
frame_selected & & ( gbl_resolv_flags & RESOLV_ALL_ADDRS ) ! = RESOLV_ALL_ADDRS ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Tools/Firewall ACL Rules " ,
2010-08-16 23:26:36 +00:00
frame_selected ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-04-11 18:03:11 +00:00
walk_menu_tree_for_selected_packet ( tap_menu_tree_root , cf - > current_frame ,
cf - > edt ) ;
2004-07-18 00:24:25 +00:00
}
/* Enable or disable menu items based on whether a tree row is selected
and , if so , on the properties of the tree row . */
static gboolean
walk_menu_tree_for_selected_tree_row ( GList * node , field_info * fi )
{
2009-04-11 18:03:11 +00:00
gboolean is_enabled ;
GList * child ;
menu_item_t * node_data = node - > data ;
/*
* Is this a leaf node or an interior node ?
*/
if ( node_data - > children = = NULL ) {
/*
* It ' s a leaf node .
*
* If it has no " selected_tree_row_enabled() " routine ,
* leave its enabled / disabled status alone - it
* doesn ' t depend on whether we have a tree row selected
* or not or on the selected tree row .
*
* If it has a " selected_tree_row_enabled() " routine ,
* call it and set the item ' s enabled / disabled status
* based on its return value .
*/
if ( node_data - > selected_tree_row_enabled ! = NULL )
node_data - > enabled = node_data - > selected_tree_row_enabled ( fi , node_data - > callback_data ) ;
} else {
/*
* It ' s an interior node ; call
* " walk_menu_tree_for_selected_tree_row() " on all its
* children and , if any of them are enabled , enable
* this node , otherwise disable it .
*
* XXX - should we just leave all interior nodes enabled ?
* Which is a better UI choice ?
*/
is_enabled = FALSE ;
for ( child = node_data - > children ; child ! = NULL ; child =
child - > next ) {
if ( walk_menu_tree_for_selected_tree_row ( child , fi ) )
is_enabled = TRUE ;
}
node_data - > enabled = is_enabled ;
}
/*
* The root node doesn ' t correspond to a menu tree item ; it
* has a null name pointer .
*/
if ( node_data - > name ! = NULL ) {
2010-09-24 14:52:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar , node_data - > name ,
node_data - > enabled ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( node_data - > name ,
2009-04-11 18:03:11 +00:00
node_data - > enabled ) ;
2010-09-24 14:52:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-04-11 18:03:11 +00:00
}
return node_data - > enabled ;
2004-07-18 00:24:25 +00:00
}
2008-11-26 23:28:06 +00:00
static void
menu_prefs_toggle_bool ( GtkWidget * w , gpointer data )
{
2009-04-11 18:03:11 +00:00
gboolean * value = data ;
module_t * module = g_object_get_data ( G_OBJECT ( w ) , " module " ) ;
module - > prefs_changed = TRUE ;
* value = ! ( * value ) ;
prefs_apply ( module ) ;
if ( ! prefs . gui_use_pref_save ) {
prefs_main_write ( ) ;
}
2009-05-04 21:13:14 +00:00
redissect_packets ( ) ;
2008-11-26 23:28:06 +00:00
}
static void
menu_prefs_change_enum ( GtkWidget * w , gpointer data )
{
2009-04-11 18:03:11 +00:00
gint * value = data ;
module_t * module = g_object_get_data ( G_OBJECT ( w ) , " module " ) ;
gint new_value = GPOINTER_TO_INT ( g_object_get_data ( G_OBJECT ( w ) , " enumval " ) ) ;
2008-11-26 23:28:06 +00:00
2009-04-11 18:03:11 +00:00
if ( ! gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM ( w ) ) )
return ;
2009-02-23 14:24:44 +00:00
2009-04-11 18:03:11 +00:00
if ( * value ! = new_value ) {
module - > prefs_changed = TRUE ;
* value = new_value ;
2008-11-26 23:28:06 +00:00
2009-04-11 18:03:11 +00:00
prefs_apply ( module ) ;
if ( ! prefs . gui_use_pref_save ) {
prefs_main_write ( ) ;
}
2009-05-04 21:13:14 +00:00
redissect_packets ( ) ;
2008-11-28 21:22:25 +00:00
}
2008-11-26 23:28:06 +00:00
}
2009-06-13 23:32:08 +00:00
void
menu_prefs_reset ( void )
{
2010-09-12 19:26:42 +00:00
g_free ( g_object_get_data ( G_OBJECT ( ui_manager_tree_view_menu ) , " menu_abbrev " ) ) ;
g_object_set_data ( G_OBJECT ( ui_manager_tree_view_menu ) , " menu_abbrev " , NULL ) ;
2009-06-13 23:32:08 +00:00
}
2009-03-08 13:19:49 +00:00
static void
menu_prefs_change_ok ( GtkWidget * w , gpointer parent_w )
{
2009-04-11 18:03:11 +00:00
GtkWidget * entry = g_object_get_data ( G_OBJECT ( w ) , " entry " ) ;
module_t * module = g_object_get_data ( G_OBJECT ( w ) , " module " ) ;
pref_t * pref = g_object_get_data ( G_OBJECT ( w ) , " pref " ) ;
const gchar * new_value = gtk_entry_get_text ( GTK_ENTRY ( entry ) ) ;
range_t * newrange ;
gchar * p ;
guint uval ;
switch ( pref - > type ) {
case PREF_UINT :
uval = strtoul ( new_value , & p , pref - > info . base ) ;
if ( p = = new_value | | * p ! = ' \0 ' ) {
simple_dialog ( ESD_TYPE_ERROR , ESD_BTN_OK ,
" The value \" %s \" isn't a valid number. " ,
new_value ) ;
return ;
}
if ( * pref - > varp . uint ! = uval ) {
module - > prefs_changed = TRUE ;
* pref - > varp . uint = uval ;
}
break ;
case PREF_STRING :
if ( strcmp ( * pref - > varp . string , new_value ) ! = 0 ) {
module - > prefs_changed = TRUE ;
g_free ( ( void * ) * pref - > varp . string ) ;
* pref - > varp . string = g_strdup ( new_value ) ;
}
break ;
case PREF_RANGE :
if ( range_convert_str ( & newrange , new_value , pref - > info . max_value ) ! = CVT_NO_ERROR ) {
simple_dialog ( ESD_TYPE_ERROR , ESD_BTN_OK ,
" The value \" %s \" isn't a valid range. " ,
new_value ) ;
return ;
}
if ( ! ranges_are_equal ( * pref - > varp . range , newrange ) ) {
module - > prefs_changed = TRUE ;
g_free ( * pref - > varp . range ) ;
* pref - > varp . range = newrange ;
} else {
g_free ( newrange ) ;
}
break ;
default :
g_assert_not_reached ( ) ;
break ;
2009-03-08 13:19:49 +00:00
}
2009-04-11 18:03:11 +00:00
if ( module - > prefs_changed ) {
/* Ensure we reload the sub menu */
2009-06-13 23:32:08 +00:00
menu_prefs_reset ( ) ;
2009-04-11 18:03:11 +00:00
prefs_apply ( module ) ;
if ( ! prefs . gui_use_pref_save ) {
prefs_main_write ( ) ;
}
2009-05-04 21:13:14 +00:00
redissect_packets ( ) ;
2009-03-08 13:19:49 +00:00
}
2009-04-11 18:03:11 +00:00
window_destroy ( GTK_WIDGET ( parent_w ) ) ;
2009-03-08 13:19:49 +00:00
}
static void
menu_prefs_change_cancel ( GtkWidget * w _U_ , gpointer parent_w )
{
2009-04-11 18:03:11 +00:00
window_destroy ( GTK_WIDGET ( parent_w ) ) ;
2009-03-08 13:19:49 +00:00
}
2010-05-25 00:35:44 +00:00
static void
2009-03-08 13:19:49 +00:00
menu_prefs_edit_dlg ( GtkWidget * w , gpointer data )
{
2009-04-11 18:03:11 +00:00
pref_t * pref = data ;
module_t * module = g_object_get_data ( G_OBJECT ( w ) , " module " ) ;
2009-04-24 16:51:38 +00:00
gchar * value = NULL ;
2009-04-11 18:03:11 +00:00
GtkWidget * win , * main_tb , * main_vb , * bbox , * cancel_bt , * ok_bt ;
GtkWidget * entry , * label ;
GtkTooltips * tooltips ;
switch ( pref - > type ) {
case PREF_UINT :
switch ( pref - > info . base ) {
case 8 :
value = g_strdup_printf ( " %o " , * pref - > varp . uint ) ;
break ;
case 10 :
value = g_strdup_printf ( " %u " , * pref - > varp . uint ) ;
break ;
case 16 :
value = g_strdup_printf ( " %x " , * pref - > varp . uint ) ;
break ;
default :
g_assert_not_reached ( ) ;
break ;
}
break ;
case PREF_STRING :
value = g_strdup ( * pref - > varp . string ) ;
break ;
case PREF_RANGE :
value = g_strdup ( range_convert_range ( * pref - > varp . range ) ) ;
break ;
2009-03-08 13:19:49 +00:00
default :
2009-04-11 18:03:11 +00:00
g_assert_not_reached ( ) ;
break ;
2009-03-08 13:19:49 +00:00
}
2009-04-11 18:03:11 +00:00
tooltips = gtk_tooltips_new ( ) ;
win = dlg_window_new ( module - > description ) ;
gtk_window_set_resizable ( GTK_WINDOW ( win ) , FALSE ) ;
gtk_window_resize ( GTK_WINDOW ( win ) , 400 , 100 ) ;
main_vb = gtk_vbox_new ( FALSE , 5 ) ;
gtk_container_add ( GTK_CONTAINER ( win ) , main_vb ) ;
gtk_container_set_border_width ( GTK_CONTAINER ( main_vb ) , 6 ) ;
main_tb = gtk_table_new ( 2 , 2 , FALSE ) ;
gtk_box_pack_start ( GTK_BOX ( main_vb ) , main_tb , FALSE , FALSE , 0 ) ;
gtk_table_set_col_spacings ( GTK_TABLE ( main_tb ) , 10 ) ;
label = gtk_label_new ( ep_strdup_printf ( " %s: " , pref - > title ) ) ;
gtk_table_attach_defaults ( GTK_TABLE ( main_tb ) , label , 0 , 1 , 1 , 2 ) ;
2009-04-21 16:57:52 +00:00
gtk_misc_set_alignment ( GTK_MISC ( label ) , 1.0f , 0.5f ) ;
2009-04-11 18:03:11 +00:00
if ( pref - > description )
gtk_tooltips_set_tip ( tooltips , label , pref - > description , NULL ) ;
entry = gtk_entry_new ( ) ;
gtk_table_attach_defaults ( GTK_TABLE ( main_tb ) , entry , 1 , 2 , 1 , 2 ) ;
gtk_entry_set_text ( GTK_ENTRY ( entry ) , value ) ;
if ( pref - > description )
gtk_tooltips_set_tip ( tooltips , entry , pref - > description , NULL ) ;
bbox = dlg_button_row_new ( GTK_STOCK_CANCEL , GTK_STOCK_OK , NULL ) ;
gtk_box_pack_end ( GTK_BOX ( main_vb ) , bbox , FALSE , FALSE , 0 ) ;
ok_bt = g_object_get_data ( G_OBJECT ( bbox ) , GTK_STOCK_OK ) ;
g_object_set_data ( G_OBJECT ( ok_bt ) , " module " , module ) ;
g_object_set_data ( G_OBJECT ( ok_bt ) , " entry " , entry ) ;
g_object_set_data ( G_OBJECT ( ok_bt ) , " pref " , pref ) ;
g_signal_connect ( ok_bt , " clicked " , G_CALLBACK ( menu_prefs_change_ok ) , win ) ;
dlg_set_activate ( entry , ok_bt ) ;
cancel_bt = g_object_get_data ( G_OBJECT ( bbox ) , GTK_STOCK_CANCEL ) ;
g_signal_connect ( cancel_bt , " clicked " , G_CALLBACK ( menu_prefs_change_cancel ) , win ) ;
window_set_cancel_button ( win , cancel_bt , NULL ) ;
gtk_widget_grab_default ( ok_bt ) ;
gtk_widget_show_all ( win ) ;
g_free ( value ) ;
2009-03-08 13:19:49 +00:00
}
2008-11-26 23:28:06 +00:00
static guint
add_protocol_prefs_menu ( pref_t * pref , gpointer data )
{
2009-04-11 18:03:11 +00:00
GtkWidget * menu_preferences ;
GtkWidget * menu_item , * menu_sub_item , * sub_menu ;
GSList * group = NULL ;
module_t * module = data ;
const enum_val_t * enum_valp ;
2009-04-24 16:51:38 +00:00
gchar * label = NULL ;
2009-04-11 18:03:11 +00:00
switch ( pref - > type ) {
case PREF_UINT :
switch ( pref - > info . base ) {
case 8 :
label = g_strdup_printf ( " %s: %o " , pref - > title , * pref - > varp . uint ) ;
break ;
case 10 :
label = g_strdup_printf ( " %s: %u " , pref - > title , * pref - > varp . uint ) ;
break ;
case 16 :
label = g_strdup_printf ( " %s: %x " , pref - > title , * pref - > varp . uint ) ;
break ;
default :
g_assert_not_reached ( ) ;
break ;
}
menu_item = gtk_menu_item_new_with_label ( label ) ;
g_object_set_data ( G_OBJECT ( menu_item ) , " module " , module ) ;
g_signal_connect ( menu_item , " activate " , G_CALLBACK ( menu_prefs_edit_dlg ) , pref ) ;
g_free ( label ) ;
break ;
case PREF_BOOL :
menu_item = gtk_check_menu_item_new_with_label ( pref - > title ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu_item ) , * pref - > varp . boolp ) ;
g_object_set_data ( G_OBJECT ( menu_item ) , " module " , module ) ;
g_signal_connect ( menu_item , " activate " , G_CALLBACK ( menu_prefs_toggle_bool ) , pref - > varp . boolp ) ;
break ;
case PREF_ENUM :
menu_item = gtk_menu_item_new_with_label ( pref - > title ) ;
sub_menu = gtk_menu_new ( ) ;
gtk_menu_item_set_submenu ( GTK_MENU_ITEM ( menu_item ) , sub_menu ) ;
enum_valp = pref - > info . enum_info . enumvals ;
while ( enum_valp - > name ! = NULL ) {
menu_sub_item = gtk_radio_menu_item_new_with_label ( group , enum_valp - > description ) ;
group = gtk_radio_menu_item_get_group ( GTK_RADIO_MENU_ITEM ( menu_sub_item ) ) ;
if ( enum_valp - > value = = * pref - > varp . enump ) {
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu_sub_item ) , TRUE ) ;
}
g_object_set_data ( G_OBJECT ( menu_sub_item ) , " module " , module ) ;
g_object_set_data ( G_OBJECT ( menu_sub_item ) , " enumval " , GINT_TO_POINTER ( enum_valp - > value ) ) ;
g_signal_connect ( menu_sub_item , " activate " , G_CALLBACK ( menu_prefs_change_enum ) , pref - > varp . enump ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( sub_menu ) , menu_sub_item ) ;
gtk_widget_show ( menu_sub_item ) ;
enum_valp + + ;
}
break ;
case PREF_STRING :
label = g_strdup_printf ( " %s: %s " , pref - > title , * pref - > varp . string ) ;
menu_item = gtk_menu_item_new_with_label ( label ) ;
g_object_set_data ( G_OBJECT ( menu_item ) , " module " , module ) ;
g_signal_connect ( menu_item , " activate " , G_CALLBACK ( menu_prefs_edit_dlg ) , pref ) ;
g_free ( label ) ;
break ;
case PREF_RANGE :
label = g_strdup_printf ( " %s: %s " , pref - > title , range_convert_range ( * pref - > varp . range ) ) ;
menu_item = gtk_menu_item_new_with_label ( label ) ;
g_object_set_data ( G_OBJECT ( menu_item ) , " module " , module ) ;
g_signal_connect ( menu_item , " activate " , G_CALLBACK ( menu_prefs_edit_dlg ) , pref ) ;
g_free ( label ) ;
break ;
case PREF_UAT :
label = g_strdup_printf ( " %s... " , pref - > title ) ;
menu_item = gtk_menu_item_new_with_label ( label ) ;
g_signal_connect ( menu_item , " activate " , G_CALLBACK ( uat_window_cb ) , pref - > varp . uat ) ;
g_free ( label ) ;
break ;
case PREF_STATIC_TEXT :
case PREF_OBSOLETE :
2009-03-08 13:19:49 +00:00
default :
2009-04-11 18:03:11 +00:00
/* Nothing to add */
return 0 ;
2009-03-08 13:19:49 +00:00
}
2008-11-26 23:28:06 +00:00
2010-09-15 20:51:44 +00:00
menu_preferences = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/ProtocolPreferences " ) ;
2010-10-08 01:31:47 +00:00
if ( ! menu_preferences )
g_warning ( " menu_preferences Not found path:TreeViewPopup/ProtocolPreferences " ) ;
2009-04-11 18:03:11 +00:00
sub_menu = gtk_menu_item_get_submenu ( GTK_MENU_ITEM ( menu_preferences ) ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( sub_menu ) , menu_item ) ;
gtk_widget_show ( menu_item ) ;
2008-11-26 23:28:06 +00:00
2009-04-11 18:03:11 +00:00
return 0 ;
2008-11-26 23:28:06 +00:00
}
static void
2010-01-29 16:13:26 +00:00
rebuild_protocol_prefs_menu ( module_t * prefs_module_p , gboolean preferences )
2008-11-26 23:28:06 +00:00
{
2009-04-11 18:03:11 +00:00
GtkWidget * menu_preferences , * menu_item ;
GtkWidget * sub_menu ;
gchar * label ;
2010-09-15 20:51:44 +00:00
menu_preferences = gtk_ui_manager_get_widget ( ui_manager_tree_view_menu , " /TreeViewPopup/ProtocolPreferences " ) ;
2009-04-11 18:03:11 +00:00
if ( preferences ) {
sub_menu = gtk_menu_new ( ) ;
gtk_menu_item_set_submenu ( GTK_MENU_ITEM ( menu_preferences ) , sub_menu ) ;
2010-01-29 16:13:26 +00:00
label = g_strdup_printf ( " %s Preferences... " , prefs_module_p - > description ) ;
2009-04-11 18:03:11 +00:00
menu_item = gtk_image_menu_item_new_with_label ( label ) ;
2010-05-25 00:35:44 +00:00
gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ) ,
2009-04-11 18:03:11 +00:00
gtk_image_new_from_stock ( GTK_STOCK_PREFERENCES , GTK_ICON_SIZE_MENU ) ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( sub_menu ) , menu_item ) ;
g_signal_connect_swapped ( GTK_OBJECT ( menu_item ) , " activate " ,
G_CALLBACK ( properties_cb ) , ( GtkObject * ) menu_item ) ;
gtk_widget_show ( menu_item ) ;
g_free ( label ) ;
menu_item = gtk_menu_item_new ( ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( sub_menu ) , menu_item ) ;
gtk_widget_show ( menu_item ) ;
2010-01-29 16:13:26 +00:00
prefs_pref_foreach ( prefs_module_p , add_protocol_prefs_menu , prefs_module_p ) ;
2009-04-11 18:03:11 +00:00
} else {
/* No preferences, remove sub menu */
gtk_menu_item_set_submenu ( GTK_MENU_ITEM ( menu_preferences ) , NULL ) ;
}
2008-11-26 23:28:06 +00:00
}
2010-06-20 16:23:43 +00:00
# ifdef NEW_PACKET_LIST
static void
menu_visible_column_toggle ( GtkWidget * w _U_ , gpointer data )
{
new_packet_list_toggle_visible_column ( GPOINTER_TO_INT ( data ) ) ;
}
void
rebuild_visible_columns_menu ( void )
{
2010-06-21 20:33:39 +00:00
GtkWidget * menu_columns [ 2 ] , * menu_item ;
2010-06-20 16:23:43 +00:00
GtkWidget * sub_menu ;
GList * clp ;
fmt_data * cfmt ;
2010-06-22 08:56:05 +00:00
gchar * title ;
2010-06-22 13:40:28 +00:00
gint i , col_id , cur_fmt ;
2010-09-29 16:09:42 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 01:31:47 +00:00
menu_columns [ 0 ] = gtk_ui_manager_get_widget ( ui_manager_main_menubar , " /Menubar/ViewMenu/DisplayedColumns " ) ;
2010-09-29 16:09:42 +00:00
if ( ! menu_columns [ 0 ] ) {
fprintf ( stderr , " Warning: couldn't find menu_columns[0] path=/Menubar/ViewMenu/DisplayedColumns " ) ;
}
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-09-21 07:08:35 +00:00
menu_columns [ 0 ] = gtk_item_factory_get_widget ( main_menu_factory , " /View/Displayed Columns " ) ;
2010-09-29 16:09:42 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-09-13 20:21:41 +00:00
menu_columns [ 1 ] = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/DisplayedColumns " ) ;
2010-09-25 18:44:20 +00:00
/* Debug */
if ( ! menu_columns [ 1 ] ) {
2010-09-13 20:21:41 +00:00
fprintf ( stderr , " Warning: couldn't find menu_columns[1] path=/PacketListHeadingPopup/DisplayedColumns " ) ;
2010-09-25 18:44:20 +00:00
}
2010-06-20 16:23:43 +00:00
2010-06-21 20:33:39 +00:00
for ( i = 0 ; i < 2 ; i + + ) {
sub_menu = gtk_menu_new ( ) ;
gtk_menu_item_set_submenu ( GTK_MENU_ITEM ( menu_columns [ i ] ) , sub_menu ) ;
clp = g_list_first ( prefs . col_list ) ;
col_id = 0 ;
while ( clp ) {
cfmt = ( fmt_data * ) clp - > data ;
2010-06-22 13:40:28 +00:00
cur_fmt = get_column_format_from_str ( cfmt - > fmt ) ;
if ( cur_fmt = = COL_CUSTOM ) {
2010-06-22 08:56:05 +00:00
title = g_strdup_printf ( " %s (%s) " , cfmt - > title , cfmt - > custom_field ) ;
} else {
2010-06-23 07:29:53 +00:00
title = g_strdup_printf ( " %s (%s) " , cfmt - > title , col_format_desc ( cur_fmt ) ) ;
2010-06-22 08:56:05 +00:00
}
menu_item = gtk_check_menu_item_new_with_label ( title ) ;
g_free ( title ) ;
2010-06-21 20:33:39 +00:00
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu_item ) , cfmt - > visible ) ;
g_signal_connect ( menu_item , " activate " , G_CALLBACK ( menu_visible_column_toggle ) , GINT_TO_POINTER ( col_id ) ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( sub_menu ) , menu_item ) ;
gtk_widget_show ( menu_item ) ;
clp = g_list_next ( clp ) ;
col_id + + ;
}
2010-06-20 16:23:43 +00:00
2010-06-21 20:33:39 +00:00
menu_item = gtk_menu_item_new ( ) ;
2010-06-20 16:23:43 +00:00
gtk_menu_shell_append ( GTK_MENU_SHELL ( sub_menu ) , menu_item ) ;
gtk_widget_show ( menu_item ) ;
2010-06-21 20:33:39 +00:00
menu_item = gtk_menu_item_new_with_label ( " Display All " ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( sub_menu ) , menu_item ) ;
2010-10-10 18:10:33 +00:00
g_signal_connect ( menu_item , " activate " , G_CALLBACK ( packet_list_heading_activate_all_columns_cb ) , NULL ) ;
2010-06-21 20:33:39 +00:00
gtk_widget_show ( menu_item ) ;
}
2010-06-20 16:23:43 +00:00
}
2010-10-08 02:38:47 +00:00
# endif /* NEW_PACKET_LIST */
2010-06-20 16:23:43 +00:00
2010-06-25 06:42:34 +00:00
void
menus_set_column_resolved ( gboolean resolved , gboolean can_resolve )
{
GtkWidget * menu ;
2010-09-25 18:44:20 +00:00
menu = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/ShowResolved " ) ;
if ( ! menu ) {
2010-09-12 19:26:42 +00:00
fprintf ( stderr , " Warning: couldn't find menu path=/PacketListHeadingPopup/ShowResolved " ) ;
2010-09-25 18:44:20 +00:00
}
2010-09-12 19:26:42 +00:00
g_object_set_data ( G_OBJECT ( menu ) , " skip-update " , ( void * ) 1 ) ;
gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu ) , resolved & & can_resolve ) ;
set_menu_sensitivity ( ui_manager_packet_list_heading , " /PacketListHeadingPopup/ShowResolved " , can_resolve ) ;
g_object_set_data ( G_OBJECT ( menu ) , " skip-update " , NULL ) ;
2010-06-25 06:42:34 +00:00
}
2009-12-02 13:53:33 +00:00
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 ;
2009-12-02 14:44:53 +00:00
size_t menu_item_len ;
2010-05-25 00:35:44 +00:00
2009-12-02 13:53:33 +00:00
/* get the submenu container item */
2010-09-12 19:26:42 +00:00
submenu = gtk_ui_manager_get_widget ( ui_manager_packet_list_heading , " /PacketListHeadingPopup " ) ;
2010-09-25 18:44:20 +00:00
if ( ! submenu ) {
2010-09-12 19:26:42 +00:00
fprintf ( stderr , " Warning: couldn't find submenu path=/PacketListHeadingPopup " ) ;
2010-09-25 18:44:20 +00:00
}
2009-12-02 13:53:33 +00:00
/* 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 ) ;
}
2004-07-18 00:24:25 +00:00
void
set_menus_for_selected_tree_row ( capture_file * cf )
{
2009-04-11 18:03:11 +00:00
gboolean properties ;
gint id ;
if ( cf - > finfo_selected ! = NULL ) {
header_field_info * hfinfo = cf - > finfo_selected - > hfinfo ;
const char * abbrev ;
char * prev_abbrev ;
if ( hfinfo - > parent = = - 1 ) {
abbrev = hfinfo - > abbrev ;
id = ( hfinfo - > type = = FT_PROTOCOL ) ? proto_get_id ( ( protocol_t * ) hfinfo - > strings ) : - 1 ;
} else {
abbrev = proto_registrar_get_abbrev ( hfinfo - > parent ) ;
id = hfinfo - > parent ;
}
properties = prefs_is_registered_protocol ( abbrev ) ;
2010-09-12 19:26:42 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu ,
2010-09-15 20:51:44 +00:00
" /TreeViewPopup/GotoCorrespondingPacket " , hfinfo - > type = = FT_FRAMENUM ) ;
2010-09-13 20:21:41 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/Copy " ,
2010-09-12 19:26:42 +00:00
TRUE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/Copy/AsFilter " ,
2009-04-11 18:03:11 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-09-13 20:21:41 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyasColumn " ,
2010-09-12 19:26:42 +00:00
hfinfo - > type ! = FT_NONE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyAsFilter " ,
2009-04-11 18:03:11 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/PrepareaFilter " ,
2009-04-11 18:03:11 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ColorizewithFilter " ,
2009-04-11 18:03:11 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ProtocolPreferences " ,
2010-09-12 19:26:42 +00:00
properties ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/DisableProtocol " ,
2010-09-12 19:26:42 +00:00
( id = = - 1 ) ? FALSE : proto_can_toggle_protocol ( id ) ) ;
2010-09-23 18:07:49 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ExpandSubtrees " ,
cf - > finfo_selected - > tree_type ! = - 1 ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/WikiProtocolPage " ,
2010-09-12 19:26:42 +00:00
( id = = - 1 ) ? FALSE : TRUE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/FilterFieldReference " ,
2010-09-12 19:26:42 +00:00
( id = = - 1 ) ? FALSE : TRUE ) ;
2010-09-26 18:14:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_tree_view_menu ,
" /Menubar/MenuFile/Export/SelectedPacketBytes " , TRUE ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu ,
" /Menubar/MenuGo/GotoCorrespondingPacket " , hfinfo - > type = = FT_FRAMENUM ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /Menubar/MenuEdit/Copy/Description " ,
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /Menubar/MenuEdit/Copy/Fieldname " ,
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /Menubar/MenuEdit/Copy/Value " ,
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /Menubar/MenuEdit/Copy/AsFilter " ,
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /Menubar/MenuAnalyze/ApplyasColumn " ,
hfinfo - > type ! = FT_NONE ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /Menubar/MenuAnalyze/ApplyAsFilter " ,
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /Menubar/MenuAnalyze/PrepareaFilter " ,
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /Menubar/MenuView/ExpandSubtrees " ,
cf - > finfo_selected - > tree_type ! = - 1 ) ;
# else
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old (
2010-09-12 19:26:42 +00:00
" /File/Export/Selected Packet Bytes... " , TRUE ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old (
2010-09-12 19:26:42 +00:00
" /Go/Go to Corresponding Packet " , hfinfo - > type = = FT_FRAMENUM ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Copy/Description " ,
2010-09-12 19:26:42 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Copy/Fieldname " ,
2010-09-12 19:26:42 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Copy/Value " ,
2010-09-12 19:26:42 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Edit/Copy/As Filter " ,
2010-09-12 19:26:42 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Analyze/Apply as Column " ,
2010-09-12 19:26:42 +00:00
hfinfo - > type ! = FT_NONE ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Analyze/Apply as Filter " ,
2010-09-12 19:26:42 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Analyze/Prepare a Filter " ,
2010-09-12 19:26:42 +00:00
proto_can_match_selected ( cf - > finfo_selected , cf - > edt ) ) ;
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /View/Expand Subtrees " ,
2010-09-23 18:07:49 +00:00
cf - > finfo_selected - > tree_type ! = - 1 ) ;
2010-09-26 18:14:44 +00:00
# endif
2010-09-12 19:26:42 +00:00
prev_abbrev = g_object_get_data ( G_OBJECT ( ui_manager_tree_view_menu ) , " menu_abbrev " ) ;
2009-04-11 18:03:11 +00:00
if ( ! prev_abbrev | | ( strcmp ( prev_abbrev , abbrev ) ! = 0 ) ) {
/* No previous protocol or protocol changed - update Protocol Preferences menu */
2010-01-29 16:13:26 +00:00
module_t * prefs_module_p = prefs_find_module ( abbrev ) ;
rebuild_protocol_prefs_menu ( prefs_module_p , properties ) ;
2009-04-11 18:03:11 +00:00
2010-09-12 19:26:42 +00:00
g_object_set_data ( G_OBJECT ( ui_manager_tree_view_menu ) , " menu_abbrev " , g_strdup ( abbrev ) ) ;
2009-04-11 18:03:11 +00:00
g_free ( prev_abbrev ) ;
}
} else {
2010-09-12 19:26:42 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu ,
2010-09-15 20:51:44 +00:00
" /TreeViewPopup/GotoCorrespondingPacket " , FALSE ) ;
2010-09-13 20:21:41 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/Copy " , FALSE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyasColumn " , FALSE ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ApplyAsFilter " , FALSE ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/PrepareaFilter " , FALSE ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ColorizewithFilter " , FALSE ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ProtocolPreferences " ,
2009-04-11 18:03:11 +00:00
FALSE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/DisableProtocol " , FALSE ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/ExpandSubtrees " , FALSE ) ;
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/WikiProtocolPage " ,
2009-04-11 18:03:11 +00:00
FALSE ) ;
2010-09-15 20:51:44 +00:00
set_menu_sensitivity ( ui_manager_tree_view_menu , " /TreeViewPopup/FilterFieldReference " ,
2009-04-11 18:03:11 +00:00
FALSE ) ;
2010-09-26 18:14:44 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
set_menu_sensitivity ( ui_manager_main_menubar ,
" /Menubar/FileMenu/Export/SelectedPacketBytes " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar ,
" /Menubar/GoMenu/GotoCorrespondingPacket " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/Copy/Description " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/Copy/Fieldname " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/Copy/Value " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/EditMenu/Copy/AsFilter " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/AnalyzeMenu/ApplyasColumn " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/AnalyzeMenu/ApplyAsFilter " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/AnalyzeMenu/PrepareaFilter " , FALSE ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/ViewMenu/ExpandSubtrees " , FALSE ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/Export/Selected Packet Bytes... " , FALSE ) ;
set_menu_sensitivity_old ( " /Go/Go to Corresponding Packet " , FALSE ) ;
set_menu_sensitivity_old ( " /Edit/Copy/Description " , FALSE ) ;
set_menu_sensitivity_old ( " /Edit/Copy/Fieldname " , FALSE ) ;
set_menu_sensitivity_old ( " /Edit/Copy/Value " , FALSE ) ;
set_menu_sensitivity_old ( " /Edit/Copy/As Filter " , FALSE ) ;
set_menu_sensitivity_old ( " /Analyze/Apply as Column " , FALSE ) ;
set_menu_sensitivity_old ( " /Analyze/Apply as Filter " , FALSE ) ;
set_menu_sensitivity_old ( " /Analyze/Prepare a Filter " , FALSE ) ;
set_menu_sensitivity_old ( " /View/Expand Subtrees " , FALSE ) ;
2010-09-26 18:14:44 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2009-04-11 18:03:11 +00:00
}
walk_menu_tree_for_selected_tree_row ( tap_menu_tree_root , cf - > finfo_selected ) ;
2004-07-18 00:24:25 +00:00
}
2004-11-01 11:42:08 +00:00
void set_menus_for_packet_history ( gboolean back_history , gboolean forward_history ) {
2010-10-07 15:58:10 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 02:17:37 +00:00
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/Back " , back_history ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/GoMenu/Forward " , forward_history ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /Go/Back " , back_history ) ;
set_menu_sensitivity_old ( " /Go/Forward " , forward_history ) ;
2010-10-07 15:58:10 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 01:31:47 +00:00
set_toolbar_for_packet_history ( back_history , forward_history ) ;
2004-11-01 11:42:08 +00:00
}
2005-04-29 14:51:52 +00:00
void set_menus_for_file_set ( gboolean file_set , gboolean previous_file , gboolean next_file ) {
2010-10-07 15:58:10 +00:00
# ifdef MAIN_MENU_USE_UIMANAGER
2010-10-08 02:17:37 +00:00
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Set/ListFiles " , file_set ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Set/PreviousFile " , previous_file ) ;
set_menu_sensitivity ( ui_manager_main_menubar , " /Menubar/FileMenu/Set/NextFile " , next_file ) ;
2010-10-08 02:38:47 +00:00
# else /* MAIN_MENU_USE_UIMANAGER */
2010-10-08 02:17:37 +00:00
set_menu_sensitivity_old ( " /File/File Set/List Files " , file_set ) ;
set_menu_sensitivity_old ( " /File/File Set/Previous File " , previous_file ) ;
set_menu_sensitivity_old ( " /File/File Set/Next File " , next_file ) ;
2010-10-07 15:58:10 +00:00
# endif /* MAIN_MENU_USE_UIMANAGER */
2005-04-29 14:51:52 +00:00
}
2009-04-11 18:03:11 +00:00
2010-10-01 16:29:37 +00:00
GtkWidget * menus_get_profiles_menu ( void )
{
return gtk_ui_manager_get_widget ( ui_manager_statusbar_profiles_menu , " /ProfilesMenuPopup/Change " ) ;
}
void set_menus_for_profiles ( gboolean default_profile )
{
set_menu_sensitivity ( ui_manager_statusbar_profiles_menu , " /ProfilesMenuPopup/Delete " , ! default_profile ) ;
set_menu_sensitivity ( ui_manager_statusbar_profiles_menu , " /ProfilesMenuPopup/Rename " , ! default_profile ) ;
}
2009-04-11 18:03:11 +00:00
/*
* Editor modelines
*
* Local Variables :
* c - basic - offset : 4
* tab - width : 8
* indent - tabs - mode : nil
* End :
*
* ex : set shiftwidth = 4 tabstop = 8 expandtab
* : indentSize = 4 : tabSize = 8 : noTabs = true :
*/