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,10 +959,6 @@ where id in %s""" % ids2str(sf))
self.updateAfterCardChange() self.updateAfterCardChange()
def cram(self): def cram(self):
if ui.utils.askUser(
_("Cram selected cards in new deck?"),
help="CramMode",
parent=self):
self.close() self.close()
self.parent.onCram(self.selectedCards()) self.parent.onCram(self.selectedCards())

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,6 +1737,7 @@ learnt today")
self.mainWin.failedCardsOption.currentIndex()) self.mainWin.failedCardsOption.currentIndex())
self.deck.flushMod() self.deck.flushMod()
self.deck.reset() self.deck.reset()
if not self.deck.finishScheduler:
self.deck.startSession() 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"))
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 = "modified"
elif order.isChecked():
order = "created"
else: else:
(e, path) = self._copyToTmpDeck(ids=cardIds) order = "random()"
if not e.exportedCards: 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:
ui.utils.showInfo(_("No cards matched the provided tags.")) ui.utils.showInfo(_("No cards matched the provided tags."))
return
if self.config['randomizeOnCram']:
n = 3
else:
n = 2
p = ui.utils.ProgressWin(self, n, 0, _("Cram"))
p.update(_("Loading deck..."))
oldMedia = self.deck.mediaDir()
self.deck.close()
self.deck = None
self.loadDeck(path, media=oldMedia)
self.config['recentDeckPaths'].pop(0)
self.deck.newCardsPerDay = 99999
self.deck.delay0 = 300
self.deck.delay1 = 600
self.deck.hardIntervalMin = 0.01388
self.deck.hardIntervalMax = 0.02083
self.deck.midIntervalMin = 0.0416
self.deck.midIntervalMax = 0.0486
self.deck.easyIntervalMin = 0.2083
self.deck.easyIntervalMax = 0.25
self.deck.newCardOrder = 0
self.deck.syncName = None
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">