add autosave; improve undo state handling

This commit is contained in:
Damien Elmes 2011-04-19 07:16:01 +09:00
parent 64b9ba3da8
commit a45f2ceedc
3 changed files with 16 additions and 11 deletions

View file

@ -324,7 +324,7 @@ class Browser(QMainWindow):
self.setupEditor() self.setupEditor()
self.setupCardInfo() self.setupCardInfo()
self.updateFont() self.updateFont()
self.onCheckpoint() self.onUndoState(self.mw.form.actionUndo.isEnabled())
self.form.searchEdit.setFocus() self.form.searchEdit.setFocus()
self.show() self.show()
self.form.searchEdit.setText("is:recent") self.form.searchEdit.setText("is:recent")
@ -956,23 +956,21 @@ where id in %s""" % ids2str(self.selectedCards()))
###################################################################### ######################################################################
def setupHooks(self): def setupHooks(self):
addHook("checkpoint", self.onCheckpoint) addHook("undoState", self.onUndoState)
addHook("reset", self.onReset) addHook("reset", self.onReset)
addHook("editTimer", self.refreshCurrentCard) addHook("editTimer", self.refreshCurrentCard)
addHook("editFocusLost", self.refreshCurrentCard) addHook("editFocusLost", self.refreshCurrentCard)
def teardownHooks(self): def teardownHooks(self):
removeHook("reset", self.onReset) removeHook("reset", self.onReset)
removeHook("checkpoint", self.onCheckpoint)
removeHook("editTimer", self.refreshCurrentCard) removeHook("editTimer", self.refreshCurrentCard)
removeHook("editFocusLost", self.refreshCurrentCard) removeHook("editFocusLost", self.refreshCurrentCard)
removeHook("undoState", self.onUndoState)
def onCheckpoint(self): def onUndoState(self, on):
if self.mw.form.actionUndo.isEnabled(): self.form.actionUndo.setEnabled(on)
self.form.actionUndo.setEnabled(True) if on:
self.form.actionUndo.setText(self.mw.form.actionUndo.text()) self.form.actionUndo.setText(self.mw.form.actionUndo.text())
else:
self.form.actionUndo.setEnabled(False)
# Options # Options
###################################################################### ######################################################################

View file

@ -145,6 +145,7 @@ class AnkiQt(QMainWindow):
def requireReset(self, modal=False): def requireReset(self, modal=False):
"Signal queue needs to be rebuilt when edits are finished or by user." "Signal queue needs to be rebuilt when edits are finished or by user."
self.autosave()
self.resetModal = modal self.resetModal = modal
if self.state in ("overview", "review"): if self.state in ("overview", "review"):
self.moveToState("resetRequired") self.moveToState("resetRequired")
@ -153,6 +154,7 @@ class AnkiQt(QMainWindow):
pass pass
def maybeReset(self): def maybeReset(self):
self.autosave()
if self.state == "resetRequired": if self.state == "resetRequired":
self.state = self.returnState self.state = self.returnState
self.reset() self.reset()
@ -654,7 +656,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
self.deck.sched.buryFact(self.reviewer.card.fid) self.deck.sched.buryFact(self.reviewer.card.fid)
self.reviewer.nextCard() self.reviewer.nextCard()
# Undo # Undo & autosave
########################################################################## ##########################################################################
def onUndo(self): def onUndo(self):
@ -667,13 +669,18 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
self.form.actionUndo.setText(_("Undo %s") % self.form.actionUndo.setText(_("Undo %s") %
self.deck.undoName()) self.deck.undoName())
self.form.actionUndo.setEnabled(True) self.form.actionUndo.setEnabled(True)
runHook("undoState", True)
else: else:
self.form.actionUndo.setEnabled(False) self.form.actionUndo.setEnabled(False)
runHook("undoState", False)
def checkpoint(self, name): def checkpoint(self, name):
self.deck.save(name) self.deck.save(name)
self.maybeEnableUndo() self.maybeEnableUndo()
runHook("checkpoint")
def autosave(self):
self.deck.autosave()
self.maybeEnableUndo()
# Other menu operations # Other menu operations
########################################################################## ##########################################################################

View file

@ -250,7 +250,7 @@ $(".ansbut").focus();
"Reschedule card and show next." "Reschedule card and show next."
self.mw.deck.sched.answerCard(self.card, ease) self.mw.deck.sched.answerCard(self.card, ease)
self._answeredIds.append(self.card.id) self._answeredIds.append(self.card.id)
print "fixme: save" self.mw.autosave()
self.nextCard() self.nextCard()
# Handlers # Handlers