def setup_pipeline(self, *args): oidx = self.groups.currentIndex().row() input_format = self.input_format output_format = self.output_format self.plumber = create_dummy_plumber(input_format, output_format) def widget_factory(cls): return cls(self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) self.mw = widget_factory(MetadataWidget) self.setWindowTitle( _('Convert') + ' ' + unicode_type(self.mw.title.text())) lf = widget_factory(LookAndFeelWidget) hw = widget_factory(HeuristicsWidget) sr = widget_factory(SearchAndReplaceWidget) ps = widget_factory(PageSetupWidget) sd = widget_factory(StructureDetectionWidget) toc = widget_factory(TOCWidget) from calibre.gui2.actions.toc_edit import SUPPORTED toc.manually_fine_tune_toc.setVisible( output_format.upper() in SUPPORTED) debug = widget_factory(DebugWidget) output_widget = self.plumber.output_plugin.gui_configuration_widget( self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) input_widget = self.plumber.input_plugin.gui_configuration_widget( self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) while True: c = self.stack.currentWidget() if not c: break self.stack.removeWidget(c) widgets = [self.mw, lf, hw, ps, sd, toc, sr] if input_widget is not None: widgets.append(input_widget) if output_widget is not None: widgets.append(output_widget) widgets.append(debug) for w in widgets: self.stack.addWidget(w) w.set_help_signal.connect(self.help.setPlainText) self._groups_model = GroupModel(widgets) self.groups.setModel(self._groups_model) idx = oidx if -1 < oidx < self._groups_model.rowCount() else 0 self.groups.setCurrentIndex(self._groups_model.index(idx)) self.stack.setCurrentIndex(idx) try: shutil.rmtree(self.plumber.archive_input_tdir, ignore_errors=True) except: pass
def setup_pipeline(self, *args): oidx = self.groups.currentIndex().row() input_format = self.input_format output_format = self.output_format self.plumber = create_dummy_plumber(input_format, output_format) def widget_factory(cls): return cls(self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) self.mw = widget_factory(MetadataWidget) self.setWindowTitle(_('Convert')+ ' ' + unicode_type(self.mw.title.text())) lf = widget_factory(LookAndFeelWidget) hw = widget_factory(HeuristicsWidget) sr = widget_factory(SearchAndReplaceWidget) ps = widget_factory(PageSetupWidget) sd = widget_factory(StructureDetectionWidget) toc = widget_factory(TOCWidget) from calibre.gui2.actions.toc_edit import SUPPORTED toc.manually_fine_tune_toc.setVisible(output_format.upper() in SUPPORTED) debug = widget_factory(DebugWidget) output_widget = self.plumber.output_plugin.gui_configuration_widget( self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) input_widget = self.plumber.input_plugin.gui_configuration_widget( self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db, self.book_id) while True: c = self.stack.currentWidget() if not c: break self.stack.removeWidget(c) widgets = [self.mw, lf, hw, ps, sd, toc, sr] if input_widget is not None: widgets.append(input_widget) if output_widget is not None: widgets.append(output_widget) widgets.append(debug) for w in widgets: self.stack.addWidget(w) w.set_help_signal.connect(self.help.setPlainText) self._groups_model = GroupModel(widgets) self.groups.setModel(self._groups_model) idx = oidx if -1 < oidx < self._groups_model.rowCount() else 0 self.groups.setCurrentIndex(self._groups_model.index(idx)) self.stack.setCurrentIndex(idx) try: shutil.rmtree(self.plumber.archive_input_tdir, ignore_errors=True) except: pass
def get_conversion_options(input_fmt, output_fmt, book_id, db): from calibre.ebooks.conversion.plumber import create_dummy_plumber from calibre.ebooks.conversion.config import (load_specifics, load_defaults, OPTIONS, options_for_input_fmt, options_for_output_fmt) from calibre.customize.conversion import OptionRecommendation plumber = create_dummy_plumber(input_fmt, output_fmt) specifics = load_specifics(db, book_id) ans = {'options': {}, 'disabled': set(), 'defaults': {}, 'help': {}} ans['input_plugin_name'] = plumber.input_plugin.commit_name ans['output_plugin_name'] = plumber.output_plugin.commit_name ans['input_ui_data'] = plumber.input_plugin.ui_data ans['output_ui_data'] = plumber.output_plugin.ui_data def merge_group(group_name, option_names): if not group_name or group_name in ('debug', 'metadata'): return defs = load_defaults(group_name) defs.merge_recommendations(plumber.get_option_by_name, OptionRecommendation.LOW, option_names) specifics.merge_recommendations(plumber.get_option_by_name, OptionRecommendation.HIGH, option_names, only_existing=True) defaults = defs.as_dict()['options'] for k in defs: if k in specifics: defs[k] = specifics[k] defs = defs.as_dict() ans['options'].update(defs['options']) ans['disabled'] |= set(defs['disabled']) ans['defaults'].update(defaults) ans['help'] = plumber.get_all_help() for group_name, option_names in iteritems(OPTIONS['pipe']): merge_group(group_name, option_names) group_name, option_names = options_for_input_fmt(input_fmt) merge_group(group_name, option_names) group_name, option_names = options_for_output_fmt(output_fmt) merge_group(group_name, option_names) ans['disabled'] = tuple(ans['disabled']) return ans
def get_conversion_options(input_fmt, output_fmt, book_id, db): from calibre.ebooks.conversion.plumber import create_dummy_plumber from calibre.ebooks.conversion.config import ( load_specifics, load_defaults, OPTIONS, options_for_input_fmt, options_for_output_fmt) from calibre.customize.conversion import OptionRecommendation plumber = create_dummy_plumber(input_fmt, output_fmt) specifics = load_specifics(db, book_id) ans = {'options': {}, 'disabled': set(), 'defaults': {}, 'help': {}} ans['input_plugin_name'] = plumber.input_plugin.commit_name ans['output_plugin_name'] = plumber.output_plugin.commit_name ans['input_ui_data'] = plumber.input_plugin.ui_data ans['output_ui_data'] = plumber.output_plugin.ui_data def merge_group(group_name, option_names): if not group_name or group_name in ('debug', 'metadata'): return defs = load_defaults(group_name) defs.merge_recommendations( plumber.get_option_by_name, OptionRecommendation.LOW, option_names) specifics.merge_recommendations( plumber.get_option_by_name, OptionRecommendation.HIGH, option_names, only_existing=True) defaults = defs.as_dict()['options'] for k in defs: if k in specifics: defs[k] = specifics[k] defs = defs.as_dict() ans['options'].update(defs['options']) ans['disabled'] |= set(defs['disabled']) ans['defaults'].update(defaults) ans['help'] = plumber.get_all_help() for group_name, option_names in OPTIONS['pipe'].iteritems(): merge_group(group_name, option_names) group_name, option_names = options_for_input_fmt(input_fmt) merge_group(group_name, option_names) group_name, option_names = options_for_output_fmt(output_fmt) merge_group(group_name, option_names) ans['disabled'] = tuple(ans['disabled']) return ans