aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2013-01-18 00:50:14 +0000
committerGerald Combs <gerald@wireshark.org>2013-01-18 00:50:14 +0000
commitae7ee61e842f46d0e7a7a4dc64c848866a6d7afb (patch)
tree6e483f057cb06bc3c9a8ee68a6211bd4be557f6a /epan
parent7a9095ee15c9ef012f3c8fd77c8f8cd06bdaa37b (diff)
Rename the "saved_val" preference element to "stashed_val" in order to
more clearly indicate that it's a copy of a preference value rather than something we've saved in the preferences file. Update prefs_pref_to_str() to handle default, stashed, and current prefs. Create ui/preference_utils.[ch] and move some common routines there. Use prefs_pref_type_name() in the GTK+ preferences dialog. Make the "OK" button in the Qt preferences dialog work. We simply write the prefs and redissect on "OK" and do nothing on "Cancel". This is intentionally different from the Apply/OK/Cancel behavior in the GTK+ version. Add a general "emitAppSignal" method to wsApp and use it for packet dissection and preference changes. Suggest that we might want to create a WsString class to make conversion between QStrings, gchar *s, and GStrings easier. svn path=/trunk/; revision=47139
Diffstat (limited to 'epan')
-rw-r--r--epan/libwireshark.def2
-rw-r--r--epan/prefs-int.h4
-rw-r--r--epan/prefs.c84
-rw-r--r--epan/prefs.h23
4 files changed, 58 insertions, 55 deletions
diff --git a/epan/libwireshark.def b/epan/libwireshark.def
index bbd7cb0d3f..93109f7bad 100644
--- a/epan/libwireshark.def
+++ b/epan/libwireshark.def
@@ -738,7 +738,6 @@ prefs_module_has_submodules
prefs_modules_foreach
prefs_modules_foreach_submodules
prefs_pref_foreach
-prefs_pref_is_default
prefs_pref_to_str
prefs_pref_type_description
prefs_pref_type_name
@@ -947,7 +946,6 @@ report_open_failure
report_read_failure
report_write_failure
req_resp_hdrs_do_reassembly
-reset_pref
reset_tap_listeners
reset_tcp_reassembly
rose_ctx_clean_data
diff --git a/epan/prefs-int.h b/epan/prefs-int.h
index 9994a4555d..799a7fa4dd 100644
--- a/epan/prefs-int.h
+++ b/epan/prefs-int.h
@@ -119,7 +119,7 @@ struct preference {
const char **string;
range_t **range;
void* uat;
- color_t *color;
+ color_t *colorp;
GList** list;
} varp; /**< pointer to variable storing the value */
union {
@@ -130,7 +130,7 @@ struct preference {
range_t *range;
color_t color;
GList* list;
- } saved_val; /**< original value, when editing from the GUI */
+ } stashed_val; /**< original value, when editing from the GUI */
union {
guint uint;
gboolean boolval;
diff --git a/epan/prefs.c b/epan/prefs.c
index 9c3fc78f86..ec88812492 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -929,7 +929,7 @@ register_string_like_preference(module_t *module, const char *name,
}
preference->varp.string = var;
preference->default_val.string = varcopy;
- preference->saved_val.string = NULL;
+ preference->stashed_val.string = NULL;
return preference;
}
@@ -1004,7 +1004,7 @@ prefs_register_range_preference(module_t *module, const char *name,
*var = range_empty();
preference->varp.range = var;
preference->default_val.range = range_copy(*var);
- preference->saved_val.range = NULL;
+ preference->stashed_val.range = NULL;
}
/*
@@ -1043,7 +1043,7 @@ void prefs_register_color_preference(module_t *module, const char *name,
{
pref_t* preference = register_preference(module, name, title, description, PREF_COLOR);
- preference->varp.color = color;
+ preference->varp.colorp = color;
preference->default_val.color = *color;
}
@@ -2696,7 +2696,7 @@ pre_init_prefs(void)
/*
* Reset a single dissector preference.
*/
-void
+static void
reset_pref(pref_t *pref)
{
if (!pref) return;
@@ -2739,7 +2739,7 @@ reset_pref(pref_t *pref)
break;
case PREF_COLOR:
- *pref->varp.color = pref->default_val.color;
+ *pref->varp.colorp = pref->default_val.color;
break;
case PREF_CUSTOM:
@@ -3867,14 +3867,14 @@ set_pref(gchar *pref_name, const gchar *value, void *private_data _U_,
case PREF_COLOR:
{
cval = strtoul(value, NULL, 16);
- pref->varp.color->pixel = 0;
- if ((pref->varp.color->red != RED_COMPONENT(cval)) ||
- (pref->varp.color->green != GREEN_COMPONENT(cval)) ||
- (pref->varp.color->blue != BLUE_COMPONENT(cval))) {
+ pref->varp.colorp->pixel = 0;
+ if ((pref->varp.colorp->red != RED_COMPONENT(cval)) ||
+ (pref->varp.colorp->green != GREEN_COMPONENT(cval)) ||
+ (pref->varp.colorp->blue != BLUE_COMPONENT(cval))) {
module->prefs_changed = TRUE;
- pref->varp.color->red = RED_COMPONENT(cval);
- pref->varp.color->green = GREEN_COMPONENT(cval);
- pref->varp.color->blue = BLUE_COMPONENT(cval);
+ pref->varp.colorp->red = RED_COMPONENT(cval);
+ pref->varp.colorp->green = GREEN_COMPONENT(cval);
+ pref->varp.colorp->blue = BLUE_COMPONENT(cval);
}
break;
}
@@ -4065,7 +4065,7 @@ prefs_pref_type_description(pref_t *pref)
return g_strdup(type_desc);
}
-gboolean
+static gboolean
prefs_pref_is_default(pref_t *pref) {
if (!pref) return FALSE;
@@ -4088,7 +4088,7 @@ prefs_pref_is_default(pref_t *pref) {
case PREF_STRING:
case PREF_FILENAME:
- if (!(strcmp(pref->default_val.string, *pref->varp.string)))
+ if (!(g_strcmp0(pref->default_val.string, *pref->varp.string)))
return TRUE;
break;
@@ -4101,9 +4101,9 @@ prefs_pref_is_default(pref_t *pref) {
case PREF_COLOR:
{
- if ((pref->default_val.color.red == pref->varp.color->red) &&
- (pref->default_val.color.green == pref->varp.color->green) &&
- (pref->default_val.color.blue == pref->varp.color->blue))
+ if ((pref->default_val.color.red == pref->varp.colorp->red) &&
+ (pref->default_val.color.green == pref->varp.colorp->green) &&
+ (pref->default_val.color.blue == pref->varp.colorp->blue))
return TRUE;
break;
}
@@ -4122,7 +4122,7 @@ prefs_pref_is_default(pref_t *pref) {
}
char *
-prefs_pref_to_str(pref_t *pref, gboolean default_val) {
+prefs_pref_to_str(pref_t *pref, pref_source_t source) {
const char *pref_text = "[Unknown]";
guint pref_uint;
gboolean pref_boolval;
@@ -4132,24 +4132,38 @@ prefs_pref_to_str(pref_t *pref, gboolean default_val) {
color_t *pref_color;
if (!pref) {
- return g_strdup(pref_text); /* ...or maybe assert? */
+ return g_strdup(pref_text);
}
- if (default_val) {
- pref_uint = pref->default_val.uint;
- pref_boolval = pref->default_val.boolval;
- pref_enumval = pref->default_val.enumval;
- pref_string = pref->default_val.string;
- pref_range = pref->default_val.range;
- pref_color = &pref->default_val.color;
- } else {
- pref_uint = *pref->varp.uint;
- pref_boolval = *pref->varp.boolp;
- pref_enumval = *pref->varp.enump;
- pref_string = *pref->varp.string;
- pref_range = *pref->varp.range;
- pref_color = pref->varp.color;
+ switch (source) {
+ case pref_default:
+ pref_uint = pref->default_val.uint;
+ pref_boolval = pref->default_val.boolval;
+ pref_enumval = pref->default_val.enumval;
+ pref_string = pref->default_val.string;
+ pref_range = pref->default_val.range;
+ pref_color = &pref->default_val.color;
+ break;
+ case pref_stashed:
+ pref_uint = pref->stashed_val.uint;
+ pref_boolval = pref->stashed_val.boolval;
+ pref_enumval = pref->stashed_val.enumval;
+ pref_string = pref->stashed_val.string;
+ pref_range = pref->stashed_val.range;
+ pref_color = &pref->stashed_val.color;
+ break;
+ case pref_current:
+ pref_uint = *pref->varp.uint;
+ pref_boolval = *pref->varp.boolp;
+ pref_enumval = *pref->varp.enump;
+ pref_string = *pref->varp.string;
+ pref_range = *pref->varp.range;
+ pref_color = pref->varp.colorp;
+ break;
+ default:
+ return g_strdup(pref_text);
}
+
switch (pref->type) {
case PREF_UINT:
@@ -4209,7 +4223,7 @@ prefs_pref_to_str(pref_t *pref, gboolean default_val) {
case PREF_CUSTOM:
if (pref->custom_cbs.to_str_cb)
- return pref->custom_cbs.to_str_cb(pref, default_val);
+ return pref->custom_cbs.to_str_cb(pref, source == pref_default ? TRUE : FALSE);
pref_text = "[Custom]";
break;
@@ -4300,7 +4314,7 @@ write_pref(gpointer data, gpointer user_data)
g_strfreev(desc_lines);
g_free(type_desc);
- pref_text = prefs_pref_to_str(pref, FALSE);
+ pref_text = prefs_pref_to_str(pref, pref_current);
fprintf(arg->pf, "%s%s.%s: ", def_prefix, name_prefix, pref->name);
desc_lines = g_strsplit(pref_text,"\n",0);
for (i = 0; desc_lines[i] != NULL; ++i) {
diff --git a/epan/prefs.h b/epan/prefs.h
index 461a04753a..9795ced0c1 100644
--- a/epan/prefs.h
+++ b/epan/prefs.h
@@ -113,6 +113,12 @@ typedef enum {
version_neither
} version_info_e;
+typedef enum {
+ pref_default,
+ pref_stashed,
+ pref_current
+} pref_source_t;
+
typedef struct _e_prefs {
gint pr_format;
@@ -474,15 +480,6 @@ const char *prefs_pref_type_name(pref_t *pref);
*/
char *prefs_pref_type_description(pref_t *pref);
-/** Check if a preference differs from its default value
- *
- * @param pref A preference.
- *
- * @return TRUE if the current value of the preference is the same as
- * its default value or FALSE if they differ.
- */
-gboolean prefs_pref_is_default(pref_t *pref);
-
/** Fetch a string representation of the preference.
*
* @param pref A preference.
@@ -491,7 +488,7 @@ gboolean prefs_pref_is_default(pref_t *pref);
*
* @return A string representation of the preference. Must be g_free()d.
*/
-char *prefs_pref_to_str(pref_t *pref, gboolean default_val);
+char *prefs_pref_to_str(pref_t *pref, pref_source_t source);
/* Read the preferences file, fill in "prefs", and return a pointer to it.
@@ -514,12 +511,6 @@ extern e_prefs *read_prefs(int *, int *, char **, int *, int *, char **);
into "*pf_path_return", and return the errno. */
extern int write_prefs(char **);
-/** Set a preference to its default value
- *
- * @param pref A preference.
- */
-extern void reset_pref(pref_t *pref);
-
/*
* Given a string of the form "<pref name>:<pref value>", as might appear
* as an argument to a "-o" option, parse it and set the preference in