From 9db3f0dd19ecf5745a3a0865b9bfdeeaba897e80 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sat, 23 Jan 2021 17:56:33 +1000 Subject: [PATCH] drop tags/decks/etc from Filter button https://github.com/ankitects/help-wanted/issues/6 These are a relic from when the sidebar defaulted to off, and I don't think enough people are using them to bother keeping them around. Once the the card state and saved filter functionality moves into the sidebar and top menus, we may be able to remove the Filter button completely. --- qt/aqt/browser.py | 92 ----------------------------------------------- qt/aqt/utils.py | 26 -------------- 2 files changed, 118 deletions(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index 757fe138f..a32594fba 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -1251,14 +1251,8 @@ QTableView {{ gridline-color: {grid} }} def onFilterButton(self): ml = MenuList() - ml.addChild(self._commonFilters()) - ml.addSeparator() - ml.addChild(self._todayFilters()) ml.addChild(self._cardStateFilters()) - ml.addChild(self._deckFilters()) - ml.addChild(self._noteTypeFilters()) - ml.addChild(self._tagFilters()) ml.addSeparator() ml.addChild(self.sidebarDockWidget.toggleViewAction()) @@ -1339,14 +1333,6 @@ QTableView {{ gridline-color: {grid} }} def _saved_filter(self, saved: str) -> Callable: return lambda: self.setFilter(saved) - def _commonFilters(self): - return self._simpleFilters( - ( - (tr(TR.BROWSING_WHOLE_COLLECTION), NamedFilter.WHOLE_COLLECTION), - (tr(TR.BROWSING_CURRENT_DECK), NamedFilter.CURRENT_DECK), - ) - ) - def _todayFilters(self): subm = SubMenu(tr(TR.BROWSING_TODAY)) subm.addChild( @@ -1387,76 +1373,6 @@ QTableView {{ gridline-color: {grid} }} def _escapeMenuItem(self, label): return label.replace("&", "&&") - def _tagFilters(self): - m = SubMenu(tr(TR.EDITING_TAGS)) - - m.addItem(tr(TR.BROWSING_CLEAR_UNUSED), self.clearUnusedTags) - m.addSeparator() - - tagList = MenuList() - for t in sorted(self.col.tags.all(), key=lambda s: s.lower()): - tagList.addItem(self._escapeMenuItem(t), self._tag_filter(t)) - - m.addChild(tagList.chunked()) - return m - - def _deckFilters(self): - def addDecks(parent, decks, parent_prefix): - for node in decks: - escaped_name = self._escapeMenuItem(node.name) - # pylint: disable=cell-var-from-loop - fullname = parent_prefix + node.name - if node.children: - subm = parent.addMenu(escaped_name) - subm.addItem(tr(TR.ACTIONS_FILTER), self._deck_filter(fullname)) - subm.addSeparator() - addDecks(subm, node.children, fullname + "::") - else: - parent.addItem(escaped_name, self._deck_filter(fullname)) - - alldecks = self.col.decks.deck_tree() - ml = MenuList() - addDecks(ml, alldecks.children, "") - - root = SubMenu(tr(TR.ACTIONS_DECKS)) - root.addChild(ml.chunked()) - - return root - - def _noteTypeFilters(self): - m = SubMenu(tr(TR.NOTETYPES_NOTE_TYPES)) - - m.addItem(tr(TR.ACTIONS_MANAGE), self.mw.onNoteTypes) - m.addSeparator() - - noteTypes = MenuList() - for nt in sorted(self.col.models.all(), key=lambda nt: nt["name"].lower()): - escaped_nt_name = self._escapeMenuItem(nt["name"]) - # no sub menu if it's a single template - if len(nt["tmpls"]) == 1: - noteTypes.addItem(escaped_nt_name, self._note_filter(nt["name"])) - else: - subm = noteTypes.addMenu(escaped_nt_name) - - subm.addItem( - tr(TR.BROWSING_ALL_CARD_TYPES), self._note_filter(nt["name"]) - ) - subm.addSeparator() - - # add templates - for c, tmpl in enumerate(nt["tmpls"]): - # T: name is a card type name. n it's order in the list of card type. - # T: this is shown in browser's filter, when seeing the list of card type of a note type. - name = tr( - TR.BROWSING_ND_NAMES, - num=c + 1, - name=self._escapeMenuItem(tmpl["name"]), - ) - subm.addItem(name, self._template_filter(nt["name"], c)) - - m.addChild(noteTypes.chunked()) - return m - # Favourites ###################################################################### @@ -1473,14 +1389,6 @@ QTableView {{ gridline-color: {grid} }} else: ml.addItem(tr(TR.BROWSING_SAVE_CURRENT_FILTER), self._onSaveFilter) - saved = self.col.get_config("savedFilters") - if not saved: - return ml - - ml.addSeparator() - for name, filt in sorted(saved.items()): - ml.addItem(self._escapeMenuItem(name), self._saved_filter(filt)) - return ml def _onSaveFilter(self) -> None: diff --git a/qt/aqt/utils.py b/qt/aqt/utils.py index f9975e2ca..0030dc462 100644 --- a/qt/aqt/utils.py +++ b/qt/aqt/utils.py @@ -699,32 +699,6 @@ class MenuList: self.renderTo(qmenu) qmenu.exec_(widget.mapToGlobal(QPoint(0, 0))) - # Chunking - ###################################################################### - - chunkSize = 30 - - def chunked(self): - if len(self.children) <= self.chunkSize: - return self - - newList = MenuList() - oldItems = self.children[:] - while oldItems: - chunk = oldItems[: self.chunkSize] - del oldItems[: self.chunkSize] - label = self._chunkLabel(chunk) - menu = newList.addMenu(label) - menu.children = chunk - return newList - - def _chunkLabel(self, items): - start = items[0].title - end = items[-1].title - prefix = os.path.commonprefix([start.upper(), end.upper()]) - n = len(prefix) + 1 - return "{}-{}".format(start[:n].upper(), end[:n].upper()) - class SubMenu(MenuList): def __init__(self, title):