Make mark frame work.

svn path=/trunk/; revision=29225
This commit is contained in:
Anders Broman 2009-07-28 22:18:19 +00:00
parent 633a53619a
commit b95335b76f
3 changed files with 56 additions and 7 deletions

View File

@ -496,7 +496,10 @@ static GtkItemFactoryEntry menu_items[] =
{"/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,},
#ifndef NEW_PACKET_LIST
#ifdef NEW_PACKET_LIST
{"/Edit/_Mark Packet (toggle)", "<control>M", GTK_MENU_FUNC(new_packet_list_mark_frame_cb),
0, NULL, NULL,},
#else
{"/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),

View File

@ -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 */

View File

@ -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__ */