Register modes explicitely with modemanager.

This commit is contained in:
Florian Bruhin 2014-04-23 23:23:04 +02:00
parent fc11021c08
commit 5385307582
2 changed files with 9 additions and 13 deletions

View File

@ -129,7 +129,12 @@ class QuteBrowser(QApplication):
} }
self._init_cmds() self._init_cmds()
self.mainwindow = MainWindow() self.mainwindow = MainWindow()
modemanager.init(self._keyparsers, self) modemanager.init(self)
modemanager.manager.register("normal",
self._keyparsers["normal"].handle)
modemanager.manager.register("hint", self._keyparsers["hint"].handle)
modemanager.manager.register("insert", None, passthrough=True)
modemanager.manager.register("command", None, passthrough=True)
self.installEventFilter(modemanager.manager) self.installEventFilter(modemanager.manager)
self.setQuitOnLastWindowClosed(False) self.setQuitOnLastWindowClosed(False)

View File

@ -29,18 +29,17 @@ from PyQt5.QtCore import pyqtSignal, QObject, QEvent
manager = None manager = None
def init(parsers=None, parent=None): def init(parent=None):
"""Initialize the global ModeManager. """Initialize the global ModeManager.
This needs to be done by hand because the import time is before Qt is ready This needs to be done by hand because the import time is before Qt is ready
for everything. for everything.
Args: Args:
parsers: A dict of KeyParsers to register.
parent: Parent to use for ModeManager. parent: Parent to use for ModeManager.
""" """
global manager global manager
manager = ModeManager(parsers, parent) manager = ModeManager(parent)
def enter(mode): def enter(mode):
@ -67,19 +66,11 @@ class ModeManager(QObject):
entered = pyqtSignal(str) entered = pyqtSignal(str)
leaved = pyqtSignal(str) leaved = pyqtSignal(str)
def __init__(self, parsers=None, parent=None): def __init__(self, parent=None):
"""Constructor.
Args:
parsers: A list of parsers to register.
"""
super().__init__(parent) super().__init__(parent)
self._handlers = {} self._handlers = {}
self._passthrough = [] self._passthrough = []
self.mode = None self.mode = None
if parsers is not None:
for name, parser in parsers.items():
self._handlers[name] = parser.handle
def register(self, mode, handler, passthrough=False): def register(self, mode, handler, passthrough=False):
"""Register a new mode. """Register a new mode.