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)