summarylogtreecommitdiffstats
path: root/save_as_tweaks_1.3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'save_as_tweaks_1.3.patch')
-rw-r--r--save_as_tweaks_1.3.patch107
1 files changed, 107 insertions, 0 deletions
diff --git a/save_as_tweaks_1.3.patch b/save_as_tweaks_1.3.patch
new file mode 100644
index 000000000000..0917ed759c21
--- /dev/null
+++ b/save_as_tweaks_1.3.patch
@@ -0,0 +1,107 @@
+diff --git a/mcomix/main.py b/mcomix/main.py
+index 80f74dc..d341238 100644
+--- a/mcomix/main.py
++++ b/mcomix/main.py
+@@ -278,6 +278,8 @@ class MainWindow(gtk.Window):
+ if show_library:
+ self.actiongroup.get_action('library').activate()
+
++ self.last_used_directory=None
++
+ self.cursor_handler.auto_hide_on()
+ # Make sure we receive *all* mouse motion events,
+ # even if a modal dialog is being shown.
+@@ -984,6 +986,7 @@ class MainWindow(gtk.Window):
+ def extract_page(self, *args):
+ """ Derive some sensible filename (archive name + _ + filename should do) and offer
+ the user the choice to save the current page with the selected name. """
++
+ if self.filehandler.archive_type is not None:
+ archive_name = self.filehandler.get_pretty_current_filename()
+ file_name = self.imagehandler.get_path_to_page()
+@@ -995,15 +998,50 @@ class MainWindow(gtk.Window):
+ save_dialog = gtk.FileChooserDialog(_('Save page as'), self,
+ gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_OK, gtk.RESPONSE_ACCEPT,
+ gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
+- save_dialog.set_do_overwrite_confirmation(True)
+ save_dialog.set_current_name(suggested_name.encode('utf-8'))
++ save_dialog.set_do_overwrite_confirmation(True)
+
+- if save_dialog.run() == gtk.RESPONSE_ACCEPT and save_dialog.get_filename():
+- shutil.copy(self.imagehandler.get_path_to_page(),
+- save_dialog.get_filename().decode('utf-8'))
++ if self.last_used_directory is not None and prefs['store recently saved in directory']:
++ # Automatically select previously used directory:
++ save_dialog.set_current_folder(self.last_used_directory)
++ else:
++ self.last_used_directory = os.getcwd()
++
++ if prefs['append number to suggested name']:
++ last_used_directory_plus_suggested_name = os.path.join(self.last_used_directory, suggested_name)
++ try_number = 1
++ # If the suggested filename already exists we try to suggest a new one:
++ if os.path.exists(last_used_directory_plus_suggested_name):
++ temp_suggested_name = suggested_name
++ lastpath_plus_new_suggested_name = last_used_directory_plus_suggested_name
++
++ while os.path.exists(lastpath_plus_new_suggested_name):
++ temp_suggested_name_loop = self.generate_numbered_filename(temp_suggested_name.encode('utf-8'), try_number)
++ lastpath_plus_new_suggested_name = self.last_used_directory + os.sep + temp_suggested_name_loop
++ try_number += 1
++ if not os.path.exists(lastpath_plus_new_suggested_name):
++ # Keep this unused appended number
++ break
++ save_dialog.set_current_name(temp_suggested_name_loop)
+
++ if save_dialog.run() == gtk.RESPONSE_ACCEPT and save_dialog.get_filename():
++ try:
++ shutil.copy(self.imagehandler.get_path_to_page(),
++ save_dialog.get_filename().decode('utf-8'))
++ except Exception, ex:
++ log.warning('An error occured: %s', ex)
++
++ if prefs['store recently saved in directory']:
++ self.last_used_directory = save_dialog.get_current_folder()
+ save_dialog.destroy()
+
++ def generate_numbered_filename(self, filename, number):
++ """ Generate the same filename with an appended (number) before the .extension"""
++ file_no_ext = os.path.splitext(filename)[0]
++ ext = os.path.splitext(filename)[1]
++ new_name_with_number = file_no_ext + (" (%s)" %(number)) + ext
++ return new_name_with_number
++
+ def delete(self, *args):
+ """ The currently opened file/archive will be deleted after showing
+ a confirmation dialog. """
+diff --git a/mcomix/preferences.py b/mcomix/preferences.py
+index 3803c18..9beaac8 100644
+--- a/mcomix/preferences.py
++++ b/mcomix/preferences.py
+@@ -51,6 +51,8 @@ prefs = {
+ 'smart scroll percentage': 0.5,
+ 'flip with wheel': True,
+ 'store recent file info': True,
++ 'store recently saved in directory': False,
++ 'append number to suggested name': False,
+ 'hide all': False,
+ 'hide all in fullscreen': True,
+ 'stored hide all values': [True, True, True, True, True],
+diff --git a/mcomix/preferences_dialog.py b/mcomix/preferences_dialog.py
+index 6fdbef7..4d4230e 100644
+--- a/mcomix/preferences_dialog.py
++++ b/mcomix/preferences_dialog.py
+@@ -305,6 +305,13 @@ class _PreferencesDialog(gtk.Dialog):
+ page.add_row(gtk.Label(_('Animation mode:')),
+ self._create_animation_mode_combobox())
+
++ page.new_section(_('Save as Dialog'))
++ page.add_row(self._create_pref_check_button(_('Automatically select the last used directory'),
++ 'store recently saved in directory', 'Directs the Save As dialog to the last used directory automatically.'))
++ # FIXME: disable the following checkbutton if the previous one is disabled
++ page.add_row(self._create_pref_check_button(_('Append numbers to suggested filename if it already exists'),
++ 'append number to suggested name', 'Appends a number at the end of the suggested filename in case a similar filename already exists in the current directory.'))
++
+ return page
+
+ def _init_shortcuts_tab(self):