Beispiel #1
0
 def __init__(self, pod):
     super().__init__()
     MainWindow.console = ConsoleWidget(
         namespace={
             'pod': pod,
             'win': self,
         },
         text='You can use this window to enter Python commands.')
     MainWindow.console.setWindowTitle('Python interaction')
     self._ui = Ui_MainWindow()
     self._ui.setupUi(self)
     self._ui.startButton.clicked.connect(pod.begin)
     self._ui.submitButton.clicked.connect(self.submitCommand)
     pod.connected.connect(self.enable)
     self._ui.actionSettings.triggered.connect(self.networkDialog)
     self._ui.actionReconnect.triggered.connect(pod.begin)
     self._ui.actionConsoleOpen.triggered.connect(self.openConsole)
     pod.add_listener('*', self.appendNetworkLog)
     pod.add_listener('v', self.updateVelocityLCD)
     pod.add_listener('v', self._ui.velocityPlot.datum)
     pod.add_listener('h', self.updateHeightLCD)
     pod.add_listener('h', self._ui.heightPlot.datum)
     pod.add_listener('d', self.updateDistanceLCD)
     pod.add_listener('d', self._ui.distancePlot.datum)
     self.command.connect(pod)
     self.networkUpdate.connect(pod.try_connect)
     self.timer = QTimer()
     self.timer.timeout.connect(self._ui.velocityPlot.update)
     self.timer.timeout.connect(self._ui.heightPlot.update)
     self.timer.timeout.connect(self._ui.distancePlot.update)
     self.timer.start(_1s)
 def open_console(self):
     if not self.ui.frameConsole.isVisible():
         if hasattr(self, "console"):
             if self.ui.frameConsole.isVisible() == False:
                 self.ui.frameConsole.setVisible(True)
             if self.ui.groupBoxPlotting.isVisible() == False:
                 self.ui.actionPlotting.setIcon(
                     QtGui.QIcon("icons/checkmark.png"))
                 self.ui.groupBoxPlotting.setVisible(True)
         else:
             self.ui.frameConsole.setLayout(QtWidgets.QVBoxLayout())
             self.console = ConsoleWidget(
                 namespace={
                     "viewer": self,
                     "pd": pd,
                     "np": np,
                     "os": os
                 },
                 text=
                 "\r This console has access to everything in the namespace of this viewer. "
                 "\n Example: viewer.df refers to the complete dataframe. viewer.df_selection refers to currently selected data "
                 "\n UI widgets are accessible using viewer.ui, like viewer.ui.console for this console."
                 "\n imported libraries: pandas as pd, numpy as np, os ")
             self.ui.frameConsole.layout().addWidget(self.console)
             self.ui.frameConsole.setVisible(True)
             self.ui.groupBoxPlotting.setVisible(True)
             self.ui.actionConsole.setIcon(
                 QtGui.QIcon("icons/checkmark.png"))
     else:
         self.close_console()
Beispiel #3
0
 def __init__(self, addMenu=True):
     super(DockWindow, self).__init__()
     self.dockarea = DockArea()
     self.setCentralWidget(self.dockarea)
     self.clipboard = QtGui.QApplication.clipboard()
     if addMenu:
         addMenu = self.menuBar().addMenu("&Add Dock")
         addMenu.addAction(
             QtGui.QAction("Trace Widget",
                           addMenu,
                           triggered=lambda: self.addWidget(TraceWidget())))
         addMenu.addAction(
             QtGui.QAction("Plot Widget",
                           addMenu,
                           triggered=lambda: self.addWidget(PlotWidget())))
         addMenu.addAction(
             QtGui.QAction("Video Widget",
                           addMenu,
                           triggered=lambda: self.addWidget(VideoWidget())))
         addMenu.addAction(
             QtGui.QAction("Data Widget",
                           addMenu,
                           triggered=lambda: self.addWidget(DataWidget())))
         addMenu.addAction(
             QtGui.QAction("Console Widget",
                           addMenu,
                           triggered=lambda: self.addWidget(
                               ConsoleWidget(namespace=globals()))))
         if '-no3D' not in sys.argv:
             addMenu.addAction(
                 QtGui.QAction(
                     "3D Plot Widget",
                     addMenu,
                     triggered=lambda: self.addWidget(Plot3DWidget())))
Beispiel #4
0
 def __init__(self, name):
     super().__init__(name,
                      terminals={'title': {
                          'io': 'in'
                      }},
                      allowAddInput=True)
     self.console = ConsoleWidget()
     self.title = None
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        centralWidget = QtWidgets.QWidget()
        self.setCentralWidget(centralWidget)
        self.running = False

        self._makeMenuBar()

        self.imageview = pg.ImageView()
        self.imageview.view.setAutoPan(False)
        self.imageview.setMinimumWidth(650)
        self.console = ConsoleWidget()
        self.console.setMaximumWidth(400)
        self.optionsWidget = QtWidgets.QWidget()

        def errCall(err, a):
            self.running = False
            self.imageview.setHistogramRange(0, 2)
            self.imageview.setLevels(0, 2)

        np.seterrcall(errCall)
        np.seterr(over='call')

        opsL = QtWidgets.QFormLayout()
        header = QtWidgets.QLabel("Diffusion Simulation")
        opsL.addRow(header)
        self.optionsWidget.setMaximumWidth(600)
        self.optionsWidget.setMinimumWidth(400)
        self.top_left_label = pg.LabelItem("", justify='right')
        self.imageview.ui.graphicsView.addItem(self.top_left_label)

        def timeChanged(m, b):
            self.top_left_label.setText(
                "Frame %d, %s ms" %
                (m, m * self.dtSpin.value() * self.refreshSpin.value()))

        self.imageview.sigTimeChanged.connect(timeChanged)

        def viewKeyPress(ev):
            pg.ViewBox.keyPressEvent(self.imageview.view, ev)

        self.imageview.view.keyPressEvent = viewKeyPress

        def saveModel():
            puffs = self.puffs
            model = self.getModel()
            model.puffs = puffs
            name = QtWidgets.QInputDialog.getText(self, "Enter a model name",
                                                  "Enter a model name")
            if name is not None and len(name) > 0:
                save_model(name, m)

        self.startButton = QtWidgets.QPushButton("Start")
        self.startButton.pressed.connect(self.start)
        self.saveModelButton = QtWidgets.QPushButton("Save Model")
        self.saveModelButton.pressed.connect(saveModel)
        self.progressBar = QtWidgets.QProgressBar()
        self.progressBar.setRange(0, 100)
        self.progressBar.setValue(0)
        buttonBox = QtWidgets.QWidget()
        buttonLayout = QtWidgets.QGridLayout()
        buttonLayout.addWidget(self.progressBar, 0, 0, 1, 3)
        buttonLayout.addWidget(self.saveModelButton, 1, 0)
        buttonLayout.addWidget(self.startButton, 1, 1)
        buttonBox.setLayout(buttonLayout)

        self.imageWidget = self._makeImageWidget()
        self.modelWidget = self._makeModelWidget()
        self.puffWidget = self._makePuffWidget()

        separator = QtWidgets.QWidget()
        sepLayout = QtWidgets.QHBoxLayout()
        self.infoLabel = QtWidgets.QLabel()
        sepLayout.addWidget(self.infoLabel)
        sepLayout.addStretch()
        separator.setLayout(sepLayout)

        def modelSelected():
            data = combo.currentData()
            self.widthSpin.setValue(data.x_max)
            self.heightSpin.setValue(data.y_max)
            self.timeSpin.setValue(data.t_max)
            self.dxSpin.setValue(data.dx)
            self.dySpin.setValue(data.dy)
            self.dtSpin.setValue(data.dt)
            self.dSpin.setValue(data.d)

            self.sequesterSpin.setValue(data.sequestration)
            puffs = data.puffs
            self.pointSpin.setValue(len(puffs))
            self.puffTable.setPuffs(puffs)
            self.refreshSpin.setValue(data.refresh)

        combo = QtWidgets.QComboBox()
        combo.currentIndexChanged.connect(modelSelected)

        for a, b in models.items():
            combo.addItem(a, b)
        opsL.addRow("Saved Models", combo)
        opsL.addRow(self.imageWidget)
        opsL.addRow(self.puffWidget)
        opsL.addRow(self.modelWidget)
        opsL.addRow(separator)
        opsL.addRow(buttonBox)
        self.optionsWidget.setLayout(opsL)

        self.console.localNamespace.update({
            'self': self,
            'set': self.imageview.setImage
        })
        layout = QtWidgets.QGridLayout()
        layout.addWidget(self.console, 0, 0)
        layout.addWidget(self.imageview, 0, 1)
        layout.addWidget(self.optionsWidget, 0, 2)
        centralWidget.setLayout(layout)
        self.resize(1850, 600)

        self.mouse = [0, 0]

        self.imageview.scene.sigMouseMoved.connect(self.mouseMoved)
        self.imageview.mousePressEvent = self.mousePressed

        self.puffs = []

        self.scatter = pg.ScatterPlotItem(brush=pg.mkBrush(255, 255, 0))
        self.scatter.sigClicked.connect(self.mousePressed)

        self.imageview.view.addItem(self.scatter)
        self.imageview.view.setMenuEnabled(False)
 def keyPressEvent(self, ev):
     if ev.text() == 'c':
         from pyqtgraph.console import ConsoleWidget
         self.console = ConsoleWidget()
         self.console.localNamespace['self'] = self
         self.console.show()
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.setWindowTitle("Stardust Ground Station")
        self.setWindowIcon(QtGui.QIcon('images/stardust.ico'))
        self.resize(1000, 600)

        self.logFile = 'logs/StardustGroundStation' + str(
            date.today()) + '.txt'

        with open("config.hjson", "r") as file:
            config = hjson.load(file)

        self.sock_rx = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.sock_tx = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        self.ip_rx = config['UDP_rx']['ip']
        self.port_rx = int(config['UDP_rx']['port'])

        self.ip_tx = config['UDP_tx']['ip']
        self.port_tx = int(config['UDP_tx']['port'])

        self.sock_rx.bind((self.ip_rx, self.port_rx))

        self.layout = QVBoxLayout()

        self.updatableWidgets = []

        self.display = Display(structure=config['basics'],
                               units=config['units'],
                               phases=config['phases'])
        self.layout.addWidget(self.display)
        self.updatableWidgets.append(self.display)

        self.tabsTop = QTabWidget()
        self.layout.addWidget(self.tabsTop)

        self.sensors = Sensors(structure=config['sensors'],
                               units=config['units'])
        self.tabsTop.addTab(self.sensors, 'Sensors')
        self.updatableWidgets.append(self.sensors)

        self.mechanisms = Mechanisms(structure=config['mechanisms'],
                                     statuses=config['statuses'])
        self.tabsTop.addTab(self.mechanisms, 'Mechanisms')
        self.updatableWidgets.append(self.mechanisms)

        self.tabsBottom = QTabWidget()
        self.layout.addWidget(self.tabsBottom)

        if config['table']:
            self.table = Table(header_labels=config['labels'],
                               max_size=config['maxSize'])
            self.updatableWidgets.append(self.table)
            self.tabsBottom.addTab(self.table, 'Table')
        if config['charts']:
            self.charts = Charts(structure=config['sensors'],
                                 units=config['units'],
                                 time_index=config['basics'][list(
                                     config['basics'].keys())[2]])
            self.updatableWidgets.append(self.charts)
            self.scrollCharts = QScrollArea()
            self.scrollCharts.setWidgetResizable(True)
            self.scrollCharts.setWidget(self.charts)
            self.tabsBottom.addTab(self.scrollCharts, 'Charts')
        if config['console']:
            self.console = ConsoleWidget()
            self.tabsBottom.addTab(ConsoleWidget(), 'Console')
        if config['buttons']:
            self.buttons = Buttons(
                socket=self.sock_tx,
                udp_ip_tx=self.ip_tx,
                udp_port_tx=self.port_tx,
                phases=config['phases'],
                valves=config['mechanisms']['Valves']['name'],
                valvestatuses=config['statuses']['valves'],
                pumps=config['mechanisms']['Pumps']['name'])
            self.updatableWidgets.append(self.buttons)
            self.tabsBottom.addTab(self.buttons, 'Function Buttons')

        self.widget = QWidget()
        self.widget.setLayout(self.layout)
        self.setCentralWidget(self.widget)

        self.testDataRandom = []

        self.receiversThreadPool = QThreadPool()

        self.communicate(ip=config['UDP']['ip'],
                         port=config['UDP']['port'],
                         mechs=config['mechanisms'],
                         status=list(config['basics'])[1])

        del config
