diff options
author | Gerald Combs <gerald@wireshark.org> | 2013-01-18 00:50:14 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2013-01-18 00:50:14 +0000 |
commit | ae7ee61e842f46d0e7a7a4dc64c848866a6d7afb (patch) | |
tree | 6e483f057cb06bc3c9a8ee68a6211bd4be557f6a /epan | |
parent | 7a9095ee15c9ef012f3c8fd77c8f8cd06bdaa37b (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.def | 2 | ||||
-rw-r--r-- | epan/prefs-int.h | 4 | ||||
-rw-r--r-- | epan/prefs.c | 84 | ||||
-rw-r--r-- | epan/prefs.h | 23 |
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 |