diff --git a/src/calibre/gui2/actions/preferences.py b/src/calibre/gui2/actions/preferences.py index 8885780ccc..c298dfa594 100644 --- a/src/calibre/gui2/actions/preferences.py +++ b/src/calibre/gui2/actions/preferences.py @@ -42,6 +42,7 @@ class PreferencesAction(InterfaceAction): self.preferences_menu = pm for x in (self.gui.preferences_action, self.qaction): x.triggered.connect(self.do_config) + self.action_map = {} def initialization_complete(self): # Add the individual preferences to the menu. @@ -60,7 +61,7 @@ class PreferencesAction(InterfaceAction): current_cat = p.category_order cm = pm.addMenu(p.gui_category.replace('&', '&&')) cm.setIcon(config_icon) - self.create_menu_action(cm, p.name, p.gui_name.replace('&', '&&'), + self.action_map[p.name] = self.create_menu_action(cm, p.name, p.gui_name.replace('&', '&&'), icon=QIcon.ic(p.icon), shortcut=None, shortcut_name=p.gui_name, triggered=partial(self.do_config, initial_plugin=(p.category, p.name), close_after_initial=True)) diff --git a/src/calibre/gui2/preferences/main.py b/src/calibre/gui2/preferences/main.py index 306eb200f5..0390032d65 100644 --- a/src/calibre/gui2/preferences/main.py +++ b/src/calibre/gui2/preferences/main.py @@ -18,6 +18,7 @@ from qt.core import ( QFrame, QHBoxLayout, QIcon, + QKeySequence, QLabel, QPainter, QPointF, @@ -150,10 +151,16 @@ class Category(QWidget): # {{{ self.bar.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextUnderIcon) self._layout.addWidget(self.bar) self.actions = [] + from calibre.gui2.ui import get_gui + iac = get_gui().iactions['Preferences'] for p in plugins: + sc = iac.action_map.get(p.name).shortcut().toString(QKeySequence.SequenceFormat.NativeText) target = partial(self.triggered, p) ac = self.bar.addAction(QIcon.ic(p.icon), p.gui_name.replace('&', '&&'), target) - ac.setToolTip(textwrap.fill(p.description)) + tt = '
' + p.description
+ if sc:
+ tt += '
' + _('Shortcut: {}').format(sc)
+ ac.setToolTip(tt)
ac.setWhatsThis(textwrap.fill(p.description))
ac.setStatusTip(p.description)
self.actions.append(ac)