mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 08:46:37 -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
|
||||
|
||||
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():
|
||||
|
|
|
@ -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,8 +732,12 @@ 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()
|
||||
self.moveToState("overview")
|
||||
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
|
||||
##########################################################################
|
||||
|
|
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>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
Loading…
Reference in a new issue