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.col.set_config("savedFilters", conf)
self.maybeRefreshSidebar() self.maybeRefreshSidebar()
def _onRemoveFilter(self): def _onRemoveFilter(self) -> None:
name = self._currentFilterIsSaved() self.removeFilter(self._currentFilterIsSaved())
def removeFilter(self, name: str) -> None:
if not askUser(tr(TR.BROWSING_REMOVE_FROM_YOUR_SAVED_SEARCHES, val=name)): if not askUser(tr(TR.BROWSING_REMOVE_FROM_YOUR_SAVED_SEARCHES, val=name)):
return return
del self.col.conf["savedFilters"][name] conf = self.col.get_config("savedFilters")
self.col.setMod() 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() self.maybeRefreshSidebar()
# returns name if found # returns name if found
def _currentFilterIsSaved(self): def _currentFilterIsSaved(self) -> Optional[str]:
filt = self.form.searchEdit.lineEdit().text() filt = self.form.searchEdit.lineEdit().text()
try: try:
filt = self.col.backend.normalize_search(filt) 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_RENAME), self.rename_tag),
(tr(TR.ACTIONS_DELETE), self.remove_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: def onContextMenu(self, point: QPoint) -> None:
@ -182,3 +186,9 @@ class NewSidebarTreeView(SidebarTreeViewBase):
self.mw.checkpoint(tr(TR.DECKS_DELETE_DECK)) self.mw.checkpoint(tr(TR.DECKS_DELETE_DECK))
self.browser.model.beginReset() self.browser.model.beginReset()
self.mw.taskman.run_in_background(do_delete, on_done) 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)