diff --git a/aqt/dyndeckconf.py b/aqt/dyndeckconf.py
index 0a9d0d9a5..cf8c81329 100644
--- a/aqt/dyndeckconf.py
+++ b/aqt/dyndeckconf.py
@@ -13,6 +13,8 @@ class DeckConf(QDialog):
QDialog.__init__(self, mw)
self.mw = mw
self.deck = self.mw.col.decks.current()
+ # context-sensitive extras like deck:foo
+ self.search = search
self.form = aqt.forms.dyndconf.Ui_Dialog()
self.form.setupUi(self)
if first:
@@ -27,16 +29,57 @@ class DeckConf(QDialog):
SIGNAL("helpRequested()"),
lambda: openHelp("cramming"))
self.setWindowTitle(_("Options for %s") % self.deck['name'])
- self.setupCombos()
+ self.setupExamples()
+ self.setupOrder()
self.loadConf()
- if first and search:
- self.form.search.setText(search)
self.exec_()
- def setupCombos(self):
+ def setupOrder(self):
+ import anki.consts as cs
+ self.form.order.addItems(cs.dynOrderLabels().values())
+
+ def setupExamples(self):
import anki.consts as cs
f = self.form
- f.order.addItems(cs.dynOrderLabels().values())
+ d = self.dynExamples = cs.dynExamples()
+ f.examples.addItems([x[0] for x in d])
+ self.connect(f.examples, SIGNAL("activated(int)"),
+ self.onExample)
+ # we'll need to reset whenever something is changed
+ self.ignoreChange = False
+ def onChange(*args):
+ if self.ignoreChange:
+ return
+ f.examples.setCurrentIndex(0)
+ c = self.connect
+ c(f.steps, SIGNAL("textEdited(QString)"), onChange)
+ c(f.search, SIGNAL("textEdited(QString)"), onChange)
+ c(f.order, SIGNAL("activated(int)"), onChange)
+ c(f.limit, SIGNAL("valueChanged(int)"), onChange)
+ c(f.stepsOn, SIGNAL("stateChanged(int)"), onChange)
+ c(f.resched, SIGNAL("stateChanged(int)"), onChange)
+
+ def onExample(self, idx):
+ if idx == 0:
+ return
+ p = self.dynExamples[idx][1]
+ f = self.form
+ self.ignoreChange = True
+ search = [p['search']]
+ if self.search:
+ search.append(self.search)
+ f.search.setText(" ".join(search))
+ print "set order to", p['order']
+ f.order.setCurrentIndex(p['order'])
+ f.resched.setChecked(p.get("resched", True))
+ if p.get("steps"):
+ f.steps.setText(p['steps'])
+ f.stepsOn.setChecked(True)
+ else:
+ f.steps.setText("1 10")
+ f.stepsOn.setChecked(False)
+ f.limit.setValue(1000)
+ self.ignoreChange = False
def loadConf(self):
f = self.form
diff --git a/designer/dyndconf.ui b/designer/dyndconf.ui
index 0507b02f6..a910bb37a 100644
--- a/designer/dyndconf.ui
+++ b/designer/dyndconf.ui
@@ -6,38 +6,35 @@
0
0
- 619
- 300
+ 445
+ 301
Dialog
- -
-
-
-
- Create deck from search
+ Filter
-
-
+
-
Limit to
- -
+
-
Search
- -
+
-
@@ -53,19 +50,29 @@
- -
+
-
cards selected by
- -
+
-
- -
+
-
+ -
+
+
+ -
+
+
+ Preset
+
+
+
@@ -138,7 +145,6 @@
stepsOn
steps
buttonBox
- examples