def main():
    argv = sys.argv
    
    # Trick to set the style / not found how to do it in pythonic way
    argv.extend(["-style", "universal"])
    app = QGuiApplication(argv)

    qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar")    
    imgProvider = MatplotlibIconProvider()
    
    # !! You must specified the QApplication as parent of QQmlApplicationEngine
    # otherwise a segmentation fault is raised when exiting the app
    engine = QQmlApplicationEngine(parent=app)
    engine.addImageProvider("mplIcons", imgProvider)
    
    context = engine.rootContext()
    data_model = DataSeriesModel()
    context.setContextProperty("dataModel", data_model)
    mainApp = Form(data=data_model)
    context.setContextProperty("draw_mpl", mainApp)
    
    engine.load(QUrl('main.qml'))
    
    win = engine.rootObjects()[0]
    mainApp.figure = win.findChild(QObject, "figure").getFigure()
    
    rc = app.exec_()
    # There is some trouble arising when deleting all the objects here
    # but I have not figure out how to solve the error message.
    # It looks like 'app' is destroyed before some QObject
    sys.exit(rc)
Ejemplo n.º 2
0
    def start(self):
        """Display the GUI"""
        myApp = QApplication(sys.argv)
        sys.excepthook = lambda typ, val, tb: error_handler(typ, val, tb)

        myApp.setOrganizationDomain('mlox')
        myApp.setOrganizationName('mlox')

        icon_data: bytes = resource_manager.resource_string(
            "mlox.static", "mlox.ico")
        icon = QIcon()
        pixmap = QPixmap()
        pixmap.loadFromData(icon_data)
        icon.addPixmap(pixmap)
        myApp.setWindowIcon(icon)

        myEngine = QQmlApplicationEngine()
        # Need to set these before loading
        myEngine.rootContext().setContextProperty("python", self)
        myEngine.addImageProvider('static', PkgResourcesImageProvider())

        qml: bytes = resource_manager.resource_string("mlox.static",
                                                      "window.qml")
        myEngine.loadData(qml)

        # These two are hacks, because getting them in the __init__ and RAII working isn't
        self.debug_window = ScrollableDialog()
        self.clipboard = myApp.clipboard()

        self.analyze_loadorder()

        sys.exit(myApp.exec())
Ejemplo n.º 3
0
def main(blocks=None, angle=None):
    app = QApplication(sys.argv)
    app_engine = QQmlApplicationEngine()
    context = app_engine.rootContext()

    # WARNING: ALL THE ADDIMAGEPROVIDER LINES BELOW ARE REQUIRED TO MAKE
    # WARNING: QML BELIEVE THE PROVIDER IS VALID BEFORE ITS CREATION
    analysis_image_provider = PyplotImageProvider(fig=None)
    app_engine.addImageProvider("analysisprovider", analysis_image_provider)

    win = get_main_window(app_engine)

    detector = DetectionInterface(app,
                                  context,
                                  win,
                                  display_name="detectionGraph",
                                  image_provider=analysis_image_provider,
                                  image_provider_name="analysisprovider")
    context.setContextProperty('py_detector', detector)

    if blocks is not None:
        detector.set_blocks(blocks, angle)

    win.show()
    # detector.detect()  # to display cell 0
    detector.init_ui()
    app.exec_()
Ejemplo n.º 4
0
def run():
    app = QGuiApplication([])

    engine = QQmlApplicationEngine()
    qmlRegisterType(model.PersonModel, 'TestModel', 1, 0, 'PersonModel')
    provider = ImageFaceProvider()
    engine.addImageProvider("facesProvider", provider)
    engine.load(QUrl.fromLocalFile("./gui/main/MainWindow.qml"))
    app.exec_()
def main():
    app = QGuiApplication(sys.argv)
    
    qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar")
    
    imgProvider = MatplotlibIconProvider()
    
    engine = QQmlApplicationEngine(parent=app)
    engine.addImageProvider("mplIcons", imgProvider)
    
    context = engine.rootContext()
    data_model = DataSeriesModel()
    context.setContextProperty("dataModel", data_model)
    mainApp = Form(data=data_model)
    context.setContextProperty("draw_mpl", mainApp)
    
    engine.load(QUrl('main.qml'))
    
    win = engine.rootObjects()[0]
    mainApp.figure = win.findChild(QObject, "figure").getFigure()
    
    rc = app.exec_()
    sys.exit(rc)
