From 0c340eba645b4babf9a6bda60160ee08b4e91854 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sat, 16 May 2020 11:54:08 +1000 Subject: [PATCH] fix+speed up deck list from Filters button I don't think it makes much sense to keep these lists that largely duplicate the sidebar functionality, but they remain for now. --- qt/aqt/browser.py | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index b7ee5e4b0..a0ca7ae30 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -1303,25 +1303,20 @@ QTableView {{ gridline-color: {grid} }} return m def _deckFilters(self): - def addDecks(parent, decks): - for head, did, rev, lrn, new, children in decks: - name = self.mw.col.decks.get(did)["name"] - shortname = DeckManager.basename(name) - if children: - subm = parent.addMenu(shortname) - subm.addItem(_("Filter"), self._filterFunc("deck", name)) + def addDecks(parent, decks, parent_prefix): + for node in decks: + fullname = parent_prefix + node.name + if node.children: + subm = parent.addMenu(node.name) + subm.addItem(_("Filter"), lambda: self._filterFunc("deck", fullname)) subm.addSeparator() - addDecks(subm, children) + addDecks(subm, node.children, fullname + "::") else: - if did != 1 or self.col.decks.should_default_be_displayed( - force_default=False, assume_no_child=True - ): - parent.addItem(shortname, self._filterFunc("deck", name)) + parent.addItem(node.name, self._filterFunc("deck", fullname)) - # fixme: could rewrite to avoid calculating due # in the future - alldecks = self.col.sched.deckDueTree() + alldecks = self.col.decks.deck_tree() ml = MenuList() - addDecks(ml, alldecks) + addDecks(ml, alldecks.children, "") root = SubMenu(_("Decks")) root.addChild(ml.chunked())