aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/main.c')
-rw-r--r--gtk/main.c109
1 files changed, 69 insertions, 40 deletions
diff --git a/gtk/main.c b/gtk/main.c
index d542a5cabd..222f9b901f 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -130,6 +130,7 @@
#include "colors.h"
#include "gui_utils.h"
#include "compat_macros.h"
+#include "color_dlg.h"
#include "main.h"
#include "menu.h"
@@ -251,12 +252,12 @@ static void main_save_window_geometry(GtkWidget *widget);
static void
match_selected_cb_do(gpointer data, int action, gchar *text)
{
- GtkWidget *filter_te;
- char *cur_filter, *new_filter;
+ GtkWidget *filter_te;
+ char *cur_filter, *new_filter;
if ((!text) || (0 == strlen(text))) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Could not acquire information to build a filter!\nTry expanding or choosing another item.");
- return;
+ return;
}
g_assert(data);
@@ -268,45 +269,45 @@ match_selected_cb_do(gpointer data, int action, gchar *text)
switch (action&MATCH_SELECTED_MASK) {
case MATCH_SELECTED_REPLACE:
- new_filter = g_strdup(text);
- break;
+ new_filter = g_strdup(text);
+ break;
case MATCH_SELECTED_AND:
- if ((!cur_filter) || (0 == strlen(cur_filter)))
- new_filter = g_strdup(text);
- else
- new_filter = g_strconcat("(", cur_filter, ") && (", text, ")", NULL);
- break;
+ if ((!cur_filter) || (0 == strlen(cur_filter)))
+ new_filter = g_strdup(text);
+ else
+ new_filter = g_strconcat("(", cur_filter, ") && (", text, ")", NULL);
+ break;
case MATCH_SELECTED_OR:
- if ((!cur_filter) || (0 == strlen(cur_filter)))
- new_filter = g_strdup(text);
- else
- new_filter = g_strconcat("(", cur_filter, ") || (", text, ")", NULL);
- break;
+ if ((!cur_filter) || (0 == strlen(cur_filter)))
+ new_filter = g_strdup(text);
+ else
+ new_filter = g_strconcat("(", cur_filter, ") || (", text, ")", NULL);
+ break;
case MATCH_SELECTED_NOT:
- new_filter = g_strconcat("!(", text, ")", NULL);
- break;
+ new_filter = g_strconcat("!(", text, ")", NULL);
+ break;
case MATCH_SELECTED_AND_NOT:
- if ((!cur_filter) || (0 == strlen(cur_filter)))
- new_filter = g_strconcat("!(", text, ")", NULL);
- else
- new_filter = g_strconcat("(", cur_filter, ") && !(", text, ")", NULL);
- break;
+ if ((!cur_filter) || (0 == strlen(cur_filter)))
+ new_filter = g_strconcat("!(", text, ")", NULL);
+ else
+ new_filter = g_strconcat("(", cur_filter, ") && !(", text, ")", NULL);
+ break;
case MATCH_SELECTED_OR_NOT:
- if ((!cur_filter) || (0 == strlen(cur_filter)))
- new_filter = g_strconcat("!(", text, ")", NULL);
- else
- new_filter = g_strconcat("(", cur_filter, ") || !(", text, ")", NULL);
- break;
+ if ((!cur_filter) || (0 == strlen(cur_filter)))
+ new_filter = g_strconcat("!(", text, ")", NULL);
+ else
+ new_filter = g_strconcat("(", cur_filter, ") || !(", text, ")", NULL);
+ break;
default:
- g_assert_not_reached();
- new_filter = NULL;
- break;
+ g_assert_not_reached();
+ new_filter = NULL;
+ break;
}
/* Free up the copy we got of the old filter text. */
@@ -314,17 +315,17 @@ match_selected_cb_do(gpointer data, int action, gchar *text)
/* Don't change the current display filter if we only want to copy the filter */
if (action&MATCH_SELECTED_COPY_ONLY) {
- GString *gtk_text_str = g_string_new("");
- g_string_sprintfa(gtk_text_str, "%s", new_filter);
- copy_to_clipboard(gtk_text_str);
- g_string_free(gtk_text_str, TRUE);
+ GString *gtk_text_str = g_string_new("");
+ g_string_sprintfa(gtk_text_str, "%s", new_filter);
+ copy_to_clipboard(gtk_text_str);
+ g_string_free(gtk_text_str, TRUE);
} else {
- /* create a new one and set the display filter entry accordingly */
- gtk_entry_set_text(GTK_ENTRY(filter_te), new_filter);
+ /* create a new one and set the display filter entry accordingly */
+ gtk_entry_set_text(GTK_ENTRY(filter_te), new_filter);
- /* Run the display filter so it goes in effect. */
- if (action&MATCH_SELECTED_APPLY_NOW)
- main_filter_packets(&cfile, new_filter, FALSE);
+ /* Run the display filter so it goes in effect. */
+ if (action&MATCH_SELECTED_APPLY_NOW)
+ main_filter_packets(&cfile, new_filter, FALSE);
}
/* Free up the new filter text. */
@@ -334,7 +335,7 @@ match_selected_cb_do(gpointer data, int action, gchar *text)
void
match_selected_ptree_cb(GtkWidget *w, gpointer data, MATCH_SELECTED_E action)
{
- char *filter;
+ char *filter = NULL;
if (cfile.finfo_selected) {
filter = proto_construct_match_selected_string(cfile.finfo_selected,
@@ -343,6 +344,34 @@ match_selected_ptree_cb(GtkWidget *w, gpointer data, MATCH_SELECTED_E action)
}
}
+void
+colorize_selected_ptree_cb(GtkWidget *w _U_, gpointer data _U_, guint8 filt_nr)
+{
+ char *filter = NULL;
+
+ if (cfile.finfo_selected) {
+ filter = proto_construct_match_selected_string(cfile.finfo_selected,
+ cfile.edt);
+ if ((!filter) || (0 == strlen(filter))) {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ "Could not acquire information to build a filter!\n"
+ "Try expanding or choosing another item.");
+ return;
+ }
+
+ if (filt_nr==0) {
+ color_display_with_filter(filter);
+ } else {
+ if (filt_nr==255) {
+ color_filters_init();
+ } else {
+ color_filters_set_tmp(filt_nr,filter);
+ }
+ cf_colorize_packets(&cfile);
+ }
+ }
+}
+
static void selected_ptree_info_answered_cb(gpointer dialog _U_, gint btn, gpointer data)
{