Ejemplo n.º 6
0
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtWidgets import QApplication

from analysis.probe.gui.backend_classes import PythonBackendClass1, Logger
from analysis.probe.gui.image_providers import PyplotImageProvider

DEBUG = False

if __name__ == '__main__':
    app = QApplication(sys.argv)
    appEngine = QQmlApplicationEngine()
    context = appEngine.rootContext()

    analysis_image_provider1 = PyplotImageProvider(fig=None)
    appEngine.addImageProvider("analysisprovider1", analysis_image_provider1)
    analysis_image_provider2 = PyplotImageProvider(fig=None)
    appEngine.addImageProvider("analysisprovider2", analysis_image_provider2)

    # ALL THE ADDIMAGEPROVIDER LINES BELOW ARE REQUIRED TO MAKE QML BELIEVE THE PROVIDER IS VALID BEFORE ITS CREATION
    # appEngine.addImageProvider('viewerprovider', CvImageProvider())

    # analysis_image_provider = PyplotImageProvider(fig=None)
    # appEngine.addImageProvider("analysisprovider", analysis_image_provider)

    conf = {
        'shared_directory': './'  # FIXME: this is obviously BS
    }

    qml_source_path = os.path.join(conf['shared_directory'], 'qml',
                                   'gui_qtquick', 'gui_qtquick.qml')
Ejemplo n.º 7
0
    default_image = 'images/default.dcm'

    # Main application start
    app = QApplication([])

    app.setWindowIcon(QIcon(':/images/icon.ico'))
    app.setOrganizationName("K-space Explorer")
    app.setOrganizationDomain("k-space.app")
    app.setApplicationName("K-space Explorer")

    engine = QQmlApplicationEngine()
    ctx = engine.rootContext()

    # Image manipulator and storage initialisation with default image
    engine.addImageProvider("imgs", ImageProvider())
    im = ImageManipulators(default_image)

    # Loading GUI file
    # engine.load('ui_source/ui.qml')

    engine.load(QUrl('qrc:/ui.qml'))

    win = engine.rootObjects()[0]
    py_mainapp = MainApp(ctx, win)
    ctx.setContextProperty("py_MainApp", py_mainapp)

    win.show()

    sys.exit(app.exec_())
Ejemplo n.º 8
0
def main():
    """The main entry point when used as regular app

    It assumes a session is selected. When not, a dummy session None is used.
    A real session can be selected from the menu.
    Either an existing session or  new one using a csv-file.

    """

    # mainly for mpv program
    sys.exitfunc = cleanup_mpv

    gd.config = startup()
    # always start without secondary session
    gd.config['Session2'] = None
    gd.globals = readGlobals()

    # sys_argv = sys.argv
    # sys_argv += ['--style', 'material']
    app = QGuiApplication(sys.argv)

    locale.setlocale(locale.LC_NUMERIC, "C")

    # needed by filedialog  (bepaald waar configfile van Qt komt te staan)  Dit voor rtcnoordconfig gebruiken?
    app.setOrganizationName("RTC noord")
    app.setOrganizationDomain("RTC")
    app.setApplicationName("RtcNoordApp")

    qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar")
    imgProvider = MatplotlibIconProvider()

    engine = QQmlApplicationEngine(parent=app)
    engine.addImageProvider("mplIcons", imgProvider)
    context = engine.rootContext()

    # Setup pieces
    gd.data_model = DataSensorsModel()
    context.setContextProperty("sensorModel", gd.data_model)
    gd.mainPieces = FormPieces(data=gd.data_model)
    context.setContextProperty("draw_mpl", gd.mainPieces)
    # model to create pieces
    gd.data_model2 = DataPiecesModel()
    context.setContextProperty("makePiecesModel", gd.data_model2)

    # View piece
    gd.data_model3 = DataSensorsModel()
    context.setContextProperty("sensorModel3", gd.data_model3)
    # model for secondary session
    gd.data_model4 = DataSensorsModel()
    context.setContextProperty("sensorModel4", gd.data_model4)
    gd.mainView = FormView(data=gd.data_model3, data2=gd.data_model4)
    context.setContextProperty("piece_mpl", gd.mainView)
    gd.data_model5 = DataPiecesModel()
    context.setContextProperty("viewPiecesModel", gd.data_model5)

    # Boat
    gd.boattablemodel = BoatTableModel()
    context.setContextProperty("boatTableModel", gd.boattablemodel)
    gd.boatPlots = BoatForm()
    context.setContextProperty("boat_mpl", gd.boatPlots)

    # Crew
    gd.crewPlots = CrewForm()
    context.setContextProperty("crew_mpl", gd.crewPlots)

    engine.load("qml/main.qml")

    win = engine.rootObjects()[0]
    gd.mainPieces.figure = win.findChild(QObject, "pieces").getFigure()
    gd.mainView.figure = win.findChild(QObject, "viewpiece").getFigure()
    gd.boatPlots.figure = win.findChild(QObject, "viewboat").getFigure()
    gd.crewPlots.figure = win.findChild(QObject, "viewcrew").getFigure()

    engine.quit.connect(app.quit)
    sys.exit(app.exec_())
