From e0f916068ad894f09bfe244150a1207f48ec1088 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 9 Jun 2017 18:55:57 +0530 Subject: [PATCH] Change the saved search button to always pop up a menu with the saved searches as well as actions to create or manage a saved search --- src/calibre/gui2/layout.py | 4 ++++ src/calibre/gui2/search_box.py | 19 ++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index 0530d81894..527ce64f17 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -263,7 +263,11 @@ class SearchBar(QWidget): # {{{ x.setVisible(tweaks['show_saved_search_box']) x = parent.add_saved_search_button = RightClickButton(self) + x.setToolTip(_( + 'Use an existing Saved search or create a new one' + )) x.setCursor(Qt.PointingHandCursor) + x.setPopupMode(x.InstantPopup) x.setIcon(QIcon(I("plus.png"))) l.addWidget(x) x.setVisible(not tweaks['show_saved_search_box']) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index 59fa2478bb..a7fccf361d 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -547,15 +547,24 @@ class SavedSearchBoxMixin(object): # {{{ self.save_search_button.setMenu(QMenu()) self.save_search_button.menu().addAction( QIcon(I('plus.png')), - _('Create saved search'), + _('Create Saved search'), self.saved_search.save_search_button_clicked) self.save_search_button.menu().addAction( - QIcon(I('trash.png')), _('Delete saved search'), self.saved_search.delete_current_search) + QIcon(I('trash.png')), _('Delete Saved search'), self.saved_search.delete_current_search) self.save_search_button.menu().addAction( - QIcon(I('search.png')), _('Manage saved searches'), partial(self.do_saved_search_edit, None)) - self.add_saved_search_button.clicked.connect(self.add_saved_search) + QIcon(I('search.png')), _('Manage Saved searches'), partial(self.do_saved_search_edit, None)) self.add_saved_search_button.setMenu(QMenu()) - self.add_saved_search_button.menu().addActions(self.save_search_button.menu().actions()) + self.add_saved_search_button.menu().aboutToShow.connect(self.populate_add_saved_search_menu) + + def populate_add_saved_search_menu(self): + m = self.add_saved_search_button.menu() + m.clear() + db = self.current_db + for name in db.saved_search_names(): + m.addAction(name.strip(), partial(self.saved_search.saved_search_selected, name)) + m.addSeparator() + m.addAction(QIcon(I('plus.png')), _('Add Saved search'), self.add_saved_search) + m.addActions(list(self.save_search_button.menu().actions())[-1:]) def saved_searches_changed(self, set_restriction=None, recount=True): self.build_search_restriction_list()