Beispiel #8
0
    def __init__(self, actlaser, offlaser, exclaser, cameras, nidaq, pzt,
                 webcam, *args, **kwargs):
        super().__init__(*args, **kwargs)

#        self.resize(2400, 1300)

        self.lasers = [actlaser, offlaser, exclaser]
        self.cameras = cameras
        self.nidaq = nidaq
        self.orcaflash = self.cameras[0]

        for c in self.cameras:
            self.changeParameter(
                lambda: c.setPropertyValue('trigger_polarity', 2))
            # 3:DELAYED, 5:GLOBAL RESET
            self.changeParameter(
                lambda: c.setPropertyValue('trigger_global_exposure', 5))
            # 1: EGDE, 2: LEVEL, 3:SYNCHREADOUT
            self.changeParameter(lambda: c.setPropertyValue(
                'trigger_active', 2))

        self.shapes = [(c.getPropertyValue('image_height')[0],
                        c.getPropertyValue('image_width')[0])
                       for c in self.cameras]
        self.frameStart = (0, 0)

        self.currCamIdx = 0
        noImage = np.zeros(self.shapes[self.currCamIdx])
        self.latest_images = [noImage] * len(self.cameras)

        self.s = Q_(1, 's')
        self.lastTime = time.clock()
        self.fps = None

        # Actions and menubar
        # Shortcut only
        self.liveviewAction = QtGui.QAction(self)
        self.liveviewAction.setShortcut('Ctrl+Space')
        QtGui.QShortcut(
            QtGui.QKeySequence('Ctrl+Space'), self, self.liveviewKey)
        self.liveviewAction.triggered.connect(self.liveviewKey)
        self.liveviewAction.setEnabled(False)

        # Actions in menubar
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')

        self.savePresetAction = QtGui.QAction('Save configuration...', self)
        self.savePresetAction.setShortcut('Ctrl+S')
        self.savePresetAction.setStatusTip('Save camera & recording settings')

        def savePresetFunction(): return guitools.savePreset(self)
        self.savePresetAction.triggered.connect(savePresetFunction)
        fileMenu.addAction(self.savePresetAction)
        fileMenu.addSeparator()

        self.exportTiffAction = QtGui.QAction('Export HDF5 to Tiff...', self)
        self.exportTiffAction.setShortcut('Ctrl+E')
        self.exportTiffAction.setStatusTip('Export HDF5 file to Tiff format')
        self.exportTiffAction.triggered.connect(guitools.TiffConverterThread)
        fileMenu.addAction(self.exportTiffAction)

        self.exportlastAction = QtGui.QAction('Export last recording to Tiff',
                                              self)
        self.exportlastAction.setEnabled(False)
        self.exportlastAction.setShortcut('Ctrl+L')
        self.exportlastAction.setStatusTip('Export last recording to Tiff ' +
                                           'format')
        fileMenu.addAction(self.exportlastAction)
        fileMenu.addSeparator()

        exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(QtGui.QApplication.closeAllWindows)
        fileMenu.addAction(exitAction)

        self.tree = CamParamTree(self.orcaflash)
        self.umxpx = self.tree.p.param('Pixel size').value()

        # Indicator for loading frame shape from a preset setting
        # Currently not used.
        self.customFrameLoaded = False
        self.cropLoaded = False

        # Camera binning signals. Defines seperate variables for each parameter
        # and connects the signal emitted when they've been changed to a
        # function that actually changes the parameters on the camera or other
        # appropriate action.
        self.framePar = self.tree.p.param('Image frame')
        self.binPar = self.framePar.param('Binning')
        self.binPar.sigValueChanged.connect(self.setBinning)
        self.FrameMode = self.framePar.param('Mode')
        self.FrameMode.sigValueChanged.connect(self.updateFrame)
        self.X0par = self.framePar.param('X0')
        self.Y0par = self.framePar.param('Y0')
        self.widthPar = self.framePar.param('Width')
        self.heightPar = self.framePar.param('Height')
        self.applyParam = self.framePar.param('Apply')
        self.NewROIParam = self.framePar.param('New ROI')
        self.AbortROIParam = self.framePar.param('Abort ROI')

        # WARNING: This signal is emitted whenever anything about the status of
        # the parameter changes eg is set writable or not.
        self.applyParam.sigStateChanged.connect(self.adjustFrame)
        self.NewROIParam.sigStateChanged.connect(self.updateFrame)
        self.AbortROIParam.sigStateChanged.connect(self.AbortROI)

        # Exposition signals
        timingsPar = self.tree.p.param('Timings')
        self.EffFRPar = timingsPar.param('Internal frame rate')
        self.expPar = timingsPar.param('Set exposure time')
        self.expPar.sigValueChanged.connect(self.setExposure)
        self.ReadoutPar = timingsPar.param('Readout time')
        self.RealExpPar = timingsPar.param('Real exposure time')
        self.FrameInt = timingsPar.param('Internal frame interval')
        self.RealExpPar.setOpts(decimals=5)
        self.setExposure()    # Set default values

        # Acquisition signals
        acquisParam = self.tree.p.param('Acquisition mode')
        self.trigsourceparam = acquisParam.param('Trigger source')
        self.trigsourceparam.sigValueChanged.connect(self.changeTriggerSource)

        # Camera settings widget
        cameraWidget = QtGui.QFrame()
        cameraWidget.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Raised)
        cameraTitle = QtGui.QLabel('<h2><strong>Camera settings</strong></h2>')
        cameraTitle.setTextFormat(QtCore.Qt.RichText)
        cameraGrid = QtGui.QGridLayout()
        cameraWidget.setLayout(cameraGrid)
        cameraGrid.addWidget(cameraTitle, 0, 0)
        cameraGrid.addWidget(self.tree, 1, 0)

        self.presetsMenu = QtGui.QComboBox()
        self.controlFolder = os.path.split(os.path.realpath(__file__))[0]
        os.chdir(self.controlFolder)
        self.presetDir = os.path.join(self.controlFolder, 'presets')

        if not os.path.exists(self.presetDir):
            os.makedirs(self.presetDir)

        for preset in os.listdir(self.presetDir):
            self.presetsMenu.addItem(preset)
        self.loadPresetButton = QtGui.QPushButton('Load preset')

        def loadPresetFunction(): return guitools.loadPreset(self)
        self.loadPresetButton.pressed.connect(loadPresetFunction)

        # Liveview functionality
        self.liveviewButton = QtGui.QPushButton('LIVEVIEW')
        self.liveviewButton.setStyleSheet("font-size:20px")
        self.liveviewButton.setCheckable(True)
        self.liveviewButton.setSizePolicy(QtGui.QSizePolicy.Preferred,
                                          QtGui.QSizePolicy.Expanding)
        # Link button click to funciton liveview
        self.liveviewButton.clicked.connect(self.liveview)
        self.liveviewButton.setEnabled(True)
        self.viewtimer = QtCore.QTimer()
        self.viewtimer.timeout.connect(self.updateView)

        self.alignmentON = False

        # Liveview control buttons
        self.viewCtrl = QtGui.QWidget()
        self.viewCtrlLayout = QtGui.QGridLayout()
        self.viewCtrl.setLayout(self.viewCtrlLayout)
        self.viewCtrlLayout.addWidget(self.liveviewButton, 0, 0, 1, 2)

        if len(self.cameras) > 1:
            self.toggleCamButton = QtGui.QPushButton('Toggle camera')
            self.toggleCamButton.setStyleSheet("font-size:18px")
            self.toggleCamButton.clicked.connect(self.toggleCamera)
            self.camLabel = QtGui.QLabel('Hamamatsu0')
            self.camLabel.setStyleSheet("font-size:18px")
            self.viewCtrlLayout.addWidget(self.toggleCamButton, 2, 0)
            self.viewCtrlLayout.addWidget(self.camLabel, 2, 1)

        # Status bar info
        self.fpsBox = QtGui.QLabel()
        self.fpsBox.setText('0 fps')
        self.statusBar().addPermanentWidget(self.fpsBox)
        self.tempStatus = QtGui.QLabel()
        self.statusBar().addPermanentWidget(self.tempStatus)
        self.temp = QtGui.QLabel()
        self.statusBar().addPermanentWidget(self.temp)
        self.cursorPos = QtGui.QLabel()
        self.cursorPos.setText('0, 0')
        self.statusBar().addPermanentWidget(self.cursorPos)
        self.cursorPosInt = QtGui.QLabel('0 counts', self)
        self.statusBar().addPermanentWidget(self.cursorPosInt)

        # Recording settings widget
        self.recWidget = record.RecordingWidget(self)

        # Image Widget
        imageWidget = pg.GraphicsLayoutWidget()
        self.vb = imageWidget.addViewBox(row=1, col=1)
        self.vb.setMouseMode(pg.ViewBox.RectMode)
        self.img = pg.ImageItem()
        self.img.translate(-0.5, -0.5)
        self.vb.addItem(self.img)
        self.vb.setAspectLocked(True)
        imageWidget.setAspectLocked(True)
        self.hist = pg.HistogramLUTItem(image=self.img)
        self.hist.vb.setLimits(yMin=0, yMax=66000)
        self.cubehelixCM = pg.ColorMap(np.arange(0, 1, 1/256),
                                       guitools.cubehelix().astype(int))
        self.hist.gradient.setColorMap(self.cubehelixCM)
        for tick in self.hist.gradient.ticks:
            tick.hide()
        imageWidget.addItem(self.hist, row=1, col=2)
        self.ROI = guitools.ROI((0, 0), self.vb, (0, 0), handlePos=(1, 0),
                                handleCenter=(0, 1), color='y', scaleSnap=True,
                                translateSnap=True)
        self.ROI.sigRegionChangeFinished.connect(self.ROIchanged)
        self.ROI.hide()

        # x and y profiles
        xPlot = imageWidget.addPlot(row=0, col=1)
        xPlot.hideAxis('left')
        xPlot.hideAxis('bottom')
        self.xProfile = xPlot.plot()
        imageWidget.ci.layout.setRowMaximumHeight(0, 40)
        xPlot.setXLink(self.vb)
        yPlot = imageWidget.addPlot(row=1, col=0)
        yPlot.hideAxis('left')
        yPlot.hideAxis('bottom')
        self.yProfile = yPlot.plot()
        self.yProfile.rotate(90)
        imageWidget.ci.layout.setColumnMaximumWidth(0, 40)
        yPlot.setYLink(self.vb)

        # viewBox custom Tools
        self.grid = guitools.Grid(self.vb)
        self.gridButton = QtGui.QPushButton('Grid')
        self.gridButton.setCheckable(True)
        self.gridButton.setEnabled(False)
        self.gridButton.setSizePolicy(QtGui.QSizePolicy.Preferred,
                                      QtGui.QSizePolicy.Expanding)
        self.gridButton.clicked.connect(self.grid.toggle)
        self.viewCtrlLayout.addWidget(self.gridButton, 1, 0)

        self.crosshair = guitools.Crosshair(self.vb)
        self.crosshairButton = QtGui.QPushButton('Crosshair')
        self.crosshairButton.setCheckable(True)
        self.crosshairButton.setEnabled(False)
        self.crosshairButton.setSizePolicy(QtGui.QSizePolicy.Preferred,
                                           QtGui.QSizePolicy.Expanding)
        self.crosshairButton.pressed.connect(self.crosshair.toggle)
        self.viewCtrlLayout.addWidget(self.crosshairButton, 1, 1)

        self.levelsButton = QtGui.QPushButton('Update Levels')
        self.levelsButton.setEnabled(False)
        self.levelsButton.setSizePolicy(QtGui.QSizePolicy.Preferred,
                                        QtGui.QSizePolicy.Expanding)
        self.levelsButton.pressed.connect(self.autoLevels)

        proxy = QtGui.QGraphicsProxyWidget()
        proxy.setWidget(self.levelsButton)
        imageWidget.addItem(proxy, row=0, col=2)

        # Initial camera configuration taken from the parameter tree
        self.orcaflash.setPropertyValue('exposure_time', self.expPar.value())
        self.adjustFrame()
        self.updateFrame()

        # Illumination dock area
        illumDockArea = DockArea()

        # Laser dock
        laserDock = Dock("Laser Control", size=(300, 1))
        self.laserWidgets = lasercontrol.LaserWidget(self.lasers, self.nidaq)
        laserDock.addWidget(self.laserWidgets)
        illumDockArea.addDock(laserDock)

        # Line Alignment Tool
        self.alignmentWidget = QtGui.QWidget()
        alignmentLayout = QtGui.QGridLayout()
        self.alignmentWidget.setLayout(alignmentLayout)
        self.angleEdit = QtGui.QLineEdit('30')
        self.alignmentLineMakerButton = QtGui.QPushButton('Alignment Line')
        self.angle = np.float(self.angleEdit.text())
        self.alignmentLineMakerButton.clicked.connect(self.alignmentToolAux)
        self.alignmentCheck = QtGui.QCheckBox('Show Alignment Tool')
        alignmentLayout.addWidget(QtGui.QLabel('Line Angle'), 0, 0)
        alignmentLayout.addWidget(self.angleEdit, 0, 1)
        alignmentLayout.addWidget(self.alignmentLineMakerButton, 1, 0)
        alignmentLayout.addWidget(self.alignmentCheck, 1, 1)
        alignmentDock = Dock("Alignment Tool", size=(1, 1))
        alignmentDock.addWidget(self.alignmentWidget)
        illumDockArea.addDock(alignmentDock, 'right')

        # Z align widget
        ZalignDock = Dock("Axial Alignment Tool", size=(1, 1))
        self.ZalignWidget = guitools.AlignWidgetAverage(self)
        ZalignDock.addWidget(self.ZalignWidget)
        illumDockArea.addDock(ZalignDock, 'above', alignmentDock)

        # Rotational align widget
        RotalignDock = Dock("Rotational Alignment Tool", size=(1, 1))
        self.RotalignWidget = guitools.AlignWidgetXYProject(self)
        RotalignDock.addWidget(self.RotalignWidget)
        illumDockArea.addDock(RotalignDock, 'above', alignmentDock)

        # Dock widget
        dockArea = DockArea()

        # Focus Lock widget
        FocusLockDock = Dock("Focus Lock", size=(400, 400))
        self.FocusLockWidget = focus.FocusWidget(pzt, webcam)
        FocusLockDock.addWidget(self.FocusLockWidget)
        dockArea.addDock(FocusLockDock)

        # Scanner
        scanDock = Dock('Scan', size=(1, 1))
        self.scanWidget = scanner.ScanWidget(self.nidaq, self)
        scanDock.addWidget(self.scanWidget)
        dockArea.addDock(scanDock, 'below', FocusLockDock)

        # Piezo positioner
        piezoDock = Dock('Piezo positioner', size=(1, 1))
        self.piezoWidget = scanner.Positionner(self.scanWidget)
        piezoDock.addWidget(self.piezoWidget)
        dockArea.addDock(piezoDock, 'bottom', alignmentDock)

        console = ConsoleWidget(namespace={'pg': pg, 'np': np})

        self.setWindowTitle('TempestaDev')
        self.cwidget = QtGui.QWidget()
        self.setCentralWidget(self.cwidget)

        layout = QtGui.QGridLayout()
        self.cwidget.setLayout(layout)
        layout.addWidget(self.presetsMenu, 0, 0)
        layout.addWidget(self.loadPresetButton, 0, 1)
        layout.addWidget(cameraWidget, 1, 0, 2, 2)
        layout.addWidget(self.viewCtrl, 3, 0, 1, 2)
        layout.addWidget(self.recWidget, 4, 0, 1, 2)
        layout.addWidget(console, 5, 0, 1, 2)
        layout.addWidget(imageWidget, 0, 2, 6, 1)
        layout.addWidget(illumDockArea, 0, 3, 2, 1)
        layout.addWidget(dockArea, 2, 3, 4, 1)

        layout.setRowMinimumHeight(2, 175)
        layout.setRowMinimumHeight(3, 100)
        layout.setRowMinimumHeight(5, 175)
        layout.setColumnMinimumWidth(0, 275)
        imageWidget.ci.layout.setColumnFixedWidth(1, 1150)
        imageWidget.ci.layout.setRowFixedHeight(1, 1150)
        layout.setColumnMinimumWidth(2, 1350)
