def delete_orphan_shortcuts(self): prefix = menu_action_unique_name(self, '') to_del = { sc for sc in self.gui.keyboard.shortcuts if sc.startswith(prefix) } new_sc = {menu_action_unique_name(self, name) for name in self.actions} new_sc.add(menu_action_unique_name(self, _('Manage macros'))) to_del -= new_sc for sc in to_del: self.gui.keyboard.unregister_shortcut(sc) self.gui.keyboard.finalize()
def create_menu_action_unique(ia, parent_menu, menu_text, image=None, tooltip=None, shortcut=None, triggered=None, is_checked=None, shortcut_name=None, unique_name=None, favourites_menu_unique_name=None): ''' Create a menu action with the specified criteria and action, using the new InterfaceAction.create_menu_action() function which ensures that regardless of whether a shortcut is specified it will appear in Preferences->Keyboard ''' orig_shortcut = shortcut kb = ia.gui.keyboard if unique_name is None: unique_name = menu_text if not shortcut == False: full_unique_name = menu_action_unique_name(ia, unique_name) if full_unique_name in kb.shortcuts: shortcut = False else: if shortcut is not None and not shortcut == False: if len(shortcut) == 0: shortcut = None else: shortcut = _(shortcut) if shortcut_name is None: shortcut_name = menu_text.replace('&', '') ac = ia.create_menu_action(parent_menu, unique_name, menu_text, icon=None, shortcut=shortcut, description=tooltip, triggered=triggered, shortcut_name=shortcut_name) if shortcut == False and not orig_shortcut == False: if ac.calibre_shortcut_unique_name in ia.gui.keyboard.shortcuts: kb.replace_action(ac.calibre_shortcut_unique_name, ac) if image: ac.setIcon(get_icon(image)) if is_checked is not None: ac.setCheckable(True) if is_checked: ac.setChecked(True) # For use by the Favourites Menu plugin. If this menu action has text # that is not constant through the life of this plugin, then we need # to attribute it with something that will be constant that the # Favourites Menu plugin can use to identify it. if favourites_menu_unique_name: ac.favourites_menu_unique_name = favourites_menu_unique_name return ac
def create_menu_action_unique(self, parent_menu, menu_text, image=None, tooltip=None, shortcut=None, triggered=None, is_checked=None, shortcut_name=None, unique_name=None): ''' Create a menu action with the specified criteria and action, using the new InterfaceAction.create_menu_action() function which ensures that regardless of whether a shortcut is specified it will appear in Preferences->Keyboard ''' orig_shortcut = shortcut kb = self.gui.keyboard if unique_name is None: unique_name = menu_text if not shortcut == False: full_unique_name = menu_action_unique_name(self, unique_name) if full_unique_name in kb.shortcuts: shortcut = False else: if shortcut is not None and not shortcut == False: if len(shortcut) == 0: shortcut = None else: shortcut = _(shortcut) if shortcut_name is None: shortcut_name = menu_text.replace('&', '') ac = self.create_menu_action(parent_menu, unique_name, menu_text, icon=None, shortcut=shortcut, description=tooltip, triggered=triggered, shortcut_name=shortcut_name) if shortcut == False and not orig_shortcut == False: if ac.calibre_shortcut_unique_name in self.gui.keyboard.shortcuts: kb.replace_action(ac.calibre_shortcut_unique_name, ac) if image: ac.setIcon(QIcon(I(image))) if is_checked is not None: ac.setCheckable(True) if is_checked: ac.setChecked(True) return ac
def create_menu_action_unique(ia, parent_menu, menu_text, image=None, tooltip=None, shortcut=None, triggered=None, is_checked=None, shortcut_name=None, unique_name=None, favourites_menu_unique_name=None): ''' Create a menu action with the specified criteria and action, using the new InterfaceAction.create_menu_action() function which ensures that regardless of whether a shortcut is specified it will appear in Preferences->Keyboard ''' orig_shortcut = shortcut kb = ia.gui.keyboard if unique_name is None: unique_name = menu_text if not shortcut == False: full_unique_name = menu_action_unique_name(ia, unique_name) if full_unique_name in kb.shortcuts: shortcut = False else: if shortcut is not None and not shortcut == False: if len(shortcut) == 0: shortcut = None else: shortcut = _(shortcut) if shortcut_name is None: shortcut_name = menu_text.replace('&','') ac = ia.create_menu_action(parent_menu, unique_name, menu_text, icon=None, shortcut=shortcut, description=tooltip, triggered=triggered, shortcut_name=shortcut_name) if shortcut == False and not orig_shortcut == False: if ac.calibre_shortcut_unique_name in ia.gui.keyboard.shortcuts: kb.replace_action(ac.calibre_shortcut_unique_name, ac) if image: ac.setIcon(get_icon(image)) if is_checked is not None: ac.setCheckable(True) if is_checked: ac.setChecked(True) # For use by the Favourites Menu plugin. If this menu action has text # that is not constant through the life of this plugin, then we need # to attribute it with something that will be constant that the # Favourites Menu plugin can use to identify it. if favourites_menu_unique_name: ac.favourites_menu_unique_name = favourites_menu_unique_name return ac
def create_menu_action_unique(ia, parent_menu, menu_text, image=None, tooltip=None, shortcut=None, triggered=None, is_checked=None, shortcut_name=None, unique_name=None): ''' Create a menu action with the specified criteria and action, using the new InterfaceAction.create_menu_action() function which ensures that regardless of whether a shortcut is specified it will appear in Preferences->Keyboard ''' orig_shortcut = shortcut kb = ia.gui.keyboard if unique_name is None: unique_name = menu_text if not shortcut == False: full_unique_name = menu_action_unique_name(ia, unique_name) if full_unique_name in kb.shortcuts: shortcut = False else: if shortcut is not None and not shortcut == False: if len(shortcut) == 0: shortcut = None else: shortcut = _(shortcut) if shortcut_name is None: shortcut_name = menu_text.replace('&','') ac = ia.create_menu_action(parent_menu, unique_name, menu_text, icon=None, shortcut=shortcut, description=tooltip, triggered=triggered, shortcut_name=shortcut_name) if shortcut == False and not orig_shortcut == False: if ac.calibre_shortcut_unique_name in ia.gui.keyboard.shortcuts: kb.replace_action(ac.calibre_shortcut_unique_name, ac) if image: ac.setIcon(get_icon(image)) if is_checked is not None: ac.setCheckable(True) if is_checked: ac.setChecked(True) return ac