note updated counts when returning to deck browser

This commit is contained in:
Damien Elmes 2011-03-24 16:54:55 +09:00
parent b2a0398220
commit 90002a3073
3 changed files with 33 additions and 44 deletions

View file

@ -38,19 +38,24 @@ class DeckBrowser(object):
self._renderPage() self._renderPage()
def _onClose(self): def _onClose(self):
print "onClose"
return
if deck.finishScheduler:
self.deck.finishScheduler()
self.deck.reset()
# update counts # update counts
for d in self.browserDecks: deck = self.mw.deck
if d['path'] == self.deck.path: def add(d):
d['due'] = self.deck.failedSoonCount + self.deck.revCount counts = deck.sched.counts()
d['new'] = self.deck.newCount d['due'] = counts[1]+counts[2]
d['mod'] = self.deck.modified d['new'] = counts[0]
d['time'] = self.deck._dailyStats.reviewTime d['mod'] = deck.mod
d['reps'] = self.deck._dailyStats.reps 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 # Toolbar
########################################################################## ##########################################################################

View file

@ -545,15 +545,19 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
########################################################################## ##########################################################################
def onClose(self): def onClose(self):
if self.inMainWindow() or not self.app.activeWindow(): aw = self.app.activeWindow()
if not aw or aw == self:
self.close() self.close()
else: else:
self.app.activeWindow().close() aw.close()
def close(self, showBrowser=True): def close(self, showBrowser=True):
"(Auto)save and close. Prompt if necessary. True if okay to proceed." "(Auto)save and close. Prompt if necessary. True if okay to proceed."
if not self.deck: if not self.deck:
return return
# if we were cramming, restore the standard scheduler
if self.deck.stdSched():
self.deck.reset()
runHook("deckClosing") runHook("deckClosing")
print "focusOut() should be handled with deckClosing now" print "focusOut() should be handled with deckClosing now"
self.closeAllDeckWindows() self.closeAllDeckWindows()
@ -562,16 +566,14 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
if showBrowser: if showBrowser:
self.moveToState("deckBrowser") self.moveToState("deckBrowser")
def inMainWindow(self): def raiseMain(self):
if not self.app.activeWindow(): if not self.app.activeWindow():
# make sure window is shown # make sure window is shown
self.setWindowState(self.windowState() & ~Qt.WindowMinimized) self.setWindowState(self.windowState() & ~Qt.WindowMinimized)
return True return True
# FIXME: no longer necessary?
return self.app.activeWindow() == self
def onNew(self, path=None, prompt=None): def onNew(self, path=None, prompt=None):
if not self.inMainWindow() and not path: return self.raiseMain()
self.close() self.close()
register = not path register = not path
bad = ":/\\" bad = ":/\\"
@ -605,13 +607,9 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
else: else:
self.moveToState("deckBrowser") self.moveToState("deckBrowser")
return return
self.deck = DeckStorage.Deck(path) self.loadDeck(path)
self.deck.initUndo()
self.deck.save()
if register: if register:
self.updateRecentFiles(self.deck.path) self.updateRecentFiles(self.deck.path)
self.browserLastRefreshed = 0
self.moveToState("initial")
def ensureSyncParams(self): def ensureSyncParams(self):
if not self.config['syncUsername'] or not self.config['syncPassword']: 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()) self.config['syncPassword'] = unicode(passwd.text())
def onOpenOnline(self): def onOpenOnline(self):
if not self.inMainWindow(): return self.raiseMain()
self.ensureSyncParams() self.ensureSyncParams()
self.close() self.close()
# we need a disk-backed file for syncing # we need a disk-backed file for syncing
@ -666,16 +664,16 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
self.moveToState("initial") self.moveToState("initial")
def onGetSharedDeck(self): def onGetSharedDeck(self):
if not self.inMainWindow(): return self.raiseMain()
aqt.getshared.GetShared(self, 0) aqt.getshared.GetShared(self, 0)
self.browserLastRefreshed = 0 self.browserLastRefreshed = 0
def onGetSharedPlugin(self): def onGetSharedPlugin(self):
if not self.inMainWindow(): return self.raiseMain()
aqt.getshared.GetShared(self, 1) aqt.getshared.GetShared(self, 1)
def onOpen(self): def onOpen(self):
if not self.inMainWindow(): return self.raiseMain()
key = _("Deck files (*.anki)") key = _("Deck files (*.anki)")
defaultDir = self.getDefaultDir() defaultDir = self.getDefaultDir()
file = QFileDialog.getOpenFileName(self, _("Open deck"), file = QFileDialog.getOpenFileName(self, _("Open deck"),
@ -1504,7 +1502,7 @@ it to your friends.
def syncDeck(self, interactive=True, onlyMerge=False, reload=True): def syncDeck(self, interactive=True, onlyMerge=False, reload=True):
"Synchronise a deck with the server." "Synchronise a deck with the server."
if not self.inMainWindow() and interactive and interactive!=-1: return self.raiseMain()
#self.setNotice() #self.setNotice()
# vet input # vet input
if interactive: if interactive:

View file

@ -128,7 +128,6 @@ $(".ansbut").focus();
def _showQuestion(self): def _showQuestion(self):
self.state = "question" self.state = "question"
# fixme: timeboxing # fixme: timeboxing
# fixme: q/a separation
# fixme: prevent audio from repeating # fixme: prevent audio from repeating
# fixme: include placeholder for type answer result # fixme: include placeholder for type answer result
c = self.card c = self.card
@ -161,22 +160,9 @@ $(".ansbut").focus();
# render # render
runHook('showAnswer') runHook('showAnswer')
# Review buttons # Ease buttons
########################################################################## ##########################################################################
def _reviewButtons(self):
# type answer area
buf = self.typeAnsInput()
# show answer button
buf += """
<a id=ansbut class="but ansbut" href=ans onclick="showans();">
<div class=ansbut>%s</div>
</a>
""" % _("Show Answer")
# ease buttons
buf += self._answerButtons()
return buf
def _defaultEase(self): def _defaultEase(self):
if self.mw.deck.sched.answerButtons(self.card) == 4: if self.mw.deck.sched.answerButtons(self.card) == 4:
return 3 return 3