def check_for_add_to_toolbars(self, plugin): from calibre.gui2.preferences.toolbar import ConfigWidget from calibre.customize import InterfaceActionBase if not isinstance(plugin, InterfaceActionBase): return all_locations = OrderedDict(ConfigWidget.LOCATIONS) plugin_action = plugin.load_actual_plugin(self.gui) installed_actions = OrderedDict([ (key, list(gprefs.get('action-layout-' + key, []))) for key in all_locations ]) # If already installed in a GUI container, do nothing for action_names in installed_actions.itervalues(): if plugin_action.name in action_names: return allowed_locations = [(key, text) for key, text in all_locations.iteritems() if key not in plugin_action.dont_add_to] if not allowed_locations: return # This plugin doesn't want to live in the GUI from calibre.gui2.dialogs.choose_plugin_toolbars import ChoosePluginToolbarsDialog d = ChoosePluginToolbarsDialog(self, plugin_action, allowed_locations) if d.exec_() == d.Accepted: for key, text in d.selected_locations(): installed_actions = list(gprefs.get('action-layout-' + key, [])) installed_actions.append(plugin_action.name) gprefs['action-layout-' + key] = tuple(installed_actions)
def check_for_add_to_toolbars(self, plugin, previously_installed=True): from calibre.gui2.preferences.toolbar import ConfigWidget from calibre.customize import InterfaceActionBase, EditBookToolPlugin if isinstance(plugin, EditBookToolPlugin): return self.check_for_add_to_editor_toolbar( plugin, previously_installed) if not isinstance(plugin, InterfaceActionBase): return all_locations = OrderedDict(ConfigWidget.LOCATIONS) try: plugin_action = plugin.load_actual_plugin(self.gui) except: # Broken plugin, fails to initialize. Given that, it's probably # already configured, so we can just quit. return installed_actions = OrderedDict([ (key, list(gprefs.get('action-layout-' + key, []))) for key in all_locations ]) # If this is an update, do nothing if previously_installed: return # If already installed in a GUI container, do nothing for action_names in itervalues(installed_actions): if plugin_action.name in action_names: return allowed_locations = [(key, text) for key, text in iteritems(all_locations) if key not in plugin_action.dont_add_to] if not allowed_locations: return # This plugin doesn't want to live in the GUI from calibre.gui2.dialogs.choose_plugin_toolbars import ChoosePluginToolbarsDialog d = ChoosePluginToolbarsDialog(self, plugin_action, allowed_locations) if d.exec() == QDialog.DialogCode.Accepted: for key, text in d.selected_locations(): installed_actions = list(gprefs.get('action-layout-' + key, [])) installed_actions.append(plugin_action.name) gprefs['action-layout-' + key] = tuple(installed_actions)