Fix #333 Renaming file extensions
authorColin Clark <cclark@mcb.net>
Thu, 28 Apr 2016 20:00:14 +0000 (21:00 +0100)
committerColin Clark <cclark@mcb.net>
Thu, 28 Apr 2016 20:00:14 +0000 (21:00 +0100)
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
src/filedata.c
src/options.c
src/options.h
src/preferences.c
src/rcfile.c

index f7c51bb..724c679 100644 (file)
     </title>
     <variablelist><varlistentry><term>
         Show hidden files or folders
-      </term><listitem><para/></listitem></varlistentry></variablelist>
-    <para>
+      </term><listitem><para>
       Enables the display of hidden files and folders, also known as dot files.
-    </para>
+    </para></listitem></varlistentry></variablelist>
+
     <variablelist><varlistentry><term>
-        Show dot directory
-      </term><listitem><para/></listitem></varlistentry></variablelist>
-    <para>
-      Enables the display of the current directory as a dot in the directories views. It may be useful for some drag'n'drop operations.
-    </para>
+        Show parent folder
+      </term><listitem><para>
+      Enables the display of the parent folder as a double dot in the directories views.
+    </para></listitem></varlistentry></variablelist>
+
     <variablelist><varlistentry><term>
         Case sensitive sort
-      </term><listitem><para/></listitem></varlistentry></variablelist>
-    <para>
+      </term><listitem><para>
       Files and folders are sorted such that upper case letters occur before lower case letters.
-    </para>
-    <para>
+    </para><para>
       Enabled result: A, B, C, a, b, c<?db2html element="br"?>
       Disabled result: A, a, B, b, C, c
-    </para>
+    </para></listitem></varlistentry></variablelist>
+
+    <variablelist><varlistentry><term>
+        Disable file extension checks
+      </term><listitem><para>
+      During rename operations, allows files to be renamed to a different extension with no warning issued.
+    </para></listitem></varlistentry></variablelist>
+
     <variablelist><varlistentry><term>
         Disable file filtering
-      </term><listitem><para/></listitem></varlistentry></variablelist>
-    <para>
+      </term><listitem><para>
       Enable this to allow Geeqie to list all files, even those that do not contain images.
-    </para>
+    </para></listitem></varlistentry></variablelist>
+
     <para/></section><section id="Groupingsidecarextensions"><title>
       Grouping sidecar extensions
     </title>
index 9515d2b..ec23e21 100644 (file)
@@ -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
index fa6c23f..460b9cb 100644 (file)
@@ -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;
index c32b164..138de5a 100644 (file)
@@ -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;
 
index c647d0f..6707690 100644 (file)
@@ -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);
index a7ce0b6..0a13784 100644 (file)
@@ -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;