From da25e87ac47443590a2cf7006e068b149f973153 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Thu, 1 Dec 2011 19:42:36 +0900 Subject: [PATCH] key handling stuff --- aqt/main.py | 14 ++++++++++++-- aqt/overview.py | 11 ----------- aqt/reviewer.py | 12 ++++++++++-- aqt/webview.py | 8 -------- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/aqt/main.py b/aqt/main.py index 47e012d8f..06ae57727 100755 --- a/aqt/main.py +++ b/aqt/main.py @@ -223,6 +223,7 @@ Are you sure?"""): self.moveToState("overview") def _overviewState(self, oldState): + self.col.reset() self.overview.show() def _reviewState(self, oldState): @@ -272,7 +273,6 @@ Are you sure?"""): if self.resetModal: # we don't have to change the webview, as we have a covering window return - self.web.setKeyHandler(None) self.web.setLinkHandler(lambda url: self.maybeReset()) i = _("Close the browser to resume.") b = self.button("refresh", _("Resume Now")) @@ -481,9 +481,15 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") ########################################################################## def setupKeys(self): - self.keyDelegate = None + self.keyHandler = None def keyPressEvent(self, evt): + # do we have a delegate? + if self.keyHandler: + # did it eat the key? + if self.keyHandler(evt): + return + # run standard handler QMainWindow.keyPressEvent(self, evt) # check global keys key = unicode(evt.text()) @@ -498,6 +504,10 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") self.onAddCard() elif key == "b": self.onBrowse() + elif key == "S": + self.onStats() + elif key == "y": + self.onSync() # App exit ########################################################################## diff --git a/aqt/overview.py b/aqt/overview.py index 380874cea..1a6187a75 100644 --- a/aqt/overview.py +++ b/aqt/overview.py @@ -19,7 +19,6 @@ class Overview(object): addHook("reset", self.refresh) def show(self): - self.web.setKeyHandler(self._keyHandler) self.web.setLinkHandler(self._linkHandler) self.refresh() @@ -30,16 +29,6 @@ class Overview(object): # Handlers ############################################################ - def _keyHandler(self, evt): - txt = evt.text() - if txt == "s": - self._linkHandler("study") - elif txt == "c": - self._linkHandler("cram") - else: - return - return True - def _linkHandler(self, url): print "link", url if url == "study": diff --git a/aqt/reviewer.py b/aqt/reviewer.py index 24e542acd..3377e4788 100644 --- a/aqt/reviewer.py +++ b/aqt/reviewer.py @@ -26,8 +26,9 @@ class Reviewer(object): addHook("leech", self.onLeech) def show(self): - self.web.setKeyHandler(self._keyHandler) + self.mw.keyHandler = self._keyHandler self.web.setLinkHandler(self._linkHandler) + self.web.setKeyHandler(self._catchEsc) self.bottom.web.setFixedHeight(46) self.bottom.web.setLinkHandler(self._linkHandler) self.nextCard() @@ -152,6 +153,9 @@ function _typeAnsPress() { q = self._mungeQA(q) self.web.eval("_updateQA(%s);" % simplejson.dumps(q)) self._showAnswerButton() + # if we have a type answer field, focus main web + if self.typeField: + self.mw.web.setFocus() # user hook runHook('showQuestion') @@ -185,6 +189,11 @@ function _typeAnsPress() { # Handlers ############################################################ + def _catchEsc(self, evt): + if evt.key() == Qt.Key_Escape: + self.web.eval("$('#typeans').blur();") + return True + def _keyHandler(self, evt): print "rev event", evt.key() if self.state == "question": @@ -248,7 +257,6 @@ body { margin:1.5em; } if not m: return buf fld = m.group(1) - print "got", fld fobj = None for f in self.card.model()['flds']: if f['name'] == fld: diff --git a/aqt/webview.py b/aqt/webview.py index 6a0e3ab57..0dee96d9a 100644 --- a/aqt/webview.py +++ b/aqt/webview.py @@ -52,15 +52,7 @@ class AnkiWebView(QWebView): self.connect(self, SIGNAL("loadFinished(bool)"), self._loadFinished) self._curKey = None self.allowDrops = False - def keyPressEvent(self, evt): - self._curKey = True - return QWebView.keyPressEvent(self, evt) def keyReleaseEvent(self, evt): - if not self._curKey: - # event didn't start with us - evt.ignore() - return - self._curKey = None if self._keyHandler: if self._keyHandler(evt): evt.accept()