mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
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)
This commit is contained in:
parent
c49ba575b2
commit
6ed197b08f
@ -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)
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user