diff options
author | Guy Harris <guy@alum.mit.edu> | 2004-10-14 23:45:09 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2004-10-14 23:45:09 +0000 |
commit | abd16b297f4750ea7f74137e87582c64153440f4 (patch) | |
tree | 446f0817e3a3c2648f647528b8cc7ac6216be892 /epan/prefs.c | |
parent | af061ccd603340e9e401acd423f623018eed373b (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.c | 41 |
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; |