diff options
author | Ahmad Fatoum <ahmad@a3f.at> | 2017-04-14 11:33:57 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2017-04-17 10:51:10 +0000 |
commit | b478df61f54f08e0279d83e2cc11313fbdf28758 (patch) | |
tree | 99585c43e985315c471038eb5a95e3368e9e4a73 /epan/prefs.c | |
parent | f63ad23ef9036a60e78e5efd45936aae1705d5ac (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.c | 41 |
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); |