summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-06-25 21:05:36 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-06-25 21:05:36 +0000
commit3814106d7e5333e887dcd9d4c8ced0c2e10cd22c (patch)
treed823be6cefb91a9442becfdb371cb34cef82ed14 /ui
parent9b21bf229f4a00f9f9b1189553e25c445e939100 (diff)
downloadwireshark-3814106d7e5333e887dcd9d4c8ced0c2e10cd22c.tar.gz
From Michael Mann:
generic preferences implementation https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7402 svn path=/trunk/; revision=43484
Diffstat (limited to 'ui')
-rw-r--r--ui/gtk/CMakeLists.txt2
-rw-r--r--ui/gtk/Makefile.common4
-rw-r--r--ui/gtk/main.c4
-rw-r--r--ui/gtk/prefs_dlg.c155
-rw-r--r--ui/gtk/prefs_taps.c2
-rw-r--r--ui/qt/main.cpp4
6 files changed, 90 insertions, 81 deletions
diff --git a/ui/gtk/CMakeLists.txt b/ui/gtk/CMakeLists.txt
index a556099b75..ed8edc7b7b 100644
--- a/ui/gtk/CMakeLists.txt
+++ b/ui/gtk/CMakeLists.txt
@@ -96,8 +96,6 @@ set(WIRESHARK_GTK_SRC
prefs_layout.c
prefs_nameres.c
prefs_print.c
- prefs_protocols.c
- prefs_taps.c
prefs_stream.c
print_dlg.c
profile_dlg.c
diff --git a/ui/gtk/Makefile.common b/ui/gtk/Makefile.common
index 72a7b5ce32..3e54f3caef 100644
--- a/ui/gtk/Makefile.common
+++ b/ui/gtk/Makefile.common
@@ -121,8 +121,6 @@ WIRESHARK_GTK_SRC = \
prefs_layout.c \
prefs_nameres.c \
prefs_print.c \
- prefs_protocols.c \
- prefs_taps.c \
prefs_stream.c \
print_dlg.c \
profile_dlg.c \
@@ -324,8 +322,6 @@ noinst_HEADERS = \
prefs_layout.h \
prefs_nameres.h \
prefs_print.h \
- prefs_protocols.h \
- prefs_taps.h \
prefs_stream.h \
profile_dlg.h \
proto_dlg.h \
diff --git a/ui/gtk/main.c b/ui/gtk/main.c
index 39f2fa623d..ca61a76872 100644
--- a/ui/gtk/main.c
+++ b/ui/gtk/main.c
@@ -2574,10 +2574,6 @@ main(int argc, char *argv[])
splash_update(RA_PREFERENCES, NULL, (gpointer)splash_win);
- /* Now register the preferences for any non-dissector modules.
- We must do that before we read the preferences as well. */
- prefs_register_modules();
-
prefs_p = read_configuration_files (&gdp_path, &dp_path);
/* Removed thread code:
* http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=35027
diff --git a/ui/gtk/prefs_dlg.c b/ui/gtk/prefs_dlg.c
index 8f3babe9e3..6d2844bdf4 100644
--- a/ui/gtk/prefs_dlg.c
+++ b/ui/gtk/prefs_dlg.c
@@ -50,8 +50,6 @@
#include "ui/gtk/prefs_layout.h"
#include "ui/gtk/prefs_capture.h"
#include "ui/gtk/prefs_nameres.h"
-#include "ui/gtk/prefs_taps.h"
-#include "ui/gtk/prefs_protocols.h"
#include "ui/gtk/gui_utils.h"
#include "ui/gtk/dlg_utils.h"
#include "ui/gtk/stock_icons.h"
@@ -99,8 +97,6 @@ static GtkWidget *create_preference_filename_entry(GtkWidget *, int,
#define E_CAPTURE_PAGE_KEY "capture_options_page"
#define E_PRINT_PAGE_KEY "printer_options_page"
#define E_NAMERES_PAGE_KEY "nameres_options_page"
-#define E_TAPS_PAGE_KEY "taps_options_page"
-#define E_PROTOCOLS_PAGE_KEY "protocols_options_page"
#define E_FILTER_EXPRESSIONS_PAGE_KEY "filter_expressions_page"
/*
@@ -124,7 +120,7 @@ struct ct_struct {
GtkWidget *tree;
GtkTreeIter iter;
gint page;
- gboolean is_protocol;
+ GtkTreeStore *store;
};
static gint protocols_page = 0;
@@ -268,7 +264,76 @@ pref_show(pref_t *pref, gpointer user_data)
return 0;
}
+#define prefs_tree_iter GtkTreeIter
+
+/* add a page to the tree */
+static prefs_tree_iter
+prefs_tree_page_add(const gchar *title, gint page_nr,
+ gpointer store, prefs_tree_iter *parent_iter)
+{
+ prefs_tree_iter iter;
+
+ gtk_tree_store_append(store, &iter, parent_iter);
+ gtk_tree_store_set(store, &iter, 0, title, 1, page_nr, -1);
+ return iter;
+}
+
+/* add a page to the notebook */
+static GtkWidget *
+prefs_nb_page_add(GtkWidget *notebook, const gchar *title, GtkWidget *page, const char *page_key)
+{
+ GtkWidget *frame;
+
+ frame = gtk_frame_new(title);
+ gtk_widget_show(frame);
+ if(page) {
+ gtk_container_add(GTK_CONTAINER(frame), page);
+ g_object_set_data(G_OBJECT(prefs_w), page_key, page);
+ }
+ gtk_notebook_append_page (GTK_NOTEBOOK(notebook), frame, NULL);
+
+ return frame;
+}
+
+/* create a basic window for preferences */
+GtkWidget*
+simple_prefs_show(module_t *module, struct ct_struct *cts, gchar* label_str)
+{
+ GtkWidget *main_tb, *main_vb, *frame, *main_sw;
+ int pos = 0;
+
+ /* Scrolled window */
+ main_sw = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(main_sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+
+ /* Frame */
+ frame = gtk_frame_new(module->description);
+ gtk_container_set_border_width(GTK_CONTAINER(frame), 5);
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(main_sw), frame);
+ g_object_set_data(G_OBJECT(main_sw), E_PAGESW_FRAME_KEY, frame);
+
+ /* Main vertical box */
+ main_vb = ws_gtk_box_new(GTK_ORIENTATION_VERTICAL, 5, FALSE);
+ gtk_container_set_border_width(GTK_CONTAINER(main_vb), 5);
+ gtk_container_add(GTK_CONTAINER(frame), main_vb);
+
+ /* Main table */
+ main_tb = gtk_table_new(module->numprefs, 2, FALSE);
+ gtk_box_pack_start(GTK_BOX(main_vb), main_tb, FALSE, FALSE, 0);
+ gtk_table_set_row_spacings(GTK_TABLE(main_tb), 10);
+ gtk_table_set_col_spacings(GTK_TABLE(main_tb), 15);
+
+ /* Add items for each of the preferences */
+ prefs_pref_foreach(module, pref_show, main_tb);
+
+ /* Show 'em what we got */
+ gtk_widget_show_all(main_vb);
+
+ return main_vb;
+}
+
#define MAX_TREE_NODE_NAME_LEN 64
+
/* show prefs page for each registered module (protocol) */
static guint
module_prefs_show(module_t *module, gpointer user_data)
@@ -304,8 +369,17 @@ module_prefs_show(module_t *module, gpointer user_data)
*/
g_strlcpy(label_str, module->title, MAX_TREE_NODE_NAME_LEN);
model = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cts->tree)));
- if (prefs_module_has_submodules(module) && !cts->iter.stamp)
- gtk_tree_store_append(model, &iter, NULL);
+
+ if (module->parent == NULL) {
+ prefs_nb_page_add(cts->notebook, label_str, simple_prefs_show(module, cts, label_str), module->title);
+ gtk_tree_store_append(model, &iter, NULL);
+ /* Save the protocols page */
+ if (strcmp(module->title, "Protocols") == 0) {
+ protocols_page = cts->page++;
+ } else {
+ cts->page++;
+ }
+ }
else
gtk_tree_store_append(model, &iter, &cts->iter);
@@ -324,8 +398,6 @@ module_prefs_show(module_t *module, gpointer user_data)
*/
child_cts = *cts;
child_cts.iter = iter;
- if (module == protocols_module)
- child_cts.is_protocol = TRUE;
prefs_modules_foreach_submodules(module, module_prefs_show, &child_cts);
/* keep the page count right */
@@ -386,38 +458,6 @@ module_prefs_show(module_t *module, gpointer user_data)
}
-#define prefs_tree_iter GtkTreeIter
-
-/* add a page to the tree */
-static prefs_tree_iter
-prefs_tree_page_add(const gchar *title, gint page_nr,
- gpointer store, prefs_tree_iter *parent_iter)
-{
- prefs_tree_iter iter;
-
- gtk_tree_store_append(store, &iter, parent_iter);
- gtk_tree_store_set(store, &iter, 0, title, 1, page_nr, -1);
- return iter;
-}
-
-/* add a page to the notebook */
-static GtkWidget *
-prefs_nb_page_add(GtkWidget *notebook, const gchar *title, GtkWidget *page, const char *page_key)
-{
- GtkWidget *frame;
-
- frame = gtk_frame_new(title);
- gtk_widget_show(frame);
- if(page) {
- gtk_container_add(GTK_CONTAINER(frame), page);
- g_object_set_data(G_OBJECT(prefs_w), page_key, page);
- }
- gtk_notebook_append_page (GTK_NOTEBOOK(notebook), frame, NULL);
-
- return frame;
-}
-
-
/* show the dialog */
void
prefs_cb(GtkWidget *w, gpointer dummy)
@@ -512,11 +552,6 @@ prefs_page_cb(GtkWidget *w _U_, gpointer dummy _U_, PREFS_PAGE_E prefs_page)
cts.page = 0;
- /* Preferences common for all protocols */
- g_strlcpy(label_str, "Protocols", MAX_TREE_NODE_NAME_LEN);
- prefs_nb_page_add(prefs_nb, label_str, protocols_prefs_show(), E_PROTOCOLS_PAGE_KEY);
- protocols_page = cts.page++;
-
/* GUI prefs */
g_strlcpy(label_str, "User Interface", MAX_TREE_NODE_NAME_LEN);
prefs_nb_page_add(prefs_nb, label_str, gui_prefs_show(), E_GUI_PAGE_KEY);
@@ -582,9 +617,10 @@ prefs_page_cb(GtkWidget *w _U_, gpointer dummy _U_, PREFS_PAGE_E prefs_page)
#endif /* _WIN32 */
#endif /* HAVE_LIBPCAP */
- /* Printing prefs */
- g_strlcpy(label_str, "Printing", MAX_TREE_NODE_NAME_LEN);
- prefs_nb_page_add(prefs_nb, label_str, printer_prefs_show(), E_PRINT_PAGE_KEY);
+ /* Saved filter prefs */
+ g_strlcpy(label_str, "Filter Expressions", MAX_TREE_NODE_NAME_LEN);
+ prefs_nb_page_add(prefs_nb, label_str, filter_expressions_prefs_show(),
+ E_FILTER_EXPRESSIONS_PAGE_KEY);
prefs_tree_page_add(label_str, cts.page, store, NULL);
cts.page++;
@@ -594,22 +630,15 @@ prefs_page_cb(GtkWidget *w _U_, gpointer dummy _U_, PREFS_PAGE_E prefs_page)
prefs_tree_page_add(label_str, cts.page, store, NULL);
cts.page++;
- /* Saved filter prefs */
- g_strlcpy(label_str, "Filter Expressions", MAX_TREE_NODE_NAME_LEN);
- prefs_nb_page_add(prefs_nb, label_str, filter_expressions_prefs_show(),
- E_FILTER_EXPRESSIONS_PAGE_KEY);
- prefs_tree_page_add(label_str, cts.page, store, NULL);
- cts.page++;
-
- /* TAPS player prefs */
- g_strlcpy(label_str, "Statistics", MAX_TREE_NODE_NAME_LEN);
- prefs_nb_page_add(prefs_nb, label_str, stats_prefs_show(), E_TAPS_PAGE_KEY);
+ /* Printing prefs */
+ g_strlcpy(label_str, "Printing", MAX_TREE_NODE_NAME_LEN);
+ prefs_nb_page_add(prefs_nb, label_str, printer_prefs_show(), E_PRINT_PAGE_KEY);
prefs_tree_page_add(label_str, cts.page, store, NULL);
cts.page++;
/* Registered prefs */
cts.notebook = prefs_nb;
- cts.is_protocol = FALSE;
+ cts.store = store;
prefs_modules_foreach_submodules(NULL, module_prefs_show, &cts);
/* Button row: OK and alike buttons */
@@ -1322,8 +1351,6 @@ prefs_main_fetch_all(GtkWidget *dlg, gboolean *must_redissect)
nameres_prefs_fetch(g_object_get_data(G_OBJECT(dlg), E_NAMERES_PAGE_KEY));
filter_expressions_prefs_fetch(g_object_get_data(G_OBJECT(dlg),
E_FILTER_EXPRESSIONS_PAGE_KEY));
- stats_prefs_fetch(g_object_get_data(G_OBJECT(dlg), E_TAPS_PAGE_KEY));
- protocols_prefs_fetch(g_object_get_data(G_OBJECT(dlg), E_PROTOCOLS_PAGE_KEY));
prefs_modules_foreach(module_prefs_fetch, must_redissect);
return TRUE;
@@ -1359,8 +1386,6 @@ prefs_main_apply_all(GtkWidget *dlg, gboolean redissect)
#endif /* HAVE_LIBPCAP */
printer_prefs_apply(g_object_get_data(G_OBJECT(dlg), E_PRINT_PAGE_KEY));
nameres_prefs_apply(g_object_get_data(G_OBJECT(dlg), E_NAMERES_PAGE_KEY));
- stats_prefs_apply(g_object_get_data(G_OBJECT(dlg), E_TAPS_PAGE_KEY));
- protocols_prefs_apply(g_object_get_data(G_OBJECT(dlg), E_PROTOCOLS_PAGE_KEY));
/* show/hide the Save button - depending on setting */
save_bt = g_object_get_data(G_OBJECT(prefs_w), E_PREFSW_SAVE_BT_KEY);
@@ -1403,13 +1428,11 @@ prefs_main_destroy_all(GtkWidget *dlg)
#endif /* HAVE_LIBPCAP */
printer_prefs_destroy(g_object_get_data(G_OBJECT(dlg), E_PRINT_PAGE_KEY));
nameres_prefs_destroy(g_object_get_data(G_OBJECT(dlg), E_NAMERES_PAGE_KEY));
- stats_prefs_destroy(g_object_get_data(G_OBJECT(dlg), E_TAPS_PAGE_KEY));
/* Free up the saved preferences (both for "prefs" and for registered
preferences). */
free_prefs(&saved_prefs);
prefs_modules_foreach(module_prefs_clean, NULL);
- protocols_prefs_destroy(g_object_get_data(G_OBJECT(dlg), E_PROTOCOLS_PAGE_KEY));
}
diff --git a/ui/gtk/prefs_taps.c b/ui/gtk/prefs_taps.c
index 2a6d06fa06..22c60ed89b 100644
--- a/ui/gtk/prefs_taps.c
+++ b/ui/gtk/prefs_taps.c
@@ -107,7 +107,7 @@ stats_prefs_fetch(GtkWidget *w _U_)
/* Test for a sane tap update interval */
if (prefs.tap_update_interval < 100 || prefs.tap_update_interval > 10000) {
- prefs.tap_update_interval = 3000;
+ prefs.tap_update_interval = TAP_UPDATE_DEFAULT_INTERVAL;
}
#ifdef HAVE_LIBPORTAUDIO
diff --git a/ui/qt/main.cpp b/ui/qt/main.cpp
index 242296fad6..755112c25b 100644
--- a/ui/qt/main.cpp
+++ b/ui/qt/main.cpp
@@ -941,10 +941,6 @@ int main(int argc, char *argv[])
// splash_update(RA_PREFERENCES, NULL, (gpointer)splash_win);
- /* Now register the preferences for any non-dissector modules.
- We must do that before we read the preferences as well. */
- prefs_register_modules();
-
prefs_p = read_configuration_files (&gdp_path, &dp_path);
/* Removed thread code:
* http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=35027