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