forked from osmocom/wireshark
Make 'Apply as filter'/'Prepare filter' work for new packet list.
svn path=/trunk/; revision=29419
This commit is contained in:
parent
4d5d306372
commit
af00c3e6da
57
gtk/main.c
57
gtk/main.c
|
@ -494,41 +494,47 @@ selected_ptree_ref_cb(GtkWidget *widget _U_, gpointer data _U_)
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef NEW_PACKET_LIST
|
||||
static gchar *
|
||||
get_filter_from_packet_list_row_and_column(gpointer data)
|
||||
{
|
||||
gint row = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), E_MPACKET_LIST_ROW_KEY));
|
||||
gint column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), E_MPACKET_LIST_COL_KEY));
|
||||
frame_data *fdata = (frame_data *) packet_list_get_row_data(row);
|
||||
epan_dissect_t edt;
|
||||
gint row = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), E_MPACKET_LIST_ROW_KEY));
|
||||
gint column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(data), E_MPACKET_LIST_COL_KEY));
|
||||
frame_data *fdata;
|
||||
gchar *buf=NULL;
|
||||
int err;
|
||||
gchar *err_info;
|
||||
|
||||
#ifdef NEW_PACKET_LIST
|
||||
fdata = (frame_data *) new_packet_list_get_row_data(row);
|
||||
#else
|
||||
fdata = (frame_data *) packet_list_get_row_data(row);
|
||||
#endif
|
||||
|
||||
if (fdata != NULL) {
|
||||
if (!wtap_seek_read(cfile.wth, fdata->file_off, &cfile.pseudo_header,
|
||||
cfile.pd, fdata->cap_len, &err, &err_info)) {
|
||||
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
|
||||
cf_read_error_message(err, err_info), cfile.filename);
|
||||
return NULL;
|
||||
}
|
||||
/* proto tree, visible. We need a proto tree if there's custom columns */
|
||||
epan_dissect_init(&edt, have_custom_cols(&cfile.cinfo), FALSE);
|
||||
col_custom_prime_edt(&edt, &cfile.cinfo);
|
||||
|
||||
epan_dissect_run(&edt, &cfile.pseudo_header, cfile.pd, fdata,
|
||||
&cfile.cinfo);
|
||||
epan_dissect_fill_in_columns(&edt, TRUE);
|
||||
epan_dissect_t edt;
|
||||
|
||||
if (strlen(cfile.cinfo.col_expr.col_expr[column]) != 0 &&
|
||||
strlen(cfile.cinfo.col_expr.col_expr_val[column]) != 0) {
|
||||
/* leak a little but safer than ep_ here*/
|
||||
buf = se_strdup_printf("%s == %s", cfile.cinfo.col_expr.col_expr[column],
|
||||
cfile.cinfo.col_expr.col_expr_val[column]);
|
||||
}
|
||||
if (!wtap_seek_read(cfile.wth, fdata->file_off, &cfile.pseudo_header,
|
||||
cfile.pd, fdata->cap_len, &err, &err_info)) {
|
||||
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
|
||||
cf_read_error_message(err, err_info), cfile.filename);
|
||||
return NULL;
|
||||
}
|
||||
/* proto tree, visible. We need a proto tree if there's custom columns */
|
||||
epan_dissect_init(&edt, have_custom_cols(&cfile.cinfo), FALSE);
|
||||
col_custom_prime_edt(&edt, &cfile.cinfo);
|
||||
|
||||
epan_dissect_cleanup(&edt);
|
||||
epan_dissect_run(&edt, &cfile.pseudo_header, cfile.pd, fdata,
|
||||
&cfile.cinfo);
|
||||
epan_dissect_fill_in_columns(&edt, TRUE);
|
||||
|
||||
if (strlen(cfile.cinfo.col_expr.col_expr[column]) != 0 &&
|
||||
strlen(cfile.cinfo.col_expr.col_expr_val[column]) != 0) {
|
||||
/* leak a little but safer than ep_ here*/
|
||||
buf = se_strdup_printf("%s == %s", cfile.cinfo.col_expr.col_expr[column],
|
||||
cfile.cinfo.col_expr.col_expr_val[column]);
|
||||
}
|
||||
|
||||
epan_dissect_cleanup(&edt);
|
||||
}
|
||||
|
||||
return buf;
|
||||
|
@ -541,7 +547,6 @@ match_selected_plist_cb(GtkWidget *w _U_, gpointer data, MATCH_SELECTED_E action
|
|||
action,
|
||||
get_filter_from_packet_list_row_and_column(data));
|
||||
}
|
||||
#endif /* NEW_PACKET_LIST */
|
||||
|
||||
/* This function allows users to right click in the details window and copy the text
|
||||
* information to the operating systems clipboard.
|
||||
|
|
|
@ -159,7 +159,6 @@ extern void copy_selected_plist_cb(GtkWidget *w _U_, gpointer data, COPY_SELECTE
|
|||
*/
|
||||
extern void colorize_selected_ptree_cb(GtkWidget *w, gpointer data, guint8 filt_nr);
|
||||
|
||||
#ifndef NEW_PACKET_LIST
|
||||
/** User requested one of "Apply as Filter" or "Prepare a Filter" functions
|
||||
* by context menu of packet list.
|
||||
*
|
||||
|
@ -168,7 +167,6 @@ extern void colorize_selected_ptree_cb(GtkWidget *w, gpointer data, guint8 filt_
|
|||
* @param action the function to use
|
||||
*/
|
||||
extern void match_selected_plist_cb(GtkWidget *widget, gpointer data, MATCH_SELECTED_E action);
|
||||
#endif /* NEW_PACKET_LIST */
|
||||
|
||||
/** User requested "Quit" by menu or toolbar.
|
||||
*
|
||||
|
|
|
@ -754,7 +754,6 @@ static GtkItemFactoryEntry packet_list_menu_items[] =
|
|||
{"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
|
||||
|
||||
{"/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL,},
|
||||
#ifndef NEW_PACKET_LIST
|
||||
{"/Apply as Filter/_Selected", NULL, GTK_MENU_FUNC(match_selected_plist_cb),
|
||||
MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL,},
|
||||
{"/Apply as Filter/_Not Selected", NULL, GTK_MENU_FUNC(match_selected_plist_cb),
|
||||
|
@ -780,7 +779,6 @@ static GtkItemFactoryEntry packet_list_menu_items[] =
|
|||
MATCH_SELECTED_AND_NOT, NULL, NULL,},
|
||||
{"/Prepare a Filter/... o_r not Selected", NULL, GTK_MENU_FUNC(match_selected_plist_cb),
|
||||
MATCH_SELECTED_OR_NOT, NULL, NULL,},
|
||||
#endif /* NEW_PACKET_LIST */
|
||||
{"/Conversation Filter", NULL, NULL, 0, "<Branch>",NULL,},
|
||||
{"/Conversation Filter/Ethernet", NULL, GTK_MENU_FUNC(conversation_cb),
|
||||
CONV_ETHER, NULL, NULL,},
|
||||
|
@ -2306,12 +2304,17 @@ popup_menu_handler(GtkWidget *widget, GdkEvent *event, gpointer data)
|
|||
if (widget == g_object_get_data(G_OBJECT(popup_menu_object), E_MPACKET_LIST_KEY) &&
|
||||
((GdkEventButton *)event)->button != 1) {
|
||||
#ifdef NEW_PACKET_LIST
|
||||
if (new_packet_list_get_event_row_column(widget, (GdkEventButton *)event, &row, &column)) {
|
||||
gint physical_row;
|
||||
if (new_packet_list_get_event_row_column((GdkEventButton *)event, &physical_row, &row, &column)) {
|
||||
#else
|
||||
if (packet_list_get_event_row_column(widget, (GdkEventButton *)event, &row, &column)) {
|
||||
#endif
|
||||
g_object_set_data(G_OBJECT(popup_menu_object), E_MPACKET_LIST_ROW_KEY,
|
||||
#ifdef NEW_PACKET_LIST
|
||||
GINT_TO_POINTER(physical_row));
|
||||
#else
|
||||
GINT_TO_POINTER(row));
|
||||
#endif
|
||||
g_object_set_data(G_OBJECT(popup_menu_object), E_MPACKET_LIST_COL_KEY,
|
||||
GINT_TO_POINTER(column));
|
||||
#ifdef NEW_PACKET_LIST
|
||||
|
|
|
@ -427,8 +427,8 @@ new_packet_list_select_cb(GtkTreeView *tree_view, gpointer data _U_)
|
|||
}
|
||||
|
||||
gboolean
|
||||
new_packet_list_get_event_row_column(GtkWidget *w _U_, GdkEventButton *event_button,
|
||||
gint *row, gint *column)
|
||||
new_packet_list_get_event_row_column(GdkEventButton *event_button,
|
||||
gint *physical_row, gint *row, gint *column)
|
||||
{
|
||||
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(packetlist->view));
|
||||
GtkTreePath *path;
|
||||
|
@ -441,6 +441,7 @@ new_packet_list_get_event_row_column(GtkWidget *w _U_, GdkEventButton *event_but
|
|||
GtkTreeIter iter;
|
||||
GList *cols;
|
||||
gint *indices;
|
||||
PacketListRecord *record;
|
||||
|
||||
/* Fetch indices */
|
||||
gtk_tree_model_get_iter(model, &iter, path);
|
||||
|
@ -450,6 +451,10 @@ new_packet_list_get_event_row_column(GtkWidget *w _U_, GdkEventButton *event_but
|
|||
*row = indices[0] + 1;
|
||||
gtk_tree_path_free(path);
|
||||
|
||||
/* Fetch physical row */
|
||||
record = new_packet_list_get_record(model, &iter);
|
||||
*physical_row = record->fdata->num;
|
||||
|
||||
/* Fetch column */
|
||||
/* XXX -doesn't work if columns are re-arranged? */
|
||||
cols = gtk_tree_view_get_columns(GTK_TREE_VIEW(packetlist->view));
|
||||
|
|
|
@ -28,9 +28,10 @@
|
|||
#ifdef NEW_PACKET_LIST
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
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);
|
||||
gboolean new_packet_list_get_event_row_column(GdkEventButton *event_button, gint *physical_row, gint *row, gint *column);
|
||||
|
||||
/** Set the font of the packet list window.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue