aboutsummaryrefslogtreecommitdiffstats
path: root/epan/prefs.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2004-10-14 23:45:09 +0000
committerGuy Harris <guy@alum.mit.edu>2004-10-14 23:45:09 +0000
commitabd16b297f4750ea7f74137e87582c64153440f4 (patch)
tree446f0817e3a3c2648f647528b8cc7ac6216be892 /epan/prefs.c
parentaf061ccd603340e9e401acd423f623018eed373b (diff)
From Jeff Morriss: PREF_RANGE preference type, for ranges of integers.
svn path=/trunk/; revision=12300
Diffstat (limited to 'epan/prefs.c')
-rw-r--r--epan/prefs.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/epan/prefs.c b/epan/prefs.c
index 1def43c844..e88f1eccba 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -580,6 +580,24 @@ prefs_register_string_preference(module_t *module, const char *name,
}
/*
+ * Register a preference with a ranged value.
+ */
+void
+prefs_register_range_preference(module_t *module, const char *name,
+ const char *title, const char *description, range_t *var,
+ guint32 max_value)
+{
+ pref_t *preference;
+
+ preference = register_preference(module, name, title, description,
+ PREF_RANGE);
+ preference->info.max_value = max_value;
+
+ preference->varp.rangep = var;
+ memset(&preference->saved_val.rangeval, 0, sizeof(preference->saved_val.rangeval));
+}
+
+/*
* Register a preference that used to be supported but no longer is.
*/
void
@@ -1992,6 +2010,19 @@ set_pref(gchar *pref_name, gchar *value)
}
break;
+ case PREF_RANGE:
+ {
+ range_t newrange;
+
+ range_convert_str(&newrange, value, pref->info.max_value);
+
+ if (!ranges_are_equal(pref->varp.rangep, &newrange)) {
+ module->prefs_changed = TRUE;
+ *pref->varp.rangep = newrange;
+ }
+ break;
+ }
+
case PREF_OBSOLETE:
return PREFS_SET_OBSOLETE; /* no such preference any more */
}
@@ -2091,6 +2122,16 @@ write_pref(gpointer data, gpointer user_data)
*pref->varp.string);
break;
+ case PREF_RANGE:
+ {
+ char range_string[MAXRANGESTRING];
+
+ fprintf(arg->pf, "# A string denoting an positive integer range (e.g., \"1-20,30-40\").\n");
+ fprintf(arg->pf, "%s.%s: %s\n", arg->module->name, pref->name,
+ range_convert_range(pref->varp.rangep, range_string));
+ break;
+ }
+
case PREF_OBSOLETE:
g_assert_not_reached();
break;