From 8c430a5945333ee0e2be2319f4970db406aac512 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sun, 17 Feb 2019 11:57:42 +0000 Subject: [PATCH] Enhancement #1816274: add a "Search using saved search expression" action to the tag browser context menu. --- src/calibre/gui2/search_box.py | 4 ++-- src/calibre/gui2/tag_browser/view.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 153881fb19..c95a8d5d32 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -608,10 +608,10 @@ class SavedSearchBoxMixin(object): # {{{ self.current_db.new_api.ensure_has_search_category(fail_on_existing=False) self.do_rebuild_saved_searches() - def get_saved_search_text(self): + def get_saved_search_text(self, search_name=None): db = self.current_db try: - current_search = self.search.currentText() + current_search = search_name if search_name else self.search.currentText() if not current_search.startswith('search:'): raise ValueError() # This strange expression accounts for the four ways a search can be written: diff --git a/src/calibre/gui2/tag_browser/view.py b/src/calibre/gui2/tag_browser/view.py index 5edd8bc134..3445db6215 100644 --- a/src/calibre/gui2/tag_browser/view.py +++ b/src/calibre/gui2/tag_browser/view.py @@ -149,6 +149,7 @@ class TagsView(QTreeView): # {{{ self.setAutoExpandDelay(500) self.pane_is_visible = False self.search_icon = QIcon(I('search.png')) + self.search_copy_icon = QIcon(I("search_copy_saved.png")) self.user_category_icon = QIcon(I('tb_folder.png')) self.delete_icon = QIcon(I('list_remove.png')) self.rename_icon = QIcon(I('edit-undo.png')) @@ -413,6 +414,10 @@ class TagsView(QTreeView): # {{{ if action == 'search': self._toggle(index, set_to=search_state) return + if action == "raw_search": + from calibre.gui2.ui import get_gui + get_gui().get_saved_search_text(search_name='search:' + key) + return if action == 'add_to_category': tag = index.tag if len(index.children) > 0: @@ -589,6 +594,11 @@ class TagsView(QTreeView): # {{{ partial(self.context_menu_handler, action='search', search_state=TAG_SEARCH_STATES['mark_minus'], index=index)) + self.context_menu.addAction(self.search_copy_icon, + _('Search using saved search expression'), + partial(self.context_menu_handler, action='raw_search', + key=tag.name)) + self.context_menu.addSeparator() elif key.startswith('@') and not item.is_gst: if item.can_be_edited: