Source code for pathomx.qt

from __future__ import unicode_literals
import sys
import os
import logging

PYSIDE = 0
PYQT4 = 1
PYQT5 = 2

USE_QT_PY = None

# ReadTheDocs
ON_RTD = os.environ.get('READTHEDOCS', None) == 'True'
if not ON_RTD:

    QT_API_ENV = os.environ.get('QT_API')

    ETS = dict(pyqt=PYQT4, pyqt5=PYQT5, pyside=PYSIDE)

    # Check environment variable
    if QT_API_ENV and QT_API_ENV in ETS:
        USE_QT_PY = ETS[QT_API_ENV]

    # Check if one already importer
    elif 'PyQt4' in sys.modules:
        USE_QT_PY = PYQT4
    elif 'PyQt5' in sys.modules:
        USE_QT_PY = PYQT5
    else:
        # Try importing in turn
        try:
            import PyQt5
            USE_QT_PY = PYQT5
        except:
            try:
                import PyQt4
                USE_QT_PY = PYQT4
            except ImportError:
                try:
                    import PySide
                    USE_QT_PY = PYSIDE
                except:
                    pass

    # Import PyQt classes accessible in elsewhere through from qt import *
    if USE_QT_PY == PYQT5:
        from PyQt5.QtGui import *
        from PyQt5.QtCore import *
        from PyQt5.QtWebKit import *
        from PyQt5.QtNetwork import *
        from PyQt5.QtWidgets import *
        from PyQt5.QtWebKitWidgets import *
        from PyQt5.QtPrintSupport import *

    elif USE_QT_PY == PYSIDE:
        from PySide.QtGui import *
        from PySide.QtCore import *
        from PySide.QtNetwork import *

        pyqtSignal = Signal


    elif USE_QT_PY == PYQT4:
        import sip
        sip.setapi('QString', 2)
        sip.setapi('QVariant', 2)
        from PyQt4.QtGui import *
        from PyQt4.QtCore import *
        from PyQt4.QtWebKit import *
        from PyQt4.QtNetwork import *

        QFileDialog.getOpenFileName_ = QFileDialog.getOpenFileName
        QFileDialog.getSaveFileName_ = QFileDialog.getSaveFileName


        class QFileDialog(QFileDialog):
            @staticmethod
            def getOpenFileName(*args, **kwargs):
                return QFileDialog.getOpenFileName_(*args, **kwargs), None

            @staticmethod
            def getSaveFileName(*args, **kwargs):
                return QFileDialog.getSaveFileName_(*args, **kwargs), None

    # Create a Qt application
    app = QApplication(sys.argv)
    app.setStyle('fusion')
    app.setOrganizationName("Pathomx")
    app.setOrganizationDomain("pathomx.org")
    app.setApplicationName("Pathomx")

else:

    # For Qt a Mock in the conf.py will not work for ReadTheDocs so we have to Mock
    # separately here. Any class used in Qt must end up here and accessed attributes added.

    class QMockObject(object):
        def __init__(self, *args, **kwargs):
            super(QMockObject, self).__init__()

        def __call__(self, *args, **kwargs):
            return None


    class QApplication(QMockObject):
        pass


    class pyqtSignal(QMockObject):
        pass


    class pyqtSlot(QMockObject):
        pass


    class QObject(QMockObject):
        pass


    class QAbstractItemModel(QMockObject):
        pass


    class QModelIndex(QMockObject):
        pass


    class QTabWidget(QMockObject):
        pass


    class QWebPage(QMockObject):
        pass


    class QTableView(QMockObject):
        pass


    class QWebView(QMockObject):
        pass


    class QAbstractTableModel(QMockObject):
        pass


    class Qt(QMockObject):
        DisplayRole = None


    class QWidget(QMockObject):
        pass


    class QPushButton(QMockObject):
        pass


    class QDoubleSpinBox(QMockObject):
        pass


    class QListWidget(QMockObject):
        pass


    class QDialog(QMockObject):
        pass


    class QSize(QMockObject):
        pass


    class QTableWidget(QMockObject):
        pass


    class QMainWindow(QMockObject):
        pass


    class QTreeWidget(QMockObject):
        pass


    class QAbstractItemDelegate(QMockObject):
        pass


    class QColor(QMockObject):
        pass


    class QGraphicsItemGroup(QMockObject):
        pass


    class QGraphicsItem(QMockObject):
        pass


    class QGraphicsPathItem(QMockObject):
        pass


    class QGraphicsTextItem(QMockObject):
        pass


    class QGraphicsRectItem(QMockObject):
        pass


    class QGraphicsScene(QMockObject):
        pass


    class QGraphicsView(QMockObject):
        pass

    app = None