From 90002a307396ae3d835cb35bc5996e3231b6e523 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Thu, 24 Mar 2011 16:54:55 +0900 Subject: [PATCH] note updated counts when returning to deck browser --- aqt/deckbrowser.py | 31 ++++++++++++++++++------------- aqt/main.py | 30 ++++++++++++++---------------- aqt/reviewer.py | 16 +--------------- 3 files changed, 33 insertions(+), 44 deletions(-) diff --git a/aqt/deckbrowser.py b/aqt/deckbrowser.py index 4ce302a18..2a820c51d 100644 --- a/aqt/deckbrowser.py +++ b/aqt/deckbrowser.py @@ -38,19 +38,24 @@ class DeckBrowser(object): self._renderPage() def _onClose(self): - print "onClose" - return - if deck.finishScheduler: - self.deck.finishScheduler() - self.deck.reset() - # update counts - for d in self.browserDecks: - if d['path'] == self.deck.path: - d['due'] = self.deck.failedSoonCount + self.deck.revCount - d['new'] = self.deck.newCount - d['mod'] = self.deck.modified - d['time'] = self.deck._dailyStats.reviewTime - d['reps'] = self.deck._dailyStats.reps + # update counts + deck = self.mw.deck + def add(d): + counts = deck.sched.counts() + d['due'] = counts[1]+counts[2] + d['new'] = counts[0] + d['mod'] = deck.mod + d['time'] = deck.sched.timeToday() + d['reps'] = deck.sched.repsToday() + d['name'] = deck.name() + for d in self._decks: + if d['path'] == deck.path: + add(d) + return + # not found; add new + d = {'path': deck.path, 'state': 'ok'} + add(d) + self._decks.append(d) # Toolbar ########################################################################## diff --git a/aqt/main.py b/aqt/main.py index ef9b82b57..ae8ad5219 100755 --- a/aqt/main.py +++ b/aqt/main.py @@ -545,15 +545,19 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") ########################################################################## def onClose(self): - if self.inMainWindow() or not self.app.activeWindow(): + aw = self.app.activeWindow() + if not aw or aw == self: self.close() else: - self.app.activeWindow().close() + aw.close() def close(self, showBrowser=True): "(Auto)save and close. Prompt if necessary. True if okay to proceed." if not self.deck: return + # if we were cramming, restore the standard scheduler + if self.deck.stdSched(): + self.deck.reset() runHook("deckClosing") print "focusOut() should be handled with deckClosing now" self.closeAllDeckWindows() @@ -562,16 +566,14 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") if showBrowser: self.moveToState("deckBrowser") - def inMainWindow(self): + def raiseMain(self): if not self.app.activeWindow(): # make sure window is shown self.setWindowState(self.windowState() & ~Qt.WindowMinimized) return True - # FIXME: no longer necessary? - return self.app.activeWindow() == self def onNew(self, path=None, prompt=None): - if not self.inMainWindow() and not path: return + self.raiseMain() self.close() register = not path bad = ":/\\" @@ -605,13 +607,9 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") else: self.moveToState("deckBrowser") return - self.deck = DeckStorage.Deck(path) - self.deck.initUndo() - self.deck.save() + self.loadDeck(path) if register: self.updateRecentFiles(self.deck.path) - self.browserLastRefreshed = 0 - self.moveToState("initial") def ensureSyncParams(self): if not self.config['syncUsername'] or not self.config['syncPassword']: @@ -646,7 +644,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") self.config['syncPassword'] = unicode(passwd.text()) def onOpenOnline(self): - if not self.inMainWindow(): return + self.raiseMain() self.ensureSyncParams() self.close() # we need a disk-backed file for syncing @@ -666,16 +664,16 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") self.moveToState("initial") def onGetSharedDeck(self): - if not self.inMainWindow(): return + self.raiseMain() aqt.getshared.GetShared(self, 0) self.browserLastRefreshed = 0 def onGetSharedPlugin(self): - if not self.inMainWindow(): return + self.raiseMain() aqt.getshared.GetShared(self, 1) def onOpen(self): - if not self.inMainWindow(): return + self.raiseMain() key = _("Deck files (*.anki)") defaultDir = self.getDefaultDir() file = QFileDialog.getOpenFileName(self, _("Open deck"), @@ -1504,7 +1502,7 @@ it to your friends. def syncDeck(self, interactive=True, onlyMerge=False, reload=True): "Synchronise a deck with the server." - if not self.inMainWindow() and interactive and interactive!=-1: return + self.raiseMain() #self.setNotice() # vet input if interactive: diff --git a/aqt/reviewer.py b/aqt/reviewer.py index c31de69a5..b62f6e281 100644 --- a/aqt/reviewer.py +++ b/aqt/reviewer.py @@ -128,7 +128,6 @@ $(".ansbut").focus(); def _showQuestion(self): self.state = "question" # fixme: timeboxing - # fixme: q/a separation # fixme: prevent audio from repeating # fixme: include placeholder for type answer result c = self.card @@ -161,22 +160,9 @@ $(".ansbut").focus(); # render runHook('showAnswer') - # Review buttons + # Ease buttons ########################################################################## - def _reviewButtons(self): - # type answer area - buf = self.typeAnsInput() - # show answer button - buf += """ - -
%s
-
-""" % _("Show Answer") - # ease buttons - buf += self._answerButtons() - return buf - def _defaultEase(self): if self.mw.deck.sched.answerButtons(self.card) == 4: return 3