From d698c3d3100742fd0ea0c2e77ebbd4ac468abe26 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Mon, 18 Oct 2010 18:02:37 +0900 Subject: [PATCH] add perDay config option, more updates for libanki sched changes - new review early / learn more handling - reset() when showing study stats - only run the update timer on study screen & finished screen --- ankiqt/ui/deckproperties.py | 4 ++++ ankiqt/ui/main.py | 14 ++++++++------ ankiqt/ui/status.py | 11 +++-------- designer/deckproperties.ui | 15 +++++++++++++++ 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/ankiqt/ui/deckproperties.py b/ankiqt/ui/deckproperties.py index f5e457971..a50befe38 100644 --- a/ankiqt/ui/deckproperties.py +++ b/ankiqt/ui/deckproperties.py @@ -63,6 +63,8 @@ class DeckProperties(QDialog): self.dialog.collapse.setCheckState(self.d.collapseTime and Qt.Checked or Qt.Unchecked) self.dialog.failedCardMax.setText(unicode(self.d.failedCardMax)) + self.dialog.perDay.setCheckState(self.d.getBool("perDay") + and Qt.Checked or Qt.Unchecked) # sources self.sources = self.d.s.all("select id, name from sources") self.sourcesToRemove = [] @@ -266,6 +268,8 @@ class DeckProperties(QDialog): was = self.d.modified self.updateField(self.d, 'collapseTime', self.dialog.collapse.isChecked() and 1 or 0) + if self.dialog.perDay.isChecked() != self.d.getBool("perDay"): + self.d.setVar('perDay', self.dialog.perDay.isChecked()) self.updateField(self.d, "highPriority", unicode(self.dialog.highPriority.text())) diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py index 6427a6164..fb3d5f6dd 100755 --- a/ankiqt/ui/main.py +++ b/ankiqt/ui/main.py @@ -329,7 +329,7 @@ Please do not file a bug report with Anki.
""") if self.deck.isEmpty(): return self.moveToState("deckEmpty") else: - if not self.deck.reviewEarly: + if not self.deck.finishScheduler: if (self.config['showStudyScreen'] and not self.deck.sessionStartTime): return self.moveToState("studyScreen") @@ -390,7 +390,8 @@ Please do not file a bug report with Anki.
""") return self.moveToState("showQuestion") elif state == "studyScreen": self.currentCard = None - self.deck.resetAfterReviewEarly() + if self.deck.finishScheduler: + self.deck.finishScheduler() self.disableCardMenuItems() self.showStudyScreen() self.updateViews(state) @@ -841,8 +842,8 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") self.closeAllDeckWindows() synced = False if self.deck is not None: - if self.deck.reviewEarly: - self.deck.resetAfterReviewEarly() + if self.deck.finishScheduler: + self.deck.finishScheduler() # update counts for d in self.browserDecks: if d['path'] == self.deck.path: @@ -1531,6 +1532,7 @@ later by using File>Close. uf(self.deck, 'newCardOrder', ncOrd) def updateStudyStats(self): + self.deck.reset() wasReached = self.deck.sessionLimitReached() sessionColour = '%s' cardColour = '%s' @@ -2065,13 +2067,13 @@ it to your friends. ########################################################################## def onLearnMore(self): - self.deck.newEarly = True + self.deck.setupLearnMoreScheduler() self.reset() self.showToolTip(_("""\

Learning More

Click the stopwatch at the top to finish.""")) def onReviewEarly(self): - self.deck.reviewEarly = True + self.deck.setupReviewEarlyScheduler() self.reset() self.showToolTip(_("""\

Reviewing Early

Click the stopwatch at the top to finish.""")) diff --git a/ankiqt/ui/status.py b/ankiqt/ui/status.py index 76e2791c9..e97d8d078 100644 --- a/ankiqt/ui/status.py +++ b/ankiqt/ui/status.py @@ -164,8 +164,6 @@ class StatusView(object): remStr += "0" elif self.state == "deckEmpty": remStr += "0" - elif self.main.deck.reviewEarly: - remStr += "0" else: # remaining string, bolded depending on current card if sys.platform.startswith("linux"): @@ -187,10 +185,7 @@ class StatusView(object): "%(new1)s") stats['failed1'] = '%s' % stats['failed'] stats['rev1'] = '%s' % stats['rev'] - if self.main.deck.newEarly: - new = self.main.deck.newCount - else: - new = stats['new'] + new = stats['new'] stats['new1'] = '%s' % new self.remText.setText(remStr % stats) stats['spaced'] = self.main.deck.spacedCardCount() @@ -287,7 +282,7 @@ You should aim to answer each question within
def flashTimer(self): if not (self.main.deck.sessionStartTime and - self.main.deck.sessionTimeLimit) or self.main.deck.reviewEarly: + self.main.deck.sessionTimeLimit): # or self.main.deck.reviewEarly: return t = time.time() - self.main.deck.sessionStartTime t = self.main.deck.sessionTimeLimit - t @@ -302,7 +297,7 @@ You should aim to answer each question within
return if not self.main.deck: return - if self.state in ("showQuestion", "showAnswer", "studyScreen"): + if self.state in ("deckFinished", "studyScreen"): self.main.deck.reset() self.redraw() self.main.updateTitleBar() diff --git a/designer/deckproperties.ui b/designer/deckproperties.ui index ceb355aa1..b74e5e2f3 100644 --- a/designer/deckproperties.ui +++ b/designer/deckproperties.ui @@ -589,6 +589,20 @@ + + + + <b>Per-day scheduling</b> + + + + + + + + + + @@ -648,6 +662,7 @@ timeOffset suspendLeeches leechFails + perDay buttonBox