Beispiel #9
0
    def setupUi(self, Console):
        Console.setObjectName("Console")
        Console.resize(979, 656)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(Console)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.verticalLayout_5 = QtWidgets.QVBoxLayout()
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.GroupBox_resample = QtWidgets.QGroupBox(Console)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.GroupBox_resample.sizePolicy().hasHeightForWidth())
        self.GroupBox_resample.setSizePolicy(sizePolicy)
        self.GroupBox_resample.setMinimumSize(QtCore.QSize(190, 80))
        self.GroupBox_resample.setMaximumSize(QtCore.QSize(250, 90))
        self.GroupBox_resample.setObjectName("GroupBox_resample")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.GroupBox_resample)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.HBoxLayout_resample = QtWidgets.QHBoxLayout()
        self.HBoxLayout_resample.setObjectName("HBoxLayout_resample")
        self.RadioButton_min_1 = QtWidgets.QRadioButton(self.GroupBox_resample)
        self.RadioButton_min_1.setChecked(True)
        self.RadioButton_min_1.setObjectName("RadioButton_min_1")
        self.HBoxLayout_resample.addWidget(self.RadioButton_min_1)
        self.RadioButton_min_5 = QtWidgets.QRadioButton(self.GroupBox_resample)
        self.RadioButton_min_5.setObjectName("RadioButton_min_5")
        self.HBoxLayout_resample.addWidget(self.RadioButton_min_5)
        self.RadioButton_min_10 = QtWidgets.QRadioButton(
            self.GroupBox_resample)
        self.RadioButton_min_10.setObjectName("RadioButton_min_10")
        self.HBoxLayout_resample.addWidget(self.RadioButton_min_10)
        self.RadioButton_min_30 = QtWidgets.QRadioButton(
            self.GroupBox_resample)
        self.RadioButton_min_30.setObjectName("RadioButton_min_30")
        self.HBoxLayout_resample.addWidget(self.RadioButton_min_30)
        self.verticalLayout_3.addLayout(self.HBoxLayout_resample)
        self.horizontalLayout_2.addWidget(self.GroupBox_resample)
        self.GroupBox_goto = QtWidgets.QGroupBox(Console)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.GroupBox_goto.sizePolicy().hasHeightForWidth())
        self.GroupBox_goto.setSizePolicy(sizePolicy)
        self.GroupBox_goto.setMinimumSize(QtCore.QSize(440, 80))
        self.GroupBox_goto.setMaximumSize(QtCore.QSize(16777215, 90))
        self.GroupBox_goto.setObjectName("GroupBox_goto")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.GroupBox_goto)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.horizontalLayout_his = QtWidgets.QHBoxLayout()
        self.horizontalLayout_his.setObjectName("horizontalLayout_his")
        self.verticalLayout_from_to = QtWidgets.QVBoxLayout()
        self.verticalLayout_from_to.setObjectName("verticalLayout_from_to")
        self.horizontalLayout_from = QtWidgets.QHBoxLayout()
        self.horizontalLayout_from.setObjectName("horizontalLayout_from")
        self.Label_from = QtWidgets.QLabel(self.GroupBox_goto)
        self.Label_from.setObjectName("Label_from")
        self.horizontalLayout_from.addWidget(self.Label_from)
        self.DateTimeEdit_start = QtWidgets.QDateTimeEdit(self.GroupBox_goto)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.DateTimeEdit_start.sizePolicy().hasHeightForWidth())
        self.DateTimeEdit_start.setSizePolicy(sizePolicy)
        self.DateTimeEdit_start.setMinimumSize(QtCore.QSize(130, 18))
        self.DateTimeEdit_start.setMaximumSize(QtCore.QSize(16777215, 25))
        self.DateTimeEdit_start.setLocale(
            QtCore.QLocale(QtCore.QLocale.English,
                           QtCore.QLocale.UnitedStates))
        self.DateTimeEdit_start.setDateTime(
            QtCore.QDateTime(QtCore.QDate(2018, 1, 1), QtCore.QTime(0, 0, 0)))
        self.DateTimeEdit_start.setCurrentSection(
            QtWidgets.QDateTimeEdit.MonthSection)
        self.DateTimeEdit_start.setCalendarPopup(True)
        self.DateTimeEdit_start.setObjectName("DateTimeEdit_start")
        self.horizontalLayout_from.addWidget(self.DateTimeEdit_start)
        self.verticalLayout_from_to.addLayout(self.horizontalLayout_from)
        self.horizontalLayout_to = QtWidgets.QHBoxLayout()
        self.horizontalLayout_to.setObjectName("horizontalLayout_to")
        self.label_to = QtWidgets.QLabel(self.GroupBox_goto)
        self.label_to.setObjectName("label_to")
        self.horizontalLayout_to.addWidget(self.label_to)
        self.DateTimeEdit_end = QtWidgets.QDateTimeEdit(self.GroupBox_goto)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.DateTimeEdit_end.sizePolicy().hasHeightForWidth())
        self.DateTimeEdit_end.setSizePolicy(sizePolicy)
        self.DateTimeEdit_end.setMinimumSize(QtCore.QSize(130, 18))
        self.DateTimeEdit_end.setMaximumSize(QtCore.QSize(16777215, 25))
        self.DateTimeEdit_end.setLocale(
            QtCore.QLocale(QtCore.QLocale.English,
                           QtCore.QLocale.UnitedStates))
        self.DateTimeEdit_end.setButtonSymbols(
            QtWidgets.QAbstractSpinBox.UpDownArrows)
        self.DateTimeEdit_end.setDateTime(
            QtCore.QDateTime(QtCore.QDate(2018, 3, 20), QtCore.QTime(0, 0, 0)))
        self.DateTimeEdit_end.setCurrentSection(
            QtWidgets.QDateTimeEdit.MonthSection)
        self.DateTimeEdit_end.setCalendarPopup(True)
        self.DateTimeEdit_end.setObjectName("DateTimeEdit_end")
        self.horizontalLayout_to.addWidget(self.DateTimeEdit_end)
        self.verticalLayout_from_to.addLayout(self.horizontalLayout_to)
        self.horizontalLayout_his.addLayout(self.verticalLayout_from_to)
        spacerItem = QtWidgets.QSpacerItem(20, 40,
                                           QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Expanding)
        self.horizontalLayout_his.addItem(spacerItem)
        self.Button_history = QtWidgets.QPushButton(self.GroupBox_goto)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum,
                                           QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.Button_history.sizePolicy().hasHeightForWidth())
        self.Button_history.setSizePolicy(sizePolicy)
        self.Button_history.setMinimumSize(QtCore.QSize(90, 20))
        self.Button_history.setMaximumSize(QtCore.QSize(100, 28))
        font = QtGui.QFont()
        font.setPointSize(8)
        self.Button_history.setFont(font)
        self.Button_history.setObjectName("Button_history")
        self.horizontalLayout_his.addWidget(self.Button_history)
        self.horizontalLayout.addLayout(self.horizontalLayout_his)
        spacerItem1 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.horizontalLayout.addItem(spacerItem1)
        self.Button_current = QtWidgets.QPushButton(self.GroupBox_goto)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum,
                                           QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.Button_current.sizePolicy().hasHeightForWidth())
        self.Button_current.setSizePolicy(sizePolicy)
        self.Button_current.setMinimumSize(QtCore.QSize(90, 20))
        self.Button_current.setMaximumSize(QtCore.QSize(100, 28))
        font = QtGui.QFont()
        font.setPointSize(8)
        self.Button_current.setFont(font)
        self.Button_current.setObjectName("Button_current")
        self.horizontalLayout.addWidget(self.Button_current)
        self.verticalLayout_4.addLayout(self.horizontalLayout)
        self.horizontalLayout_2.addWidget(self.GroupBox_goto)
        self.verticalLayout_5.addLayout(self.horizontalLayout_2)
        self.ConsoleWidget_con = ConsoleWidget(Console)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.ConsoleWidget_con.sizePolicy().hasHeightForWidth())
        self.ConsoleWidget_con.setSizePolicy(sizePolicy)
        self.ConsoleWidget_con.setMinimumSize(QtCore.QSize(630, 300))
        self.ConsoleWidget_con.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.ConsoleWidget_con.setObjectName("ConsoleWidget_con")
        self.verticalLayout_5.addWidget(self.ConsoleWidget_con)
        self.gridLayout.addLayout(self.verticalLayout_5, 0, 0, 2, 1)
        self.verticalLayout_6 = QtWidgets.QVBoxLayout()
        self.verticalLayout_6.setObjectName("verticalLayout_6")
        self.TabWidget_data = QtWidgets.QTabWidget(Console)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.Fixed,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.TabWidget_data.sizePolicy().hasHeightForWidth())
        self.TabWidget_data.setSizePolicy(sizePolicy)
        self.TabWidget_data.setMinimumSize(QtCore.QSize(311, 370))
        self.TabWidget_data.setObjectName("TabWidget_data")
        self.tab_ticker = QtWidgets.QWidget()
        self.tab_ticker.setObjectName("tab_ticker")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.tab_ticker)
        self.verticalLayout.setObjectName("verticalLayout")
        self.TableWidget_tickers = QtWidgets.QTableWidget(self.tab_ticker)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.Fixed,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.TableWidget_tickers.sizePolicy().hasHeightForWidth())
        self.TableWidget_tickers.setSizePolicy(sizePolicy)
        self.TableWidget_tickers.setMinimumSize(QtCore.QSize(296, 327))
        self.TableWidget_tickers.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        self.TableWidget_tickers.setAutoScroll(False)
        self.TableWidget_tickers.setEditTriggers(
            QtWidgets.QAbstractItemView.NoEditTriggers)
        self.TableWidget_tickers.setTabKeyNavigation(False)
        self.TableWidget_tickers.setObjectName("TableWidget_tickers")
        self.TableWidget_tickers.setColumnCount(3)
        self.TableWidget_tickers.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_tickers.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_tickers.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_tickers.setHorizontalHeaderItem(2, item)
        self.TableWidget_tickers.verticalHeader().setVisible(False)
        self.verticalLayout.addWidget(self.TableWidget_tickers)
        self.TabWidget_data.addTab(self.tab_ticker, "")
        self.tab_price = QtWidgets.QWidget()
        self.tab_price.setObjectName("tab_price")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab_price)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.TableWidget_prices = QtWidgets.QTableWidget(self.tab_price)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.TableWidget_prices.sizePolicy().hasHeightForWidth())
        self.TableWidget_prices.setSizePolicy(sizePolicy)
        self.TableWidget_prices.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.TableWidget_prices.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.TableWidget_prices.setVerticalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        self.TableWidget_prices.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        self.TableWidget_prices.setSizeAdjustPolicy(
            QtWidgets.QAbstractScrollArea.AdjustToContents)
        self.TableWidget_prices.setEditTriggers(
            QtWidgets.QAbstractItemView.NoEditTriggers)
        self.TableWidget_prices.setSelectionMode(
            QtWidgets.QAbstractItemView.SingleSelection)
        self.TableWidget_prices.setSelectionBehavior(
            QtWidgets.QAbstractItemView.SelectRows)
        self.TableWidget_prices.setGridStyle(QtCore.Qt.DashLine)
        self.TableWidget_prices.setObjectName("TableWidget_prices")
        self.TableWidget_prices.setColumnCount(2)
        self.TableWidget_prices.setRowCount(10)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setVerticalHeaderItem(9, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        brush = QtGui.QBrush(QtGui.QColor(0, 255, 127))
        brush.setStyle(QtCore.Qt.NoBrush)
        item.setBackground(brush)
        self.TableWidget_prices.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        brush = QtGui.QBrush(QtGui.QColor(0, 255, 127))
        brush.setStyle(QtCore.Qt.NoBrush)
        item.setBackground(brush)
        self.TableWidget_prices.setItem(2, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setItem(3, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setItem(4, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setItem(5, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setItem(6, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setItem(7, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setItem(8, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.TableWidget_prices.setItem(9, 0, item)
        self.TableWidget_prices.horizontalHeader().setDefaultSectionSize(125)
        self.TableWidget_prices.horizontalHeader().setStretchLastSection(True)
        self.TableWidget_prices.verticalHeader().setDefaultSectionSize(45)
        self.verticalLayout_2.addWidget(self.TableWidget_prices)
        self.TabWidget_data.addTab(self.tab_price, "")
        self.verticalLayout_6.addWidget(self.TabWidget_data)
        self.gridLayout.addLayout(self.verticalLayout_6, 0, 1, 1, 1)
        spacerItem2 = QtWidgets.QSpacerItem(308, 108,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem2, 1, 1, 1, 1)
        self.horizontalLayout_3.addLayout(self.gridLayout)

        self.retranslateUi(Console)
        self.TabWidget_data.setCurrentIndex(1)
        QtCore.QMetaObject.connectSlotsByName(Console)
Beispiel #10
0
if __name__ == '__main__':
    app = QtWidgets.QApplication([])

    opts_A = \
        {
            'b':
                {
                    'use_slider': True,
                    'minmax': (0, 100),
                    'step': 1,
                    'suffix': '%',
                    'typ': int,
                    'tooltip': 'yay tooltips'
                },

            'c': {'ignore': True}
        }

    functions = Functions(functions=[func_A, func_B],
                          arg_opts=[opts_A, None],
                          scroll=False,
                          orient='V')

    console = ConsoleWidget(parent=functions, namespace={'this': functions})
    functions.main_layout.addWidget(console)
    functions.sig_changed.connect(print)

    functions.show()

    app.exec()
Beispiel #11
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(978, 711)
        icon = QtGui.QIcon()
        icon.addPixmap(
            QtGui.QPixmap(_fromUtf8(":/exterminator/icons/program_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        MainWindow.setToolTip(_fromUtf8(""))
        MainWindow.setWindowFilePath(_fromUtf8(""))
        MainWindow.setTabShape(QtGui.QTabWidget.Rounded)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.verticalLayout_5 = QtGui.QVBoxLayout(self.centralwidget)
        self.verticalLayout_5.setObjectName(_fromUtf8("verticalLayout_5"))
        self.label_4 = QtGui.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_4.setFont(font)
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.verticalLayout_5.addWidget(self.label_4)
        self.overviewComboBox = QtGui.QComboBox(self.centralwidget)
        font = QtGui.QFont()
        font.setBold(True)
        font.setItalic(True)
        font.setWeight(75)
        self.overviewComboBox.setFont(font)
        self.overviewComboBox.setObjectName(_fromUtf8("overviewComboBox"))
        self.verticalLayout_5.addWidget(self.overviewComboBox)
        self.line = QtGui.QFrame(self.centralwidget)
        self.line.setLineWidth(17)
        self.line.setObjectName(_fromUtf8("line"))
        self.verticalLayout_5.addWidget(self.line)
        self.tabWidget = QtGui.QTabWidget(self.centralwidget)
        self.tabWidget.setEnabled(True)
        self.tabWidget.setFocusPolicy(QtCore.Qt.TabFocus)
        self.tabWidget.setAcceptDrops(False)
        self.tabWidget.setAutoFillBackground(False)
        self.tabWidget.setTabPosition(QtGui.QTabWidget.North)
        self.tabWidget.setTabShape(QtGui.QTabWidget.Rounded)
        self.tabWidget.setElideMode(QtCore.Qt.ElideNone)
        self.tabWidget.setDocumentMode(False)
        self.tabWidget.setTabsClosable(False)
        self.tabWidget.setMovable(True)
        self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
        self.tab_tiles = QtGui.QWidget()
        self.tab_tiles.setObjectName(_fromUtf8("tab_tiles"))
        self.horizontalLayout = QtGui.QHBoxLayout(self.tab_tiles)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.splitter = QtGui.QSplitter(self.tab_tiles)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName(_fromUtf8("splitter"))
        self.treeDataTiles = QtGui.QTreeWidget(self.splitter)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.treeDataTiles.sizePolicy().hasHeightForWidth())
        self.treeDataTiles.setSizePolicy(sizePolicy)
        self.treeDataTiles.setWhatsThis(
            _fromUtf8(
                "This is widget where in tree maner all input data are presented.\n"
                "This can be composed just from one detector (in. example BSE) images, or can be complicated more than ten element mappings.\n"
                "This is not interactive view. If this doesn\'t work after importing or appending data something is broken."
            ))
        self.treeDataTiles.setObjectName(_fromUtf8("treeDataTiles"))
        self.treeDataTiles.headerItem().setText(0, _fromUtf8("data files"))
        self.verticalLayoutWidget = QtGui.QWidget(self.splitter)
        self.verticalLayoutWidget.setObjectName(
            _fromUtf8("verticalLayoutWidget"))
        self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.label_2 = QtGui.QLabel(self.verticalLayoutWidget)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.verticalLayout.addWidget(self.label_2)
        self.plainTextEdit = QtGui.QPlainTextEdit(self.verticalLayoutWidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding,
                                       QtGui.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.plainTextEdit.sizePolicy().hasHeightForWidth())
        self.plainTextEdit.setSizePolicy(sizePolicy)
        self.plainTextEdit.setMinimumSize(QtCore.QSize(200, 100))
        self.plainTextEdit.setWhatsThis(
            _fromUtf8(
                "Not inteactive text widget which gets and presents statistics of widget above (data widget)"
            ))
        self.plainTextEdit.setReadOnly(True)
        self.plainTextEdit.setPlainText(_fromUtf8(""))
        self.plainTextEdit.setObjectName(_fromUtf8("plainTextEdit"))
        self.verticalLayout.addWidget(self.plainTextEdit)
        self.horizontalLayout.addWidget(self.splitter)
        self.tabWidget.addTab(self.tab_tiles, _fromUtf8(""))
        self.tab_param = QtGui.QWidget()
        self.tab_param.setEnabled(True)
        self.tab_param.setObjectName(_fromUtf8("tab_param"))
        self.gridLayout_4 = QtGui.QGridLayout(self.tab_param)
        self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4"))
        self.splitter_2 = QtGui.QSplitter(self.tab_param)
        self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
        self.splitter_2.setObjectName(_fromUtf8("splitter_2"))
        self.gridLayoutWidget = QtGui.QWidget(self.splitter_2)
        self.gridLayoutWidget.setObjectName(_fromUtf8("gridLayoutWidget"))
        self.gridLayout_3 = QtGui.QGridLayout(self.gridLayoutWidget)
        self.gridLayout_3.setMargin(0)
        self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
        self.treeParameters = ParameterTree(self.gridLayoutWidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding,
                                       QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.treeParameters.sizePolicy().hasHeightForWidth())
        self.treeParameters.setSizePolicy(sizePolicy)
        self.treeParameters.setMinimumSize(QtCore.QSize(280, 0))
        self.treeParameters.setObjectName(_fromUtf8("treeParameters"))
        self.gridLayout_3.addWidget(self.treeParameters, 0, 0, 1, 1)
        self.setAsDefault = QtGui.QPushButton(self.gridLayoutWidget)
        self.setAsDefault.setObjectName(_fromUtf8("setAsDefault"))
        self.gridLayout_3.addWidget(self.setAsDefault, 1, 0, 1, 1)
        self.gridLayout_4.addWidget(self.splitter_2, 0, 0, 1, 1)
        self.tabWidget.addTab(self.tab_param, _fromUtf8(""))
        self.tab_filters = QtGui.QWidget()
        self.tab_filters.setObjectName(_fromUtf8("tab_filters"))
        self.verticalLayout_7 = QtGui.QVBoxLayout(self.tab_filters)
        self.verticalLayout_7.setObjectName(_fromUtf8("verticalLayout_7"))
        self.splitter_3 = QtGui.QSplitter(self.tab_filters)
        self.splitter_3.setOrientation(QtCore.Qt.Vertical)
        self.splitter_3.setObjectName(_fromUtf8("splitter_3"))
        self.filtersTreeView = ParameterTree(self.splitter_3)
        self.filtersTreeView.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)
        self.filtersTreeView.setAlternatingRowColors(True)
        self.filtersTreeView.setObjectName(_fromUtf8("filtersTreeView"))
        self.filterParamView = ParameterTree(self.splitter_3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum,
                                       QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.filterParamView.sizePolicy().hasHeightForWidth())
        self.filterParamView.setSizePolicy(sizePolicy)
        self.filterParamView.setMinimumSize(QtCore.QSize(0, 40))
        self.filterParamView.setMaximumSize(QtCore.QSize(16777215, 100))
        self.filterParamView.setObjectName(_fromUtf8("filterParamView"))
        self.verticalLayout_7.addWidget(self.splitter_3)
        self.tabWidget.addTab(self.tab_filters, _fromUtf8(""))
        self.tab_finish = QtGui.QWidget()
        self.tab_finish.setObjectName(_fromUtf8("tab_finish"))
        self.verticalLayout_3 = QtGui.QVBoxLayout(self.tab_finish)
        self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
        self.treeFinalWidget = QtGui.QTreeWidget(self.tab_finish)
        self.treeFinalWidget.setObjectName(_fromUtf8("treeFinalWidget"))
        self.treeFinalWidget.headerItem().setText(
            0, _fromUtf8("stuff (do not edit!)"))
        self.treeFinalWidget.headerItem().setText(
            1, _fromUtf8("final names and titles (editable)"))
        self.verticalLayout_3.addWidget(self.treeFinalWidget)
        self.tabWidget.addTab(self.tab_finish, _fromUtf8(""))
        self.verticalLayout_5.addWidget(self.tabWidget)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 978, 20))
        self.menubar.setFocusPolicy(QtCore.Qt.NoFocus)
        self.menubar.setObjectName(_fromUtf8("menubar"))
        self.menuFile = QtGui.QMenu(self.menubar)
        self.menuFile.setObjectName(_fromUtf8("menuFile"))
        self.menuEdit = QtGui.QMenu(self.menubar)
        self.menuEdit.setObjectName(_fromUtf8("menuEdit"))
        self.menuHelp = QtGui.QMenu(self.menubar)
        self.menuHelp.setObjectName(_fromUtf8("menuHelp"))
        self.menuView = QtGui.QMenu(self.menubar)
        self.menuView.setObjectName(_fromUtf8("menuView"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)
        self.toolBar = QtGui.QToolBar(MainWindow)
        self.toolBar.setMouseTracking(False)
        self.toolBar.setFocusPolicy(QtCore.Qt.NoFocus)
        self.toolBar.setWhatsThis(
            _fromUtf8("Toolbar, what else did you expect?"))
        self.toolBar.setMovable(True)
        self.toolBar.setIconSize(QtCore.QSize(64, 64))
        self.toolBar.setObjectName(_fromUtf8("toolBar"))
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.overviewWidget = QtGui.QDockWidget(MainWindow)
        self.overviewWidget.setEnabled(True)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.overviewWidget.sizePolicy().hasHeightForWidth())
        self.overviewWidget.setSizePolicy(sizePolicy)
        self.overviewWidget.setMinimumSize(QtCore.QSize(350, 150))
        self.overviewWidget.setToolTip(
            _fromUtf8("widget with vector\n"
                      "representation of the tiles"))
        self.overviewWidget.setAccessibleName(_fromUtf8(""))
        self.overviewWidget.setAccessibleDescription(_fromUtf8(""))
        self.overviewWidget.setFloating(True)
        self.overviewWidget.setFeatures(
            QtGui.QDockWidget.AllDockWidgetFeatures)
        self.overviewWidget.setWindowTitle(
            _fromUtf8("graphical overview of the tiles"))
        self.overviewWidget.setObjectName(_fromUtf8("overviewWidget"))
        self.dockWidgetContents = QtGui.QWidget()
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.dockWidgetContents.sizePolicy().hasHeightForWidth())
        self.dockWidgetContents.setSizePolicy(sizePolicy)
        self.dockWidgetContents.setObjectName(_fromUtf8("dockWidgetContents"))
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.dockWidgetContents)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.graphicalOverview = GraphicsLayoutWidget(self.dockWidgetContents)
        self.graphicalOverview.setObjectName(_fromUtf8("graphicalOverview"))
        self.verticalLayout_2.addWidget(self.graphicalOverview)
        self.overviewWidget.setWidget(self.dockWidgetContents)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1),
                                 self.overviewWidget)
        self.consoleWidget = QtGui.QDockWidget(MainWindow)
        self.consoleWidget.setWindowTitle(_fromUtf8("python console / debug"))
        self.consoleWidget.setObjectName(_fromUtf8("consoleWidget"))
        self.dockWidgetContents_2 = QtGui.QWidget()
        self.dockWidgetContents_2.setObjectName(
            _fromUtf8("dockWidgetContents_2"))
        self.verticalLayout_4 = QtGui.QVBoxLayout(self.dockWidgetContents_2)
        self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
        self.pythonConsole = ConsoleWidget(self.dockWidgetContents_2)
        self.pythonConsole.setObjectName(_fromUtf8("pythonConsole"))
        self.verticalLayout_4.addWidget(self.pythonConsole)
        self.consoleWidget.setWidget(self.dockWidgetContents_2)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(8),
                                 self.consoleWidget)
        self.stitchWidget = QtGui.QDockWidget(MainWindow)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.stitchWidget.sizePolicy().hasHeightForWidth())
        self.stitchWidget.setSizePolicy(sizePolicy)
        self.stitchWidget.setFloating(False)
        self.stitchWidget.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures)
        self.stitchWidget.setWindowTitle(_fromUtf8("image stitching preview"))
        self.stitchWidget.setObjectName(_fromUtf8("stitchWidget"))
        self.dockWidgetContents_5 = QtGui.QWidget()
        self.dockWidgetContents_5.setObjectName(
            _fromUtf8("dockWidgetContents_5"))
        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.dockWidgetContents_5)
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.graphicsView = GraphicsView(self.dockWidgetContents_5)
        self.graphicsView.setObjectName(_fromUtf8("graphicsView"))
        self.horizontalLayout_2.addWidget(self.graphicsView)
        self.stitchWidget.setWidget(self.dockWidgetContents_5)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2),
                                 self.stitchWidget)
        self.filterDockWidget = QtGui.QDockWidget(MainWindow)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.filterDockWidget.sizePolicy().hasHeightForWidth())
        self.filterDockWidget.setSizePolicy(sizePolicy)
        self.filterDockWidget.setMinimumSize(QtCore.QSize(300, 242))
        self.filterDockWidget.setObjectName(_fromUtf8("filterDockWidget"))
        self.dockWidgetContents_3 = QtGui.QWidget()
        self.dockWidgetContents_3.setObjectName(
            _fromUtf8("dockWidgetContents_3"))
        self.gridLayout = QtGui.QGridLayout(self.dockWidgetContents_3)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.label_3 = QtGui.QLabel(self.dockWidgetContents_3)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.originalView = ImageView(self.dockWidgetContents_3)
        self.originalView.setObjectName(_fromUtf8("originalView"))
        self.gridLayout.addWidget(self.originalView, 1, 0, 1, 1)
        self.filteredView = ImageView(self.dockWidgetContents_3)
        self.filteredView.setObjectName(_fromUtf8("filteredView"))
        self.gridLayout.addWidget(self.filteredView, 3, 0, 1, 1)
        self.label = QtGui.QLabel(self.dockWidgetContents_3)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.filterDockWidget.setWidget(self.dockWidgetContents_3)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2),
                                 self.filterDockWidget)
        self.actionAbout = QtGui.QAction(MainWindow)
        self.actionAbout.setObjectName(_fromUtf8("actionAbout"))
        self.actionImportDataFolder = QtGui.QAction(MainWindow)
        self.actionImportDataFolder.setEnabled(True)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(
            QtGui.QPixmap(
                _fromUtf8(":/exterminator/icons/import_from_dir.svg")),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionImportDataFolder.setIcon(icon1)
        self.actionImportDataFolder.setObjectName(
            _fromUtf8("actionImportDataFolder"))
        self.actionImportMetadata = QtGui.QAction(MainWindow)
        self.actionImportMetadata.setEnabled(False)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(
            QtGui.QPixmap(_fromUtf8(":/exterminator/icons/import_rtj.svg")),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionImportMetadata.setIcon(icon2)
        self.actionImportMetadata.setObjectName(
            _fromUtf8("actionImportMetadata"))
        self.actionExportHdf5 = QtGui.QAction(MainWindow)
        self.actionExportHdf5.setEnabled(False)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(
            QtGui.QPixmap(_fromUtf8(":/exterminator/icons/export_hdf5.svg")),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionExportHdf5.setIcon(icon3)
        self.actionExportHdf5.setObjectName(_fromUtf8("actionExportHdf5"))
        self.actionExportImages = QtGui.QAction(MainWindow)
        self.actionExportImages.setEnabled(False)
        icon4 = QtGui.QIcon()
        icon4.addPixmap(
            QtGui.QPixmap(_fromUtf8(":/exterminator/icons/export_images.svg")),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionExportImages.setIcon(icon4)
        self.actionExportImages.setObjectName(_fromUtf8("actionExportImages"))
        self.actionQuit = QtGui.QAction(MainWindow)
        icon5 = QtGui.QIcon()
        icon5.addPixmap(
            QtGui.QPixmap(
                _fromUtf8(":/exterminator/icons/system-log-out.svg")),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionQuit.setIcon(icon5)
        self.actionQuit.setShortcutContext(QtCore.Qt.ApplicationShortcut)
        self.actionQuit.setObjectName(_fromUtf8("actionQuit"))
        self.actionClear = QtGui.QAction(MainWindow)
        icon6 = QtGui.QIcon()
        icon6.addPixmap(
            QtGui.QPixmap(_fromUtf8(":/exterminator/icons/edit-delete.svg")),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionClear.setIcon(icon6)
        self.actionClear.setObjectName(_fromUtf8("actionClear"))
        self.actionChangelog = QtGui.QAction(MainWindow)
        self.actionChangelog.setObjectName(_fromUtf8("actionChangelog"))
        self.actionAbout_Qt = QtGui.QAction(MainWindow)
        self.actionAbout_Qt.setObjectName(_fromUtf8("actionAbout_Qt"))
        self.actionDynamicWidgets = QtGui.QAction(MainWindow)
        self.actionDynamicWidgets.setCheckable(True)
        self.actionDynamicWidgets.setChecked(True)
        self.actionDynamicWidgets.setText(
            _fromUtf8("toggle dynamic visibility of widgets"))
        self.actionDynamicWidgets.setToolTip(
            _fromUtf8(
                "uncheck to prevent closing/showing graphical dockable widgets by changing tabs in main window"
            ))
        self.actionDynamicWidgets.setObjectName(
            _fromUtf8("actionDynamicWidgets"))
        self.menuFile.addAction(self.actionImportDataFolder)
        self.menuFile.addAction(self.actionImportMetadata)
        self.menuFile.addAction(self.actionExportImages)
        self.menuFile.addAction(self.actionExportHdf5)
        self.menuFile.addSeparator()
        self.menuFile.addAction(self.actionQuit)
        self.menuEdit.addAction(self.actionClear)
        self.menuHelp.addAction(self.actionAbout)
        self.menuHelp.addAction(self.actionChangelog)
        self.menuHelp.addSeparator()
        self.menuHelp.addAction(self.actionAbout_Qt)
        self.menuView.addAction(self.actionDynamicWidgets)
        self.menuView.addSeparator()
        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuEdit.menuAction())
        self.menubar.addAction(self.menuView.menuAction())
        self.menubar.addAction(self.menuHelp.menuAction())
        self.toolBar.addAction(self.actionImportDataFolder)
        self.toolBar.addAction(self.actionImportMetadata)
        self.toolBar.addAction(self.actionExportImages)
        self.toolBar.addAction(self.actionExportHdf5)
        self.toolBar.addAction(self.actionClear)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QObject.connect(self.actionQuit,
                               QtCore.SIGNAL(_fromUtf8("triggered()")),
                               MainWindow.close)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        MainWindow.setTabOrder(self.overviewComboBox, self.tabWidget)
        MainWindow.setTabOrder(self.tabWidget, self.treeDataTiles)
        MainWindow.setTabOrder(self.treeDataTiles, self.plainTextEdit)
        MainWindow.setTabOrder(self.plainTextEdit, self.treeParameters)
        MainWindow.setTabOrder(self.treeParameters, self.setAsDefault)
        MainWindow.setTabOrder(self.setAsDefault, self.filtersTreeView)
        MainWindow.setTabOrder(self.filtersTreeView, self.filterParamView)
        MainWindow.setTabOrder(self.filterParamView, self.treeFinalWidget)
        MainWindow.setTabOrder(self.treeFinalWidget, self.graphicalOverview)
        MainWindow.setTabOrder(self.graphicalOverview, self.graphicsView)
        MainWindow.setTabOrder(self.graphicsView, self.originalView)
        MainWindow.setTabOrder(self.originalView, self.filteredView)
Beispiel #12
0
    def __init__(self, app_handle = None):
        super().__init__()
        self.app_handle = app_handle
        if os.name == 'posix':
            pyecog_string = '🇵 🇾 🇪 🇨 🇴 🇬'
        else:
            pyecog_string = 'PyEcog'
        print('\n',pyecog_string,'\n')

        # Initialize Main Window geometry
        # self.title = "ℙ𝕪𝔼𝕔𝕠𝕘"
        self.title = pyecog_string
        (size, rect) = self.get_available_screen()
        icon_file = pkg_resources.resource_filename('pyecog2', 'icons/icon.png')
        print('ICON:', icon_file)
        self.setWindowIcon(QtGui.QIcon(icon_file))
        self.app_handle.setWindowIcon(QtGui.QIcon(icon_file))
        self.setWindowTitle(self.title)
        self.setGeometry(0, 0, size.width(), size.height())
        # self.setWindowFlags(QtCore.Qt.FramelessWindowHint) # fooling around
        # self.setWindowFlags(QtCore.Qt.CustomizeWindowHint| QtCore.Qt.Tool)
        # self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.main_model = MainModel()
        self.autosave_timer = QtCore.QTimer()
        self.live_recording_timer = QtCore.QTimer()

        # Populate Main window with widgets
        # self.createDockWidget()
        self.dock_list = {}
        self.paired_graphics_view = PairedGraphicsView(parent=self)

        self.tree_element = FileTreeElement(parent=self)
        self.main_model.sigProjectChanged.connect(lambda: self.tree_element.set_rootnode_from_project(self.main_model.project))
        self.dock_list['File Tree'] = QDockWidget("File Tree", self)
        self.dock_list['File Tree'].setWidget(self.tree_element.widget)
        self.dock_list['File Tree'].setFloating(False)
        self.dock_list['File Tree'].setObjectName("File Tree")
        self.dock_list['File Tree'].setAllowedAreas(Qt.RightDockWidgetArea | Qt.LeftDockWidgetArea | Qt.TopDockWidgetArea | Qt.BottomDockWidgetArea)
        self.dock_list['File Tree'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable)

        self.plot_controls = PlotControls(self.main_model)
        self.plot_controls.sigUpdateXrange_i.connect(self.paired_graphics_view.insetview_set_xrange)
        self.plot_controls.sigUpdateXrange_o.connect(self.paired_graphics_view.overview_set_xrange)
        self.plot_controls.sigUpdateFilter.connect(self.paired_graphics_view.updateFilterSettings)
        self.dock_list['Plot Controls'] = QDockWidget("Plot controls", self)
        self.dock_list['Plot Controls'].setWidget(self.plot_controls)
        self.dock_list['Plot Controls'].setFloating(False)
        self.dock_list['Plot Controls'].setObjectName("Plot Controls")
        self.dock_list['Plot Controls'].setAllowedAreas(
            Qt.RightDockWidgetArea | Qt.LeftDockWidgetArea | Qt.TopDockWidgetArea | Qt.BottomDockWidgetArea)
        self.dock_list['Plot Controls'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable)

        self.dock_list['Hints'] = QDockWidget("Hints", self)
        self.text_edit = QTextBrowser()
        hints_file = pkg_resources.resource_filename('pyecog2', 'HelperHints.md')
        # text = open('HelperHints.md').read()
        print('hints file:',hints_file)
        text = open(hints_file).read()
        text = text.replace('icons/banner_small.png',pkg_resources.resource_filename('pyecog2', 'icons/banner_small.png'))
        self.text_edit.setMarkdown(text)
        self.dock_list['Hints'].setWidget(self.text_edit)
        self.dock_list['Hints'].setObjectName("Hints")
        # self.dock_list['Hints'].setFloating(False)
        # self.dock_list['Hints'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable)

        self.annotation_table = AnnotationTableWidget(self.main_model.annotations,self) # passing self as parent in position 2
        self.dock_list['Annotations Table'] = QDockWidget("Annotations Table", self)
        self.dock_list['Annotations Table'].setWidget(self.annotation_table)
        self.dock_list['Annotations Table'].setObjectName("Annotations Table")
        self.dock_list['Annotations Table'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable)

        self.annotation_parameter_tree = AnnotationParameterTee(self.main_model.annotations)
        self.dock_list['Annotation Parameter Tree'] = QDockWidget("Annotation Parameter Tree", self)
        self.dock_list['Annotation Parameter Tree'].setWidget(self.annotation_parameter_tree)
        self.dock_list['Annotation Parameter Tree'].setObjectName("Annotation Parameter Tree")
        self.dock_list['Annotation Parameter Tree'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable)

        self.video_element = VideoWindow(project=self.main_model.project)
        self.dock_list['Video'] = QDockWidget("Video", self)
        self.dock_list['Video'].setWidget(self.video_element)
        self.dock_list['Video'].setObjectName("Video")
        # self.dock_list['Video'].setFloating(True)
        # self.dock_list['Video'].hide()
        self.video_element.mediaPlayer.setNotifyInterval(40) # 25 fps
        # Video units are in miliseconds, pyecog units are in seconds
        self.video_element.sigTimeChanged.connect(self.main_model.set_time_position)
        self.main_model.sigTimeChanged.connect(self.video_element.setGlobalPosition)

        self.dock_list['FFT'] = QDockWidget("FFT", self)
        self.dock_list['FFT'].setWidget(FFTwindow(self.main_model))
        self.dock_list['FFT'].setObjectName("FFT")
        # self.dock_list['FFT'].hide()

        self.dock_list['Wavelet'] = QDockWidget("Wavelet", self)
        self.dock_list['Wavelet'].setWidget(WaveletWindow(self.main_model))
        self.dock_list['Wavelet'].setObjectName("Wavelet")
        # self.dock_list['Wavelet'].hide()

        self.dock_list['Console'] = QDockWidget("Console", self)
        self.dock_list['Console'].setWidget(ConsoleWidget(namespace={'MainWindow':self}))
        self.dock_list['Console'].setObjectName("Console")
        self.dock_list['Console'].hide()

        self.build_menubar()

        self.setCentralWidget(self.paired_graphics_view.splitter)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['Console'])
        self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['File Tree'])
        self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['Hints'])
        self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['Plot Controls'])
        self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['Video'])
        self.addDockWidget(Qt.RightDockWidgetArea, self.dock_list['Annotation Parameter Tree'])
        self.addDockWidget(Qt.RightDockWidgetArea, self.dock_list['Annotations Table'])
        self.addDockWidget(Qt.RightDockWidgetArea, self.dock_list['FFT'])
        self.setCorner(Qt.BottomLeftCorner,Qt.LeftDockWidgetArea)
        self.setCorner(Qt.BottomRightCorner,Qt.RightDockWidgetArea)
        self.addDockWidget(Qt.BottomDockWidgetArea, self.dock_list['Wavelet'])
        # self.tabifyDockWidget(self.dock_list['Hints'], self.dock_list['File Tree'])
        self.resizeDocks([self.dock_list['File Tree'], self.dock_list['Hints'], self.dock_list['Plot Controls'],self.dock_list['Video']],[350,100,100,300],Qt.Vertical)
        self.resizeDocks([self.dock_list['Wavelet']],[400],Qt.Vertical)
        self.resizeDocks([self.dock_list['Video']],[400],Qt.Vertical)
        self.resizeDocks([self.dock_list['Video']],[400],Qt.Horizontal)
        self.resizeDocks([self.dock_list['FFT']],[400],Qt.Vertical)
        self.resizeDocks([self.dock_list['FFT']],[400],Qt.Horizontal)

        settings = QSettings("PyEcog","PyEcog")
        settings.beginGroup("StandardMainWindow")
        settings.setValue("windowGeometry", self.saveGeometry())
        settings.setValue("windowState", self.saveState())
        settings.setValue("darkMode", False)
        settings.setValue("autoSave", True)
        settings.endGroup()

        self.settings = QSettings("PyEcog", "PyEcog")
        print("reading configurations from: " + self.settings.fileName())
        self.settings.beginGroup("MainWindow")
        # print(self.settings.value("windowGeometry", type=QByteArray))
        self.restoreGeometry(self.settings.value("windowGeometry", type=QByteArray))
        self.restoreState(self.settings.value("windowState", type=QByteArray))

        self.action_darkmode.setChecked(self.settings.value("darkMode",type=bool))
        self.toggle_darkmode()  # pre toggle darkmode to make sure project loading dialogs are made with the correct color pallete
        try:
            settings = QSettings("PyEcog","PyEcog")
            settings.beginGroup("ProjectSettings")
            fname = settings.value("ProjectFileName")
            self.show()
            if fname.endswith('.pyecog'):
                print('Loading last opened Project:', fname)
                self.load_project(fname)
            else:
                print('Loading last opened directory:', fname)
                self.load_directory(fname)
        except Exception as e:
            print('ERROR in tree build')
            print(e)

        self.action_darkmode.setChecked(self.settings.value("darkMode",type=bool))
        self.toggle_darkmode() # toggle again darkmode just to make sure the wavelet window and FFT are updated as well
        self.action_autosave.setChecked(self.settings.value("autoSave",type=bool))
        self.toggle_auto_save()
