diff --git a/aqt/browser.py b/aqt/browser.py index e1e6668e4..9987833ee 100644 --- a/aqt/browser.py +++ b/aqt/browser.py @@ -17,8 +17,6 @@ from anki.errors import * from anki.db import * from anki.hooks import runHook, addHook, removeHook -# fixme: notice added tags? - COLOUR_SUSPENDED1 = "#ffffcc" COLOUR_SUSPENDED2 = "#ffffaa" COLOUR_INACTIVE1 = "#ffcccc" diff --git a/aqt/main.py b/aqt/main.py index e48c31333..4934a22c0 100755 --- a/aqt/main.py +++ b/aqt/main.py @@ -74,6 +74,7 @@ class AnkiQt(QMainWindow): self.setupSignals() self.setupVersion() self.setupAutoUpdate() + self.setupUpgrade() self.setupCardStats() self.setupSchema() # screens @@ -228,11 +229,23 @@ title="%s">%s''' % ( from aqt.editcurrent import EditCurrent 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 ########################################################################## def loadDeck(self, deckPath, showErrors=True): "Load a deck and update the user interface." + self.upgrading = False try: self.deck = Deck(deckPath, queue=False) 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") self.moveToState("deckBrowser") return 0 + finally: + # we may have a progress window open if we were upgrading + self.progress.finish() self.config.addRecentDeck(self.deck.path) self.setupMedia(self.deck) - self.progress.setupDB() + if not self.upgrading: + self.progress.setupDB(self.deck.db) self.moveToState("deckLoading") return True diff --git a/aqt/progress.py b/aqt/progress.py index 2575d5237..2b16fbdaf 100644 --- a/aqt/progress.py +++ b/aqt/progress.py @@ -20,11 +20,11 @@ class ProgressManager(object): # SQLite progress handler ########################################################################## - def setupDB(self): + def setupDB(self, db): "Install a handler in the current deck." self.lastDbProgress = 0 self.inDB = False - self.mw.deck.db.set_progress_handler(self._dbProgress, 100000) + db.set_progress_handler(self._dbProgress, 100000) def _dbProgress(self): "Called from SQLite."