Source code for wbia.guitool.guitool_decorators

# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function
import functools
from wbia.guitool.__PYQT__ import QtCore, QtGui  # NOQA
from wbia.guitool.__PYQT__.QtCore import Qt  # NOQA
import utool as ut
from utool._internal import meta_util_six

ut.noinject(__name__, '[guitool.decorators]', DEBUG=False)

DEBUG = False


signal_ = QtCore.pyqtSignal


# SLOT DECORATOR
[docs]def slot_(*types): # This is called at wrap time to get args """ wrapper around pyqtslot decorator keep original function info """ def pyqtSlotWrapper(func): # printDBG('[GUITOOL._SLOT] Wrapping: %r' % func.__name__) funcname = meta_util_six.get_funcname(func) @QtCore.pyqtSlot(*types, name=funcname) @ut.ignores_exc_tb def slot_wrapper(self, *args, **kwargs): result = func(self, *args, **kwargs) return result slot_wrapper = functools.update_wrapper(slot_wrapper, func) return slot_wrapper return pyqtSlotWrapper
[docs]def checks_qt_error(func): """ Decorator which reports qt errors which would otherwise be silent Useful if we haven't overriden sys.excepthook but we have, so this isnt useful. """ @functools.wraps(func) def checkqterr_wrapper(self, *args, **kwargs): try: result = func(self, *args, **kwargs) except Exception as ex: funcname = meta_util_six.get_funcname(func) msg = 'caught exception in %r' % (funcname,) ut.printex(ex, msg, tb=True, pad_stdout=True) raise return result return checkqterr_wrapper