diff --git a/aqt/deckbrowser.py b/aqt/deckbrowser.py index e40fa93ee..c11730f93 100644 --- a/aqt/deckbrowser.py +++ b/aqt/deckbrowser.py @@ -54,6 +54,8 @@ or importing text files.""")) elif cmd == "drag": draggedDeckDid, ontoDeckDid = arg.split(',') self._dragDeckOnto(draggedDeckDid, ontoDeckDid) + elif cmd == "collapse": + self._collapse(arg) def _keyHandler(self, evt): key = unicode(evt.text()) @@ -162,6 +164,14 @@ where id > ?""", (self.mw.col.sched.dayCutoff-86400)*1000) def _deckRow(self, node, depth): name, did, due, lrn, new, children = node + # parent toggled for collapsing + for parent in self.mw.col.decks.parents(did): + if parent['collapsed']: + buff = "" + return buff + prefix = "(-)" + if self.mw.col.decks.get(did)['collapsed']: + prefix = "(+)" due += lrn def indent(): return " "*6*depth @@ -172,8 +182,8 @@ where id > ?""", (self.mw.col.sched.dayCutoff-86400)*1000) buf = "" % (klass, did) # deck link buf += """ -%s%s"""% ( - indent(), did, name) +%s%s%s"""% ( + indent(), did, prefix, did, name) # due counts def nonzeroColour(cnt, colour): if not cnt: @@ -208,6 +218,8 @@ where id > ?""", (self.mw.col.sched.dayCutoff-86400)*1000) def _showOptions(self, did): m = QMenu(self.mw) + a = m.addAction(_("Collapse")) + a.connect(a, SIGNAL("triggered()"), lambda did=did: self._collapse(did)) a = m.addAction(_("Rename")) a.connect(a, SIGNAL("triggered()"), lambda did=did: self._rename(did)) a = m.addAction(_("Options")) @@ -233,6 +245,10 @@ where id > ?""", (self.mw.col.sched.dayCutoff-86400)*1000) def _options(self, did): self.mw.onDeckConf(self.mw.col.decks.get(did)) + def _collapse(self, did): + self.mw.col.decks.collapse(did) + self.show() + def _dragDeckOnto(self, draggedDeckDid, ontoDeckDid): try: self.mw.col.decks.renameForDragAndDrop(draggedDeckDid, ontoDeckDid)