From 3e1a5314442a382ea8348b8a65cc15c2371a6791 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 6 Jan 2011 09:58:54 -0700 Subject: [PATCH] Fix #8176 (Expose configuration dialog for a plugin via API) --- src/calibre/gui2/actions/__init__.py | 6 ++++++ src/calibre/gui2/ui.py | 1 + 2 files changed, 7 insertions(+) diff --git a/src/calibre/gui2/actions/__init__.py b/src/calibre/gui2/actions/__init__.py index c88203593b..b54d346904 100644 --- a/src/calibre/gui2/actions/__init__.py +++ b/src/calibre/gui2/actions/__init__.py @@ -36,6 +36,11 @@ class InterfaceAction(QObject): self.gui.iactions['Save To Disk'] + To access the actual plugin, use the :attr:`interface_action_base_plugin` + attribute, this attribute only becomes available after the plugin has been + initialized. Useful if you want to use methods from the plugin class like + do_user_config(). + The QAction specified by :attr:`action_spec` is automatically create and made available as ``self.qaction``. @@ -83,6 +88,7 @@ class InterfaceAction(QObject): self.setObjectName(self.name) self.gui = parent self.site_customization = site_customization + self.interface_action_base_plugin = None def do_genesis(self): self.Dispatcher = partial(Dispatcher, parent=self) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index f97589e466..7e22839bdf 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -105,6 +105,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ for action in interface_actions(): ac = action.load_actual_plugin(self) ac.plugin_path = action.plugin_path + ac.interface_action_base_plugin = action if ac.name in acmap: if ac.priority >= acmap[ac.name].priority: acmap[ac.name] = ac