From ba99cb7971032445c3b7a85dfb6c927f533b7574 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 26 May 2020 13:26:21 +0530 Subject: [PATCH] Show shortcut for add highlight button in tooltip --- src/calibre/gui2/viewer/highlights.py | 17 +++++++++++++++-- src/calibre/gui2/viewer/ui.py | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/viewer/highlights.py b/src/calibre/gui2/viewer/highlights.py index 56264aa63d..930bc997ce 100644 --- a/src/calibre/gui2/viewer/highlights.py +++ b/src/calibre/gui2/viewer/highlights.py @@ -7,13 +7,14 @@ from __future__ import absolute_import, division, print_function, unicode_litera from itertools import chain from PyQt5.Qt import ( - QHBoxLayout, QIcon, QItemSelectionModel, QLabel, QListWidget, QListWidgetItem, - QPushButton, Qt, QTextBrowser, QVBoxLayout, QWidget, pyqtSignal + QHBoxLayout, QIcon, QItemSelectionModel, QKeySequence, QLabel, QListWidget, + QListWidgetItem, QPushButton, Qt, QTextBrowser, QVBoxLayout, QWidget, pyqtSignal ) from calibre.constants import plugins from calibre.gui2 import error_dialog, question_dialog from calibre.gui2.viewer.search import SearchInput +from calibre.gui2.viewer.shortcuts import index_to_key_sequence from polyglot.builtins import range @@ -128,6 +129,18 @@ class HighlightsPanel(QWidget): l.addWidget(nd) nd.setVisible(False) + def set_tooltips(self, rmap): + a = rmap.get('create_annotation') + if a: + + def as_text(idx): + return index_to_key_sequence(idx).toString(QKeySequence.NativeText) + + tt = self.add_button.toolTip().partition('[')[0].strip() + keys = sorted(filter(None, map(as_text, a))) + if keys: + self.add_button.setToolTip('{} [{}]'.format(tt, ', '.join(keys))) + def search_requested(self, query): if not self.highlights.find_query(query): error_dialog(self, _('No matches'), _( diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index d9e2443716..59d235f5e4 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -203,6 +203,7 @@ class EbookViewer(MainWindow): for k, v in iteritems(smap): rmap[v].append(k) self.actions_toolbar.set_tooltips(rmap) + self.highlights_widget.set_tooltips(rmap) def resizeEvent(self, ev): self.loading_overlay.resize(self.size())