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.fillRect(option.rect, brush)
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]:
if index.row() % 2 == 0:
brush = QBrush(QColor(COLOUR_MARKED1))
@ -968,12 +959,8 @@ where id in %s""" % ids2str(sf))
self.updateAfterCardChange()
def cram(self):
if ui.utils.askUser(
_("Cram selected cards in new deck?"),
help="CramMode",
parent=self):
self.close()
self.parent.onCram(self.selectedCards())
self.close()
self.parent.onCram(self.selectedCards())
def onChangeModel(self):
sf = self.selectedFacts()

View file

@ -329,6 +329,7 @@ Please do not file a bug report with Anki.<br>""")
if self.deck.isEmpty():
return self.moveToState("deckEmpty")
else:
# timeboxing only supported using the standard scheduler
if not self.deck.finishScheduler:
if (self.config['showStudyScreen'] and
not self.deck.sessionStartTime):
@ -828,10 +829,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
def onClose(self):
# allow focusOut to save
if self.inMainWindow() or not self.app.activeWindow():
isCram = self.isCramming()
self.saveAndClose(hideWelcome=isCram)
if isCram:
self.loadDeck(self.config['recentDeckPaths'][0])
self.saveAndClose()
else:
self.app.activeWindow().close()
@ -1739,7 +1737,8 @@ learnt today")
self.mainWin.failedCardsOption.currentIndex())
self.deck.flushMod()
self.deck.reset()
self.deck.startSession()
if not self.deck.finishScheduler:
self.deck.startSession()
self.config['studyOptionsScreen'] = self.mainWin.tabWidget.currentIndex()
self.moveToState("getQuestion")
@ -1890,26 +1889,12 @@ learnt today")
##########################################################################
def onAddCard(self):
if self.isCramming():
ui.utils.showInfo(_("""\
You are currently cramming. Please close this deck first."""))
return
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):
ui.dialogs.get("CardList", self)
if self.isCramming():
self.cramEditWarning()
def onEditCurrent(self):
if self.isCramming():
self.cramEditWarning()
self.moveToState("editCurrentFact")
def onDeckProperties(self):
@ -1940,10 +1925,6 @@ will be lost when you close the deck."""))
##########################################################################
def onImport(self):
if self.isCramming():
ui.utils.showInfo(_("""\
You are currently cramming. Please close this deck first."""))
return
if self.deck is None:
self.onNew()
if not self.deck.path:
@ -1974,59 +1955,48 @@ window will open."""))
e.exportInto(path)
return (e, path)
def isCramming(self):
return self.deck is not None and self.deck.name() == "cram"
def onCram(self, cardIds=[]):
if self.isCramming():
ui.utils.showInfo(
_("Already cramming. Please close this deck first."))
return
if not self.save(required=True):
return
if not cardIds:
(s, ret) = ui.utils.getTag(self, self.deck, _("Tags to cram:"),
help="CramMode", tags="all")
if not ret:
return
s = unicode(s)
# open tmp deck
(e, path) = self._copyToTmpDeck(tags=s)
else:
(e, path) = self._copyToTmpDeck(ids=cardIds)
if not e.exportedCards:
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()
te = ui.tagedit.TagEdit(self)
te.setDeck(self.deck, "all")
diag = ui.utils.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 = "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:
ui.utils.showInfo(_("No cards matched the provided tags."))
def onShare(self, tags):
pwd = os.getcwd()
@ -2888,10 +2858,6 @@ Proceed?""")):
ui.utils.showInfo(_("Database optimized.\nShrunk by %dKB") % (size/1024.0))
def onCheckMediaDB(self):
if self.isCramming():
ui.utils.showInfo(_("""\
You are currently cramming. Please close this deck first."""))
return
mb = QMessageBox(self)
mb.setWindowTitle(_("Anki"))
mb.setIcon(QMessageBox.Warning)

View file

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

View file

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

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>605</width>
<height>563</height>
<height>565</height>
</rect>
</property>
<property name="sizePolicy">
@ -791,6 +791,16 @@
<property name="margin">
<number>0</number>
</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>
<spacer name="verticalSpacer_4">
<property name="orientation">
@ -802,7 +812,7 @@
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>6</height>
<height>12</height>
</size>
</property>
</spacer>
@ -1324,7 +1334,7 @@
</size>
</property>
<property name="text">
<string>Review</string>
<string>&amp;Review</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">