From 46f1a2a0d07d649ae14660340e54913a4fc2af46 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 22 Apr 2014 23:50:56 +0200 Subject: [PATCH] Add log_events decorator --- TODO | 1 - qutebrowser/utils/debug.py | 22 +++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index f18e844ca..6fb83bfad 100644 --- a/TODO +++ b/TODO @@ -60,7 +60,6 @@ keybind should have completion for commands/arguments Hiding scrollbars Ctrl+A/X to increase/decrease last number in URL command completion gets hidden when doing a new ValueList value -log_events class decorator logging contexts Qt Bugs diff --git a/qutebrowser/utils/debug.py b/qutebrowser/utils/debug.py index 69f68c52b..2fbe55148 100644 --- a/qutebrowser/utils/debug.py +++ b/qutebrowser/utils/debug.py @@ -18,8 +18,10 @@ """Utilities used for debugging.""" import sys +import logging +from functools import wraps -from PyQt5.QtCore import pyqtRemoveInputHook +from PyQt5.QtCore import pyqtRemoveInputHook, QEvent try: # pylint: disable=import-error @@ -29,6 +31,24 @@ except ImportError: import qutebrowser.commands.utils as cmdutils +EVENTS = {n: x for x, n in vars(QEvent).items() + if isinstance(n, QEvent.Type)} + + +def log_events(klass): + """Class decorator to log Qt events.""" + old_event = klass.event + + @wraps(old_event) + def new_event(self, e, *args, **kwargs): + """Wrapper for event() which logs events.""" + logging.debug("Event in {}: {}".format(klass.__name__, + EVENTS[e.type()])) + return old_event(self, e, *args, **kwargs) + + klass.event = new_event + return klass + @cmdutils.register(name='settrace', hide=True) def set_trace():