mirror of
https://github.com/ankitects/anki.git
synced 2025-11-10 14:47:12 -05:00
note updated counts when returning to deck browser
This commit is contained in:
parent
b2a0398220
commit
90002a3073
3 changed files with 33 additions and 44 deletions
|
|
@ -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
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
|
||||||
30
aqt/main.py
30
aqt/main.py
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue