From 6ed197b08f9053a06a7858f7443b314848480461 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 3 Jun 2020 13:51:22 +0530 Subject: [PATCH] Viewer: Show number of search results in title of search panel. Fixes #1881792 [[Enhancement - Viewer] Show number of search results](https://bugs.launchpad.net/calibre/+bug/1881792) --- src/calibre/gui2/viewer/search.py | 8 +++++++- src/calibre/gui2/viewer/ui.py | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/viewer/search.py b/src/calibre/gui2/viewer/search.py index 8d645d26ea..c06293103c 100644 --- a/src/calibre/gui2/viewer/search.py +++ b/src/calibre/gui2/viewer/search.py @@ -522,6 +522,7 @@ class Results(QTreeWidget): # {{{ show_search_result = pyqtSignal(object) current_result_changed = pyqtSignal(object) + count_changed = pyqtSignal(object) def __init__(self, parent=None): QTreeWidget.__init__(self, parent) @@ -578,7 +579,9 @@ class Results(QTreeWidget): # {{{ item.setIcon(0, self.blank_icon) self.item_map[len(self.search_results)] = item self.search_results.append(result) - return self.number_of_results + n = self.number_of_results + self.count_changed.emit(n) + return n def item_activated(self): i = self.currentItem() @@ -627,6 +630,7 @@ class Results(QTreeWidget): # {{{ self.item_map = {} self.search_results = [] self.clear() + self.count_changed.emit(-1) def select_first_result(self): if self.number_of_results: @@ -640,6 +644,7 @@ class SearchPanel(QWidget): # {{{ search_requested = pyqtSignal(object) results_found = pyqtSignal(object) show_search_result = pyqtSignal(object) + count_changed = pyqtSignal(object) hide_search_panel = pyqtSignal() def __init__(self, parent=None): @@ -655,6 +660,7 @@ class SearchPanel(QWidget): # {{{ si.do_search.connect(self.search_requested) l.addWidget(si) self.results = r = Results(self) + r.count_changed.connect(self.count_changed) si.cleared.connect(r.clear_all_results) r.show_search_result.connect(self.do_show_search_result, type=Qt.QueuedConnection) r.current_result_changed.connect(self.update_hidden_message) diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index 59d235f5e4..4aad74e178 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -140,6 +140,7 @@ class EbookViewer(MainWindow): self.search_widget = w = SearchPanel(self) w.search_requested.connect(self.start_search) w.hide_search_panel.connect(self.search_dock.close) + w.count_changed.connect(self.search_results_count_changed) self.search_dock.setWidget(w) self.search_dock.visibilityChanged.connect(self.search_widget.visibility_changed) @@ -294,6 +295,17 @@ class EbookViewer(MainWindow): def show_search(self): self.web_view.get_current_cfi(self.show_search_with_current_selection) + def search_results_count_changed(self, num=-1): + if num < 0: + tt = _('Search') + elif num == 0: + tt = _('Search [no matches]') + elif num == 1: + tt = _('Search [one match]') + else: + tt = _('Search [{} matches]').format(num) + self.search_dock.setWindowTitle(tt) + def show_search_with_current_selection(self, pos_data): self.search_dock.setVisible(True) self.search_dock.activateWindow()