add a progress handler to upgrade

This commit is contained in:
Damien Elmes 2011-04-13 02:00:52 +09:00
parent 2070a0ced9
commit 7da7894c89
3 changed files with 20 additions and 5 deletions

View file

@ -17,8 +17,6 @@ from anki.errors import *
from anki.db import * from anki.db import *
from anki.hooks import runHook, addHook, removeHook from anki.hooks import runHook, addHook, removeHook
# fixme: notice added tags?
COLOUR_SUSPENDED1 = "#ffffcc" COLOUR_SUSPENDED1 = "#ffffcc"
COLOUR_SUSPENDED2 = "#ffffaa" COLOUR_SUSPENDED2 = "#ffffaa"
COLOUR_INACTIVE1 = "#ffcccc" COLOUR_INACTIVE1 = "#ffcccc"

View file

@ -74,6 +74,7 @@ class AnkiQt(QMainWindow):
self.setupSignals() self.setupSignals()
self.setupVersion() self.setupVersion()
self.setupAutoUpdate() self.setupAutoUpdate()
self.setupUpgrade()
self.setupCardStats() self.setupCardStats()
self.setupSchema() self.setupSchema()
# screens # screens
@ -228,11 +229,23 @@ title="%s">%s</button>''' % (
from aqt.editcurrent import EditCurrent from aqt.editcurrent import EditCurrent
self.editor = EditCurrent(self) self.editor = EditCurrent(self)
# Upgrading from previous versions
##########################################################################
def setupUpgrade(self):
addHook("1.x upgrade", self.onUpgrade)
def onUpgrade(self, db):
self.upgrading = True
self.progress.setupDB(db)
self.progress.start(label=_("Upgrading..."))
# Deck loading # Deck loading
########################################################################## ##########################################################################
def loadDeck(self, deckPath, showErrors=True): def loadDeck(self, deckPath, showErrors=True):
"Load a deck and update the user interface." "Load a deck and update the user interface."
self.upgrading = False
try: try:
self.deck = Deck(deckPath, queue=False) self.deck = Deck(deckPath, queue=False)
except Exception, e: except Exception, e:
@ -247,9 +260,13 @@ File is corrupt or not an Anki database. Click help for more info.\n
Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
self.moveToState("deckBrowser") self.moveToState("deckBrowser")
return 0 return 0
finally:
# we may have a progress window open if we were upgrading
self.progress.finish()
self.config.addRecentDeck(self.deck.path) self.config.addRecentDeck(self.deck.path)
self.setupMedia(self.deck) self.setupMedia(self.deck)
self.progress.setupDB() if not self.upgrading:
self.progress.setupDB(self.deck.db)
self.moveToState("deckLoading") self.moveToState("deckLoading")
return True return True

View file

@ -20,11 +20,11 @@ class ProgressManager(object):
# SQLite progress handler # SQLite progress handler
########################################################################## ##########################################################################
def setupDB(self): def setupDB(self, db):
"Install a handler in the current deck." "Install a handler in the current deck."
self.lastDbProgress = 0 self.lastDbProgress = 0
self.inDB = False self.inDB = False
self.mw.deck.db.set_progress_handler(self._dbProgress, 100000) db.set_progress_handler(self._dbProgress, 100000)
def _dbProgress(self): def _dbProgress(self):
"Called from SQLite." "Called from SQLite."