aboutsummaryrefslogtreecommitdiffstats
path: root/ui/gtk/prefs_capture.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-07-09 02:40:20 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-07-09 02:40:20 +0000
commitf090a73e9c0da07cc60da8fc32f7547e5e5a2efc (patch)
tree06f708f0eb73ed01b2143450c8f8682e9bb31efd /ui/gtk/prefs_capture.c
parent4fd366e321379ed90f51ee31bb60ad940ed00507 (diff)
From Michael Mann:
disable hide checkboxes with error messages Updated preference dialog to include text if hide checkbox is disabled. Used error message for "Local Interfaces" dialog. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=2598 svn path=/trunk/; revision=43622
Diffstat (limited to 'ui/gtk/prefs_capture.c')
-rw-r--r--ui/gtk/prefs_capture.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/ui/gtk/prefs_capture.c b/ui/gtk/prefs_capture.c
index 55d36a50fb..ee0f16b836 100644
--- a/ui/gtk/prefs_capture.c
+++ b/ui/gtk/prefs_capture.c
@@ -42,6 +42,7 @@
#include "ui/gtk/gui_utils.h"
#include "ui/gtk/dlg_utils.h"
#include "ui/gtk/iface_lists.h"
+#include "ui/gtk/capture_globals.h"
#include "ui/gtk/main_welcome.h"
#include "ui/gtk/help_dlg.h"
#include "ui/gtk/stock_icons.h"
@@ -66,7 +67,7 @@
#define IFOPTS_IF_NOSEL -1
/* interface options dialog */
-static GtkWidget *cur_list, *if_dev_lb, *if_name_lb, *if_linktype_lb, *if_linktype_cb, *if_descr_te, *if_hide_cb;
+static GtkWidget *cur_list, *if_dev_lb, *if_name_lb, *if_linktype_lb, *if_linktype_cb, *if_descr_te, *if_hide_cb, *if_default_if_lb;
#ifdef HAVE_PCAP_CREATE
static GtkWidget *if_monitor_lb, *if_monitor_cb;
#endif
@@ -560,7 +561,11 @@ ifopts_edit_cb(GtkWidget *w, gpointer data _U_)
cur_list);
gtk_table_attach_defaults(GTK_TABLE(main_tb), if_hide_cb, 1, 2, row, row+1);
gtk_widget_show(if_hide_cb);
- row++;
+
+ if_default_if_lb = gtk_label_new("(Default interface cannot be hidden)");
+ gtk_table_attach_defaults(GTK_TABLE(main_tb), if_default_if_lb, 1, 3, row, row+1);
+ gtk_misc_set_alignment(GTK_MISC(if_default_if_lb), 0.15f, 0.5f);
+ row++;
/* button row: OK and Cancel buttons */
bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
@@ -693,7 +698,7 @@ ifopts_edit_ifsel_cb(GtkTreeSelection *selection _U_,
#ifdef HAVE_PCAP_CREATE
gboolean monitor_mode;
#endif
- gboolean hide;
+ gboolean hide, hide_enabled = TRUE;
if_capabilities_t *caps;
gint selected = 0;
@@ -773,8 +778,29 @@ ifopts_edit_ifsel_cb(GtkTreeSelection *selection _U_,
/* display the interface description from current interfaces selection */
gtk_entry_set_text(GTK_ENTRY(if_descr_te), comment);
+ /* See if this is the currently selected capturing device */
+ if (prefs.capture_device != NULL) {
+ guint i;
+ interface_t device;
+ for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
+ device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ if ((strcmp(device.display_name, prefs.capture_device) == 0) &&
+ (strcmp(device.name, if_name) == 0)) {
+ /* Don't allow current interface to be hidden */
+ hide_enabled = FALSE;
+ break;
+ }
+ }
+ }
+
/* display the "hide interface" button state from current interfaces selection */
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(if_hide_cb), hide);
+ gtk_widget_set_sensitive(if_hide_cb, hide_enabled);
+ if (hide_enabled) {
+ gtk_widget_hide(if_default_if_lb);
+ } else {
+ gtk_widget_show(if_default_if_lb);
+ }
interfaces_info_nochange = FALSE;