diff options
author | Guy Harris <guy@alum.mit.edu> | 2007-12-09 09:04:58 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2007-12-09 09:04:58 +0000 |
commit | d4672d13f5cd207e3c79aa73584511b9b7d38d7e (patch) | |
tree | a17bebab6b0d51cf3d61d0e86ae2eca5e03278fd /gtk/proto_hier_stats_dlg.c | |
parent | 7c03d14d6029785a849cb947d58862923c59fd01 (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.c | 120 |
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 |