From b95335b76f655f68c7a2d79c41fa1342bb814342 Mon Sep 17 00:00:00 2001 From: Anders Broman Date: Tue, 28 Jul 2009 22:18:19 +0000 Subject: [PATCH] Make mark frame work. svn path=/trunk/; revision=29225 --- gtk/menus.c | 5 ++++- gtk/new_packet_list.c | 51 ++++++++++++++++++++++++++++++++++++++----- gtk/new_packet_list.h | 7 ++++++ 3 files changed, 56 insertions(+), 7 deletions(-) diff --git a/gtk/menus.c b/gtk/menus.c index 49234be2d3..070fdc8329 100644 --- a/gtk/menus.c +++ b/gtk/menus.c @@ -496,7 +496,10 @@ static GtkItemFactoryEntry menu_items[] = {"/Edit/Find Ne_xt", "N", GTK_MENU_FUNC(find_next_cb), 0, NULL, NULL,}, {"/Edit/Find Pre_vious", "B", GTK_MENU_FUNC(find_previous_cb), 0, NULL, NULL,}, {"/Edit/", NULL, NULL, 0, "", NULL,}, -#ifndef NEW_PACKET_LIST +#ifdef NEW_PACKET_LIST + {"/Edit/_Mark Packet (toggle)", "M", GTK_MENU_FUNC(new_packet_list_mark_frame_cb), + 0, NULL, NULL,}, +#else {"/Edit/_Mark Packet (toggle)", "M", GTK_MENU_FUNC(packet_list_mark_frame_cb), 0, NULL, NULL,}, {"/Edit/Find Next Mark", "N", GTK_MENU_FUNC(find_next_mark_cb), diff --git a/gtk/new_packet_list.c b/gtk/new_packet_list.c index 4e1ba8c08e..509f34b77c 100644 --- a/gtk/new_packet_list.c +++ b/gtk/new_packet_list.c @@ -54,6 +54,8 @@ #include "color.h" #include "color_filters.h" #include "gtk/color_utils.h" +#include "gtk/capture_file_dlg.h" +#include "gtk/main_statusbar.h" static PacketList *packetlist; @@ -465,22 +467,24 @@ show_cell_data_func(GtkTreeViewColumn *col _U_, GtkCellRenderer *renderer, } if((fdata->color_filter)||(fdata->flags.marked)){ - if(fdata->color_filter){ + gboolean color_on = enable_color; + 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; + }else{ color_filter = fdata->color_filter; fg_color_t = color_filter->fg_color; bg_color_t = color_filter->bg_color; color_t_to_gdkcolor(&fg_gdk, &fg_color_t); color_t_to_gdkcolor(&bg_gdk, &bg_color_t); - }else{ - color_t_to_gdkcolor(&fg_gdk, &prefs.gui_marked_fg); - color_t_to_gdkcolor(&bg_gdk, &prefs.gui_marked_bg); } g_object_set(renderer, "text", cell_text, "foreground-gdk", &fg_gdk, - "foreground-set", enable_color, + "foreground-set", color_on, "background-gdk", &bg_gdk, - "background-set", enable_color, + "background-set", color_on, NULL); }else{ g_object_set(renderer, @@ -504,4 +508,39 @@ new_packet_list_queue_draw(void) gtk_widget_queue_draw (packetlist->view); } +/* call this after last set_frame_mark is done */ +static void mark_frames_ready(void) +{ + file_save_update_dynamics(); + packets_bar_update(); +} + +static void +set_frame_mark(gboolean set, frame_data *frame) +{ + if (set) { + cf_mark_frame(&cfile, frame); + } else { + cf_unmark_frame(&cfile, frame); + } +} + +void new_packet_list_mark_frame_cb(GtkWidget *w _U_, gpointer data _U_) +{ + GtkTreeSelection *selection; + GtkTreeIter iter; + guint row; + frame_data *fdata; + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(packetlist->view)); + gtk_tree_selection_get_selected(selection, NULL, &iter); + row = row_from_iter(&iter); + + fdata = new_packet_list_get_row_data(row); + if (fdata != NULL){ + set_frame_mark(!fdata->flags.marked, fdata); + } + mark_frames_ready(); +} + #endif /* NEW_PACKET_LIST */ diff --git a/gtk/new_packet_list.h b/gtk/new_packet_list.h index 06333527a3..68334eb14f 100644 --- a/gtk/new_packet_list.h +++ b/gtk/new_packet_list.h @@ -32,6 +32,13 @@ GtkWidget *new_packet_list_create(void); void new_packet_list_resize_columns_cb(GtkWidget *widget _U_, gpointer data _U_); gboolean new_packet_list_get_event_row_column(GtkWidget *w, GdkEventButton *event_button, gint *row, gint *column); +/** Mark the currently selected packet. + * + * @param widget parent widget (unused) + * @param data unused + */ +extern void new_packet_list_mark_frame_cb(GtkWidget *widget, gpointer data); + #endif /* NEW_PACKET_LIST */ #endif /* __NEW_PACKET_LIST_H__ */