key handling stuff

This commit is contained in:
Damien Elmes 2011-12-01 19:42:36 +09:00
parent 5e97a285a1
commit da25e87ac4
4 changed files with 22 additions and 23 deletions

View file

@ -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
##########################################################################

View file

@ -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":

View file

@ -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:

View file

@ -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()