mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
allow the user to cancel creation/editing of cram deck
This commit is contained in:
parent
314ec1957a
commit
56b89fdc91
5 changed files with 17 additions and 217 deletions
63
aqt/cram.py
63
aqt/cram.py
|
@ -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()
|
|
|
@ -9,12 +9,18 @@ from aqt.utils import showInfo, showWarning, openHelp, getOnlyText
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
||||||
class DeckConf(QDialog):
|
class DeckConf(QDialog):
|
||||||
def __init__(self, mw):
|
def __init__(self, mw, first=False):
|
||||||
QDialog.__init__(self, mw)
|
QDialog.__init__(self, mw)
|
||||||
self.mw = mw
|
self.mw = mw
|
||||||
self.deck = self.mw.col.decks.current()
|
self.deck = self.mw.col.decks.current()
|
||||||
self.form = aqt.forms.dyndconf.Ui_Dialog()
|
self.form = aqt.forms.dyndconf.Ui_Dialog()
|
||||||
self.form.setupUi(self)
|
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.mw.checkpoint(_("Options"))
|
||||||
self.setWindowModality(Qt.WindowModal)
|
self.setWindowModality(Qt.WindowModal)
|
||||||
self.connect(self.form.buttonBox,
|
self.connect(self.form.buttonBox,
|
||||||
|
@ -54,7 +60,8 @@ class DeckConf(QDialog):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
self.accept()
|
self.ok = False
|
||||||
|
QDialog.reject(self)
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
if not self.saveConf():
|
if not self.saveConf():
|
||||||
|
|
|
@ -719,6 +719,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
def onCram(self):
|
def onCram(self):
|
||||||
|
import aqt.dyndeckconf
|
||||||
n = 1
|
n = 1
|
||||||
decks = self.col.decks.allNames()
|
decks = self.col.decks.allNames()
|
||||||
while _("Cram %d") % n in decks:
|
while _("Cram %d") % n in decks:
|
||||||
|
@ -731,8 +732,12 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
|
||||||
showWarning(_("The provided name was already in use."))
|
showWarning(_("The provided name was already in use."))
|
||||||
return
|
return
|
||||||
did = self.col.decks.newDyn(name)
|
did = self.col.decks.newDyn(name)
|
||||||
self.onDeckConf()
|
diag = aqt.dyndeckconf.DeckConf(self, first=True)
|
||||||
self.moveToState("overview")
|
if not diag.ok:
|
||||||
|
# user cancelled first config
|
||||||
|
self.col.decks.rem(did)
|
||||||
|
else:
|
||||||
|
self.moveToState("overview")
|
||||||
|
|
||||||
# Language handling
|
# Language handling
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
149
designer/cram.ui
149
designer/cram.ui
|
@ -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>
|
|
|
@ -138,7 +138,7 @@
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
Loading…
Reference in a new issue