diff options
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/main_packet_list.c | 58 | ||||
-rw-r--r-- | gtk/main_packet_list.h | 10 | ||||
-rw-r--r-- | gtk/main_statusbar.c | 3 | ||||
-rw-r--r-- | gtk/menus.c | 2 | ||||
-rw-r--r-- | gtk/new_packet_list.c | 33 | ||||
-rw-r--r-- | gtk/new_packet_list.h | 18 | ||||
-rw-r--r-- | gtk/prefs_stream.c | 42 |
7 files changed, 150 insertions, 16 deletions
diff --git a/gtk/main_packet_list.c b/gtk/main_packet_list.c index 0ab5f03ec3..b4e0ca3707 100644 --- a/gtk/main_packet_list.c +++ b/gtk/main_packet_list.c @@ -499,6 +499,37 @@ set_frame_mark(gboolean set, frame_data *frame, gint row) } } +/* ignore packet */ +static void +set_frame_ignore(gboolean set, frame_data *frame, gint row) +{ + GdkColor fg, bg; + + if (row == -1) + return; + if (set) { + cf_ignore_frame(&cfile, frame); + color_t_to_gdkcolor(&fg, &prefs.gui_ignored_fg); + color_t_to_gdkcolor(&bg, &prefs.gui_ignored_bg); + gtk_clist_set_foreground(GTK_CLIST(packet_list), row, &fg); + gtk_clist_set_background(GTK_CLIST(packet_list), row, &bg); + } else { + const color_filter_t *cfilter = frame->color_filter; + + cf_unignore_frame(&cfile, frame); + /* Restore the color from the matching color filter if any */ + if (cfilter) { /* The packet matches a color filter */ + color_t_to_gdkcolor(&fg, &cfilter->fg_color); + color_t_to_gdkcolor(&bg, &cfilter->bg_color); + gtk_clist_set_foreground(GTK_CLIST(packet_list), row, &fg); + gtk_clist_set_background(GTK_CLIST(packet_list), row, &bg); + } else { /* No color filter match */ + gtk_clist_set_foreground(GTK_CLIST(packet_list), row, NULL); + gtk_clist_set_background(GTK_CLIST(packet_list), row, NULL); + } + } +} + /* call this after last set_frame_mark is done */ static void mark_frames_ready(void) { @@ -554,7 +585,31 @@ void packet_list_unmark_all_frames_cb(GtkWidget *w _U_, gpointer data _U_) mark_all_frames(FALSE); } -#ifndef NEW_PACKET_LIST +void packet_list_ignore_frame_cb(GtkWidget *w _U_, gpointer data _U_) +{ + if (cfile.current_frame) { + set_frame_ignore(!cfile.current_frame->flags.ignored, + cfile.current_frame, cfile.current_row); + redissect_packets(); + } +} + +void packet_list_update_ignored_frames(void) +{ + frame_data *fdata; + + if (cfile.plist_start == NULL) return; + + /* XXX: we might need a progressbar here */ + for (fdata = cfile.plist_start; fdata != NULL; fdata = fdata->next) { + if (fdata->flags.ignored) + set_frame_ignore(TRUE, fdata, + gtk_clist_find_row_from_data(GTK_CLIST(packet_list), + fdata)); + } + mark_frames_ready(); +} + gboolean packet_list_get_event_row_column(GtkWidget *w, GdkEventButton *event_button, gint *row, gint *column) @@ -563,7 +618,6 @@ packet_list_get_event_row_column(GtkWidget *w, GdkEventButton *event_button, (gint) event_button->x, (gint) event_button->y, row, column); } -#endif /* NEW_PACKET_LIST */ static gint packet_list_button_pressed_cb(GtkWidget *w, GdkEvent *event, gpointer data _U_) diff --git a/gtk/main_packet_list.h b/gtk/main_packet_list.h index 0758eca40d..9bb915e06b 100644 --- a/gtk/main_packet_list.h +++ b/gtk/main_packet_list.h @@ -96,6 +96,16 @@ extern void packet_list_unmark_all_frames_cb(GtkWidget *widget, gpointer data); /** Update packet marks. */ extern void packet_list_update_marked_frames(void); +/** Ignore the currently selected packet. + * + * @param widget parent widget (unused) + * @param data unused + */ +extern void packet_list_ignore_frame_cb(GtkWidget *w _U_, gpointer data _U_); + +/** Update ignored packages. */ +extern void packet_list_update_ignored_frames(void); + /** Gdk button click appeared, get row and column number in packet list from that position. * * @param widget the packet list widget from packet_list_new() diff --git a/gtk/main_statusbar.c b/gtk/main_statusbar.c index 9d4a97224f..2ed3b1508f 100644 --- a/gtk/main_statusbar.c +++ b/gtk/main_statusbar.c @@ -439,6 +439,9 @@ packets_bar_update(void) if(cfile.drops_known) { packets_str = g_strdup_printf(" Packets: %u Displayed: %u Marked: %u Dropped: %u", cfile.count, cfile.displayed_count, cfile.marked_count, cfile.drops); + } else if (cfile.ignored_count > 0) { + packets_str = g_strdup_printf(" Packets: %u Displayed: %u Marked: %u Ignored: %u", + cfile.count, cfile.displayed_count, cfile.marked_count, cfile.ignored_count); } else { gulong computed_elapsed = cf_get_computed_elapsed(); diff --git a/gtk/menus.c b/gtk/menus.c index bd449d5a88..ac839560ff 100644 --- a/gtk/menus.c +++ b/gtk/menus.c @@ -811,8 +811,10 @@ static GtkItemFactoryEntry packet_list_menu_items[] = { #ifdef NEW_PACKET_LIST {"/Mark Packet (toggle)", NULL, GTK_MENU_FUNC(new_packet_list_mark_frame_cb), 0, NULL, NULL,}, + {"/Ignore Packet (toggle)", NULL, GTK_MENU_FUNC(new_packet_list_ignore_frame_cb), 0, NULL, NULL,}, #else {"/Mark Packet (toggle)", NULL, GTK_MENU_FUNC(packet_list_mark_frame_cb), 0, NULL, NULL,}, + {"/Ignore Packet (toggle)", NULL, GTK_MENU_FUNC(packet_list_ignore_frame_cb), 0, NULL, NULL,}, #endif /* NEW_PACKET_LIST */ {"/Set Time Reference (toggle)", NULL, GTK_MENU_FUNC(reftime_frame_cb), REFTIME_TOGGLE, "<StockItem>", WIRESHARK_STOCK_TIME,}, diff --git a/gtk/new_packet_list.c b/gtk/new_packet_list.c index c2b155527d..9167480363 100644 --- a/gtk/new_packet_list.c +++ b/gtk/new_packet_list.c @@ -997,11 +997,15 @@ show_cell_data_func(GtkTreeViewColumn *col _U_, GtkCellRenderer *renderer, g_assert(cell_text); - if((fdata->color_filter)||(fdata->flags.marked)){ + if((fdata->color_filter)||(fdata->flags.marked)||(fdata->flags.ignored)){ gboolean color_on = enable_color; GdkColor fg_gdk; GdkColor bg_gdk; - if(fdata->flags.marked){ + if(fdata->flags.ignored){ + color_t_to_gdkcolor(&fg_gdk, &prefs.gui_ignored_fg); + color_t_to_gdkcolor(&bg_gdk, &prefs.gui_ignored_bg); + color_on = TRUE; + }else if(fdata->flags.marked){ color_t_to_gdkcolor(&fg_gdk, &prefs.gui_marked_fg); color_t_to_gdkcolor(&bg_gdk, &prefs.gui_marked_bg); color_on = TRUE; @@ -1060,6 +1064,15 @@ set_frame_mark(gboolean set, frame_data *fdata) cf_unmark_frame(&cfile, fdata); } +static void +set_frame_ignored(gboolean set, frame_data *fdata) +{ + if (set) + cf_ignore_frame(&cfile, fdata); + else + cf_unignore_frame(&cfile, fdata); +} + static void mark_all_frames(gboolean set) { frame_data *fdata; @@ -1144,6 +1157,22 @@ void new_packet_list_mark_frame_cb(GtkWidget *w _U_, gpointer data _U_) mark_frames_ready(); } +void new_packet_list_ignore_frame_cb(GtkWidget *w _U_, gpointer data _U_) +{ + GtkTreeModel *model; + GtkTreeSelection *selection; + GtkTreeIter iter; + PacketListRecord *record; + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(packetlist->view)); + /* model is filled with the current model as a convenience. */ + gtk_tree_selection_get_selected(selection, &model, &iter); + record = new_packet_list_get_record(model, &iter); + + set_frame_ignored(!record->fdata->flags.ignored, record->fdata); + redissect_packets(); +} + static gboolean get_col_text_from_record( PacketListRecord *record, gint col_num, gchar** cell_text){ diff --git a/gtk/new_packet_list.h b/gtk/new_packet_list.h index 5b040d64d2..fec021fa59 100644 --- a/gtk/new_packet_list.h +++ b/gtk/new_packet_list.h @@ -62,9 +62,27 @@ extern void new_packet_list_set_font(PangoFontDescription *font); */ extern void new_packet_list_mark_frame_cb(GtkWidget *widget, gpointer data); +/** Mark all packets in the list. + * + * @param widget parent widget (unused) + * @param data unused + */ void new_packet_list_mark_all_frames_cb(GtkWidget *w _U_, gpointer data _U_); + +/** Unmark all packets in the list. + * + * @param widget parent widget (unused) + * @param data unused + */ void new_packet_list_unmark_all_frames_cb(GtkWidget *w _U_, gpointer data _U_); +/** Ignore the currently selected packet. + * + * @param widget parent widget (unused) + * @param data unused + */ +extern void new_packet_list_ignore_frame_cb(GtkWidget *widget, gpointer data); + /* Different modes of copying summary data */ typedef enum { CS_TEXT, /* Packet summary data (tab separated) */ diff --git a/gtk/prefs_stream.c b/gtk/prefs_stream.c index 16a80deba4..71a9119635 100644 --- a/gtk/prefs_stream.c +++ b/gtk/prefs_stream.c @@ -41,16 +41,19 @@ #include "gtk/main_packet_list.h" -#define SAMPLE_MARKED_TEXT "Sample marked packet text\n" -#define SAMPLE_CLIENT_TEXT "Sample TCP stream client text\n" -#define SAMPLE_SERVER_TEXT "Sample TCP stream server text\n" +#define SAMPLE_MARKED_TEXT "Sample marked packet text\n" +#define SAMPLE_IGNORED_TEXT "Sample ignored packet text\n" +#define SAMPLE_CLIENT_TEXT "Sample TCP stream client text\n" +#define SAMPLE_SERVER_TEXT "Sample TCP stream server text\n" #define MFG_IDX 0 #define MBG_IDX 1 -#define CFG_IDX 2 -#define CBG_IDX 3 -#define SFG_IDX 4 -#define SBG_IDX 5 -#define MAX_IDX 6 /* set this to the number of IDX values */ +#define IFG_IDX 2 +#define IBG_IDX 3 +#define CFG_IDX 4 +#define CBG_IDX 5 +#define SFG_IDX 6 +#define SBG_IDX 7 +#define MAX_IDX 8 /* set this to the number of IDX values */ #define STREAM_SAMPLE_KEY "stream_entry" #define STREAM_CS_KEY "stream_colorselection" #define CS_RED 0 @@ -72,10 +75,12 @@ stream_prefs_show() const gchar *mt[] = { "Marked packet foreground", /* MFG_IDX 0*/ "Marked packet background", /* MBG_IDX 1*/ - "TCP stream client foreground", /* CFG_IDX 2*/ - "TCP stream client background", /* CBG_IDX 3*/ - "TCP stream server foreground", /* SFG_IDX 4*/ - "TCP stream server background" /* SBG_IDX 5*/ + "Ignored packet foreground", /* IFG_IDX 2*/ + "Ignored packet background", /* IBG_IDX 3*/ + "TCP stream client foreground", /* CFG_IDX 4*/ + "TCP stream client background", /* CBG_IDX 5*/ + "TCP stream server foreground", /* SFG_IDX 6*/ + "TCP stream server background" /* SBG_IDX 7*/ }; int mcount = sizeof(mt) / sizeof (gchar *); GtkTextBuffer *buf; @@ -84,6 +89,8 @@ stream_prefs_show() color_t_to_gdkcolor(&tcolors[MFG_IDX], &prefs.gui_marked_fg); color_t_to_gdkcolor(&tcolors[MBG_IDX], &prefs.gui_marked_bg); + color_t_to_gdkcolor(&tcolors[IFG_IDX], &prefs.gui_ignored_fg); + color_t_to_gdkcolor(&tcolors[IBG_IDX], &prefs.gui_ignored_bg); color_t_to_gdkcolor(&tcolors[CFG_IDX], &prefs.st_client_fg); color_t_to_gdkcolor(&tcolors[CBG_IDX], &prefs.st_client_bg); color_t_to_gdkcolor(&tcolors[SFG_IDX], &prefs.st_server_fg); @@ -130,6 +137,9 @@ stream_prefs_show() gtk_text_buffer_create_tag(buf, "marked", "foreground-gdk", &tcolors[MFG_IDX], "background-gdk", &tcolors[MBG_IDX], NULL); + gtk_text_buffer_create_tag(buf, "ignored", + "foreground-gdk", &tcolors[IFG_IDX], + "background-gdk", &tcolors[IBG_IDX], NULL); gtk_text_buffer_create_tag(buf, "client", "foreground-gdk", &tcolors[CFG_IDX], "background-gdk", &tcolors[CBG_IDX], NULL); @@ -138,6 +148,8 @@ stream_prefs_show() "background-gdk", &tcolors[SBG_IDX], NULL); gtk_text_buffer_insert_with_tags_by_name(buf, &iter, SAMPLE_MARKED_TEXT, -1, "marked", NULL); + gtk_text_buffer_insert_with_tags_by_name(buf, &iter, SAMPLE_IGNORED_TEXT, -1, + "ignored", NULL); gtk_text_buffer_insert_with_tags_by_name(buf, &iter, SAMPLE_CLIENT_TEXT, -1, "client", NULL); gtk_text_buffer_insert_with_tags_by_name(buf, &iter, SAMPLE_SERVER_TEXT, -1, @@ -170,6 +182,9 @@ update_text_color(GtkWidget *w, gpointer data _U_) { tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buf), "marked"); g_object_set(tag, "foreground-gdk", &tcolors[MFG_IDX], "background-gdk", &tcolors[MBG_IDX], NULL); + tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buf), "ignored"); + g_object_set(tag, "foreground-gdk", &tcolors[IFG_IDX], "background-gdk", + &tcolors[IBG_IDX], NULL); tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buf), "client"); g_object_set(tag, "foreground-gdk", &tcolors[CFG_IDX], "background-gdk", &tcolors[CBG_IDX], NULL); @@ -195,6 +210,8 @@ stream_prefs_fetch(GtkWidget *w _U_) { gdkcolor_to_color_t(&prefs.gui_marked_fg, &tcolors[MFG_IDX]); gdkcolor_to_color_t(&prefs.gui_marked_bg, &tcolors[MBG_IDX]); + gdkcolor_to_color_t(&prefs.gui_ignored_fg, &tcolors[IFG_IDX]); + gdkcolor_to_color_t(&prefs.gui_ignored_bg, &tcolors[IBG_IDX]); gdkcolor_to_color_t(&prefs.st_client_fg, &tcolors[CFG_IDX]); gdkcolor_to_color_t(&prefs.st_client_bg, &tcolors[CBG_IDX]); gdkcolor_to_color_t(&prefs.st_server_fg, &tcolors[SFG_IDX]); @@ -208,6 +225,7 @@ stream_prefs_apply(GtkWidget *w _U_) #ifndef NEW_PACKET_LIST packet_list_update_marked_frames(); + packet_list_update_ignored_frames(); #endif } |