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)
|
show_search_result = pyqtSignal(object)
|
||||||
current_result_changed = pyqtSignal(object)
|
current_result_changed = pyqtSignal(object)
|
||||||
|
count_changed = pyqtSignal(object)
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
QTreeWidget.__init__(self, parent)
|
QTreeWidget.__init__(self, parent)
|
||||||
@ -578,7 +579,9 @@ class Results(QTreeWidget): # {{{
|
|||||||
item.setIcon(0, self.blank_icon)
|
item.setIcon(0, self.blank_icon)
|
||||||
self.item_map[len(self.search_results)] = item
|
self.item_map[len(self.search_results)] = item
|
||||||
self.search_results.append(result)
|
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):
|
def item_activated(self):
|
||||||
i = self.currentItem()
|
i = self.currentItem()
|
||||||
@ -627,6 +630,7 @@ class Results(QTreeWidget): # {{{
|
|||||||
self.item_map = {}
|
self.item_map = {}
|
||||||
self.search_results = []
|
self.search_results = []
|
||||||
self.clear()
|
self.clear()
|
||||||
|
self.count_changed.emit(-1)
|
||||||
|
|
||||||
def select_first_result(self):
|
def select_first_result(self):
|
||||||
if self.number_of_results:
|
if self.number_of_results:
|
||||||
@ -640,6 +644,7 @@ class SearchPanel(QWidget): # {{{
|
|||||||
search_requested = pyqtSignal(object)
|
search_requested = pyqtSignal(object)
|
||||||
results_found = pyqtSignal(object)
|
results_found = pyqtSignal(object)
|
||||||
show_search_result = pyqtSignal(object)
|
show_search_result = pyqtSignal(object)
|
||||||
|
count_changed = pyqtSignal(object)
|
||||||
hide_search_panel = pyqtSignal()
|
hide_search_panel = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
@ -655,6 +660,7 @@ class SearchPanel(QWidget): # {{{
|
|||||||
si.do_search.connect(self.search_requested)
|
si.do_search.connect(self.search_requested)
|
||||||
l.addWidget(si)
|
l.addWidget(si)
|
||||||
self.results = r = Results(self)
|
self.results = r = Results(self)
|
||||||
|
r.count_changed.connect(self.count_changed)
|
||||||
si.cleared.connect(r.clear_all_results)
|
si.cleared.connect(r.clear_all_results)
|
||||||
r.show_search_result.connect(self.do_show_search_result, type=Qt.QueuedConnection)
|
r.show_search_result.connect(self.do_show_search_result, type=Qt.QueuedConnection)
|
||||||
r.current_result_changed.connect(self.update_hidden_message)
|
r.current_result_changed.connect(self.update_hidden_message)
|
||||||
|
@ -140,6 +140,7 @@ class EbookViewer(MainWindow):
|
|||||||
self.search_widget = w = SearchPanel(self)
|
self.search_widget = w = SearchPanel(self)
|
||||||
w.search_requested.connect(self.start_search)
|
w.search_requested.connect(self.start_search)
|
||||||
w.hide_search_panel.connect(self.search_dock.close)
|
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.setWidget(w)
|
||||||
self.search_dock.visibilityChanged.connect(self.search_widget.visibility_changed)
|
self.search_dock.visibilityChanged.connect(self.search_widget.visibility_changed)
|
||||||
|
|
||||||
@ -294,6 +295,17 @@ class EbookViewer(MainWindow):
|
|||||||
def show_search(self):
|
def show_search(self):
|
||||||
self.web_view.get_current_cfi(self.show_search_with_current_selection)
|
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):
|
def show_search_with_current_selection(self, pos_data):
|
||||||
self.search_dock.setVisible(True)
|
self.search_dock.setVisible(True)
|
||||||
self.search_dock.activateWindow()
|
self.search_dock.activateWindow()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user