diff --git a/aqt/main.py b/aqt/main.py index c2c61e428..dfdf463f3 100755 --- a/aqt/main.py +++ b/aqt/main.py @@ -364,26 +364,6 @@ Please do not file a bug report with Anki.
""") # return self.moveToState("saveEdit") # evt.ignore() - def cardAnswered(self, quality): - "Reschedule current card and move back to getQuestion state." - if self.state != "showAnswer": - return - # force refresh of card then remove from session as we update in pure sql - self.deck.db.refresh(self.currentCard) - self.deck.db.refresh(self.currentCard.fact) - self.deck.db.refresh(self.currentCard.cardModel) - self.deck.db.expunge(self.currentCard) - # answer - self.deck.answerCard(self.currentCard, quality) - self.lastQuality = quality - self.lastCard = self.currentCard - self.currentCard = None - if self.config['saveAfterAnswer']: - num = self.config['saveAfterAnswerNum'] - if self.deck.repsToday % num == 0: - self.save() - self.moveToState("getQuestion") - def onCardAnsweredHook(self, cardId, isLeech): if not isLeech: self.setNotice() diff --git a/aqt/reviewer.py b/aqt/reviewer.py index ce6db028e..16b7b8622 100644 --- a/aqt/reviewer.py +++ b/aqt/reviewer.py @@ -59,64 +59,6 @@ class Reviewer(object): self.state != "getQuestion")) self.form.actionRepeatAudio.setEnabled(snd) - # HTML helpers - ########################################################################## - - _css = """ -a.ansbut { - bottom: 1em; - height: 40px; - left: 50%; - margin-left: -125px; - position: fixed; - width: 250px; - font-size: 100%; -} -a.ansbut:focus { -background: #c7c7c7; -} -div.ansbut { - position: relative; top: 25%; -} - -#easebuts { - bottom: 1em; - height: 55px; - left: 50%; - margin-left: -200px; - position: fixed; - width: 400px; - font-size: 100%; - visibility: hidden; -} - -.easebut { - width: 60px; - font-size: 100%; -} - -.time { - background: #eee; - padding: 5px; - border-radius: 10px; -} - -div#filler { - height: 30px; -} - -.q { margin-bottom: 1em; } -.a { margin-top: 1em; } -.inv { visibility: hidden; } -""" - - def _styles(self): - css = self.mw.sharedCSS - css += self.card.model().css - css += self._css - css = runFilter("addStyles", css) - return css - # Showing the question (and preparing answer) ########################################################################## @@ -193,20 +135,29 @@ $(".ansbut").focus(); buf += self._answerButtons() return buf + def _defaultEase(self): + if self.card.queue == 2: + return 3 + else: + return 2 + def _answerButtons(self): if self.card.queue == 2: labels = (_("Again"), _("Hard"), _("Good"), _("Easy")) - green = 2 else: labels = (_("Again"), _("Good"), _("Easy")) - green = 1 times = [] buttons = [] + default = self._defaultEase() def but(label, i): + if i == default: + extra=" id=defease" + else: + extra = "" return ''' -%s''' % (i, label) +%s''' % (extra, i, label) for i in range(0, len(labels)): - times.append(self._buttonTime(i, green)) + times.append(self._buttonTime(i, default-1)) buttons.append(but(labels[i], i+1)) buf = ("") @@ -226,52 +177,111 @@ $(".ansbut").focus(); txt = '%s' % txt return txt + # Answering a card + ############################################################ + + def _answerCard(self, ease): + "Reschedule card and show next." + self.mw.deck.sched.answerCard(self.card, ease) + print "fixme: save" + self._getCard() + # Handlers ############################################################ def _keyHandler(self, evt): if self.state == "question": + show = False if evt.key() in (Qt.Key_Enter, Qt.Key_Return): evt.accept() - return self.web.eval("showans();") + show = True elif evt.key() == Qt.Key_Space and not self.typeAns(): evt.accept() + show = True + if show: + self._showAnswer() return self.web.eval("showans();") elif self.state == "answer": - # if evt.key() == Qt.Key_Space: - # key = str(self.defaultEaseButton()) - # else: - # key = unicode(evt.text()) - # if key and key >= "1" and key <= "4": - # # user entered a quality setting - # num=int(key) - # evt.accept() - # return getattr(self.form, "easeButton%d" % - # num).animateClick() - pass + if evt.key() in (Qt.Key_Enter, + Qt.Key_Return, + Qt.Key_Space): + self._answerCard(self._defaultEase()) + evt.accept() + return + else: + key = unicode(evt.text()) + if key and key >= "1" and key <= "4": + key=int(key) + if self.card.queue == 2 or key < 4: + evt.accept() + return self._answerCard(key) evt.ignore() def _linkHandler(self, url): print "link", url if url == "ans": self._showAnswer() + elif url.startswith("ease"): + self._answerCard(int(url[4:])) - # Font properties & output + # CSS ########################################################################## - def write(self, text): - if type(text) != types.UnicodeType: - text = unicode(text, "utf-8") - self.buffer += text + _css = """ +a.ansbut { + bottom: 1em; + height: 40px; + left: 50%; + margin-left: -125px; + position: fixed; + width: 250px; + font-size: 100%; +} +a.ansbut:focus { +background: #c7c7c7; +} +div.ansbut { + position: relative; top: 25%; +} - def center(self, str, height=40): - if not self.main.config['splitQA']: - return "
" + str + "
" - return '''\ -
\ -
\ -
%s
''' % (height, str) +#easebuts { + bottom: 1em; + height: 55px; + left: 50%; + margin-left: -200px; + position: fixed; + width: 400px; + font-size: 100%; + visibility: hidden; +} + +.easebut { + width: 60px; + font-size: 100%; +} + +.time { + background: #eee; + padding: 5px; + border-radius: 10px; +} + +div#filler { + height: 30px; +} + +.q { margin-bottom: 1em; } +.a { margin-top: 1em; } +.inv { visibility: hidden; } +""" + + def _styles(self): + css = self.mw.sharedCSS + css += self.card.model().css + css += self._css + css = runFilter("addStyles", css) + return css # Type in the answer ##########################################################################
" + "".join(times) + "