updates for new cram code; remove priority 0 highlight in browser

This commit is contained in:
Damien Elmes 2010-10-20 13:15:19 +09:00
parent 8032c4a66b
commit f549dfcfa9
5 changed files with 65 additions and 101 deletions

View file

@ -323,15 +323,6 @@ class StatusDelegate(QItemDelegate):
painter.save() painter.save()
painter.fillRect(option.rect, brush) painter.fillRect(option.rect, brush)
painter.restore() painter.restore()
if row[CARD_PRIORITY] == 0:
# custom render
if index.row() % 2 == 0:
brush = QBrush(QColor(COLOUR_INACTIVE1))
else:
brush = QBrush(QColor(COLOUR_INACTIVE2))
painter.save()
painter.fillRect(option.rect, brush)
painter.restore()
elif "Marked" in row[CARD_TAGS]: elif "Marked" in row[CARD_TAGS]:
if index.row() % 2 == 0: if index.row() % 2 == 0:
brush = QBrush(QColor(COLOUR_MARKED1)) brush = QBrush(QColor(COLOUR_MARKED1))
@ -968,12 +959,8 @@ where id in %s""" % ids2str(sf))
self.updateAfterCardChange() self.updateAfterCardChange()
def cram(self): def cram(self):
if ui.utils.askUser( self.close()
_("Cram selected cards in new deck?"), self.parent.onCram(self.selectedCards())
help="CramMode",
parent=self):
self.close()
self.parent.onCram(self.selectedCards())
def onChangeModel(self): def onChangeModel(self):
sf = self.selectedFacts() sf = self.selectedFacts()

View file

@ -329,6 +329,7 @@ Please do not file a bug report with Anki.<br>""")
if self.deck.isEmpty(): if self.deck.isEmpty():
return self.moveToState("deckEmpty") return self.moveToState("deckEmpty")
else: else:
# timeboxing only supported using the standard scheduler
if not self.deck.finishScheduler: if not self.deck.finishScheduler:
if (self.config['showStudyScreen'] and if (self.config['showStudyScreen'] and
not self.deck.sessionStartTime): not self.deck.sessionStartTime):
@ -828,10 +829,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
def onClose(self): def onClose(self):
# allow focusOut to save # allow focusOut to save
if self.inMainWindow() or not self.app.activeWindow(): if self.inMainWindow() or not self.app.activeWindow():
isCram = self.isCramming() self.saveAndClose()
self.saveAndClose(hideWelcome=isCram)
if isCram:
self.loadDeck(self.config['recentDeckPaths'][0])
else: else:
self.app.activeWindow().close() self.app.activeWindow().close()
@ -1739,7 +1737,8 @@ learnt today")
self.mainWin.failedCardsOption.currentIndex()) self.mainWin.failedCardsOption.currentIndex())
self.deck.flushMod() self.deck.flushMod()
self.deck.reset() self.deck.reset()
self.deck.startSession() if not self.deck.finishScheduler:
self.deck.startSession()
self.config['studyOptionsScreen'] = self.mainWin.tabWidget.currentIndex() self.config['studyOptionsScreen'] = self.mainWin.tabWidget.currentIndex()
self.moveToState("getQuestion") self.moveToState("getQuestion")
@ -1890,26 +1889,12 @@ learnt today")
########################################################################## ##########################################################################
def onAddCard(self): def onAddCard(self):
if self.isCramming():
ui.utils.showInfo(_("""\
You are currently cramming. Please close this deck first."""))
return
ui.dialogs.get("AddCards", self) ui.dialogs.get("AddCards", self)
def cramEditWarning(self):
self.showToolTip(_("""\
<h1>Cramming</h1>
You are currently cramming. Any edits you make to this deck
will be lost when you close the deck."""))
def onEditDeck(self): def onEditDeck(self):
ui.dialogs.get("CardList", self) ui.dialogs.get("CardList", self)
if self.isCramming():
self.cramEditWarning()
def onEditCurrent(self): def onEditCurrent(self):
if self.isCramming():
self.cramEditWarning()
self.moveToState("editCurrentFact") self.moveToState("editCurrentFact")
def onDeckProperties(self): def onDeckProperties(self):
@ -1940,10 +1925,6 @@ will be lost when you close the deck."""))
########################################################################## ##########################################################################
def onImport(self): def onImport(self):
if self.isCramming():
ui.utils.showInfo(_("""\
You are currently cramming. Please close this deck first."""))
return
if self.deck is None: if self.deck is None:
self.onNew() self.onNew()
if not self.deck.path: if not self.deck.path:
@ -1974,59 +1955,48 @@ window will open."""))
e.exportInto(path) e.exportInto(path)
return (e, path) return (e, path)
def isCramming(self):
return self.deck is not None and self.deck.name() == "cram"
def onCram(self, cardIds=[]): def onCram(self, cardIds=[]):
if self.isCramming(): te = ui.tagedit.TagEdit(self)
ui.utils.showInfo( te.setDeck(self.deck, "all")
_("Already cramming. Please close this deck first.")) diag = ui.utils.GetTextDialog(
return self, _("Tags to cram:"), help="CramMode", edit=te)
if not self.save(required=True): l = diag.layout()
return g = QGroupBox(_("Review Mode"))
if not cardIds: l.insertWidget(2, g)
(s, ret) = ui.utils.getTag(self, self.deck, _("Tags to cram:"), box = QVBoxLayout()
help="CramMode", tags="all") g.setLayout(box)
if not ret: keep = QRadioButton(_("Show oldest modified first"))
return box.addWidget(keep)
s = unicode(s) keep.setChecked(True)
# open tmp deck diag.setTabOrder(diag.l, keep)
(e, path) = self._copyToTmpDeck(tags=s) order = QRadioButton(_("Show in order added"))
else: box.addWidget(order)
(e, path) = self._copyToTmpDeck(ids=cardIds) random = QRadioButton(_("Show in random order"))
if not e.exportedCards: box.addWidget(random)
ui.utils.showInfo(_("No cards matched the provided tags.")) # hide tag list if we have ids
return if cardIds:
if self.config['randomizeOnCram']: diag.l.hide()
n = 3 diag.qlabel.hide()
else: if diag.exec_():
n = 2 if keep.isChecked():
p = ui.utils.ProgressWin(self, n, 0, _("Cram")) order = "modified"
p.update(_("Loading deck...")) elif order.isChecked():
oldMedia = self.deck.mediaDir() order = "created"
self.deck.close() else:
self.deck = None order = "random()"
self.loadDeck(path, media=oldMedia) if cardIds:
self.config['recentDeckPaths'].pop(0) active = cardIds
self.deck.newCardsPerDay = 99999 else:
self.deck.delay0 = 300 active = unicode(diag.l.text())
self.deck.delay1 = 600 self.deck.setupCramScheduler(active, order)
self.deck.hardIntervalMin = 0.01388 if self.state == "studyScreen":
self.deck.hardIntervalMax = 0.02083 self.onStartReview()
self.deck.midIntervalMin = 0.0416 else:
self.deck.midIntervalMax = 0.0486 self.deck.reset()
self.deck.easyIntervalMin = 0.2083 self.deck.getCard() # so scheduler will reset if empty
self.deck.easyIntervalMax = 0.25 self.moveToState("initial")
self.deck.newCardOrder = 0 if not self.deck.finishScheduler:
self.deck.syncName = None ui.utils.showInfo(_("No cards matched the provided tags."))
self.deck.collapseTime = 1
p.update()
self.deck.updateDynamicIndices()
if self.config['randomizeOnCram']:
p.update(_("Randomizing..."))
self.deck.randomizeNewCards()
self.reset()
p.finish()
def onShare(self, tags): def onShare(self, tags):
pwd = os.getcwd() pwd = os.getcwd()
@ -2888,10 +2858,6 @@ Proceed?""")):
ui.utils.showInfo(_("Database optimized.\nShrunk by %dKB") % (size/1024.0)) ui.utils.showInfo(_("Database optimized.\nShrunk by %dKB") % (size/1024.0))
def onCheckMediaDB(self): def onCheckMediaDB(self):
if self.isCramming():
ui.utils.showInfo(_("""\
You are currently cramming. Please close this deck first."""))
return
mb = QMessageBox(self) mb = QMessageBox(self)
mb.setWindowTitle(_("Anki")) mb.setWindowTitle(_("Anki"))
mb.setIcon(QMessageBox.Warning) mb.setIcon(QMessageBox.Warning)

View file

@ -173,11 +173,11 @@ class StatusView(object):
if not self.main.currentCard: if not self.main.currentCard:
remStr += "%(failed1)s" + s + "%(rev1)s" + s + "%(new1)s" remStr += "%(failed1)s" + s + "%(rev1)s" + s + "%(new1)s"
else: else:
q = self.main.deck.queueForCard(self.main.currentCard) t = self.main.deck.cardType(self.main.currentCard)
if q == "failed": if t == 0:
remStr += ("<u>%(failed1)s</u>" + s + remStr += ("<u>%(failed1)s</u>" + s +
"%(rev1)s" + s + "%(new1)s") "%(rev1)s" + s + "%(new1)s")
elif q == "rev": elif t == 1:
remStr += ("%(failed1)s" + s + "<u>%(rev1)s</u>" + s + remStr += ("%(failed1)s" + s + "<u>%(rev1)s</u>" + s +
"%(new1)s") "%(new1)s")
else: else:

View file

@ -120,8 +120,9 @@ class GetTextDialog(QDialog):
self.setWindowTitle("Anki") self.setWindowTitle("Anki")
self.question = question self.question = question
self.help = help self.help = help
self.qlabel = QLabel(question)
v = QVBoxLayout() v = QVBoxLayout()
v.addWidget(QLabel(question)) v.addWidget(self.qlabel)
if not edit: if not edit:
edit = QLineEdit() edit = QLineEdit()
self.l = edit self.l = edit

View file

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>605</width> <width>605</width>
<height>563</height> <height>565</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -791,6 +791,16 @@
<property name="margin"> <property name="margin">
<number>0</number> <number>0</number>
</property> </property>
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>&lt;h1&gt;Study Options&lt;/h1&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer_4"> <spacer name="verticalSpacer_4">
<property name="orientation"> <property name="orientation">
@ -802,7 +812,7 @@
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>6</height> <height>12</height>
</size> </size>
</property> </property>
</spacer> </spacer>
@ -1324,7 +1334,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>Review</string> <string>&amp;Review</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../icons.qrc"> <iconset resource="../icons.qrc">