aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/proto_hier_stats_dlg.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2007-12-09 09:04:58 +0000
committerGuy Harris <guy@alum.mit.edu>2007-12-09 09:04:58 +0000
commitd4672d13f5cd207e3c79aa73584511b9b7d38d7e (patch)
treea17bebab6b0d51cf3d61d0e86ae2eca5e03278fd /gtk/proto_hier_stats_dlg.c
parent7c03d14d6029785a849cb947d58862923c59fd01 (diff)
Add macros for various filter actions and types, and to combine them
into a callback argument and split a callback argument up. svn path=/trunk/; revision=23816
Diffstat (limited to 'gtk/proto_hier_stats_dlg.c')
-rw-r--r--gtk/proto_hier_stats_dlg.c120
1 files changed, 59 insertions, 61 deletions
diff --git a/gtk/proto_hier_stats_dlg.c b/gtk/proto_hier_stats_dlg.c
index 0f631cd596..1de2ad6ae8 100644
--- a/gtk/proto_hier_stats_dlg.c
+++ b/gtk/proto_hier_stats_dlg.c
@@ -78,26 +78,36 @@ static GtkWidget *tree;
#define PCT(x,y) (100.0 * (float)(x) / (float)(y))
#define BANDWITDH(bytes,secs) ((bytes) * 8.0 / ((secs) * 1000.0 * 1000.0))
-/* action is encoded as
- filter_action*256+filter_type
-
- filter_action:
- 0: Match
- 1: Prepare
- 2: Find Frame
- 3: Find Next
- 4: Find Previous
- 5: Colorize Host Traffic
- filter_type:
- 0: Selected
- 1: Not Selected
- 2: And Selected
- 3: Or Selected
- 4: And Not Selected
- 5: Or Not Selected
-*/
-
#if GTK_MAJOR_VERSION >= 2
+
+/* Filter actions */
+#define ACTION_MATCH 0
+#define ACTION_PREPARE 1
+#define ACTION_FIND_FRAME 2
+#define ACTION_FIND_NEXT 3
+#define ACTION_FIND_PREVIOUS 4
+#define ACTION_COLORIZE 5
+
+/* Action type - says what to do with the filter */
+#define ACTYPE_SELECTED 0
+#define ACTYPE_NOT_SELECTED 1
+#define ACTYPE_AND_SELECTED 2
+#define ACTYPE_OR_SELECTED 3
+#define ACTYPE_AND_NOT_SELECTED 4
+#define ACTYPE_OR_NOT_SELECTED 5
+
+/* Encoded callback arguments */
+#define CALLBACK_MATCH(type) ((ACTION_MATCH<<8) | (type))
+#define CALLBACK_PREPARE(type) ((ACTION_PREPARE<<8) | (type))
+#define CALLBACK_FIND_FRAME(type) ((ACTION_FIND_FRAME<<8) | (type))
+#define CALLBACK_FIND_NEXT(type) ((ACTION_FIND_NEXT<<8) | (type))
+#define CALLBACK_FIND_PREVIOUS(type) ((ACTION_FIND_PREVIOUS<<8) | (type))
+#define CALLBACK_COLORIZE(type) ((ACTION_COLORIZE<<8) | (type))
+
+/* Extract components of callback argument */
+#define FILTER_ACTION(cb_arg) (((cb_arg)>>8) & 0xff)
+#define FILTER_ACTYPE(cb_arg) ((cb_arg) & 0xff)
+
static void
proto_hier_select_filter_cb(GtkWidget *widget _U_, gpointer callback_data _U_, guint callback_action)
{
@@ -110,8 +120,8 @@ proto_hier_select_filter_cb(GtkWidget *widget _U_, gpointer callback_data _U_, g
GtkTreeModel *model;
GtkTreeIter iter;
- action = (callback_action>>8)&0xff;
- type = callback_action&0xff;
+ action = FILTER_ACTION(callback_action);
+ type = FILTER_ACTYPE(callback_action);
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(tree));
gtk_tree_selection_get_selected (sel, &model, &iter);
@@ -125,37 +135,31 @@ proto_hier_select_filter_cb(GtkWidget *widget _U_, gpointer callback_data _U_, g
current_filter=gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget));
switch(type){
- case 0:
- /* selected */
+ case ACTYPE_SELECTED:
g_snprintf(str, 255, "%s", dirstr);
break;
- case 1:
- /* not selected */
+ case ACTYPE_NOT_SELECTED:
g_snprintf(str, 255, "!(%s)", dirstr);
break;
- case 2:
- /* and selected */
+ case ACTYPE_AND_SELECTED:
if ((!current_filter) || (0 == strlen(current_filter)))
g_snprintf(str, 255, "%s", dirstr);
else
g_snprintf(str, 255, "(%s) && (%s)", current_filter, dirstr);
break;
- case 3:
- /* or selected */
+ case ACTYPE_OR_SELECTED:
if ((!current_filter) || (0 == strlen(current_filter)))
g_snprintf(str, 255, "%s", dirstr);
else
g_snprintf(str, 255, "(%s) || (%s)", current_filter, dirstr);
break;
- case 4:
- /* and not selected */
+ case ACTYPE_AND_NOT_SELECTED:
if ((!current_filter) || (0 == strlen(current_filter)))
g_snprintf(str, 255, "!(%s)", dirstr);
else
g_snprintf(str, 255, "(%s) && !(%s)", current_filter, dirstr);
break;
- case 5:
- /* or not selected */
+ case ACTYPE_OR_NOT_SELECTED:
if ((!current_filter) || (0 == strlen(current_filter)))
g_snprintf(str, 255, "!(%s)", dirstr);
else
@@ -164,30 +168,24 @@ proto_hier_select_filter_cb(GtkWidget *widget _U_, gpointer callback_data _U_, g
}
switch(action){
- case 0:
- /* match */
+ case ACTION_MATCH:
gtk_entry_set_text(GTK_ENTRY(main_display_filter_widget), str);
main_filter_packets(&cfile, str, FALSE);
gdk_window_raise(top_level->window);
break;
- case 1:
- /* prepare */
+ case ACTION_PREPARE:
gtk_entry_set_text(GTK_ENTRY(main_display_filter_widget), str);
break;
- case 2:
- /* find frame */
+ case ACTION_FIND_FRAME:
find_frame_with_filter(str);
break;
- case 3:
- /* find next */
+ case ACTION_FIND_NEXT:
find_previous_next_frame_with_filter(str, FALSE);
break;
- case 4:
- /* find previous */
+ case ACTION_FIND_PREVIOUS:
find_previous_next_frame_with_filter(str, TRUE);
break;
- case 5:
- /* colorize host traffic */
+ case ACTION_COLORIZE:
color_display_with_filter(str);
break;
}
@@ -198,46 +196,46 @@ static GtkItemFactoryEntry proto_hier_list_menu_items[] =
/* Match */
ITEM_FACTORY_ENTRY("/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL),
ITEM_FACTORY_ENTRY("/Apply as Filter/Selected", NULL,
- proto_hier_select_filter_cb, 0*256+0, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_MATCH(ACTYPE_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Apply as Filter/Not Selected", NULL,
- proto_hier_select_filter_cb, 0*256+1, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_MATCH(ACTYPE_NOT_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Apply as Filter/... and Selected", NULL,
- proto_hier_select_filter_cb, 0*256+2, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_MATCH(ACTYPE_AND_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Apply as Filter/... or Selected", NULL,
- proto_hier_select_filter_cb, 0*256+3, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_MATCH(ACTYPE_OR_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Apply as Filter/... and not Selected", NULL,
- proto_hier_select_filter_cb, 0*256+4, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_MATCH(ACTYPE_AND_NOT_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Apply as Filter/... or not Selected", NULL,
- proto_hier_select_filter_cb, 0*256+5, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_MATCH(ACTYPE_OR_NOT_SELECTED), NULL, NULL),
/* Prepare */
ITEM_FACTORY_ENTRY("/Prepare a Filter", NULL, NULL, 0, "<Branch>", NULL),
ITEM_FACTORY_ENTRY("/Prepare a Filter/Selected", NULL,
- proto_hier_select_filter_cb, 1*256+0, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_PREPARE(ACTYPE_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Prepare a Filter/Not Selected", NULL,
- proto_hier_select_filter_cb, 1*256+1, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_PREPARE(ACTYPE_NOT_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Prepare a Filter/... and Selected", NULL,
- proto_hier_select_filter_cb, 1*256+2, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_PREPARE(ACTYPE_AND_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Prepare a Filter/... or Selected", NULL,
- proto_hier_select_filter_cb, 1*256+3, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_PREPARE(ACTYPE_OR_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Prepare a Filter/... and not Selected", NULL,
- proto_hier_select_filter_cb, 1*256+4, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_PREPARE(ACTYPE_AND_NOT_SELECTED), NULL, NULL),
ITEM_FACTORY_ENTRY("/Prepare a Filter/... or not Selected", NULL,
- proto_hier_select_filter_cb, 1*256+5, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_PREPARE(ACTYPE_OR_NOT_SELECTED), NULL, NULL),
/* Find Frame */
ITEM_FACTORY_ENTRY("/Find Frame", NULL, NULL, 0, "<Branch>", NULL),
ITEM_FACTORY_ENTRY("/Find Frame/Find Frame", NULL,
- proto_hier_select_filter_cb, 2*256+0, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_FIND_FRAME(ACTYPE_SELECTED), NULL, NULL),
/* Find Next */
ITEM_FACTORY_ENTRY("/Find Frame/Find Next", NULL,
- proto_hier_select_filter_cb, 3*256+0, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_FIND_NEXT(ACTYPE_SELECTED), NULL, NULL),
/* Find Previous */
ITEM_FACTORY_ENTRY("/Find Frame/Find Previous", NULL,
- proto_hier_select_filter_cb, 4*256+0, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_FIND_PREVIOUS(ACTYPE_SELECTED), NULL, NULL),
/* Colorize Protocol */
ITEM_FACTORY_ENTRY("/Colorize Protocol", NULL,
- proto_hier_select_filter_cb, 5*256+0, NULL, NULL),
+ proto_hier_select_filter_cb, CALLBACK_COLORIZE(ACTYPE_SELECTED), NULL, NULL),
};
#endif