Beispiel #13
0
def save():
    global state
    state = area.saveState()
    restoreBtn.setEnabled(True)


def load():
    global state
    area.restoreState(state)


saveBtn.clicked.connect(save)
restoreBtn.clicked.connect(load)

w2 = ConsoleWidget()
d2.addWidget(w2)

## Hide title bar on dock 3
d3.hideTitleBar()
w3 = pg.PlotWidget(title="Plot inside dock with no title bar")
w3.plot(np.random.normal(size=100))
d3.addWidget(w3)

w4 = pg.PlotWidget(title="Dock 4 plot")
w4.plot(np.random.normal(size=100))
d4.addWidget(w4)

w5 = pg.ImageView()
w5.setImage(np.random.normal(size=(100, 100)))
d5.addWidget(w5)
Beispiel #14
0
from pyqtgraph.console import ConsoleWidget


def f(a: int = 1, b: float = 3.14, c: str = 'yay', d: bool = True):
    pass


if __name__ == '__main__':
    app = QtWidgets.QApplication([])

    opts = \
        {
            'b':
                {
                    'use_slider': True,
                    'minmax': (0, 100),
                    'step': 1,
                    'suffix': '%',
                    'typ': int,
                    'tooltip': 'yay tooltips'
                }
        }

    func = Function(f, arg_opts=opts)
    func.widget.show()

    console = ConsoleWidget(parent=func.widget, namespace={'this': func})
    func.vlayout.addWidget(console)

    app.exec()