allow the user to cancel creation/editing of cram deck

This commit is contained in:
Damien Elmes 2012-04-06 11:55:01 +09:00
parent 314ec1957a
commit 56b89fdc91
5 changed files with 17 additions and 217 deletions

View file

@ -1,63 +0,0 @@
# Copyright: Damien Elmes <anki@ichi2.net>
# -*- coding: utf-8 -*-
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
def onCram(self, cardIds=[]):
te = aqt.tagedit.TagEdit(self)
te.setDeck(self.deck, "all")
diag = GetTextDialog(
self, _("Tags to cram:"), help="CramMode", edit=te)
l = diag.layout()
g = QGroupBox(_("Review Mode"))
l.insertWidget(2, g)
box = QVBoxLayout()
g.setLayout(box)
keep = QRadioButton(_("Show oldest modified first"))
box.addWidget(keep)
keep.setChecked(True)
diag.setTabOrder(diag.l, keep)
order = QRadioButton(_("Show in order added"))
box.addWidget(order)
random = QRadioButton(_("Show in random order"))
box.addWidget(random)
# hide tag list if we have ids
if cardIds:
diag.l.hide()
diag.qlabel.hide()
if diag.exec_():
if keep.isChecked():
order = "type, modified"
elif order.isChecked():
order = "created"
else:
order = "random()"
if cardIds:
active = cardIds
else:
active = unicode(diag.l.text())
self.deck.setupCramScheduler(active, order)
if self.state == "studyScreen":
self.onStartReview()
else:
self.deck.reset()
self.deck.getCard() # so scheduler will reset if empty
self.moveToState("initial")
if not self.deck.finishScheduler:
showInfo(_("No cards matched the provided tags."))
# cram options
c = self.conf['cram']
f.cramSteps.setText(self.listToUser(c['delays']))
f.cramBoost.setChecked(c['resched'])
f.cramReset.setChecked(c['reset'])
f.cramMult.setValue(c['mult']*100)
f.cramMinInt.setValue(c['minInt'])
c = self.conf['cram']
self.updateList(c, 'delays', f.cramSteps)
c['resched'] = f.cramBoost.isChecked()
c['reset'] = f.cramReset.isChecked()
c['mult'] = f.cramMult.value()/100.0
c['minInt'] = f.cramMinInt.value()

View file

@ -9,12 +9,18 @@ from aqt.utils import showInfo, showWarning, openHelp, getOnlyText
from operator import itemgetter
class DeckConf(QDialog):
def __init__(self, mw):
def __init__(self, mw, first=False):
QDialog.__init__(self, mw)
self.mw = mw
self.deck = self.mw.col.decks.current()
self.form = aqt.forms.dyndconf.Ui_Dialog()
self.form.setupUi(self)
if first:
label = _("Build")
else:
label = _("Rebuild")
self.ok = self.form.buttonBox.addButton(
label, QDialogButtonBox.AcceptRole)
self.mw.checkpoint(_("Options"))
self.setWindowModality(Qt.WindowModal)
self.connect(self.form.buttonBox,
@ -54,7 +60,8 @@ class DeckConf(QDialog):
return True
def reject(self):
self.accept()
self.ok = False
QDialog.reject(self)
def accept(self):
if not self.saveConf():

View file

@ -719,6 +719,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
##########################################################################
def onCram(self):
import aqt.dyndeckconf
n = 1
decks = self.col.decks.allNames()
while _("Cram %d") % n in decks:
@ -731,7 +732,11 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
showWarning(_("The provided name was already in use."))
return
did = self.col.decks.newDyn(name)
self.onDeckConf()
diag = aqt.dyndeckconf.DeckConf(self, first=True)
if not diag.ok:
# user cancelled first config
self.col.decks.rem(did)
else:
self.moveToState("overview")
# Language handling

View file

@ -1,149 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="label_22">
<property name="text">
<string>Steps (in minutes)</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QLineEdit" name="cramSteps"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_23">
<property name="text">
<string>New interval</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="QCheckBox" name="cramReset">
<property name="text">
<string>Reset interval of cards failed during cram</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="cramMinInt">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_24">
<property name="text">
<string>Minimal interval</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="QCheckBox" name="cramBoost">
<property name="text">
<string>Boost regular interval</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="cramMult">
<property name="enabled">
<bool>false</bool>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLabel" name="label_29">
<property name="text">
<string>days</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="label_30">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>%</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View file

@ -138,7 +138,7 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help</set>
</property>
</widget>
</item>