Ejemplo n.º 9
0
        The text gets printed in the corresponding qml component
        
        :param string text: The text to append at the end of the current qml component text
        """
        if text:
            previousText = self.log.property('text')
            outputText = '{}\n>>>{}'.format(previousText, text)
            self.log.setProperty('text', outputText)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    
    appEngine = QQmlApplicationEngine()
    
    context = appEngine.rootContext()
    appEngine.addImageProvider('viewerprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation
    appEngine.addImageProvider('trackerprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation
    appEngine.addImageProvider('recorderprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation
    appEngine.addImageProvider('calibrationprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation
    
    analysisImageProvider = PyplotImageProvider(fig=None)
    appEngine.addImageProvider("analysisprovider", analysisImageProvider)
    analysisImageProvider2 = PyplotImageProvider(fig=None)
    appEngine.addImageProvider("analysisprovider2", analysisImageProvider2)
    appEngine.load(QUrl('./qml/MouseTracker.qml'))
    
    win = appEngine.rootObjects()[0]
    
    if not DEBUG:
        logger = Logger(context, win, "log")
        sys.stdout = logger
Ejemplo n.º 10
0
        
        :param string text: The text to append at the end of the current qml component text
        """
        if text:
            previousText = self.log.property('text')
            outputText = '{}\n>>>{}'.format(previousText, text)
            self.log.setProperty('text', outputText)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    
    appEngine = QQmlApplicationEngine()
    
    context = appEngine.rootContext()
    appEngine.addImageProvider('viewerprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation
    appEngine.addImageProvider('trackerprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation
    appEngine.addImageProvider('recorderprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation
    appEngine.addImageProvider('calibrationprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation
    
    analysisImageProvider = PyplotImageProvider(fig=None)
    appEngine.addImageProvider("analysisprovider", analysisImageProvider)
    analysisImageProvider2 = PyplotImageProvider(fig=None)
    appEngine.addImageProvider("analysisprovider2", analysisImageProvider2)
    appEngine.load(QUrl('./qml/MouseTracker.qml'))
    
    win = appEngine.rootObjects()[0]
    
    if not DEBUG:
        logger = Logger(context, win, "log")
        sys.stdout = logger
Ejemplo n.º 11
0
    qmlRegisterType(Fishbone, "Bigeye", 1, 0, "Fishbone")
    qmlRegisterType(TestCaseModel, "Bigeye", 1, 0, "TestCaseModel")
    qmlRegisterType(KeyEventModel, "Bigeye", 1, 0, "KeyEventModel")
    qmlRegisterType(ProcessModel, "Bigeye", 1, 0, "ProcessModel")

    qmlRegisterType(Controller, "Bigeye", 1, 0, "Controller")
    qmlRegisterType(LiteController, "Bigeye", 1, 0, "LiteController")
    qmlRegisterType(AutomaticController, "Bigeye", 1, 0, "AutomaticController")
    qmlRegisterType(ReplayController, "Bigeye", 1, 0, "ReplayController")

    qmlRegisterType(Screenshot, "Bigeye", 1, 0, "Screenshot")
    qmlRegisterType(ScreenRecorder, "Bigeye", 1, 0, "ScreenRecorder")

    qmlRegisterType(Miscellany, "Bigeye", 1, 0, "Miscellany")

    engine = QQmlApplicationEngine()
    engine.addImageProvider('snapshot', SnapshotProvider())
    engine.addImageProvider('video', VideoProvider())

    bigeyeQml = "bigeye-lite.qml" if 'lite' in sys.argv else "bigeye.qml"

    if 'noqrc' in sys.argv:
        engine.load(
            QUrl.fromLocalFile(
                os.path.join(os.path.dirname(__file__), bigeyeQml)))
    else:
        import bigeye_rc
        engine.load(QUrl("qrc:/" + bigeyeQml))

    sys.exit(app.exec_())
Ejemplo n.º 12
0
class ElectrumQmlApplication(QGuiApplication):

    _valid = True

    def __init__(self, args, config, daemon):
        super().__init__(args)

        self.logger = get_logger(__name__)

        ElectrumQmlApplication._daemon = daemon

        qmlRegisterType(QEWalletListModel, 'org.electrum', 1, 0,
                        'WalletListModel')
        qmlRegisterType(QEWallet, 'org.electrum', 1, 0, 'Wallet')
        qmlRegisterType(QEWalletDB, 'org.electrum', 1, 0, 'WalletDB')
        qmlRegisterType(QEBitcoin, 'org.electrum', 1, 0, 'Bitcoin')
        qmlRegisterType(QEQRParser, 'org.electrum', 1, 0, 'QRParser')
        qmlRegisterType(QEFX, 'org.electrum', 1, 0, 'FX')
        qmlRegisterType(QETxFinalizer, 'org.electrum', 1, 0, 'TxFinalizer')
        qmlRegisterType(QEInvoice, 'org.electrum', 1, 0, 'Invoice')
        qmlRegisterType(QEInvoiceParser, 'org.electrum', 1, 0, 'InvoiceParser')
        qmlRegisterType(QEUserEnteredPayment, 'org.electrum', 1, 0,
                        'UserEnteredPayment')
        qmlRegisterType(QEAddressDetails, 'org.electrum', 1, 0,
                        'AddressDetails')
        qmlRegisterType(QETxDetails, 'org.electrum', 1, 0, 'TxDetails')
        qmlRegisterType(QEChannelOpener, 'org.electrum', 1, 0, 'ChannelOpener')
        qmlRegisterType(QELnPaymentDetails, 'org.electrum', 1, 0,
                        'LnPaymentDetails')
        qmlRegisterType(QEChannelDetails, 'org.electrum', 1, 0,
                        'ChannelDetails')
        qmlRegisterType(QESwapHelper, 'org.electrum', 1, 0, 'SwapHelper')

        qmlRegisterUncreatableType(QEAmount, 'org.electrum', 1, 0, 'Amount',
                                   'Amount can only be used as property')

        self.engine = QQmlApplicationEngine(parent=self)
        self.engine.addImportPath('./qml')

        screensize = self.primaryScreen().size()

        self.qr_ip = QEQRImageProvider(
            (7 / 8) * min(screensize.width(), screensize.height()))
        self.engine.addImageProvider('qrgen', self.qr_ip)

        # add a monospace font as we can't rely on device having one
        self.fixedFont = 'PT Mono'
        not_loaded = QFontDatabase.addApplicationFont(
            'electrum/gui/qml/fonts/PTMono-Regular.ttf') < 0
        not_loaded = QFontDatabase.addApplicationFont(
            'electrum/gui/qml/fonts/PTMono-Bold.ttf') < 0 and not_loaded
        if not_loaded:
            self.logger.warning('Could not load font PT Mono')
            self.fixedFont = 'Monospace'  # hope for the best

        self.context = self.engine.rootContext()
        self._qeconfig = QEConfig(config)
        self._qenetwork = QENetwork(daemon.network)
        self._qedaemon = QEDaemon(daemon)
        self._appController = QEAppController(self._qedaemon)
        self._maxAmount = QEAmount(is_max=True)
        self.context.setContextProperty('AppController', self._appController)
        self.context.setContextProperty('Config', self._qeconfig)
        self.context.setContextProperty('Network', self._qenetwork)
        self.context.setContextProperty('Daemon', self._qedaemon)
        self.context.setContextProperty('FixedFont', self.fixedFont)
        self.context.setContextProperty('MAX', self._maxAmount)
        self.context.setContextProperty(
            'BUILD', {
                'electrum_version': version.ELECTRUM_VERSION,
                'apk_version': version.APK_VERSION,
                'protocol_version': version.PROTOCOL_VERSION
            })

        qInstallMessageHandler(self.message_handler)

        # get notified whether root QML document loads or not
        self.engine.objectCreated.connect(self.objectCreated)

    # slot is called after loading root QML. If object is None, it has failed.
    @pyqtSlot('QObject*', 'QUrl')
    def objectCreated(self, object, url):
        if object is None:
            self._valid = False
        self.engine.objectCreated.disconnect(self.objectCreated)

    def message_handler(self, line, funct, file):
        # filter out common harmless messages
        if re.search('file:///.*TypeError: Cannot read property.*null$', file):
            return
        self.logger.warning(file)
Ejemplo n.º 13
0
def main():
    """The main entry point when used as a regular app

    It assumes a session is selected. When not, a dummy session None is used.
    The status line will tell that a real session  has to be created or selected from the menu.
    """
    global app

    # needed for making reports...
    matplotlib.use('Agg')

    app_Path = Path(__file__).parent.absolute() / '..'
    be = app_Path  / 'QtQuickBackend'
    sys.path.append(str(be))
    from backend_qtquick5 import FigureCanvasQTAggToolbar, MatplotlibIconProvider

    gd.config = startup()
    # always start without secondary session
    gd.config['Session2'] = None
    gd.globals = readGlobals()

    # sys_argv = sys.argv
    # sys_argv += ['--style', 'material']
    app = QGuiApplication(sys.argv)
    # app.aboutToQuit.connect(shutdown)
    
    locale.setlocale(locale.LC_NUMERIC, "C");

    # needed for filedialog
    app.setOrganizationName(gd.orgname)
    app.setOrganizationDomain(gd.orgdomain)
    app.setApplicationName(gd.appname)

    qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar")
    imgProvider = MatplotlibIconProvider()

    # setup rootcontext to communicate with QML
    engine = QQmlApplicationEngine()
    engine.addImageProvider("mplIcons", imgProvider)
    gd.context = engine.rootContext()

    # Setup pieces
    gd.data_model = DataSensorsModel()
    gd.context.setContextProperty("sensorModel", gd.data_model)
    gd.mainPieces = FormPieces(data=gd.data_model)
    gd.context.setContextProperty("draw_mpl", gd.mainPieces)
    # model to create pieces
    gd.data_model2 = DataPiecesModel()
    gd.context.setContextProperty("makePiecesModel", gd.data_model2)
        
    # View piece
    gd.data_model3 = DataSensorsModel()
    gd.context.setContextProperty("sensorModel3", gd.data_model3)
    # model for secondary session
    gd.data_model4 = DataSensorsModel()
    gd.context.setContextProperty("sensorModel4", gd.data_model4)
    gd.mainView = FormView(data=gd.data_model3, data2=gd.data_model4)
    gd.context.setContextProperty("piece_mpl", gd.mainView)
    gd.data_model5 = DataPiecesModel()
    gd.context.setContextProperty("viewPiecesModel", gd.data_model5)
        
    # Boat
    gd.boattablemodel = BoatTableModel()
    gd.context.setContextProperty("boatTableModel", gd.boattablemodel)
    gd.boatPlots = BoatForm()
    gd.context.setContextProperty("boat_mpl", gd.boatPlots)

    # Crew
    gd.crewPlots = CrewForm()
    gd.context.setContextProperty("crew_mpl", gd.crewPlots)

    # Create rower tables and plots for potentially eight rowers
    for i in range(8):
        gd.rowertablemodel[i] = RowerTableModel(i)
        gd.context.setContextProperty("rowerTableModel"+str(i), gd.rowertablemodel[i])

        gd.rowerPlots[i] = RowerForm(i)
        gd.context.setContextProperty("rower_mpl"+str(i), gd.rowerPlots[i])
        # print(f'main: create the models  rower {i}      {gd.rowerPlots[i].update_figure}')            

        gd.stretcherPlots[i] = StretcherForm(i)
        gd.context.setContextProperty("stretcher_mpl"+str(i), gd.stretcherPlots[i])
        

    # Session info
    gd.data_model6 = DataBoatsModel()
    gd.context.setContextProperty("sInfoModel", gd.data_model6)
    gd.data_model6.load_boatsInfo()

    engine.load(str(app_Path / 'App' / 'qml' / 'main.qml'))

    gd.win = engine.rootObjects()[0]

    # set figures functions
    gd.mainPieces.figure = gd.win.findChild(QObject, "pieces").getFigure()
    gd.mainView.figure = gd.win.findChild(QObject, "viewpiece").getFigure()
    gd.boatPlots.figure = gd.win.findChild(QObject, "viewboat").getFigure()
    gd.crewPlots.figure = gd.win.findChild(QObject, "viewcrew").getFigure()

    sys.exit(app.exec_())