From 2c4ffa1700ff03b49b8ef058fcddee1c11fae19f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 28 Aug 2014 09:47:42 +0530 Subject: [PATCH] Workaround the broken hackery that the DOC Input plugin does, that causes it to break the Input Options Preferences in calibre 2.0 --- src/calibre/customize/builtins.py | 5 +++++ src/calibre/gui2/convert/__init__.py | 15 ++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index 6abf7b4808..fb06ce4115 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -1048,6 +1048,11 @@ class InputOptions(PreferencesPlugin): config_widget = 'calibre.gui2.preferences.conversion:InputOptions' description = _('Set conversion options specific to each input format') + def create_widget(self, *args, **kwargs): + # The DOC Input plugin tries to override this + self.config_widget = 'calibre.gui2.preferences.conversion:InputOptions' + return PreferencesPlugin.create_widget(self, *args, **kwargs) + class CommonOptions(PreferencesPlugin): name = 'Common Options' icon = I('convert.png') diff --git a/src/calibre/gui2/convert/__init__.py b/src/calibre/gui2/convert/__init__.py index 3e2a8bde3d..a642bc6cca 100644 --- a/src/calibre/gui2/convert/__init__.py +++ b/src/calibre/gui2/convert/__init__.py @@ -27,13 +27,14 @@ def config_widget_for_input_plugin(plugin): 'calibre.gui2.convert.'+name).PluginWidget except ImportError: # If this is not a builtin plugin, we have to import it differently - try: - ans = importlib.import_module(plugin.__module__+'.'+name).PluginWidget - except (ImportError, AttributeError, TypeError): - pass - else: - if issubclass(ans, Widget): - return ans + if plugin.__module__ and plugin.__module__.startswith('calibre_plugins.'): + try: + ans = importlib.import_module(plugin.__module__+'.'+name).PluginWidget + except (ImportError, AttributeError, TypeError): + pass + else: + if issubclass(ans, Widget): + return ans def bulk_defaults_for_input_format(fmt): plugin = plugin_for_input_format(fmt)