From fb8b1d26b29e9eb7dd77a79771b510d584566ee9 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Thu, 24 Mar 2011 14:56:21 +0900 Subject: [PATCH] update the existing page instead of reloading it for each card transition --- aqt/reviewer.py | 57 ++++++++++++++++++++++++++++++++----------------- aqt/webview.py | 1 + 2 files changed, 39 insertions(+), 19 deletions(-) diff --git a/aqt/reviewer.py b/aqt/reviewer.py index a0f43d340..639c1d026 100644 --- a/aqt/reviewer.py +++ b/aqt/reviewer.py @@ -27,7 +27,7 @@ class Reviewer(object): def show(self): self.web.setKeyHandler(self._keyHandler) self.web.setLinkHandler(self._linkHandler) - self._getCard() + self._initWeb() def lastCard(self): if self._answeredIds: @@ -68,23 +68,33 @@ class Reviewer(object): self.state != "getQuestion")) self.form.actionRepeatAudio.setEnabled(snd) - # Showing the question (and preparing answer) + # Initializing the webview ########################################################################## _revHtml = """
-%(q)s +

- -%(a)s +
+
-%(buts)s + +
%(showans)s
+
+
+
""" + def _initWeb(self): + self.web.stdHtml(self._revHtml % dict( + showans=_("Show Answer")), self._styles(), + loadCB=lambda x: self._getCard()) + + # Showing the question (and preparing answer) + ########################################################################## + def _showQuestion(self): self.state = "question" # fixme: timeboxing @@ -108,12 +126,11 @@ $(".ansbut").focus(); # render # buf = self.typeAnsResult() - buf = self._revHtml % dict( - q=mungeQA(q), - a=mungeQA(a) + '
', - buts=self._reviewButtons()) - buf = self.mw.deck.media.escapeImages(buf) - self.web.stdHtml(buf, self._styles(), bodyClass=c.cssClass()) + esc = self.mw.deck.media.escapeImages + q=esc(mungeQA(q)) + a=esc(mungeQA(a)) + self.web.eval("updateQA(%s);" % simplejson.dumps( + [q, a, self._answerButtons(), c.cssClass()])) runHook('showQuestion') # Showing the answer @@ -172,7 +189,7 @@ $(".ansbut").focus(); "".join(times) + "") buf += ("" + "".join(buttons) + "") - return "
" + buf + "
" + return "
" + buf + "
" return buf def _buttonTime(self, i, green): @@ -227,7 +244,6 @@ $(".ansbut").focus(); def _linkHandler(self, url): - print "link", url if url == "ans": self._showAnswer() elif url.startswith("ease"): @@ -253,6 +269,10 @@ div.ansbut { position: relative; top: 25%; } +div#q, div#a { +margin: 0px; +} + #easebuts { bottom: 1em; height: 55px; @@ -261,7 +281,6 @@ div.ansbut { position: fixed; width: 400px; font-size: 100%; - visibility: hidden; } .easebut { @@ -286,7 +305,7 @@ div#filler { def _styles(self): css = self.mw.sharedCSS - css += self.card.model().css + css += self.mw.deck.allCSS() css += self._css css = runFilter("addStyles", css) return css diff --git a/aqt/webview.py b/aqt/webview.py index 1e1a11d4c..114d94376 100644 --- a/aqt/webview.py +++ b/aqt/webview.py @@ -94,3 +94,4 @@ class AnkiWebView(QWebView): def _loadFinished(self): if self._loadFinishedCB: self._loadFinishedCB(self) + self._loadFinishedCB = None