diff --git a/aqt/browser.py b/aqt/browser.py index 5e46c6819..00991e2de 100644 --- a/aqt/browser.py +++ b/aqt/browser.py @@ -324,7 +324,7 @@ class Browser(QMainWindow): self.setupEditor() self.setupCardInfo() self.updateFont() - self.onCheckpoint() + self.onUndoState(self.mw.form.actionUndo.isEnabled()) self.form.searchEdit.setFocus() self.show() self.form.searchEdit.setText("is:recent") @@ -956,23 +956,21 @@ where id in %s""" % ids2str(self.selectedCards())) ###################################################################### def setupHooks(self): - addHook("checkpoint", self.onCheckpoint) + addHook("undoState", self.onUndoState) addHook("reset", self.onReset) addHook("editTimer", self.refreshCurrentCard) addHook("editFocusLost", self.refreshCurrentCard) def teardownHooks(self): removeHook("reset", self.onReset) - removeHook("checkpoint", self.onCheckpoint) removeHook("editTimer", self.refreshCurrentCard) removeHook("editFocusLost", self.refreshCurrentCard) + removeHook("undoState", self.onUndoState) - def onCheckpoint(self): - if self.mw.form.actionUndo.isEnabled(): - self.form.actionUndo.setEnabled(True) + def onUndoState(self, on): + self.form.actionUndo.setEnabled(on) + if on: self.form.actionUndo.setText(self.mw.form.actionUndo.text()) - else: - self.form.actionUndo.setEnabled(False) # Options ###################################################################### diff --git a/aqt/main.py b/aqt/main.py index 32da38eb8..cf3d15ea5 100755 --- a/aqt/main.py +++ b/aqt/main.py @@ -145,6 +145,7 @@ class AnkiQt(QMainWindow): def requireReset(self, modal=False): "Signal queue needs to be rebuilt when edits are finished or by user." + self.autosave() self.resetModal = modal if self.state in ("overview", "review"): self.moveToState("resetRequired") @@ -153,6 +154,7 @@ class AnkiQt(QMainWindow): pass def maybeReset(self): + self.autosave() if self.state == "resetRequired": self.state = self.returnState self.reset() @@ -654,7 +656,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") self.deck.sched.buryFact(self.reviewer.card.fid) self.reviewer.nextCard() - # Undo + # Undo & autosave ########################################################################## def onUndo(self): @@ -667,13 +669,18 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") self.form.actionUndo.setText(_("Undo %s") % self.deck.undoName()) self.form.actionUndo.setEnabled(True) + runHook("undoState", True) else: self.form.actionUndo.setEnabled(False) + runHook("undoState", False) def checkpoint(self, name): self.deck.save(name) self.maybeEnableUndo() - runHook("checkpoint") + + def autosave(self): + self.deck.autosave() + self.maybeEnableUndo() # Other menu operations ########################################################################## diff --git a/aqt/reviewer.py b/aqt/reviewer.py index cfcefb30e..89f5b08d9 100644 --- a/aqt/reviewer.py +++ b/aqt/reviewer.py @@ -250,7 +250,7 @@ $(".ansbut").focus(); "Reschedule card and show next." self.mw.deck.sched.answerCard(self.card, ease) self._answeredIds.append(self.card.id) - print "fixme: save" + self.mw.autosave() self.nextCard() # Handlers