Source code for sparkle.QtWrapper

"""Adapted from https://gist.github.com/remram44/5985681

This compatibility layer allows to use either PySide or PyQt4 as the Qt
binding. """


import os
import sys

binding = 'PyQt4'

def set_sip_api():
    import sip
    api2_classes = [
            'QData', 'QDateTime', 'QString', 'QTextStream',
            'QTime', 'QUrl', 'QVariant',
            ]
    for cl in api2_classes:
        sip.setapi(cl, 2)

if binding == "PySide":
    from PySide import QtCore, QtGui, QtNetwork, QtSvg, QtTest
    sys.stderr.write("Using default binding %s\n" % binding)

elif binding == "PyQt4":
    # set_sip_api()
    from PyQt4 import QtCore, QtGui, QtNetwork, QtSvg, QtTest
    sys.stderr.write("Using default binding %s\n" % binding)

else:
    raise ImportError("Python binding not specified")

sys.modules[__name__ + '.QtCore'] = QtCore
sys.modules[__name__ + '.QtGui'] = QtGui
sys.modules[__name__ + '.QtNetwork'] = QtNetwork
sys.modules[__name__ + '.QtSvg'] = QtSvg
sys.modules[__name__ + '.QtTest'] = QtTest

if binding == "PySide":
    QtCore.QT_VERSION_STR = QtCore.__version__
    QtCore.QT_VERSION = tuple(int(c) for c in QtCore.__version__.split('.'))
    try:
        from PySide import QtOpenGL
        sys.modules[__name__ + '.QtOpenGL'] = QtOpenGL
    except ImportError:
        pass
    try:
        from PySide import QtWebKit
        sys.modules[__name__ + '.QtWebKit'] = QtWebKit
    except ImportError:
        pass

    # This will be passed on to new versions of matplotlib
    os.environ['QT_API'] = 'pyside'
    
    from datetime import datetime as datetime_, timedelta

    @staticmethod
    def qWait(t):
        end = datetime_.now() + timedelta(milliseconds=t)
        while datetime_.now() < end:
            QtGui.QApplication.processEvents()
    QtTest.QTest.qWait = qWait

    def QtLoadUI(uifile, base):
        from PySide import QtUiTools
        loader = QtUiTools.QUiLoader()
        uif = QtCore.QFile(uifile)
        uif.open(QtCore.QFile.ReadOnly)
        result = loader.load(uif, base)
        uif.close()
        return result

elif binding == 'PyQt4':    
    try:
        from PyQt4 import QtOpenGL
        sys.modules[__name__ + '.QtOpenGL'] = QtOpenGL
    except ImportError:
        pass
    try:
        from PyQt4 import QtWebKit
        sys.modules[__name__ + '.QtWebKit'] = QtWebKit
    except ImportError:
        pass

    QtCore.Signal = QtCore.pyqtSignal
    QtCore.Slot = QtCore.pyqtSlot
    QtCore.Property = QtCore.pyqtProperty
    os.environ['QT_API'] = 'pyqt'
[docs] def QtLoadUI(uifile, base): from PyQt4 import uic return uic.loadUi(uifile, base)
[docs]def get_qt_binding_name(): return binding
__all__ = ['QtCore', 'QtGui', 'QtLoadUI', 'get_qt_binding_name']