diff options
author | stig <stig@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-09-30 17:27:08 +0000 |
---|---|---|
committer | stig <stig@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-09-30 17:27:08 +0000 |
commit | 155923cbdeed99847906c46bdc602339d56d03ae (patch) | |
tree | 71265c5dc1117b3f6a7bf472af0df65387a5117e /gtk/main_filter_toolbar.c | |
parent | e8c3b63d4a9b61f242d17ce442a545775c70b7e3 (diff) |
Indicate that the selected display filter is applied by disabling the "Apply"
button. Indicate that no filter is applied by disabling the "Clear" button.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@34288 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'gtk/main_filter_toolbar.c')
-rw-r--r-- | gtk/main_filter_toolbar.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gtk/main_filter_toolbar.c b/gtk/main_filter_toolbar.c index 28e53b2548..60ec168df6 100644 --- a/gtk/main_filter_toolbar.c +++ b/gtk/main_filter_toolbar.c @@ -63,6 +63,14 @@ filter_activate_cb(GtkWidget *w _U_, gpointer data) main_filter_packets(&cfile, s, FALSE); } +/* Enable both Clear and Apply button when filter is changed */ +static void +filter_changed_cb(GtkWidget *w _U_, gpointer data) +{ + gtk_widget_set_sensitive (g_object_get_data (G_OBJECT(data), E_DFILTER_APPLY_KEY), TRUE); + gtk_widget_set_sensitive (g_object_get_data (G_OBJECT(data), E_DFILTER_CLEAR_KEY), TRUE); +} + /* redisplay with no display filter */ static void filter_reset_cb(GtkWidget *w, gpointer data _U_) @@ -126,6 +134,7 @@ GtkWidget *filter_toolbar_new(void) g_object_set_data(G_OBJECT(filter_te), E_DFILTER_CM_KEY, filter_cm); g_object_set_data(G_OBJECT(top_level), E_DFILTER_CM_KEY, filter_cm); g_signal_connect(filter_te, "activate", G_CALLBACK(filter_activate_cb), filter_te); + g_signal_connect(filter_te, "changed", G_CALLBACK(filter_changed_cb), filter_cm); g_signal_connect(filter_te, "changed", G_CALLBACK(filter_te_syntax_check_cb), NULL); g_object_set_data(G_OBJECT(filter_tb), E_FILT_AUTOCOMP_PTR_KEY, NULL); g_object_set_data(G_OBJECT(filter_te), E_FILT_FIELD_USE_STATUSBAR_KEY, ""); @@ -167,7 +176,9 @@ GtkWidget *filter_toolbar_new(void) /* Create the "Clear" button */ filter_reset = gtk_tool_button_new_from_stock(WIRESHARK_STOCK_CLEAR_EXPRESSION); g_object_set_data(G_OBJECT(filter_reset), E_DFILTER_TE_KEY, filter_te); + g_object_set_data (G_OBJECT(filter_cm), E_DFILTER_CLEAR_KEY, filter_reset); g_signal_connect(filter_reset, "clicked", G_CALLBACK(filter_reset_cb), NULL); + gtk_widget_set_sensitive (GTK_WIDGET(filter_reset), FALSE); gtk_widget_show(GTK_WIDGET(filter_reset)); gtk_toolbar_insert(GTK_TOOLBAR(filter_tb), filter_reset, @@ -180,7 +191,9 @@ GtkWidget *filter_toolbar_new(void) /* Create the "Apply" button */ filter_apply = gtk_tool_button_new_from_stock(WIRESHARK_STOCK_APPLY_EXPRESSION); g_object_set_data(G_OBJECT(filter_apply), E_DFILTER_CM_KEY, filter_cm); + g_object_set_data (G_OBJECT(filter_cm), E_DFILTER_APPLY_KEY, filter_apply); g_signal_connect(filter_apply, "clicked", G_CALLBACK(filter_activate_cb), filter_te); + gtk_widget_set_sensitive (GTK_WIDGET(filter_apply), FALSE); gtk_widget_show(GTK_WIDGET(filter_apply)); gtk_toolbar_insert(GTK_TOOLBAR(filter_tb), @@ -341,6 +354,14 @@ main_filter_packets(capture_file *cf, const gchar *dftext, gboolean force) s = g_strdup(dftext); cf_status = cf_filter_packets(cf, s, force); + + if (cf_status == CF_OK) { + gtk_widget_set_sensitive (g_object_get_data (G_OBJECT(filter_cm), E_DFILTER_APPLY_KEY), FALSE); + if (!s || strlen (s) == 0) { + gtk_widget_set_sensitive (g_object_get_data (G_OBJECT(filter_cm), E_DFILTER_CLEAR_KEY), FALSE); + } + } + if (!s) return (cf_status == CF_OK); |