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