From dbe4123bc23c1b5cae7cdfb28f02ccf5a39c3016 Mon Sep 17 00:00:00 2001 From: John Schember Date: Wed, 6 May 2009 07:01:27 -0400 Subject: [PATCH] Auto convert: Check for format, use correct format in conversion. --- src/calibre/gui2/device.py | 16 ++++++++++------ src/calibre/gui2/main.py | 2 +- src/calibre/gui2/tools.py | 6 ++++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index aa77eb6718..3541d8105f 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -678,16 +678,20 @@ class DeviceGUI(object): bad.append(self.library_view.model().title(row)) if auto != []: - autos = [self.library_view.model().title(row) for row in auto] - autos = '\n'.join('
  • %s
  • '%(i,) for i in autos) - d = info_dialog(self, _('No suitable formats'), - _('Auto converting the following books before uploading to the device:
    ')%(autos,)) + format = None for fmt in self.device_manager.device_class.settings().format_map: if fmt in list(set(self.device_manager.device_class.settings().format_map).intersection(set(available_output_formats()))): format = fmt break - d.exec_() - self.auto_convert(_auto_ids, on_card, format) + if format is None: + bad += auto + else: + autos = [self.library_view.model().title(row) for row in auto] + autos = '\n'.join('
  • %s
  • '%(i,) for i in autos) + d = info_dialog(self, _('No suitable formats'), + _('Auto converting the following books before uploading to the device:
    ')%(autos,)) + d.exec_() + self.auto_convert(_auto_ids, on_card, format) if bad: bad = '\n'.join('
  • %s
  • '%(i,) for i in bad) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index fbdf26987b..1d0281ead7 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -973,7 +973,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): def auto_convert(self, row_ids, on_card, format): previous = self.library_view.currentIndex() - jobs, changed, bad = convert_single_ebook(self, self.library_view.model().db, row_ids, True) + jobs, changed, bad = convert_single_ebook(self, self.library_view.model().db, row_ids, True, format) if jobs == []: return for func, args, desc, fmt, id, temp_files in jobs: if id not in bad: diff --git a/src/calibre/gui2/tools.py b/src/calibre/gui2/tools.py index 1b217af86c..03ff2b150a 100644 --- a/src/calibre/gui2/tools.py +++ b/src/calibre/gui2/tools.py @@ -14,7 +14,7 @@ from calibre.gui2.convert import load_specifics from calibre.gui2.convert.single import NoSupportedInputFormats from calibre.gui2.convert.single import Config as SingleConfig -def convert_single_ebook(parent, db, row_ids, auto_conversion=False): +def convert_single_ebook(parent, db, row_ids, auto_conversion=False out_format=None): changed = False jobs = [] bad = [] @@ -28,10 +28,12 @@ def convert_single_ebook(parent, db, row_ids, auto_conversion=False): temp_files = [] try: - d = SingleConfig(parent, db, row_id) + d = SingleConfig(parent, db, row_id, None, out_format) if auto_conversion: result = QDialog.Accepted + if d.output_format != out_format: + raise Exception('Output format not supported.') else: result = d.exec_()