From ce48ed9b8e7ad2f1fe145c5f421d8706ba60ea73 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 23 Apr 2014 17:56:36 +0200 Subject: [PATCH] Add entered/leaved signals to modemanager --- qutebrowser/utils/modemanager.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/qutebrowser/utils/modemanager.py b/qutebrowser/utils/modemanager.py index 11c34451a..aaa0855bd 100644 --- a/qutebrowser/utils/modemanager.py +++ b/qutebrowser/utils/modemanager.py @@ -23,7 +23,7 @@ Module attributes: import logging -from PyQt5.QtCore import QObject +from PyQt5.QtCore import pyqtSignal, QObject manager = None @@ -67,8 +67,17 @@ class ModeManager(QObject): _source: The keypress source signal. _handlers: A dictionary of modes and their handlers. mode: The current mode. + + Signals: + entered: Emitted when a mode is entered. + arg: Name of the entered mode. + leaved: Emitted when a mode is leaved. + arg: Name of the leaved mode. """ + entered = pyqtSignal(str) + leaved = pyqtSignal(str) + def __init__(self, sourcesig, parsers=None, parent=None): """Constructor. @@ -94,7 +103,12 @@ class ModeManager(QObject): self._handlers[mode] = handler def enter(self, mode): - """Enter a new mode.""" + """Enter a new mode. + + Emit: + leaved: With the old mode name. + entered: With the new mode name. + """ oldmode = self.mode logging.debug("Switching mode: {} -> {}".format(oldmode, mode)) if oldmode is not None: @@ -102,5 +116,7 @@ class ModeManager(QObject): self._source.disconnect(self._handlers[oldmode]) except TypeError: logging.debug("Could not disconnect mode {}".format(oldmode)) + self.leaved.emit(oldmode) self._source.connect(self._handlers[mode]) self.mode = mode + self.entered.emit(mode)