From 0fc4c21dcc5efae7cedacb5b1f4fd95676c7ef34 Mon Sep 17 00:00:00 2001 From: abdo Date: Wed, 20 Jan 2021 03:26:53 +0300 Subject: [PATCH] Add filter remove/rename actions to the sidebar --- qt/aqt/browser.py | 27 ++++++++++++++++++++++----- qt/aqt/sidebar.py | 10 ++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index f0976b96c..d18348dc5 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -1487,16 +1487,33 @@ QTableView {{ gridline-color: {grid} }} self.col.set_config("savedFilters", conf) self.maybeRefreshSidebar() - def _onRemoveFilter(self): - name = self._currentFilterIsSaved() + def _onRemoveFilter(self) -> None: + self.removeFilter(self._currentFilterIsSaved()) + + def removeFilter(self, name: str) -> None: if not askUser(tr(TR.BROWSING_REMOVE_FROM_YOUR_SAVED_SEARCHES, val=name)): return - del self.col.conf["savedFilters"][name] - self.col.setMod() + conf = self.col.get_config("savedFilters") + del conf[name] + self.col.set_config("savedFilters", conf) + self.maybeRefreshSidebar() + + def renameFilter(self, old: str) -> None: + conf = self.col.get_config("savedFilters") + try: + filt = conf[old] + except KeyError: + return + new = getOnlyText(tr(TR.ACTIONS_NEW_NAME), default=old) + if new == old or not new: + return + conf[new] = filt + del conf[old] + self.col.set_config("savedFilters", conf) self.maybeRefreshSidebar() # returns name if found - def _currentFilterIsSaved(self): + def _currentFilterIsSaved(self) -> Optional[str]: filt = self.form.searchEdit.lineEdit().text() try: filt = self.col.backend.normalize_search(filt) diff --git a/qt/aqt/sidebar.py b/qt/aqt/sidebar.py index d53b63563..79c4baac2 100644 --- a/qt/aqt/sidebar.py +++ b/qt/aqt/sidebar.py @@ -80,6 +80,10 @@ class NewSidebarTreeView(SidebarTreeViewBase): (tr(TR.ACTIONS_RENAME), self.rename_tag), (tr(TR.ACTIONS_DELETE), self.remove_tag), ), + SidebarItemType.FILTER: ( + (tr(TR.ACTIONS_RENAME), self.rename_filter), + (tr(TR.ACTIONS_DELETE), self.remove_filter), + ), } def onContextMenu(self, point: QPoint) -> None: @@ -182,3 +186,9 @@ class NewSidebarTreeView(SidebarTreeViewBase): self.mw.checkpoint(tr(TR.DECKS_DELETE_DECK)) self.browser.model.beginReset() self.mw.taskman.run_in_background(do_delete, on_done) + + def remove_filter(self, item: "aqt.browser.SidebarItem") -> None: + self.browser.removeFilter(item.name) + + def rename_filter(self, item: "aqt.browser.SidebarItem") -> None: + self.browser.renameFilter(item.name)