mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Edit Book: The keyboard shortcuts for searching now trigger saved searches if the saved searches window is open and has input focus
This commit is contained in:
parent
18477b56d9
commit
bde7f1e79d
@ -772,6 +772,21 @@ class Boss(QObject):
|
||||
if text and text.strip():
|
||||
self.gui.central.pre_fill_search(text)
|
||||
|
||||
def search_action_triggered(self, action, overrides=None):
|
||||
if self.gui.saved_searches.isVisible() and self.gui.saved_searches.has_focus():
|
||||
return self.gui.saved_searches.trigger_action(action, overrides=overrides)
|
||||
self.search(action, overrides)
|
||||
|
||||
def run_saved_searches(self, searches, action):
|
||||
ed = self.gui.central.current_editor
|
||||
name = editor_name(ed)
|
||||
searchable_names = self.gui.file_list.searchable_names
|
||||
if not searches or not validate_search_request(name, searchable_names, getattr(ed, 'has_marked_text', False), searches[0], self.gui):
|
||||
return
|
||||
run_search(searches, action, ed, name, searchable_names,
|
||||
self.gui, self.show_editor, self.edit_file, self.show_current_diff, self.add_savepoint, self.rewind_savepoint, self.set_modified)
|
||||
self.gui.saved_searches.setFocus(Qt.OtherFocusReason)
|
||||
|
||||
def search(self, action, overrides=None):
|
||||
# Run a search/replace
|
||||
sp = self.gui.central.search_panel
|
||||
@ -846,15 +861,6 @@ class Boss(QObject):
|
||||
self.gui.saved_searches_dock.show()
|
||||
saved_searches = show_saved_searches
|
||||
|
||||
def run_saved_searches(self, searches, action):
|
||||
ed = self.gui.central.current_editor
|
||||
name = editor_name(ed)
|
||||
searchable_names = self.gui.file_list.searchable_names
|
||||
if not searches or not validate_search_request(name, searchable_names, getattr(ed, 'has_marked_text', False), searches[0], self.gui):
|
||||
return
|
||||
run_search(searches, action, ed, name, searchable_names,
|
||||
self.gui, self.show_editor, self.edit_file, self.show_current_diff, self.add_savepoint, self.rewind_savepoint, self.set_modified)
|
||||
|
||||
def create_checkpoint(self):
|
||||
text, ok = QInputDialog.getText(self.gui, _('Choose name'), _(
|
||||
'Choose a name for the checkpoint.\nYou can later restore the book'
|
||||
|
@ -734,6 +734,17 @@ class SavedSearches(QWidget):
|
||||
|
||||
self.searches.setFocus(Qt.OtherFocusReason)
|
||||
|
||||
def has_focus(self):
|
||||
if self.hasFocus():
|
||||
return True
|
||||
for child in self.findChildren(QWidget):
|
||||
if child.hasFocus():
|
||||
return True
|
||||
return False
|
||||
|
||||
def trigger_action(self, action, overrides=None):
|
||||
self._run_search(action, overrides)
|
||||
|
||||
def stack_current_changed(self, index):
|
||||
visible = index == 0
|
||||
for x in ('eb', 'ab', 'rb', 'upb', 'dnb', 'd2', 'filter_text', 'cft', 'd3', 'ib', 'eb2'):
|
||||
@ -768,6 +779,9 @@ class SavedSearches(QWidget):
|
||||
self.searches.scrollTo(self.model.index(0))
|
||||
|
||||
def run_search(self, action):
|
||||
return self._run_search(action)
|
||||
|
||||
def _run_search(self, action, overrides=None):
|
||||
searches = []
|
||||
|
||||
def fill_in_search(search):
|
||||
@ -796,6 +810,8 @@ class SavedSearches(QWidget):
|
||||
searches.append(search)
|
||||
if not searches:
|
||||
return
|
||||
if overrides:
|
||||
[sc.update(overrides) for sc in searches]
|
||||
self.run_saved_searches.emit(searches, action)
|
||||
|
||||
@property
|
||||
|
@ -399,7 +399,7 @@ class Main(MainWindow):
|
||||
group = _('Search')
|
||||
self.action_find = treg('search.png', _('&Find/Replace'), self.boss.show_find, 'find-replace', ('Ctrl+F',), _('Show the Find/Replace panel'))
|
||||
def sreg(name, text, action, overrides={}, keys=(), description=None, icon=None):
|
||||
return reg(icon, text, partial(self.boss.search, action, overrides), name, keys, description or text.replace('&', ''))
|
||||
return reg(icon, text, partial(self.boss.search_action_triggered, action, overrides), name, keys, description or text.replace('&', ''))
|
||||
self.action_find_next = sreg('find-next', _('Find &Next'),
|
||||
'find', {'direction':'down'}, ('F3', 'Ctrl+G'), _('Find next match'))
|
||||
self.action_find_previous = sreg('find-previous', _('Find &Previous'),
|
||||
|
Loading…
x
Reference in New Issue
Block a user