aboutsummaryrefslogtreecommitdiffstats
path: root/epan/prefs.c
diff options
context:
space:
mode:
authorAhmad Fatoum <ahmad@a3f.at>2017-04-14 11:33:57 +0200
committerPeter Wu <peter@lekensteyn.nl>2017-04-17 10:51:10 +0000
commitb478df61f54f08e0279d83e2cc11313fbdf28758 (patch)
tree99585c43e985315c471038eb5a95e3368e9e4a73 /epan/prefs.c
parentf63ad23ef9036a60e78e5efd45936aae1705d5ac (diff)
Qt: Provide both file save and open preferences
This is a breaking change. prefs_register_filename_preference hasn't been differentiating between files to be saved and ones to be opened. On GTK, a neutral dialog is used, so no problems there. On Qt, a save dialog has been always used, even in dissectors that were reading configuration files without modification. prefs_register_filename_preference now takes an argument to indicate whether UI could be a save dialog with a warning on overwriting a file, or whether it's a general purpose open file dialog. Qt now does this. Previously no warning was shown on overwriting a file, so it may be used for opening files too without irritating the user. This has been changed, as non-destructive reads should now use the open dialog. Dissectors were changed accordingly. Change-Id: I9087fefa5ee7ca58de0775d4fe2c0fdcfa3a3018 Reviewed-on: https://code.wireshark.org/review/21086 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'epan/prefs.c')
-rw-r--r--epan/prefs.c41
1 files changed, 26 insertions, 15 deletions
diff --git a/epan/prefs.c b/epan/prefs.c
index 71bf84b751..18fdc15c31 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -352,7 +352,8 @@ free_pref(gpointer data, gpointer user_data _U_)
case PREF_COLOR:
break;
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
g_free(*pref->varp.string);
*pref->varp.string = NULL;
@@ -1443,11 +1444,11 @@ DIAG_ON(cast-qual)
void
prefs_register_filename_preference(module_t *module, const char *name,
const char *title, const char *description,
- const char **var)
+ const char **var, gboolean for_writing)
{
DIAG_OFF(cast-qual)
- register_string_like_preference(module, name, title, description,
- (char **)var, PREF_FILENAME, NULL, FALSE);
+ register_string_like_preference(module, name, title, description, (char **)var,
+ for_writing ? PREF_SAVE_FILENAME : PREF_OPEN_FILENAME, NULL, FALSE);
DIAG_ON(cast-qual)
}
@@ -1914,7 +1915,8 @@ pref_stash(pref_t *pref, gpointer unused _U_)
break;
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
g_free(pref->stashed_val.string);
pref->stashed_val.string = g_strdup(*pref->varp.string);
@@ -1998,7 +2000,8 @@ pref_unstash(pref_t *pref, gpointer unstash_data_p)
break;
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
if (strcmp(*pref->varp.string, pref->stashed_val.string) != 0) {
unstash_data->module->prefs_changed = TRUE;
@@ -2098,7 +2101,8 @@ reset_stashed_pref(pref_t *pref) {
break;
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
g_free(pref->stashed_val.string);
pref->stashed_val.string = g_strdup(pref->default_val.string);
@@ -2141,7 +2145,8 @@ pref_clean_stash(pref_t *pref, gpointer unused _U_)
break;
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
if (pref->stashed_val.string != NULL) {
g_free(pref->stashed_val.string);
@@ -3450,7 +3455,7 @@ prefs_register_modules(void)
register_string_like_preference(printing, "file", "File",
"This is the file that gets written to when the destination is set to \"file\"",
- &prefs.pr_file, PREF_FILENAME, NULL, TRUE);
+ &prefs.pr_file, PREF_SAVE_FILENAME, NULL, TRUE);
/* Statistics */
stats_module = prefs_register_module(NULL, "statistics", "Statistics",
@@ -4108,7 +4113,8 @@ reset_pref(pref_t *pref)
break;
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
reset_string_like_preference(pref);
break;
@@ -5751,7 +5757,8 @@ set_pref(gchar *pref_name, const gchar *value, void *private_data _U_,
break;
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
containing_module->prefs_changed |= prefs_set_string_value(pref, value, pref_current);
break;
@@ -5901,7 +5908,8 @@ prefs_pref_type_name(pref_t *pref)
type_name = "String";
break;
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
type_name = "Filename";
break;
@@ -6002,7 +6010,8 @@ prefs_pref_type_description(pref_t *pref)
type_desc = "A string";
break;
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
type_desc = "A path to a file";
break;
@@ -6086,7 +6095,8 @@ prefs_pref_is_default(pref_t *pref)
break;
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
if (!(g_strcmp0(pref->default_val.string, *pref->varp.string)))
return TRUE;
@@ -6203,7 +6213,8 @@ prefs_pref_to_str(pref_t *pref, pref_source_t source) {
}
case PREF_STRING:
- case PREF_FILENAME:
+ case PREF_SAVE_FILENAME:
+ case PREF_OPEN_FILENAME:
case PREF_DIRNAME:
return g_strdup(*(const char **) valp);