mirror of
https://github.com/ankitects/anki.git
synced 2025-11-08 13:47:13 -05:00
call .reset() where necessary due to libanki changes
- mw.reset() rebuilds the deck queue, and refetches the current card, so we don't try to answer a card that's not in the queue - in a number of cases we were already explicitly calling reset; the libanki changes ensure we're not doing it twice now - the editor no longer resets the current card when it's closed. Instead, all deck operations in the editor should reset when they are performed
This commit is contained in:
parent
5067577337
commit
0414eed116
7 changed files with 14 additions and 47 deletions
|
|
@ -135,7 +135,7 @@ class AddCards(QDialog):
|
||||||
|
|
||||||
def addFact(self, fact):
|
def addFact(self, fact):
|
||||||
try:
|
try:
|
||||||
fact = self.parent.deck.addFact(fact)
|
fact = self.parent.deck.addFact(fact, False)
|
||||||
except FactInvalidError:
|
except FactInvalidError:
|
||||||
ui.utils.showInfo(_(
|
ui.utils.showInfo(_(
|
||||||
"Some fields are missing or not unique."),
|
"Some fields are missing or not unique."),
|
||||||
|
|
@ -148,6 +148,7 @@ question or answer on all cards."""), parent=self)
|
||||||
return
|
return
|
||||||
|
|
||||||
self.reportAddedFact(fact)
|
self.reportAddedFact(fact)
|
||||||
|
# we don't reset() until the add cards dialog is closed
|
||||||
return fact
|
return fact
|
||||||
|
|
||||||
def initializeNewFact(self, old_fact):
|
def initializeNewFact(self, old_fact):
|
||||||
|
|
@ -216,7 +217,7 @@ question or answer on all cards."""), parent=self)
|
||||||
ui.dialogs.close("AddCards")
|
ui.dialogs.close("AddCards")
|
||||||
self.parent.deck.s.flush()
|
self.parent.deck.s.flush()
|
||||||
self.parent.deck.rebuildCSS()
|
self.parent.deck.rebuildCSS()
|
||||||
self.parent.moveToState("auto")
|
self.parent.reset()
|
||||||
saveGeom(self, "add")
|
saveGeom(self, "add")
|
||||||
saveSplitter(self.dialog.splitter, "add")
|
saveSplitter(self.dialog.splitter, "add")
|
||||||
return True
|
return True
|
||||||
|
|
|
||||||
|
|
@ -726,10 +726,6 @@ class EditDeck(QMainWindow):
|
||||||
saveHeader(self.dialog.tableView.horizontalHeader(), "editor")
|
saveHeader(self.dialog.tableView.horizontalHeader(), "editor")
|
||||||
self.hide()
|
self.hide()
|
||||||
ui.dialogs.close("CardList")
|
ui.dialogs.close("CardList")
|
||||||
if self.parent.currentCard:
|
|
||||||
self.parent.moveToState("showQuestion")
|
|
||||||
else:
|
|
||||||
self.parent.moveToState("auto")
|
|
||||||
self.teardownHooks()
|
self.teardownHooks()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
@ -797,12 +793,12 @@ where id in (%s)""" % ",".join([
|
||||||
",".join([str(s) for s in self.selectedFacts()]))
|
",".join([str(s) for s in self.selectedFacts()]))
|
||||||
|
|
||||||
def updateAfterCardChange(self):
|
def updateAfterCardChange(self):
|
||||||
"Refresh info like stats on current card"
|
"Refresh info like stats on current card, and rebuild mw queue."
|
||||||
self.currentRow = self.dialog.tableView.currentIndex()
|
self.currentRow = self.dialog.tableView.currentIndex()
|
||||||
self.rowChanged(self.currentRow, None)
|
self.rowChanged(self.currentRow, None)
|
||||||
self.model.refresh()
|
self.model.refresh()
|
||||||
self.drawTags()
|
self.drawTags()
|
||||||
self.parent.moveToState("auto")
|
self.parent.reset()
|
||||||
|
|
||||||
# Menu options
|
# Menu options
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
@ -872,9 +868,11 @@ where id in (%s)""" % ",".join([
|
||||||
self.parent.setProgressParent(self)
|
self.parent.setProgressParent(self)
|
||||||
self.deck.setUndoStart(n)
|
self.deck.setUndoStart(n)
|
||||||
self.deck.suspendCards(self.selectedCards())
|
self.deck.suspendCards(self.selectedCards())
|
||||||
|
self.parent.reset()
|
||||||
self.deck.setUndoEnd(n)
|
self.deck.setUndoEnd(n)
|
||||||
self.parent.setProgressParent(None)
|
self.parent.setProgressParent(None)
|
||||||
self.model.refresh()
|
self.model.refresh()
|
||||||
|
self.updateAfterCardChange()
|
||||||
|
|
||||||
def _onUnsuspend(self):
|
def _onUnsuspend(self):
|
||||||
n = _("Unsuspend")
|
n = _("Unsuspend")
|
||||||
|
|
@ -884,6 +882,7 @@ where id in (%s)""" % ",".join([
|
||||||
self.deck.setUndoEnd(n)
|
self.deck.setUndoEnd(n)
|
||||||
self.parent.setProgressParent(None)
|
self.parent.setProgressParent(None)
|
||||||
self.model.refresh()
|
self.model.refresh()
|
||||||
|
self.updateAfterCardChange()
|
||||||
|
|
||||||
def isMarked(self):
|
def isMarked(self):
|
||||||
return self.currentCard and "Marked" in self.currentCard.fact.tags
|
return self.currentCard and "Marked" in self.currentCard.fact.tags
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ class DeckProperties(QDialog):
|
||||||
self.d.deleteModel(model)
|
self.d.deleteModel(model)
|
||||||
self.updateModelsList()
|
self.updateModelsList()
|
||||||
self.dialog.modelsList.setCurrentRow(row)
|
self.dialog.modelsList.setCurrentRow(row)
|
||||||
|
self.parent.reset()
|
||||||
|
|
||||||
def selectedModel(self):
|
def selectedModel(self):
|
||||||
row = self.dialog.modelsList.currentRow()
|
row = self.dialog.modelsList.currentRow()
|
||||||
|
|
|
||||||
|
|
@ -495,6 +495,7 @@ class FactEditor(object):
|
||||||
self.fact.setModified(textChanged=True)
|
self.fact.setModified(textChanged=True)
|
||||||
if not self.fact.isNew():
|
if not self.fact.isNew():
|
||||||
self.deck.setModified()
|
self.deck.setModified()
|
||||||
|
ankiqt.mw.reset()
|
||||||
self.deck.setUndoEnd(n)
|
self.deck.setUndoEnd(n)
|
||||||
|
|
||||||
def onFocusLost(self, widget):
|
def onFocusLost(self, widget):
|
||||||
|
|
@ -593,6 +594,7 @@ class FactEditor(object):
|
||||||
self.deck.updatePriorities([c.id for c in self.fact.cards])
|
self.deck.updatePriorities([c.id for c in self.fact.cards])
|
||||||
self.fact.setModified(textChanged=True)
|
self.fact.setModified(textChanged=True)
|
||||||
self.deck.flushMod()
|
self.deck.flushMod()
|
||||||
|
ankiqt.mw.reset()
|
||||||
if self.onChange:
|
if self.onChange:
|
||||||
self.onChange('tag')
|
self.onChange('tag')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -388,8 +388,7 @@ Please do not file a bug report with Anki.<br>""")
|
||||||
self.mainWin.actionRepeatAudio.setEnabled(True)
|
self.mainWin.actionRepeatAudio.setEnabled(True)
|
||||||
self.editor.saveFieldsNow()
|
self.editor.saveFieldsNow()
|
||||||
self.mainWin.buttonStack.show()
|
self.mainWin.buttonStack.show()
|
||||||
self.reset()
|
return self.reset()
|
||||||
return self.moveToState("getQuestion")
|
|
||||||
elif state == "studyScreen":
|
elif state == "studyScreen":
|
||||||
self.currentCard = None
|
self.currentCard = None
|
||||||
if self.deck.finishScheduler:
|
if self.deck.finishScheduler:
|
||||||
|
|
@ -463,8 +462,6 @@ Please do not file a bug report with Anki.<br>""")
|
||||||
self.deck.s.expunge(self.currentCard)
|
self.deck.s.expunge(self.currentCard)
|
||||||
# answer
|
# answer
|
||||||
self.deck.answerCard(self.currentCard, quality)
|
self.deck.answerCard(self.currentCard, quality)
|
||||||
self.lastScheduledTime = anki.utils.fmtTimeSpan(
|
|
||||||
self.currentCard.due - time.time())
|
|
||||||
self.lastQuality = quality
|
self.lastQuality = quality
|
||||||
self.lastCard = self.currentCard
|
self.lastCard = self.currentCard
|
||||||
self.currentCard = None
|
self.currentCard = None
|
||||||
|
|
@ -1829,8 +1826,6 @@ learnt today")
|
||||||
undo = _("Suspend")
|
undo = _("Suspend")
|
||||||
self.deck.setUndoStart(undo)
|
self.deck.setUndoStart(undo)
|
||||||
self.deck.suspendCards([self.currentCard.id])
|
self.deck.suspendCards([self.currentCard.id])
|
||||||
self.deck.setModified()
|
|
||||||
self.lastScheduledTime = None
|
|
||||||
self.reset()
|
self.reset()
|
||||||
self.deck.setUndoEnd(undo)
|
self.deck.setUndoEnd(undo)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ class Preferences(QDialog):
|
||||||
self.origConfig.update(self.config)
|
self.origConfig.update(self.config)
|
||||||
self.origConfig.save()
|
self.origConfig.save()
|
||||||
self.parent.setLang()
|
self.parent.setLang()
|
||||||
self.parent.moveToState("auto")
|
self.parent.reset()
|
||||||
self.done(0)
|
self.done(0)
|
||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
|
|
|
||||||
|
|
@ -54,10 +54,7 @@ class View(object):
|
||||||
if self.state == "noDeck" or self.state == "studyScreen":
|
if self.state == "noDeck" or self.state == "studyScreen":
|
||||||
return
|
return
|
||||||
self.buffer = ""
|
self.buffer = ""
|
||||||
self.haveTop = (self.main.lastCard and (
|
self.haveTop = self.needFutureWarning()
|
||||||
self.main.config['showLastCardContent'] or
|
|
||||||
self.main.config['showLastCardInterval'])) or (
|
|
||||||
self.needFutureWarning())
|
|
||||||
self.drawRule = (self.main.config['qaDivider'] and
|
self.drawRule = (self.main.config['qaDivider'] and
|
||||||
self.main.currentCard and
|
self.main.currentCard and
|
||||||
not self.main.currentCard.cardModel.questionInAnswer)
|
not self.main.currentCard.cardModel.questionInAnswer)
|
||||||
|
|
@ -214,7 +211,6 @@ class View(object):
|
||||||
"Show previous card, next scheduled time, and stats."
|
"Show previous card, next scheduled time, and stats."
|
||||||
self.buffer += "<center>"
|
self.buffer += "<center>"
|
||||||
self.drawFutureWarning()
|
self.drawFutureWarning()
|
||||||
self.drawLastCard()
|
|
||||||
self.buffer += "</center>"
|
self.buffer += "</center>"
|
||||||
|
|
||||||
def needFutureWarning(self):
|
def needFutureWarning(self):
|
||||||
|
|
@ -236,33 +232,6 @@ class View(object):
|
||||||
self.main.currentCard.due - time.time(), after=True) +
|
self.main.currentCard.due - time.time(), after=True) +
|
||||||
"</span>")
|
"</span>")
|
||||||
|
|
||||||
def drawLastCard(self):
|
|
||||||
"Show the last card if not the current one, and next time."
|
|
||||||
if self.main.lastCard:
|
|
||||||
if self.main.config['showLastCardContent']:
|
|
||||||
if (self.state == "deckFinished" or
|
|
||||||
self.main.currentCard.id != self.main.lastCard.id):
|
|
||||||
q = self.main.lastCard.question.replace("<br>", " ")
|
|
||||||
q = stripHTML(q)
|
|
||||||
if len(q) > 50:
|
|
||||||
q = q[:50] + "..."
|
|
||||||
a = self.main.lastCard.answer.replace("<br>", " ")
|
|
||||||
a = stripHTML(a)
|
|
||||||
if len(a) > 50:
|
|
||||||
a = a[:50] + "..."
|
|
||||||
s = "%s<br>%s" % (q, a)
|
|
||||||
s = stripLatex(s)
|
|
||||||
self.write('<span class="lastCard">%s</span><br>' % s)
|
|
||||||
if self.main.config['showLastCardInterval']:
|
|
||||||
if self.main.lastQuality > 1:
|
|
||||||
msg = _("Well done! This card will appear again in "
|
|
||||||
"<b>%(next)s</b>.") % \
|
|
||||||
{"next":self.main.lastScheduledTime}
|
|
||||||
else:
|
|
||||||
msg = _("This card will appear again later.")
|
|
||||||
self.write(msg)
|
|
||||||
self.write("<br>")
|
|
||||||
|
|
||||||
# Welcome/empty/finished deck messages
|
# Welcome/empty/finished deck messages
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue