aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorSake Blok <sake@euronet.nl>2008-08-08 19:41:35 +0000
committerSake Blok <sake@euronet.nl>2008-08-08 19:41:35 +0000
commit643d1baa53f59b7d35f9dbfda3ac66607b44eec0 (patch)
treef9d9c65c393ed6bebca8ae4c294b69bf377d28d7 /gtk
parent3cba46070ca162b8095160e87c9bdfb9ba4bc5c6 (diff)
From Kovarththanan Rajaratnam (Bug 2660):
Make display filter max recent entries a preference (From me: fixed an off by one bug in saving to the recent file) svn path=/trunk/; revision=25960
Diffstat (limited to 'gtk')
-rw-r--r--gtk/main_filter_toolbar.c9
-rw-r--r--gtk/prefs_gui.c40
2 files changed, 43 insertions, 6 deletions
diff --git a/gtk/main_filter_toolbar.c b/gtk/main_filter_toolbar.c
index 183f0993b2..255489a9a3 100644
--- a/gtk/main_filter_toolbar.c
+++ b/gtk/main_filter_toolbar.c
@@ -37,6 +37,8 @@
#include "filter_dlg.h"
#include "filter_autocomplete.h"
+#include "epan/prefs.h"
+
#include "keys.h"
#include "gtkglobals.h"
#include "stock_icons.h"
@@ -218,9 +220,6 @@ GtkWidget *filter_toolbar_new()
return filter_tb;
}
-/* XXX: use a preference for this setting! */
-static guint dfilter_combo_max_recent = 10;
-
/* add a display filter to the combo box */
/* Note: a new filter string will replace an old identical one */
static gboolean
@@ -264,7 +263,7 @@ dfilter_recent_combo_write_all(FILE *rf) {
/* write all non empty display filter strings to the recent file (until max count) */
li = g_list_first(dfilter_list);
- while ( li && (max_count++ <= dfilter_combo_max_recent) ) {
+ while ( li && (max_count++ < prefs.gui_recent_df_entries_max) ) {
if (strlen(li->data)) {
fprintf (rf, RECENT_KEY_DISPLAY_FILTER ": %s\n", (char *)li->data);
}
@@ -327,7 +326,7 @@ main_filter_packets(capture_file *cf, const gchar *dftext, gboolean force)
if (add_filter) {
/* trim list size first */
- while (g_list_length(dfilter_list) >= dfilter_combo_max_recent) {
+ while (g_list_length(dfilter_list) >= prefs.gui_recent_df_entries_max) {
dfilter_list = g_list_remove(dfilter_list, g_list_first(dfilter_list)->data);
}
diff --git a/gtk/prefs_gui.c b/gtk/prefs_gui.c
index df21398f1c..71a8807725 100644
--- a/gtk/prefs_gui.c
+++ b/gtk/prefs_gui.c
@@ -56,6 +56,8 @@ static gint fileopen_preview_changed_cb(GtkWidget *myentry _U_, GdkEvent *event,
static void fileopen_selected_cb(GtkWidget *mybutton_rb _U_, gpointer parent_w);
static gint recent_files_count_changed_cb(GtkWidget *recent_files_entry _U_,
GdkEvent *event _U_, gpointer parent_w);
+static gint recent_df_entries_changed_cb(GtkWidget *recent_df_entry _U_,
+ GdkEvent *event _U_, gpointer parent_w);
#define PLIST_SEL_BROWSE_KEY "plist_sel_browse"
#define PTREE_SEL_BROWSE_KEY "ptree_sel_browse"
#define GEOMETRY_POSITION_KEY "geometry_position"
@@ -67,6 +69,7 @@ static gint recent_files_count_changed_cb(GtkWidget *recent_files_entry _U_,
#define GUI_FILEOPEN_KEY "fileopen_behavior"
#define GUI_FILEOPEN_PREVIEW_KEY "fileopen_preview_timeout"
#define GUI_RECENT_FILES_COUNT_KEY "recent_files_count"
+#define GUI_RECENT_DF_ENTRIES_KEY "recent_display_filter_entries"
#define GUI_FILEOPEN_DIR_KEY "fileopen_directory"
#define GUI_ASK_UNSAVED_KEY "ask_unsaved"
#define GUI_WEBBROWSER_KEY "webbrowser"
@@ -141,6 +144,9 @@ static GtkWidget *font_browse_w;
/* Used to contain the string from the Recent Files Count Max pref item */
static char recent_files_count_max_str[128] = "";
+/* Used to contain the string from the Recent Display Filter Max Entries pref item */
+static char recent_df_entries_max_str[128] = "";
+
/* Used to contain the string from the Open File preview timeout pref item */
static char open_file_preview_str[128] = "";
@@ -156,7 +162,7 @@ gui_prefs_show(void)
GtkWidget *console_open_om;
#endif
GtkWidget *fileopen_rb, *fileopen_dir_te, *fileopen_preview_te;
- GtkWidget *recent_files_count_max_te, *ask_unsaved_cb, *find_wrap_cb;
+ GtkWidget *recent_files_count_max_te, *recent_df_entries_max_te, *ask_unsaved_cb, *find_wrap_cb;
GtkWidget *use_pref_save_cb;
GtkWidget *webbrowser_te;
GtkWidget *save_position_cb, *save_size_cb, *save_maximized_cb, *save_column_width_cb;
@@ -261,6 +267,14 @@ gui_prefs_show(void)
g_object_set_data(G_OBJECT(main_vb), GUI_FILEOPEN_PREVIEW_KEY, fileopen_preview_te);
g_signal_connect(fileopen_preview_te, "focus_out_event", G_CALLBACK(fileopen_preview_changed_cb), main_vb);
+ /* Number of recent entries in the display filter list ... */
+ recent_df_entries_max_te = create_preference_entry(main_tb, pos++,
+ "Filter display max. list entries:", "Maximum number of recent entries in filter display list", recent_df_entries_max_str);
+ g_snprintf(current_val_str, 128, "%d", prefs.gui_recent_df_entries_max);
+ gtk_entry_set_text(GTK_ENTRY(recent_df_entries_max_te), current_val_str);
+ g_object_set_data(G_OBJECT(main_vb), GUI_RECENT_DF_ENTRIES_KEY, recent_df_entries_max_te);
+ g_signal_connect(recent_df_entries_max_te, "focus_out_event", G_CALLBACK(recent_df_entries_changed_cb), main_vb);
+
/* Number of entries in the recent_files list ... */
recent_files_count_max_te = create_preference_entry(main_tb, pos++,
"\"Open Recent\" max. list entries:", "Maximum number of recent files", recent_files_count_max_str);
@@ -481,6 +495,30 @@ gui_prefs_destroy(GtkWidget *w _U_)
}
}
+static gint
+recent_df_entries_changed_cb(GtkWidget *recent_df_entry _U_,
+ GdkEvent *event _U_, gpointer parent_w)
+{
+ GtkWidget *recent_df_entries_count_te;
+ guint newval;
+
+ recent_df_entries_count_te = (GtkWidget *)g_object_get_data(G_OBJECT(parent_w), GUI_RECENT_DF_ENTRIES_KEY);
+
+ /*
+ * Now, just convert the string to a number and store it in the prefs
+ * filed ...
+ */
+
+ newval = strtol(gtk_entry_get_text (GTK_ENTRY(recent_df_entries_count_te)), NULL, 10);
+
+ if (newval > 0) {
+ prefs.gui_recent_df_entries_max = newval;
+ }
+
+ /* We really should pop up a nasty dialog box if newval <= 0 */
+
+ return FALSE;
+}
static gint
recent_files_count_changed_cb(GtkWidget *recent_files_entry _U_,