From cabf8f15de5a995d3c336d226f3b559e455e2fbd Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Thu, 28 Apr 2016 21:00:14 +0100 Subject: [PATCH] Fix #333 Renaming file extensions https://github.com/BestImageViewer/geeqie/issues/333 The Preferences/Files tab has an additional checkbox: Disable file extension checks When checked, files can be renamed to a different extension with no warning issued. --- doc/docbook/GuideOptionsFiltering.xml | 37 +++++++++++++++------------ src/filedata.c | 10 +++++--- src/options.c | 1 + src/options.h | 1 + src/preferences.c | 4 +++ src/rcfile.c | 2 ++ 6 files changed, 35 insertions(+), 20 deletions(-) diff --git a/doc/docbook/GuideOptionsFiltering.xml b/doc/docbook/GuideOptionsFiltering.xml index f7c51bb7..724c6799 100644 --- a/doc/docbook/GuideOptionsFiltering.xml +++ b/doc/docbook/GuideOptionsFiltering.xml @@ -11,32 +11,37 @@ Show hidden files or folders - - + Enables the display of hidden files and folders, also known as dot files. - + + - Show dot directory - - - Enables the display of the current directory as a dot in the directories views. It may be useful for some drag'n'drop operations. - + Show parent folder + + Enables the display of the parent folder as a double dot in the directories views. + + Case sensitive sort - - + Files and folders are sorted such that upper case letters occur before lower case letters. - - + Enabled result: A, B, C, a, b, c Disabled result: A, a, B, b, C, c - + + + + Disable file extension checks + + During rename operations, allows files to be renamed to a different extension with no warning issued. + + Disable file filtering - - + Enable this to allow Geeqie to list all files, even those that do not contain images. - + +
Grouping sidecar extensions diff --git a/src/filedata.c b/src/filedata.c index 9515d2b6..ec23e217 100644 --- a/src/filedata.c +++ b/src/filedata.c @@ -2346,11 +2346,13 @@ gint file_data_verify_ci(FileData *fd, GList *list) { const gchar *dest_ext = extension_from_path(fd->change->dest); if (!dest_ext) dest_ext = ""; - - if (g_ascii_strcasecmp(fd->extension, dest_ext) != 0) + if (!options->file_filter.disable_file_extension_checks) { - ret |= CHANGE_WARN_CHANGED_EXT; - DEBUG_1("Change checked: source and destination have different extensions: %s -> %s", fd->path, fd->change->dest); + if (g_ascii_strcasecmp(fd->extension, dest_ext) != 0) + { + ret |= CHANGE_WARN_CHANGED_EXT; + DEBUG_1("Change checked: source and destination have different extensions: %s -> %s", fd->path, fd->change->dest); + } } } else diff --git a/src/options.c b/src/options.c index fa6c23fb..460b9cbc 100644 --- a/src/options.c +++ b/src/options.c @@ -43,6 +43,7 @@ ConfOptions *init_options(ConfOptions *options) options->file_filter.show_dot_directory = FALSE; options->file_filter.show_hidden_files = FALSE; options->file_filter.show_parent_directory = TRUE; + options->file_filter.disable_file_extension_checks = FALSE; options->save_window_positions = TRUE; options->tools_restore_state = TRUE; diff --git a/src/options.h b/src/options.h index c32b1647..138de5ac 100644 --- a/src/options.h +++ b/src/options.h @@ -91,6 +91,7 @@ struct _ConfOptions gboolean show_hidden_files; gboolean show_parent_directory; gboolean show_dot_directory; + gboolean disable_file_extension_checks; gboolean disable; } file_filter; diff --git a/src/preferences.c b/src/preferences.c index c647d0f8..6707690e 100644 --- a/src/preferences.c +++ b/src/preferences.c @@ -200,6 +200,7 @@ static void config_window_apply(void) if (options->file_filter.show_parent_directory != c_options->file_filter.show_parent_directory) refresh = TRUE; if (options->file_filter.show_dot_directory != c_options->file_filter.show_dot_directory) refresh = TRUE; if (options->file_sort.case_sensitive != c_options->file_sort.case_sensitive) refresh = TRUE; + if (options->file_filter.disable_file_extension_checks != c_options->file_filter.disable_file_extension_checks) refresh = TRUE; if (options->file_filter.disable != c_options->file_filter.disable) refresh = TRUE; options->file_ops.confirm_delete = c_options->file_ops.confirm_delete; @@ -237,6 +238,7 @@ static void config_window_apply(void) options->file_filter.show_hidden_files = c_options->file_filter.show_hidden_files; options->file_filter.show_parent_directory = c_options->file_filter.show_parent_directory; options->file_filter.show_dot_directory = c_options->file_filter.show_dot_directory; + options->file_filter.disable_file_extension_checks = c_options->file_filter.disable_file_extension_checks; options->file_sort.case_sensitive = c_options->file_sort.case_sensitive; options->file_filter.disable = c_options->file_filter.disable; @@ -1508,6 +1510,8 @@ static void config_tab_files(GtkWidget *notebook) options->file_filter.show_parent_directory, &c_options->file_filter.show_parent_directory); pref_checkbox_new_int(group, _("Case sensitive sort"), options->file_sort.case_sensitive, &c_options->file_sort.case_sensitive); + pref_checkbox_new_int(group, _("Disable file extension checks"), + options->file_filter.disable_file_extension_checks, &c_options->file_filter.disable_file_extension_checks); ct_button = pref_checkbox_new_int(group, _("Disable File Filtering"), options->file_filter.disable, &c_options->file_filter.disable); diff --git a/src/rcfile.c b/src/rcfile.c index a7ce0b6f..0a13784b 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -366,6 +366,7 @@ static void write_global_attributes(GString *outstr, gint indent) WRITE_NL(); WRITE_BOOL(*options, file_filter.show_hidden_files); WRITE_NL(); WRITE_BOOL(*options, file_filter.show_parent_directory); WRITE_NL(); WRITE_BOOL(*options, file_filter.show_dot_directory); + WRITE_NL(); WRITE_BOOL(*options, file_filter.disable_file_extension_checks); WRITE_NL(); WRITE_BOOL(*options, file_filter.disable); WRITE_SEPARATOR(); @@ -625,6 +626,7 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar ** if (READ_BOOL(*options, file_filter.show_hidden_files)) continue; if (READ_BOOL(*options, file_filter.show_parent_directory)) continue; if (READ_BOOL(*options, file_filter.show_dot_directory)) continue; + if (READ_BOOL(*options, file_filter.disable_file_extension_checks)) continue; if (READ_BOOL(*options, file_filter.disable)) continue; if (READ_CHAR(*options, sidecar.ext)) continue; -- 2.20.1