Add filter remove/rename actions to the sidebar

This commit is contained in:
abdo 2021-01-20 03:26:53 +03:00
parent a4ec467284
commit 0fc4c21dcc
2 changed files with 32 additions and 5 deletions

View file

@ -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)

View file

@ -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)