diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-06-25 21:05:36 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-06-25 21:05:36 +0000 |
commit | 3814106d7e5333e887dcd9d4c8ced0c2e10cd22c (patch) | |
tree | d823be6cefb91a9442becfdb371cb34cef82ed14 /ui | |
parent | 9b21bf229f4a00f9f9b1189553e25c445e939100 (diff) | |
download | wireshark-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.txt | 2 | ||||
-rw-r--r-- | ui/gtk/Makefile.common | 4 | ||||
-rw-r--r-- | ui/gtk/main.c | 4 | ||||
-rw-r--r-- | ui/gtk/prefs_dlg.c | 155 | ||||
-rw-r--r-- | ui/gtk/prefs_taps.c | 2 | ||||
-rw-r--r-- | ui/qt/main.cpp | 4 |
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 |