static void filter_button_cb(GtkWidget *this_button, gpointer parent_w _U_) { struct filter_expression *fe; fe = *pfilter_expression_head; while (fe != NULL) { if ((void *)fe->button == (void *)this_button) { gtk_entry_set_text(GTK_ENTRY(_filter_te), fe->expression); main_filter_packets(&cfile, fe->expression, FALSE); return; } fe = fe->next; } printf("No Callback\n"); }
void apply_selected_filter (guint callback_action, const char *filter) { int action, type; char *str = NULL; const char *current_filter; action = FILTER_ACTION(callback_action); type = FILTER_ACTYPE(callback_action); current_filter = gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget)); switch(type){ case ACTYPE_SELECTED: str = g_strdup_printf("%s", filter); break; case ACTYPE_NOT_SELECTED: str = g_strdup_printf("!(%s)", filter); break; case ACTYPE_AND_SELECTED: if ((!current_filter) || (0 == strlen(current_filter))) str = g_strdup_printf("%s", filter); else str = g_strdup_printf("(%s) && (%s)", current_filter, filter); break; case ACTYPE_OR_SELECTED: if ((!current_filter) || (0 == strlen(current_filter))) str = g_strdup_printf("%s", filter); else str = g_strdup_printf("(%s) || (%s)", current_filter, filter); break; case ACTYPE_AND_NOT_SELECTED: if ((!current_filter) || (0 == strlen(current_filter))) str = g_strdup_printf("!(%s)", filter); else str = g_strdup_printf("(%s) && !(%s)", current_filter, filter); break; case ACTYPE_OR_NOT_SELECTED: if ((!current_filter) || (0 == strlen(current_filter))) str = g_strdup_printf("!(%s)", filter); else str = g_strdup_printf("(%s) || !(%s)", current_filter, filter); break; } switch(action){ case ACTION_MATCH: gtk_entry_set_text(GTK_ENTRY(main_display_filter_widget), str); main_filter_packets(&cfile, str, FALSE); gdk_window_raise(gtk_widget_get_window(top_level)); break; case ACTION_PREPARE: gtk_entry_set_text(GTK_ENTRY(main_display_filter_widget), str); break; case ACTION_FIND_FRAME: find_frame_with_filter(str); break; case ACTION_FIND_NEXT: cf_find_packet_dfilter_string(&cfile, str, SD_FORWARD); break; case ACTION_FIND_PREVIOUS: cf_find_packet_dfilter_string(&cfile, str, SD_BACKWARD); break; case ACTION_COLORIZE: color_display_with_filter(str); break; } g_free (str); }