mirror of
https://github.com/ankitects/anki.git
synced 2025-11-11 07:07:13 -05:00
move the key handler into the webview instead of the main window
This commit is contained in:
parent
7b2ff671e8
commit
f561bd1473
5 changed files with 19 additions and 27 deletions
|
|
@ -24,7 +24,7 @@ class DeckBrowser(object):
|
|||
def show(self, _init=True):
|
||||
if _init:
|
||||
self.web.setLinkHandler(self._linkHandler)
|
||||
self.mw.setKeyHandler(self._keyHandler)
|
||||
self.web.setKeyHandler(self._keyHandler)
|
||||
self._setupToolbar()
|
||||
# refresh or reorder
|
||||
if (time.time() - self._browserLastRefreshed >
|
||||
|
|
@ -103,8 +103,7 @@ class DeckBrowser(object):
|
|||
if ((txt >= "0" and txt <= "9") or
|
||||
(txt >= "a" and txt <= "z")):
|
||||
self._openAccel(txt)
|
||||
evt.accept()
|
||||
evt.ignore()
|
||||
return True
|
||||
|
||||
def _openAccel(self, txt):
|
||||
for d in self._decks:
|
||||
|
|
|
|||
10
aqt/main.py
10
aqt/main.py
|
|
@ -339,16 +339,6 @@ Please do not file a bug report with Anki.<br>""")
|
|||
def closeAllDeckWindows(self):
|
||||
aqt.dialogs.closeAll()
|
||||
|
||||
def setKeyHandler(self, fn):
|
||||
self._keyHandler = fn
|
||||
|
||||
def keyPressEvent(self, evt):
|
||||
"Show answer on RET or register answer."
|
||||
if self._keyHandler:
|
||||
self._keyHandler(evt)
|
||||
else:
|
||||
evt.ignore()
|
||||
|
||||
# to port
|
||||
# elif self.state == "studyScreen":
|
||||
# if evt.key() in (Qt.Key_Enter,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class Overview(object):
|
|||
|
||||
def show(self):
|
||||
self._setupToolbar()
|
||||
self.mw.setKeyHandler(self._keyHandler)
|
||||
self.web.setKeyHandler(self._keyHandler)
|
||||
self.web.setLinkHandler(self._linkHandler)
|
||||
self._renderPage()
|
||||
|
||||
|
|
@ -38,9 +38,8 @@ class Overview(object):
|
|||
elif txt == "d":
|
||||
self._linkHandler("list")
|
||||
else:
|
||||
evt.ignore()
|
||||
return
|
||||
evt.accept()
|
||||
return True
|
||||
|
||||
def _linkHandler(self, url):
|
||||
print "link", url
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@ from anki.sound import playFromText, clearAudioQueue
|
|||
from aqt.utils import mungeQA, getBase
|
||||
import aqt
|
||||
|
||||
# fixme: space is scrolling instead of showing the current answer
|
||||
|
||||
class Reviewer(object):
|
||||
"Manage reviews. Maintains a separate state."
|
||||
|
||||
|
|
@ -26,7 +24,7 @@ class Reviewer(object):
|
|||
self._setupStatus()
|
||||
|
||||
def show(self):
|
||||
self.mw.setKeyHandler(self._keyHandler)
|
||||
self.web.setKeyHandler(self._keyHandler)
|
||||
self.web.setLinkHandler(self._linkHandler)
|
||||
self._getCard()
|
||||
|
||||
|
|
@ -199,29 +197,27 @@ $(".ansbut").focus();
|
|||
show = False
|
||||
if evt.key() in (Qt.Key_Enter,
|
||||
Qt.Key_Return):
|
||||
evt.accept()
|
||||
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();")
|
||||
self.web.eval("showans();")
|
||||
return True
|
||||
elif self.state == "answer":
|
||||
if evt.key() in (Qt.Key_Enter,
|
||||
Qt.Key_Return,
|
||||
Qt.Key_Space):
|
||||
self._answerCard(self._defaultEase())
|
||||
evt.accept()
|
||||
return
|
||||
return True
|
||||
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()
|
||||
self._answerCard(key)
|
||||
return True
|
||||
|
||||
|
||||
def _linkHandler(self, url):
|
||||
print "link", url
|
||||
|
|
|
|||
|
|
@ -44,12 +44,17 @@ class AnkiWebView(QWebView):
|
|||
self.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
|
||||
self.page().mainFrame().addToJavaScriptWindowObject("py", self._bridge)
|
||||
self.setLinkHandler()
|
||||
self.setKeyHandler()
|
||||
self.connect(self, SIGNAL("linkClicked(QUrl)"), self._linkHandler)
|
||||
self.connect(self, SIGNAL("loadFinished(bool)"), self._loadFinished)
|
||||
def keyPressEvent(self, evt):
|
||||
if evt.matches(QKeySequence.Copy):
|
||||
self.triggerPageAction(QWebPage.Copy)
|
||||
evt.accept()
|
||||
if self._keyHandler:
|
||||
if self._keyHandler(evt):
|
||||
evt.accept()
|
||||
return
|
||||
QWebView.keyPressEvent(self, evt)
|
||||
def contextMenuEvent(self, evt):
|
||||
QWebView.contextMenuEvent(self, evt)
|
||||
|
|
@ -60,6 +65,9 @@ class AnkiWebView(QWebView):
|
|||
self.linkHandler = handler
|
||||
else:
|
||||
self.linkHandler = self._openLinksExternally
|
||||
def setKeyHandler(self, handler=None):
|
||||
# handler should return true if event should be swallowed
|
||||
self._keyHandler = handler
|
||||
def setHtml(self, html, loadCB=None):
|
||||
if loadCB:
|
||||
self._loadFinishedCB = loadCB
|
||||
|
|
|
|||
Loading…
Reference in a new issue