コード例 #1
0
 def setupUi(self, MainWindow):
     Form.setupUi(self, MainWindow)
     self.comboBoxSpace.currentIndexChanged[str].connect(
         self.onSpaceChanged)
     self.comboBoxParam.currentIndexChanged[str].connect(
         partial(self.onValueChangedString, 'parameter'))
     self.loadButton.clicked.connect(self.onLoad)
     self.namedTimespanComboBox.addItems(['Select timespan ...'] +
                                         timespans)
     self.namedTimespanComboBox.currentIndexChanged[str].connect(
         self.onNamedTimespan)
     self.onRefresh()
     if self.parameters.space is not None:
         self.comboBoxSpace.setCurrentIndex(
             self.comboBoxSpace.findText(self.parameters.space))
     if self.parameters.parameter is not None:
         self.comboBoxParam.setCurrentIndex(
             self.comboBoxParam.findText(self.parameters.parameter))
     if self.parameters.fromTime is not None:
         self.dateTimeEditFrom.setDateTime(self.parameters.fromTime)
     self.dateTimeEditFrom.dateTimeChanged.connect(
         partial(self.onValueChangedDateTime, 'fromTime'))
     self.toolButtonRefresh.clicked.connect(self.onRefresh)
     self.onSpaceChanged(self.parameters.space)
     self.dataModel = GenericTableModel(self.config, list(
     ), "ValueHistory", ["Date", "Value"], [
         lambda t: t.astimezone(tzlocal()).strftime('%Y-%m-%d %H:%M:%S'),
         str
     ])
     self.tableView.setModel(self.dataModel)
     restoreGuiState(self, self.config.get('ValueHistory.guiState'))
コード例 #2
0
 def setupUi(self, parent):
     DDSForm.setupUi(self, parent)
     self.ddsTableModel = DDSTableModel(self.ddsChannels, self.globalDict)
     self.tableView.setModel(self.ddsTableModel)
     self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
     self.tableView.setItemDelegateForColumn(2, self.delegate)
     self.tableView.setItemDelegateForColumn(3, self.delegate)
     self.tableView.setItemDelegateForColumn(4, self.delegate)
     self.applyButton.clicked.connect(self.onApply)
     self.resetButton.clicked.connect(self.onReset)
     self.writeAllButton.clicked.connect(self.onWriteAll)
     self.autoApplyBox.setChecked(self.autoApply)
     self.autoApplyBox.stateChanged.connect(self.onStateChanged)
     try:
         self.onWriteAll()
     except Exception as e:
         logging.getLogger(__name__).warning(
             "Ignored error while setting DDS: {0}".format(e))
     self.onApply()
     self.ddsTableModel.frequencyChanged.connect(self.onFrequency)
     self.ddsTableModel.phaseChanged.connect(self.onPhase)
     self.ddsTableModel.amplitudeChanged.connect(self.onAmplitude)
     self.ddsTableModel.enableChanged.connect(self.onEnableChanged)
     self.ddsTableModel.squareChanged.connect(self.onSquareChanged)
     self.pulser.shutterChanged.connect(self.onShutterChanged)
     restoreGuiState(self, self.config.get(self.guiStateConfigName))
コード例 #3
0
 def setupUi(self, parent):
     VoltageAdjustForm.setupUi(self, parent)
     self.lineBox.globalDict = self.settings.adjust.globalDict
     self.lineGainBox.globalDict = self.settings.adjust.globalDict
     self.globalGainBox.globalDict = self.settings.adjust.globalDict
     self.lineBox.setExpression( self.adjust._line )
     self.currentLineDisplay.setText(str(self.adjust._line))
     self.lineGainBox.setExpression( self.adjust._lineGain )
     self.globalGainBox.setExpression( self.adjust._globalGain )
     self.adjust.dataChanged.connect(self.onExpressionChanged)
     self.triggerButton.clicked.connect( self.onTrigger )
     # Shuttling
     self.addEdgeButton.clicked.connect( self.addShuttlingEdge )
     self.removeEdgeButton.clicked.connect( self.removeShuttlingEdge )
     self.shuttleEdgeTableModel = ShuttleEdgeTableModel(self.config, self.shuttlingGraph)
     self.delegate = ComboBoxDelegate()
     self.edgeTableView.setModel(self.shuttleEdgeTableModel)
     self.edgeTableView.setItemDelegateForColumn( 8, self.delegate )
     self.edgeTableView.setItemDelegateForColumn(10, self.delegate )
     self.currentPositionLabel.setText( firstNotNone( self.shuttlingGraph.currentPositionName, "" ) )
     self.shuttlingGraph.currentPositionObservable.subscribe( self.onCurrentPositionEvent )
     self.shuttlingGraph.graphChangedObservable.subscribe( self.setupGraphDependent )
     self.setupGraphDependent()
     self.uploadDataButton.clicked.connect( self.onUploadData )
     self.uploadEdgesButton.clicked.connect( self.onUploadEdgesButton )
     restoreGuiState(self, self.config.get('VoltageAdjust.GuiState'))
     self.destinationComboBox.currentIndexChanged[str].connect( self.onShuttleSequence )
     self.shuttlingRouteEdit.setText( " ".join(self.settings.shuttlingRoute) )
     self.shuttlingRouteEdit.editingFinished.connect( self.onSetShuttlingRoute )
     self.shuttlingRouteButton.clicked.connect( self.onShuttlingRoute )
     self.repetitionBox.setValue(self.settings.shuttlingRepetitions)
     self.repetitionBox.valueChanged.connect( self.onShuttlingRepetitions )
コード例 #4
0
 def setupUi(self, parent):
     Form.setupUi(self, parent)
     self.actionRun.triggered.connect( self.onRun )
     self.actionStop.triggered.connect( self.onStop )
     self.actionSingle.triggered.connect( self.onSingle )
     self._graphicsView = self.graphicsLayout._graphicsView
     self.signalTableModel = LogicAnalyzerSignalTableModel(self.config, self.channelNameData)
     self.signalTableView.setModel(self.signalTableModel)
     self.signalTableView.resizeColumnsToContents()
     if 'LogicAnalyzer.State' in self.config:
         self.restoreState(self.config['LogicAnalyzer.State'])
     self.signalTableModel.enableChanged.connect( self.refresh )
     
     self.headerView =  RotatedHeaderView(QtCore.Qt.Horizontal )
     self.traceTableView.setHorizontalHeader( self.headerView )
     self.traceTableModel = LogicAnalyzerTraceTableModel(self.config, self.signalTableModel)
     self.traceTableView.setModel( self.traceTableModel )
     self.traceTableView.resizeColumnsToContents()
     
     self.traceTableView.doubleClicked.connect( self.traceTableModel.setReferenceTimeCell )
     # Context Menu for Table
     self.signalTableView.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
     self.hideSelectedAction = QtWidgets.QAction( "hide selected", self)
     self.showSelectedAction = QtWidgets.QAction( "show selected", self)
     self.hideSelectedAction.triggered.connect( partial(self.onShow,  False) )
     self.showSelectedAction.triggered.connect( partial(self.onShow,  True) )
     self.signalTableView.addAction( self.hideSelectedAction )
     self.signalTableView.addAction( self.showSelectedAction )
     restoreGuiState( self, self.config.get('LogicAnalyzer.guiState') )
コード例 #5
0
    def setupUi(self, parent):
        Form.setupUi(self, parent)
        self.actionRun.triggered.connect(self.onRun)
        self.actionStop.triggered.connect(self.onStop)
        self.actionSingle.triggered.connect(self.onSingle)
        self._graphicsView = self.graphicsLayout._graphicsView
        self.signalTableModel = LogicAnalyzerSignalTableModel(
            self.config, self.channelNameData)
        self.signalTableView.setModel(self.signalTableModel)
        self.signalTableView.resizeColumnsToContents()
        if 'LogicAnalyzer.State' in self.config:
            self.restoreState(self.config['LogicAnalyzer.State'])
        self.signalTableModel.enableChanged.connect(self.refresh)

        self.headerView = RotatedHeaderView(QtCore.Qt.Horizontal)
        self.traceTableView.setHorizontalHeader(self.headerView)
        self.traceTableModel = LogicAnalyzerTraceTableModel(
            self.config, self.signalTableModel)
        self.traceTableView.setModel(self.traceTableModel)
        self.traceTableView.resizeColumnsToContents()

        self.traceTableView.doubleClicked.connect(
            self.traceTableModel.setReferenceTimeCell)
        # Context Menu for Table
        self.signalTableView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
        self.hideSelectedAction = QtWidgets.QAction("hide selected", self)
        self.showSelectedAction = QtWidgets.QAction("show selected", self)
        self.hideSelectedAction.triggered.connect(partial(self.onShow, False))
        self.showSelectedAction.triggered.connect(partial(self.onShow, True))
        self.signalTableView.addAction(self.hideSelectedAction)
        self.signalTableView.addAction(self.showSelectedAction)
        restoreGuiState(self, self.config.get('LogicAnalyzer.guiState'))
コード例 #6
0
 def setupUi(self):
     model = PulserParameterModel(self.parameterList)
     self.setModel(model)
     self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
     self.setItemDelegateForColumn(1, self.delegate)
     restoreGuiState( self, self.config.get(self.configName+'.guiState'))
     try:
         self.restoreTreeMarkup(self.config.get(self.configName + '.treeMarkup', None))
         self.restoreTreeColumnWidth(self.config.get(self.configName + '.treeColumnWidth', None))
     except Exception as e:
         logging.getLogger(__name__).error("unable to restore tree state in {0}: {1}".format(self.configName, e))
     self.isSetup = True
コード例 #7
0
    def setupUi(self, parent):
        Form.setupUi(self, parent)
        self.model = GlobalVariablesModel(self.config, self._globalDict_)
        self.model.showGrid = self.config.get(self.configName+".showGrid", True)
        self.showGridButton.setChecked( self.model.showGrid )

        self.view.setModel(self.model)
        self.nameDelegate = GridDelegate()
        self.valueDelegate = MagnitudeSpinBoxGridDelegate()
        self.view.setItemDelegateForColumn(self.model.column.name, self.nameDelegate)
        self.view.setItemDelegateForColumn(self.model.column.value, self.valueDelegate)
        restoreGuiState( self, self.config.get(self.configName+".guiState") )
        try:
            self.view.restoreTreeMarkup(self.config.get(self.configName + '.treeMarkup', None))
            self.view.restoreTreeColumnWidth(self.config.get(self.configName + '.treeColumnWidth', None))
        except Exception as e:
            logging.getLogger(__name__).error("unable to restore tree state in {0}: {1}".format(self.configName, e))

        #signals
        self.newNameEdit.returnPressed.connect( self.onAddVariable )
        self.addButton.clicked.connect( self.onAddVariable )
        self.dropButton.clicked.connect( self.view.onDelete )
        self.collapseAllButton.clicked.connect( self.view.collapseAll )
        self.expandAllButton.clicked.connect( self.view.expandAll )
        self.model.globalRemoved.connect( self.refreshCategories )
        self.showGridButton.clicked.connect( self.onShowGrid )

        #Categorize Context Menu
        self.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
        categorizeAction = QtWidgets.QAction("Categorize", self)
        self.categorizeMenu = QtWidgets.QMenu(self)
        categorizeAction.setMenu(self.categorizeMenu)
        self.addAction(categorizeAction)
        self.categoriesListModel = QtCore.QStringListModel()
        self.categoriesListComboBox.setModel(self.categoriesListModel)
        self.refreshCategories()

        #background color context menu
        backgroundColorAction = QtWidgets.QAction("Background Color", self)
        backgroundColorMenu = QtWidgets.QMenu(self)
        backgroundColorAction.setMenu(backgroundColorMenu)
        self.addAction(backgroundColorAction)
        setBackgroundColorAction = QtWidgets.QAction("Set Background Color", self)
        setBackgroundColorAction.triggered.connect(self.view.onSetBackgroundColor)
        backgroundColorMenu.addAction(setBackgroundColorAction)
        removeBackgroundColorAction = QtWidgets.QAction("Remove Background Color", self)
        removeBackgroundColorAction.triggered.connect(self.view.onRemoveBackgroundColor)
        backgroundColorMenu.addAction(removeBackgroundColorAction)

        #sort context action
        sortAction = QtWidgets.QAction("Sort", self)
        self.addAction(sortAction)
        sortAction.triggered.connect(partial(self.view.sortByColumn, self.model.column.name, QtCore.Qt.DescendingOrder))
コード例 #8
0
    def __init__(self, deviceClass, config, parent=None):
        Base.__init__(self, parent)
        Form.__init__(self)
        Form.setupUi(self, self)
        self.config = config
        self.configname = "AWGOptimizer"
        self.setWindowTitle("AWG Optimizer")
        guiState = self.config.get(self.configname+".guiState")
        state = self.config.get(self.configname+'.state')
        pos = self.config.get(self.configname+'.pos')
        size = self.config.get(self.configname+'.size')
        isMaximized = self.config.get(self.configname+'.isMaximized')
        restoreGuiState(self, self.config.get(self.configname+".guiState"))
        if state: self.restoreState(state)
        if pos: self.move(pos)
        if size: self.resize(size)
        if isMaximized: self.showMaximized()

        self.show()
        self.awgUi = AWGUi(deviceClass, config, dict())
        self.awgUi.setupUi(self.awgUi)
        self.splitter.insertWidget(1, self.awgUi)

        #oscilloscope plot window
        name = "Oscilloscope Trace"
        self.scopeDock = Dock(name)
        self.scopePlot = CoordinatePlotWidget(self, name=name)
        self.scopeView = self.scopePlot._graphicsView
        self.scopeDock.addWidget(self.scopePlot)
        self.area = DockArea()
        self.area.addDock(self.scopeDock)
        self.plotDict ={name: {"dock":self.scopeDock, "widget":self.scopePlot, "view":self.scopeView}}
        self.verticalLayout.insertWidget(0, self.area)

        #trace ui
        self.penicons = pens.penicons().penicons()
        self.traceui = Traceui.Traceui(self.penicons, self.config, self.configname, self.plotDict, hasMeasurementLog=False, highlightUnsaved=False)
        self.traceui.setupUi(self.traceui)
        traceDock = Dock("Traces")
        traceDock.addWidget(self.traceui)
        self.area.addDock(traceDock, 'left')
        self.device = self.awgUi.device

        self.measureWaveformButton.clicked.connect(self.onMeasureWaveform)
        self.optimizeButton.clicked.connect(self.onOptimize)

        dockAreaState = self.config.get(self.configname+'.dockAreaState')
        try:
            if dockAreaState: self.area.restoreState(dockAreaState)
        except Exception as e:
            print(e)
コード例 #9
0
ファイル: FitUi.py プロジェクト: pyIonControl/IonControl
 def setupUi(self,widget, showCombos=True ):
     fitForm.setupUi(self, widget)
     self.fitButton.clicked.connect( self.onFit )
     self.plotButton.clicked.connect( self.onPlot )
     self.removePlotButton.clicked.connect( self.onRemoveFit )
     self.extractButton.clicked.connect( self.onExtractFit )
     self.getSmartStartButton.clicked.connect( self.onGetSmartStart )
     self.copyButton.clicked.connect( self.onCopy )
     self.removeAnalysisButton.clicked.connect( self.onRemoveAnalysis )
     self.saveButton.clicked.connect( self.onSaveAnalysis )
     self.reloadButton.clicked.connect( self.onLoadAnalysis )
     self.fitSelectionComboBox.addItems( sorted(fitFunctionMap.keys()) )
     self.fitSelectionComboBox.currentIndexChanged[str].connect( self.onFitfunctionChanged )
     self.fitfunctionTableModel = FitUiTableModel(self.config)
     self.fitfunctionTableModel.parametersChanged.connect( self.autoSave )
     self.parameterTableView.setModel(self.fitfunctionTableModel)
     self.magnitudeDelegate = MagnitudeSpinBoxDelegate(self.globalDict, emptyStringValue=None)
     self.parameterTableView.setItemDelegateForColumn(2, self.magnitudeDelegate)
     self.parameterTableView.setItemDelegateForColumn(3, self.magnitudeDelegate)
     self.parameterTableView.setItemDelegateForColumn(4, self.magnitudeDelegate)
     self.fitResultsTableModel = FitResultsTableModel(self.config)
     self.resultsTableView.setModel(self.fitResultsTableModel)
     self.onFitfunctionChanged(str(self.fitSelectionComboBox.currentText()))
     # Analysis stuff
     lastAnalysisName = self.config.get(self.configname+"LastAnalysis", None)
     self.analysisNameComboBox.addItems( list(self.analysisDefinitions.keys()) )
     self.analysisNameComboBox.currentIndexChanged[str].connect( self.onLoadAnalysis )
     if lastAnalysisName and lastAnalysisName in self.analysisDefinitions:
         self.analysisNameComboBox.setCurrentIndex( self.analysisNameComboBox.findText(lastAnalysisName))
     try:
         fitfunction = self.config.get(self.configname+"LastFitfunction", None)
     except Exception:
         fitfunction = None
     if fitfunction:
         self.setFitfunction( fitfunction )
         self.fitSelectionComboBox.setCurrentIndex( self.fitSelectionComboBox.findText(self.fitfunction.name) )
     self.checkBoxUseSmartStartValues.stateChanged.connect( self.onUseSmartStartValues )
     self.useErrorBarsCheckBox.stateChanged.connect( self.onUseErrorBars )
     # Context Menu
     self.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
     self.autoSaveAction = QtWidgets.QAction( "auto save", self)
     self.autoSaveAction.setCheckable(True)
     self.autoSaveAction.setChecked(self.parameters.autoSave )
     self.autoSaveAction.triggered.connect( self.onAutoSave )
     self.addAction( self.autoSaveAction )
     restoreGuiState( self, self.config.get(self.configname+".guiState") )
     if not showCombos:
         self.fitSelectionComboBox.setVisible( False )
         self.widget.setVisible( False )
     self.autoSave()
コード例 #10
0
 def setupUi(self, outputChannels):
     Form.setupUi(self, self)
     self.categoryTreeView.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
     model = ExternalParameterControlModel(self)
     self.categoryTreeView.setModel(model)
     self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
     self.categoryTreeView.setItemDelegateForColumn(1, self.delegate)
     self.setupParameters(outputChannels)
     restoreGuiState(self, self.config.get(self.configName+'.guiState'))
     try:
         self.categoryTreeView.restoreTreeMarkup(self.config.get(self.configName+'.treeMarkup', None))
         self.categoryTreeView.restoreTreeColumnWidth(self.config.get(self.configName + '.treeColumnWidth', None))
     except Exception as e:
         logging.getLogger(__name__).error("unable to restore tree state in {0}: {1}".format(self.configName, e))
     self.categoryTreeView.selectionModel().currentChanged.connect( self.onActiveChannelChanged )
コード例 #11
0
    def setupUi(self, parent):
        UiForm.setupUi(self,parent)
        self.integrationTimeBox.setValue( self.settings.integrationTime )
        self.integrationTimeBox.valueChanged.connect( functools.partial(self.onValueChanged, 'integrationTime') )
        self.pointsToKeepBox.setValue( self.settings.pointsToKeep )
        self.pointsToKeepBox.valueChanged.connect( functools.partial(self.onValueChanged,'pointsToKeep') )
        self.displayUnitCombo.currentIndexChanged[int].connect( self.onIndexChanged )
        self.displayUnitCombo.setCurrentIndex(self.settings.unit)
        self.settings.displayUnit.unit = self.settings.unit

        # Added counter table to select which counters to plot
        self.DedicatedTableModel = DedicatedCounterTableModel( self.settings.counterDict
                                                               ,self.settings.adcDict,self.settings.plotDisplayData,self.plotDict)
        self.DedicatedTableModel.edited.connect( self.onSaveProfile )
        self.DedicatedTableModel.edited.connect( self.updateMask )
        self.DedicatedCounterTableView.setModel( self.DedicatedTableModel )
        self.comboBoxDelegate = ComboBoxDelegate()
        self.magnitudeSpinBoxDelegate = MagnitudeSpinBoxDelegate()
        self.multiSelectDelegate = MultiSelectDelegate()
        self.DedicatedCounterTableView.setItemDelegateForColumn( 0, self.multiSelectDelegate )
        self.DedicatedCounterTableView.setItemDelegateForColumn( 1, self.comboBoxDelegate )
        self.dropDedicatedCounterSettingButton.clicked.connect( self.onCounterRemoveSetting )
        self.addDedicatedCounterSettingButton.clicked.connect( self.DedicatedTableModel.addSetting )

        #Plot legend
        icons = penicons().penicons()
        for n in range(20):
            if n < 16:
                item = QtWidgets.QListWidgetItem(icons[n+1], "Count {0}".format(n))
            else:
                item = QtWidgets.QListWidgetItem(icons[n+1], "ADC {0}".format(n-16))
            item.setFlags(QtCore.Qt.ItemIsEnabled)
            self.plotLegend.addItem(item)

        self.removeDedicatedCountersProfileButton.clicked.connect( self.onRemoveProfile )
        restoreGuiState( self, self.config.get('DedicatedCounterSettings.guiState') )
        # Added profiles
        self.profileDedicatedCountersComboBox.addItems( self.settingsDict.keys() )
        if self.currentSettingsName in self.settingsDict:
            self.profileDedicatedCountersComboBox.setCurrentIndex( self.profileDedicatedCountersComboBox.findText(self.currentSettingsName))
        else:
            self.currentSettingsName = str( self.profileDedicatedCountersComboBox.currentText() )
        self.profileDedicatedCountersComboBox.currentIndexChanged[str].connect(self.onLoadProfile)
        self.profileDedicatedCountersComboBox.lineEdit().editingFinished.connect( self.onSaveProfile )

        self.setProfile( self.currentSettingsName, self.settings )
        self.onSaveProfile()
コード例 #12
0
ファイル: DACUi.py プロジェクト: pyIonControl/IonControl
 def setupUi(self, parent):
     dacForm.setupUi(self, parent)
     self.dacTableModel = DACTableModel(self.dacChannels, self.globalDict)
     self.tableView.setModel( self.dacTableModel )
     self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
     self.tableView.setItemDelegateForColumn(2, self.delegate)
     self.applyButton.clicked.connect( self.onApply )
     self.resetButton.clicked.connect( self.onReset )
     self.writeAllButton.clicked.connect( self.onWriteAll )
     self.autoApplyBox.setChecked( self.autoApply )
     self.autoApplyBox.stateChanged.connect( self.onStateChanged )
     try:
         self.onWriteAll( writeUnchecked=True )
     except Exception as e:
         logging.getLogger(__name__).warning( "Ignored error while setting dac: {0}".format(e) )
     self.onApply()
     self.dacTableModel.voltageChanged.connect( self.onVoltage )
     self.dacTableModel.enableChanged.connect( self.onEnableChanged )
     restoreGuiState(self, self.config.get(self.guiStateConfigName))
     self.isSetup = True
コード例 #13
0
 def setupUi(self, MainWindow):
     Form.setupUi(self, MainWindow)
     self.comboBoxSpace.currentIndexChanged[str].connect( self.onSpaceChanged  )
     self.comboBoxParam.currentIndexChanged[str].connect( partial(self.onValueChangedString, 'parameter') )
     self.loadButton.clicked.connect( self.onLoad )       
     self.namedTimespanComboBox.addItems( ['Select timespan ...']+timespans )
     self.namedTimespanComboBox.currentIndexChanged[str].connect( self.onNamedTimespan )
     self.onRefresh()
     if self.parameters.space is not None:
         self.comboBoxSpace.setCurrentIndex( self.comboBoxSpace.findText(self.parameters.space ))
     if self.parameters.parameter is not None:
         self.comboBoxParam.setCurrentIndex( self.comboBoxParam.findText(self.parameters.parameter ))
     if self.parameters.fromTime is not None:
         self.dateTimeEditFrom.setDateTime( self.parameters.fromTime )
     self.dateTimeEditFrom.dateTimeChanged.connect( partial(self.onValueChangedDateTime, 'fromTime')  )
     self.toolButtonRefresh.clicked.connect( self.onRefresh )
     self.onSpaceChanged(self.parameters.space)
     self.dataModel = GenericTableModel(self.config, list(), "ValueHistory", ["Date", "Value"], [lambda t: t.astimezone(tzlocal()).strftime('%Y-%m-%d %H:%M:%S'), str])
     self.tableView.setModel( self.dataModel )
     restoreGuiState( self, self.config.get('ValueHistory.guiState'))
コード例 #14
0
ファイル: DACUi.py プロジェクト: Yodaquette/IonControl
 def setupUi(self, parent):
     dacForm.setupUi(self, parent)
     self.dacTableModel = DACTableModel(self.dacChannels, self.globalDict)
     self.tableView.setModel(self.dacTableModel)
     self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
     self.tableView.setItemDelegateForColumn(2, self.delegate)
     self.applyButton.clicked.connect(self.onApply)
     self.resetButton.clicked.connect(self.onReset)
     self.writeAllButton.clicked.connect(self.onWriteAll)
     self.autoApplyBox.setChecked(self.autoApply)
     self.autoApplyBox.stateChanged.connect(self.onStateChanged)
     try:
         self.onWriteAll(writeUnchecked=True)
     except Exception as e:
         logging.getLogger(__name__).warning(
             "Ignored error while setting dac: {0}".format(e))
     self.onApply()
     self.dacTableModel.voltageChanged.connect(self.onVoltage)
     self.dacTableModel.enableChanged.connect(self.onEnableChanged)
     restoreGuiState(self, self.config.get(self.guiStateConfigName))
     self.isSetup = True
コード例 #15
0
 def setupUi(self, outputChannels):
     Form.setupUi(self, self)
     self.categoryTreeView.setSelectionMode(
         QtWidgets.QAbstractItemView.ExtendedSelection)
     model = ExternalParameterControlModel(self)
     self.categoryTreeView.setModel(model)
     self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
     self.categoryTreeView.setItemDelegateForColumn(1, self.delegate)
     self.setupParameters(outputChannels)
     restoreGuiState(self, self.config.get(self.configName + '.guiState'))
     try:
         self.categoryTreeView.restoreTreeMarkup(
             self.config.get(self.configName + '.treeMarkup', None))
         self.categoryTreeView.restoreTreeColumnWidth(
             self.config.get(self.configName + '.treeColumnWidth', None))
     except Exception as e:
         logging.getLogger(__name__).error(
             "unable to restore tree state in {0}: {1}".format(
                 self.configName, e))
     self.categoryTreeView.selectionModel().currentChanged.connect(
         self.onActiveChannelChanged)
コード例 #16
0
 def setupUi(self, parent):
     VoltageAdjustForm.setupUi(self, parent)
     self.lineBox.globalDict = self.settings.adjust.globalDict
     self.lineGainBox.globalDict = self.settings.adjust.globalDict
     self.globalGainBox.globalDict = self.settings.adjust.globalDict
     self.lineBox.setExpression(self.adjust._line)
     self.currentLineDisplay.setText(str(self.adjust._line))
     self.lineGainBox.setExpression(self.adjust._lineGain)
     self.globalGainBox.setExpression(self.adjust._globalGain)
     self.adjust.dataChanged.connect(self.onExpressionChanged)
     self.triggerButton.clicked.connect(self.onTrigger)
     # Shuttling
     self.addEdgeButton.clicked.connect(self.addShuttlingEdge)
     self.removeEdgeButton.clicked.connect(self.removeShuttlingEdge)
     self.shuttleEdgeTableModel = ShuttleEdgeTableModel(
         self.config, self.shuttlingGraph)
     self.delegate = ComboBoxDelegate()
     self.edgeTableView.setModel(self.shuttleEdgeTableModel)
     self.edgeTableView.setItemDelegateForColumn(8, self.delegate)
     self.edgeTableView.setItemDelegateForColumn(10, self.delegate)
     self.currentPositionLabel.setText(
         firstNotNone(self.shuttlingGraph.currentPositionName, ""))
     self.shuttlingGraph.currentPositionObservable.subscribe(
         self.onCurrentPositionEvent)
     self.shuttlingGraph.graphChangedObservable.subscribe(
         self.setupGraphDependent)
     self.setupGraphDependent()
     self.uploadDataButton.clicked.connect(self.onUploadData)
     self.uploadEdgesButton.clicked.connect(self.onUploadEdgesButton)
     restoreGuiState(self, self.config.get('VoltageAdjust.GuiState'))
     self.destinationComboBox.currentIndexChanged[str].connect(
         self.onShuttleSequence)
     self.shuttlingRouteEdit.setText(" ".join(self.settings.shuttlingRoute))
     self.shuttlingRouteEdit.editingFinished.connect(
         self.onSetShuttlingRoute)
     self.shuttlingRouteButton.clicked.connect(self.onShuttlingRoute)
     self.repetitionBox.setValue(self.settings.shuttlingRepetitions)
     self.repetitionBox.valueChanged.connect(self.onShuttlingRepetitions)
コード例 #17
0
 def setupUi(self, parent):
     Form.setupUi(self, parent)
     # measurement Table
     self.measurementModel = MeasurementTableModel(self.container.measurements, self.settings.extraColumns, self.traceuiLookup, self.container)
     self.measurementTableView.setModel( self.measurementModel )
     # result Table
     self.resultModel = ResultTableModel( list(), self.container )
     self.resultTableView.setModel( self.resultModel )
     # study table
     self.studyModel = StudyTableModel( list(), self.container )
     self.studyTableView.setModel( self.studyModel )
     # parameter table
     self.parameterModel = ParameterTableModel( list(), self.container )
     self.parameterTableView.setModel( self.parameterModel )
     magnitudeDelegate = MagnitudeSpinBoxDelegate()
     self.parameterTableView.setItemDelegateForColumn( 2, magnitudeDelegate )
     # scanNames table
     self.scanNameTableModel = ScanNameTableModel( self.container.scanNames, self.container)
     self.scanNameTableView.setModel( self.scanNameTableModel )
     self.scanNameTableModel.scanNameFilterChanged.connect( self.onFilterSelection )
     # Context Menu for ScanName table
     self.scanNameTableView.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
     self.selectAllAction = QtWidgets.QAction( "select all", self)
     self.selectAllAction.triggered.connect( partial( self.scanNameTableModel.showAll, True )  )
     self.scanNameTableView.addAction( self.selectAllAction )
     self.deselectAllAction = QtWidgets.QAction( "deselect all", self)
     self.deselectAllAction.triggered.connect( partial( self.scanNameTableModel.showAll, False )  )
     self.scanNameTableView.addAction( self.deselectAllAction )
     # Context Menu for ResultsTable
     self.resultTableView.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
     self.addResultToMeasurementAction = QtWidgets.QAction( "add as column to measurement", self)
     self.addResultToMeasurementAction.triggered.connect( self.onAddResultToMeasurement  )
     self.resultTableView.addAction( self.addResultToMeasurementAction )
     # Context Menu for Measurements Table
     self.measurementTableView.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
     self.removeColumnAction = QtWidgets.QAction( "remove selected column", self)
     self.reAnalyzeAction = QtWidgets.QAction( "re analyze data", self )
     self.removeColumnAction.triggered.connect( self.onRemoveMeasurementColumn  )
     self.reAnalyzeAction.triggered.connect( self.onReAnalyze )
     self.measurementTableView.addAction( self.removeColumnAction )
     self.measurementTableView.addAction( self.reAnalyzeAction )
     # Context Menu for Parameters Table
     self.parameterTableView.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
     self.addManualParameterAction = QtWidgets.QAction( "add manual parameter", self)
     self.addManualParameterAction.triggered.connect( self.parameterModel.addManualParameter  )
     self.parameterTableView.addAction( self.addManualParameterAction )
     self.addParameterToMeasurementAction = QtWidgets.QAction( "add as column to measurement", self)
     self.addParameterToMeasurementAction.triggered.connect( self.onAddParameterToMeasurement )
     self.parameterTableView.addAction( self.addParameterToMeasurementAction )
     self.timespanComboBox.addItems( self.timespans )
     self.timespanComboBox.setCurrentIndex( self.settings.timespan )
     isCustom = self.timespans[self.settings.timespan] == 'Custom'
     self.timespanComboBox.currentIndexChanged[int].connect( self.onChangeTimespan )
     self.container.beginInsertMeasurement.subscribe( self.measurementModel.beginInsertRows )
     self.container.endInsertMeasurement.subscribe( self.measurementModel.endInsertRows )  
     self.container.measurementsUpdated.subscribe( self.measurementModel.setMeasurements  )
     self.measurementTableView.selectionModel().currentChanged.connect( self.onActiveInstrumentChanged )
     self.refreshButton.clicked.connect( self.onFilterRefresh )
     # DateTimeEdit
     self.fromDateTimeEdit.setDateTime( self.settings.fromDateTimeEdit )
     self.toDateTimeEdit.setDateTime( self.settings.toDateTimeEdit )
     self.fromDateTimeEdit.dateTimeChanged.connect( partial( self.setDateTimeEdit, 'fromDateTimeEdit') )
     self.toDateTimeEdit.dateTimeChanged.connect( partial( self.setDateTimeEdit, 'toDateTimeEdit') )
     self.toDateTimeEdit.setEnabled( isCustom )
     self.fromDateTimeEdit.setEnabled( isCustom )
     self.plainTextEdit.editingFinished.connect( self.onCommentFinished )
     self.onFilterRefresh()
     self.scanNameFilterButton.clicked.connect( self.onFilterButton )
     self.updateComboBoxes()
     self.plotButton.clicked.connect( self.onCreatePlot )
     self.updatePlotButton.clicked.connect( self.onUpdatePlot )
     self.updateAllPlotsButton.clicked.connect( self.onUpdateAll )
     self.xComboBox.currentIndexChanged[str].connect( partial(self.onComboBoxChanged, 'plotXAxis') )
     self.yComboBox.currentIndexChanged[str].connect( partial(self.onComboBoxChanged, 'plotYAxis') )
     self.windowComboBox.currentIndexChanged[str].connect( partial(self.onComboBoxChanged, 'plotWindow') )
     self.xUnitEdit.setText( self.settings.xUnit )
     self.yUnitEdit.setText( self.settings.yUnit )
     self.xUnitEdit.editingFinished.connect( partial(self.onEditingFinished, 'xUnit', 'xUnitEdit'))
     self.yUnitEdit.editingFinished.connect( partial(self.onEditingFinished, 'yUnit', 'yUnitEdit'))
     restoreGuiState( self, self.config.get(self.configname+".guiSate") )
コード例 #18
0
ファイル: AWGUi.py プロジェクト: pyIonControl/IonControl
    def setupUi(self, parent):
        logger = logging.getLogger(__name__)
        AWGForm.setupUi(self, parent)
        self.setWindowTitle(self.device.displayName)

        self._varAsOutputChannelDict = dict()
        self.area = DockArea()
        self.splitter.insertWidget(0, self.area)
        self.awgChannelUiList = []
        for channel in range(self.device.deviceProperties['numChannels']):
            awgChannelUi = AWGChannelUi(channel, self.settings, self.globalDict, self.waveformCache, parent=self)
            awgChannelUi.setupUi(awgChannelUi)
            awgChannelUi.dependenciesChanged.connect(self.onDependenciesChanged)
            self.awgChannelUiList.append(awgChannelUi)
            dock = Dock("AWG Channel {0}".format(channel))
            dock.addWidget(awgChannelUi)
            self.area.addDock(dock, 'right')
            self.device.waveforms[channel] = awgChannelUi.waveform
        self.refreshVarDict()

        # Settings control
        self.saveButton.clicked.connect( self.onSave )
        self.removeButton.clicked.connect( self.onRemove )
        self.reloadButton.clicked.connect( self.onReload )
        self.settingsModel = QtCore.QStringListModel()
        self.settingsComboBox.setModel(self.settingsModel)
        self.settingsModel.setStringList( sorted(self.settingsDict.keys()) )
        self.settingsComboBox.setCurrentIndex( self.settingsComboBox.findText(self.settingsName) )
        self.settingsComboBox.currentIndexChanged[str].connect( self.onLoad )
        self.settingsComboBox.lineEdit().editingFinished.connect( self.onComboBoxEditingFinished )
        self.autoSaveCheckBox.setChecked(self.autoSave)
        self.saveButton.setEnabled( not self.autoSave )
        self.saveButton.setVisible( not self.autoSave )
        self.reloadButton.setEnabled( not self.autoSave )
        self.reloadButton.setVisible( not self.autoSave )
        self.autoSaveCheckBox.stateChanged.connect(self.onAutoSave)

        #programming options table
        self.programmingOptionsTable.setupUi(globalDict=self.globalDict, parameterDict=self.device.parameters())
        self.programmingOptionsTable.valueChanged.connect( self.device.update )

        # Table
        self.tableModel = AWGTableModel(self.settings, self.globalDict)
        self.tableView.setModel(self.tableModel)
        self.tableModel.valueChanged.connect(self.onValue)
        self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
        self.tableView.setItemDelegateForColumn(self.tableModel.column.value, self.delegate)

        #File
        self.filenameModel = QtCore.QStringListModel()
        self.filenameComboBox.setModel(self.filenameModel)
        self.filenameModel.setStringList( [basename for basename, filename in list(self.recentFiles.items()) if os.path.exists(filename)] )
        self.filenameComboBox.setCurrentIndex(self.filenameComboBox.findText(os.path.basename(self.settings.filename)))
        self.filenameComboBox.currentIndexChanged[str].connect(self.onFilename)
        self.removeFileButton.clicked.connect(self.onRemoveFile)
        self.newFileButton.clicked.connect(self.onNewFile)
        self.openFileButton.clicked.connect(self.onOpenFile)
        self.saveFileButton.clicked.connect(self.onSaveFile)
        self.reloadFileButton.clicked.connect(self.onReloadFile)

        #cache
        self.cacheDepthSpinBox.setValue(self.settings.cacheDepth)
        self.cacheDepthSpinBox.valueChanged.connect(self.onCacheDepth)
        self.clearCacheButton.clicked.connect(self.onClearCache)

        #status bar
        self.label = QtGui.QLabel('Sample Rate: {0}'.format(self.settings.deviceProperties['sampleRate']))
        self.statusbar.addWidget(self.label)

        #Restore GUI state
        state = self.config.get(self.configname+'.state')
        pos = self.config.get(self.configname+'.pos')
        size = self.config.get(self.configname+'.size')
        isMaximized = self.config.get(self.configname+'.isMaximized')
        dockAreaState = self.config.get(self.configname+'.dockAreaState')
        guiState = self.config.get(self.configname+".guiState")
        restoreGuiState(self, guiState)
        try:
            if pos:
                self.move(pos)
            if size:
                self.resize(size)
            if isMaximized:
                self.showMaximized()
            if state:
                self.restoreState(state)
            for awgChannelUi in self.awgChannelUiList:
                channelGuiState = self.config[self.configname+"channel{0}.guiState".format(awgChannelUi.channel)]
                restoreGuiState(awgChannelUi, channelGuiState)
        except Exception as e:
            logger.warning("Error on restoring state in AWGUi {0}. Exception occurred: {1}".format(self.device.displayName, e))
        try:
            if dockAreaState:
                self.area.restoreState(dockAreaState)
        except Exception as e:
            logger.warning("Cannot restore dock state in AWGUi {0}. Exception occurred: {1}".format(self.device.displayName, e))
            self.area.deleteLater()
            self.area = DockArea()
            self.splitter.insertWidget(0, self.area)
            for channelUi in self.awgChannelUiList:
                dock = Dock("AWG Channel {0}".format(channel))
                dock.addWidget(channelUi)
                self.area.addDock(dock, 'right')
        self.saveIfNecessary()
コード例 #19
0
    def __init__(self, deviceClass, config, parent=None):
        Base.__init__(self, parent)
        Form.__init__(self)
        Form.setupUi(self, self)
        self.config = config
        self.configname = "AWGOptimizer"
        self.setWindowTitle("AWG Optimizer")
        guiState = self.config.get(self.configname + ".guiState")
        state = self.config.get(self.configname + '.state')
        pos = self.config.get(self.configname + '.pos')
        size = self.config.get(self.configname + '.size')
        isMaximized = self.config.get(self.configname + '.isMaximized')
        restoreGuiState(self, self.config.get(self.configname + ".guiState"))
        if state: self.restoreState(state)
        if pos: self.move(pos)
        if size: self.resize(size)
        if isMaximized: self.showMaximized()

        self.show()
        self.awgUi = AWGUi(deviceClass, config, dict())
        self.awgUi.setupUi(self.awgUi)
        self.splitter.insertWidget(1, self.awgUi)

        #oscilloscope plot window
        name = "Oscilloscope Trace"
        self.scopeDock = Dock(name)
        self.scopePlot = CoordinatePlotWidget(self, name=name)
        self.scopeView = self.scopePlot._graphicsView
        self.scopeDock.addWidget(self.scopePlot)
        self.area = DockArea()
        self.area.addDock(self.scopeDock)
        self.plotDict = {
            name: {
                "dock": self.scopeDock,
                "widget": self.scopePlot,
                "view": self.scopeView
            }
        }
        self.verticalLayout.insertWidget(0, self.area)

        #trace ui
        self.penicons = pens.penicons().penicons()
        self.traceui = Traceui.Traceui(self.penicons,
                                       self.config,
                                       self.configname,
                                       self.plotDict,
                                       hasMeasurementLog=False,
                                       highlightUnsaved=False)
        self.traceui.setupUi(self.traceui)
        traceDock = Dock("Traces")
        traceDock.addWidget(self.traceui)
        self.area.addDock(traceDock, 'left')
        self.device = self.awgUi.device

        self.measureWaveformButton.clicked.connect(self.onMeasureWaveform)
        self.optimizeButton.clicked.connect(self.onOptimize)

        dockAreaState = self.config.get(self.configname + '.dockAreaState')
        try:
            if dockAreaState: self.area.restoreState(dockAreaState)
        except Exception as e:
            print(e)
コード例 #20
0
 def setupUi(self, parent):
     Form.setupUi(self, parent)
     self.model = StatusTableModel(self.statusBits)
     self.tableView.setModel(self.model)
     restoreGuiState(self, self.config.get("StatusDisplay"))
コード例 #21
0
    def setupUi(self, parent):
        UiForm.setupUi(self, parent)
        self.integrationTimeBox.setValue(self.settings.integrationTime)
        self.integrationTimeBox.valueChanged.connect(
            functools.partial(self.onValueChanged, 'integrationTime'))
        self.pointsToKeepBox.setValue(self.settings.pointsToKeep)
        self.pointsToKeepBox.valueChanged.connect(
            functools.partial(self.onValueChanged, 'pointsToKeep'))
        self.displayUnitCombo.currentIndexChanged[int].connect(
            self.onIndexChanged)
        self.displayUnitCombo.setCurrentIndex(self.settings.unit)
        self.settings.displayUnit.unit = self.settings.unit

        # Added counter table to select which counters to plot
        self.DedicatedTableModel = DedicatedCounterTableModel(
            self.settings.counterDict, self.settings.adcDict,
            self.settings.plotDisplayData, self.plotDict)
        self.DedicatedTableModel.edited.connect(self.onSaveProfile)
        self.DedicatedTableModel.edited.connect(self.updateMask)
        self.DedicatedCounterTableView.setModel(self.DedicatedTableModel)
        self.comboBoxDelegate = ComboBoxDelegate()
        self.magnitudeSpinBoxDelegate = MagnitudeSpinBoxDelegate()
        self.multiSelectDelegate = MultiSelectDelegate()
        self.DedicatedCounterTableView.setItemDelegateForColumn(
            0, self.multiSelectDelegate)
        self.DedicatedCounterTableView.setItemDelegateForColumn(
            1, self.comboBoxDelegate)
        self.dropDedicatedCounterSettingButton.clicked.connect(
            self.onCounterRemoveSetting)
        self.addDedicatedCounterSettingButton.clicked.connect(
            self.DedicatedTableModel.addSetting)

        #Plot legend
        icons = penicons().penicons()
        for n in range(20):
            if n < 16:
                item = QtWidgets.QListWidgetItem(icons[n + 1],
                                                 "Count {0}".format(n))
            else:
                item = QtWidgets.QListWidgetItem(icons[n + 1],
                                                 "ADC {0}".format(n - 16))
            item.setFlags(QtCore.Qt.ItemIsEnabled)
            self.plotLegend.addItem(item)

        self.removeDedicatedCountersProfileButton.clicked.connect(
            self.onRemoveProfile)
        restoreGuiState(self,
                        self.config.get('DedicatedCounterSettings.guiState'))
        # Added profiles
        self.profileDedicatedCountersComboBox.addItems(
            self.settingsDict.keys())
        if self.currentSettingsName in self.settingsDict:
            self.profileDedicatedCountersComboBox.setCurrentIndex(
                self.profileDedicatedCountersComboBox.findText(
                    self.currentSettingsName))
        else:
            self.currentSettingsName = str(
                self.profileDedicatedCountersComboBox.currentText())
        self.profileDedicatedCountersComboBox.currentIndexChanged[str].connect(
            self.onLoadProfile)
        self.profileDedicatedCountersComboBox.lineEdit(
        ).editingFinished.connect(self.onSaveProfile)

        self.setProfile(self.currentSettingsName, self.settings)
        self.onSaveProfile()
コード例 #22
0
 def setupUi(self, parent):
     Form.setupUi(self, parent)
     self.model = StatusTableModel(self.statusBits)
     self.tableView.setModel( self.model )
     restoreGuiState( self, self.config.get("StatusDisplay") )
コード例 #23
0
    def setupUi(self, parent):
        Form.setupUi(self, parent)
        self.model = GlobalVariablesModel(self.config, self._globalDict_)
        self.model.showGrid = self.config.get(self.configName + ".showGrid",
                                              True)
        self.showGridButton.setChecked(self.model.showGrid)

        self.view.setModel(self.model)
        self.nameDelegate = GridDelegate()
        self.valueDelegate = MagnitudeSpinBoxGridDelegate()
        self.view.setItemDelegateForColumn(self.model.column.name,
                                           self.nameDelegate)
        self.view.setItemDelegateForColumn(self.model.column.value,
                                           self.valueDelegate)
        restoreGuiState(self, self.config.get(self.configName + ".guiState"))
        try:
            self.view.restoreTreeMarkup(
                self.config.get(self.configName + '.treeMarkup', None))
            self.view.restoreTreeColumnWidth(
                self.config.get(self.configName + '.treeColumnWidth', None))
        except Exception as e:
            logging.getLogger(__name__).error(
                "unable to restore tree state in {0}: {1}".format(
                    self.configName, e))

        #signals
        self.newNameEdit.returnPressed.connect(self.onAddVariable)
        self.addButton.clicked.connect(self.onAddVariable)
        self.dropButton.clicked.connect(self.view.onDelete)
        self.collapseAllButton.clicked.connect(self.view.collapseAll)
        self.expandAllButton.clicked.connect(self.view.expandAll)
        self.model.globalRemoved.connect(self.refreshCategories)
        self.showGridButton.clicked.connect(self.onShowGrid)

        #Categorize Context Menu
        self.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
        categorizeAction = QtWidgets.QAction("Categorize", self)
        self.categorizeMenu = QtWidgets.QMenu(self)
        categorizeAction.setMenu(self.categorizeMenu)
        self.addAction(categorizeAction)
        self.categoriesListModel = QtCore.QStringListModel()
        self.categoriesListComboBox.setModel(self.categoriesListModel)
        self.refreshCategories()

        #background color context menu
        backgroundColorAction = QtWidgets.QAction("Background Color", self)
        backgroundColorMenu = QtWidgets.QMenu(self)
        backgroundColorAction.setMenu(backgroundColorMenu)
        self.addAction(backgroundColorAction)
        setBackgroundColorAction = QtWidgets.QAction("Set Background Color",
                                                     self)
        setBackgroundColorAction.triggered.connect(
            self.view.onSetBackgroundColor)
        backgroundColorMenu.addAction(setBackgroundColorAction)
        removeBackgroundColorAction = QtWidgets.QAction(
            "Remove Background Color", self)
        removeBackgroundColorAction.triggered.connect(
            self.view.onRemoveBackgroundColor)
        backgroundColorMenu.addAction(removeBackgroundColorAction)

        #sort context action
        sortAction = QtWidgets.QAction("Sort", self)
        self.addAction(sortAction)
        sortAction.triggered.connect(
            partial(self.view.sortByColumn, self.model.column.name,
                    QtCore.Qt.DescendingOrder))
コード例 #24
0
ファイル: FitUi.py プロジェクト: pyIonControl/IonControl
 def setupUi(self, widget, showCombos=True):
     fitForm.setupUi(self, widget)
     self.fitButton.clicked.connect(self.onFit)
     self.plotButton.clicked.connect(self.onPlot)
     self.removePlotButton.clicked.connect(self.onRemoveFit)
     self.extractButton.clicked.connect(self.onExtractFit)
     self.getSmartStartButton.clicked.connect(self.onGetSmartStart)
     self.copyButton.clicked.connect(self.onCopy)
     self.removeAnalysisButton.clicked.connect(self.onRemoveAnalysis)
     self.saveButton.clicked.connect(self.onSaveAnalysis)
     self.reloadButton.clicked.connect(self.onLoadAnalysis)
     self.fitSelectionComboBox.addItems(sorted(fitFunctionMap.keys()))
     self.fitSelectionComboBox.currentIndexChanged[str].connect(
         self.onFitfunctionChanged)
     self.fitfunctionTableModel = FitUiTableModel(self.config)
     self.fitfunctionTableModel.parametersChanged.connect(self.autoSave)
     self.parameterTableView.setModel(self.fitfunctionTableModel)
     self.magnitudeDelegate = MagnitudeSpinBoxDelegate(
         self.globalDict, emptyStringValue=None)
     self.parameterTableView.setItemDelegateForColumn(
         2, self.magnitudeDelegate)
     self.parameterTableView.setItemDelegateForColumn(
         3, self.magnitudeDelegate)
     self.parameterTableView.setItemDelegateForColumn(
         4, self.magnitudeDelegate)
     self.fitResultsTableModel = FitResultsTableModel(self.config)
     self.resultsTableView.setModel(self.fitResultsTableModel)
     self.onFitfunctionChanged(str(self.fitSelectionComboBox.currentText()))
     # Analysis stuff
     lastAnalysisName = self.config.get(self.configname + "LastAnalysis",
                                        None)
     self.analysisNameComboBox.addItems(
         list(self.analysisDefinitions.keys()))
     self.analysisNameComboBox.currentIndexChanged[str].connect(
         self.onLoadAnalysis)
     if lastAnalysisName and lastAnalysisName in self.analysisDefinitions:
         self.analysisNameComboBox.setCurrentIndex(
             self.analysisNameComboBox.findText(lastAnalysisName))
     try:
         fitfunction = self.config.get(self.configname + "LastFitfunction",
                                       None)
     except Exception:
         fitfunction = None
     if fitfunction:
         self.setFitfunction(fitfunction)
         self.fitSelectionComboBox.setCurrentIndex(
             self.fitSelectionComboBox.findText(self.fitfunction.name))
     self.checkBoxUseSmartStartValues.stateChanged.connect(
         self.onUseSmartStartValues)
     self.useErrorBarsCheckBox.stateChanged.connect(self.onUseErrorBars)
     # Context Menu
     self.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
     self.autoSaveAction = QtWidgets.QAction("auto save", self)
     self.autoSaveAction.setCheckable(True)
     self.autoSaveAction.setChecked(self.parameters.autoSave)
     self.autoSaveAction.triggered.connect(self.onAutoSave)
     self.addAction(self.autoSaveAction)
     restoreGuiState(self, self.config.get(self.configname + ".guiState"))
     if not showCombos:
         self.fitSelectionComboBox.setVisible(False)
         self.widget.setVisible(False)
     self.autoSave()
コード例 #25
0
ファイル: TodoList.py プロジェクト: pyIonControl/IonControl
    def setupUi(self):
        super(TodoList, self).setupUi(self)
        self.setupStatemachine()
        self.populateMeasurements()
        self.scanSelectionBox.addItems( list(self.scanModuleMeasurements.keys()) )
        self.scanSelectionBox.currentIndexChanged[str].connect( self.updateMeasurementSelectionBox )
        self.updateMeasurementSelectionBox( self.scanSelectionBox.currentText() )
        self.tableModel = TodoListTableModel( self.settings.todoList )
        self.tableModel.valueChanged.connect( self.checkSettingsSavable )
        self.tableView.setModel( self.tableModel )
        self.comboBoxDelegate = ComboBoxDelegate()
        for column in range(1, 5):
            self.tableView.setItemDelegateForColumn(column, self.comboBoxDelegate)
        self.tableModel.measurementSelection = self.scanModuleMeasurements
        self.tableModel.evaluationSelection = self.scanModuleEvaluations     
        self.tableModel.analysisSelection = self.scanModuleAnalysis     
        self.addMeasurementButton.clicked.connect( self.onAddMeasurement )
        self.removeMeasurementButton.clicked.connect( self.onDropMeasurement )
        self.runButton.clicked.connect( partial( self.statemachine.processEvent, 'startCommand' ) )
        self.stopButton.clicked.connect( partial( self.statemachine.processEvent, 'stopCommand' ) )
        self.repeatButton.setChecked( self.settings.repeat )
        self.repeatButton.clicked.connect( self.onRepeatChanged )
        self.filter = KeyListFilter( [QtCore.Qt.Key_PageUp, QtCore.Qt.Key_PageDown] )
        self.filter.keyPressed.connect( self.onReorder )
        self.tableView.installEventFilter(self.filter)
        self.tableModel.setActiveRow(self.settings.currentIndex, False)
        self.tableView.doubleClicked.connect( self.setCurrentIndex )
        # naming and saving of todo lists
        self.toolButtonDelete.clicked.connect( self.onDeleteSaveTodoList )
        self.toolButtonSave.clicked.connect( self.onSaveTodoList )
        self.toolButtonReload.clicked.connect( self.onLoadTodoList )
        self.comboBoxListCache.addItems( sorted(self.settingsCache.keys()) )
        if self.masterSettings.currentSettingName is not None and self.masterSettings.currentSettingName in self.settingsCache:
            self.comboBoxListCache.setCurrentIndex( self.comboBoxListCache.findText(self.masterSettings.currentSettingName))
        self.comboBoxListCache.currentIndexChanged[str].connect( self.onLoadTodoList )
        self.checkSettingsSavable()
        self.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
        self.autoSaveAction = QtWidgets.QAction( "auto save", self )
        self.autoSaveAction.setCheckable(True)
        self.autoSaveAction.setChecked( self.masterSettings.autoSave )
        self.autoSaveAction.triggered.connect( self.onAutoSaveChanged )
        self.addAction( self.autoSaveAction )
        # Settings
        self.settingTableModel = TodoListSettingsTableModel( SequenceDict(), self.globalVariablesUi.globalDict )
        self.settingTableView.setModel( self.settingTableModel )
        self.settingTableModel.edited.connect( self.checkSettingsSavable )
        self.comboBoxDelegate = ComboBoxDelegate()
        self.magnitudeSpinBoxDelegate = MagnitudeSpinBoxDelegate()
        self.settingTableView.setItemDelegateForColumn( 0, self.comboBoxDelegate )
        self.settingTableView.setItemDelegateForColumn( 1, self.magnitudeSpinBoxDelegate )
        self.addSettingButton.clicked.connect( self.onAddSetting )
        self.removeSettingButton.clicked.connect( self.onRemoveSetting )
        self.tableView.selectionModel().currentChanged.connect( self.onActiveItemChanged )
        # Context Menu for Table
        self.tableView.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
        self.loadLineAction = QtWidgets.QAction( "load line settings", self)
        self.loadLineAction.triggered.connect( self.onLoadLine  )
        self.tableView.addAction( self.loadLineAction )
        # set stop flag
        self.enableStopFlagAction = QtGui.QAction( "toggle stop flag" , self)
        self.enableStopFlagAction.triggered.connect( self.onEnableStopFlag  )
        self.tableView.addAction( self.enableStopFlagAction )

        # 
        restoreGuiState( self, self.config.get('Todolist.guiState'))
        
        # Copy rows
        QtWidgets.QShortcut(QtGui.QKeySequence(QtGui.QKeySequence.Copy), self, self.copy_to_clipboard)
        QtWidgets.QShortcut(QtGui.QKeySequence(QtGui.QKeySequence.Paste), self, self.paste_from_clipboard)
コード例 #26
0
    def setupUi(self, parent):
        ControlForm.setupUi(self, parent)
        # History and Dictionary
        self.removeAnalysisConfigurationButton.clicked.connect(
            self.onRemoveAnalysisConfiguration)
        self.saveButton.clicked.connect(self.onSave)
        self.reloadButton.clicked.connect(self.onReload)
        self.addAnalysisButton.clicked.connect(self.onAddAnalysis)
        self.removeAnalysisButton.clicked.connect(self.onRemoveAnalysis)
        self.addPushButton.clicked.connect(self.onAddPushVariable)
        self.removePushButton.clicked.connect(self.onRemovePushVariable)
        self.pushButton.clicked.connect(self.onPush)
        self.fitButton.clicked.connect(self.onFit)
        self.fitAllButton.clicked.connect(self.onFitAll)
        self.plotButton.clicked.connect(self.onPlot)
        self.removePlotButton.clicked.connect(self.onRemoveFit)
        self.extractButton.clicked.connect(self.onExtractFit)
        self.fitToStartButton.clicked.connect(self.onFitToStart)
        self.getSmartStartButton.clicked.connect(self.onSmartToStart)
        self.checkBoxUseSmartStartValues.stateChanged.connect(
            self.onUseSmartStart)
        self.useErrorBarsCheckBox.stateChanged.connect(self.onUseErrorBars)
        self.analysisComboDelegate = ComboBoxDelegate()
        self.analysisTableModel = AnalysisTableModel(self.analysisDefinition,
                                                     self.config,
                                                     self.globalDict,
                                                     self.evaluationNames)
        self.analysisTableModel.fitfunctionChanged.connect(
            self.onFitfunctionChanged)
        self.analysisTableModel.analysisChanged.connect(self.autoSave)
        self.analysisTableView.setModel(self.analysisTableModel)
        self.analysisTableView.selectionModel().currentChanged.connect(
            self.onActiveAnalysisChanged)
        self.analysisTableView.setItemDelegateForColumn(
            2, self.analysisComboDelegate)
        self.analysisTableView.setItemDelegateForColumn(
            3, self.analysisComboDelegate)
        self.pushTableModel = PushVariableTableModel(self.config,
                                                     self.globalDict)
        self.pushTableModel.pushChanged.connect(self.autoSave)
        self.pushTableView.setModel(self.pushTableModel)
        self.pushItemDelegate = MagnitudeSpinBoxDelegate(self.globalDict)
        self.pushComboDelegate = ComboBoxDelegate()
        for column in range(1, 3):
            self.pushTableView.setItemDelegateForColumn(
                column, self.pushComboDelegate)
        for column in range(3, 7):
            self.pushTableView.setItemDelegateForColumn(
                column, self.pushItemDelegate)
        self.pushDestinations['Database'] = DatabasePushDestination('fit')

        self.analysisConfigurationComboBox.addItems(
            sorted([key for key in self.analysisDefinitionDict.keys() if key]))
        if self.currentAnalysisName in self.analysisDefinitionDict:
            self.analysisConfigurationComboBox.setCurrentIndex(
                self.analysisConfigurationComboBox.findText(
                    self.currentAnalysisName))
        else:
            self.currentAnalysisName = str(
                self.analysisConfigurationComboBox.currentText())
        self.analysisConfigurationComboBox.currentIndexChanged[str].connect(
            self.onLoadAnalysisConfiguration)
        self.analysisConfigurationComboBox.lineEdit().editingFinished.connect(
            self.onConfigurationEditingFinished)
        self.analysisConfigurationChanged.emit(self.analysisDefinitionDict)

        # FitUi
        self.fitfunctionTableModel = FitUiTableModel(self.config)
        self.parameterTableView.setModel(self.fitfunctionTableModel)
        self.fitfunctionTableModel.parametersChanged.connect(self.autoSave)
        self.magnitudeDelegate = MagnitudeSpinBoxDelegate(
            self.globalDict, emptyStringValue=None)
        self.parameterTableView.setItemDelegateForColumn(
            2, self.magnitudeDelegate)
        self.parameterTableView.setItemDelegateForColumn(
            3, self.magnitudeDelegate)
        self.parameterTableView.setItemDelegateForColumn(
            4, self.magnitudeDelegate)
        self.fitResultsTableModel = FitResultsTableModel(self.config)
        self.resultsTableView.setModel(self.fitResultsTableModel)
        restoreGuiState(self, self.config.get(self.configname + '.guiState'))
        self.setButtonEnabledState()
        self.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
        self.autoSaveAction = QtWidgets.QAction("auto save", self)
        self.autoSaveAction.setCheckable(True)
        self.autoSaveAction.setChecked(self.parameters.autoSave)
        self.autoSaveAction.triggered.connect(self.onAutoSave)
        self.addAction(self.autoSaveAction)
        self.autoSave()
        self.currentAnalysisChanged.emit(self.currentAnalysisName)
コード例 #27
0
 def setupUi(self, parent):
     Form.setupUi(self, parent)
     # measurement Table
     self.measurementModel = MeasurementTableModel(
         self.container.measurements, self.settings.extraColumns,
         self.traceuiLookup, self.container)
     self.measurementTableView.setModel(self.measurementModel)
     # result Table
     self.resultModel = ResultTableModel(list(), self.container)
     self.resultTableView.setModel(self.resultModel)
     # study table
     self.studyModel = StudyTableModel(list(), self.container)
     self.studyTableView.setModel(self.studyModel)
     # parameter table
     self.parameterModel = ParameterTableModel(list(), self.container)
     self.parameterTableView.setModel(self.parameterModel)
     magnitudeDelegate = MagnitudeSpinBoxDelegate()
     self.parameterTableView.setItemDelegateForColumn(2, magnitudeDelegate)
     # scanNames table
     self.scanNameTableModel = ScanNameTableModel(self.container.scanNames,
                                                  self.container)
     self.scanNameTableView.setModel(self.scanNameTableModel)
     self.scanNameTableModel.scanNameFilterChanged.connect(
         self.onFilterSelection)
     # Context Menu for ScanName table
     self.scanNameTableView.setContextMenuPolicy(
         QtCore.Qt.ActionsContextMenu)
     self.selectAllAction = QtWidgets.QAction("select all", self)
     self.selectAllAction.triggered.connect(
         partial(self.scanNameTableModel.showAll, True))
     self.scanNameTableView.addAction(self.selectAllAction)
     self.deselectAllAction = QtWidgets.QAction("deselect all", self)
     self.deselectAllAction.triggered.connect(
         partial(self.scanNameTableModel.showAll, False))
     self.scanNameTableView.addAction(self.deselectAllAction)
     # Context Menu for ResultsTable
     self.resultTableView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
     self.addResultToMeasurementAction = QtWidgets.QAction(
         "add as column to measurement", self)
     self.addResultToMeasurementAction.triggered.connect(
         self.onAddResultToMeasurement)
     self.resultTableView.addAction(self.addResultToMeasurementAction)
     # Context Menu for Measurements Table
     self.measurementTableView.setContextMenuPolicy(
         QtCore.Qt.ActionsContextMenu)
     self.removeColumnAction = QtWidgets.QAction("remove selected column",
                                                 self)
     self.reAnalyzeAction = QtWidgets.QAction("re analyze data", self)
     self.removeColumnAction.triggered.connect(
         self.onRemoveMeasurementColumn)
     self.reAnalyzeAction.triggered.connect(self.onReAnalyze)
     self.measurementTableView.addAction(self.removeColumnAction)
     self.measurementTableView.addAction(self.reAnalyzeAction)
     # Context Menu for Parameters Table
     self.parameterTableView.setContextMenuPolicy(
         QtCore.Qt.ActionsContextMenu)
     self.addManualParameterAction = QtWidgets.QAction(
         "add manual parameter", self)
     self.addManualParameterAction.triggered.connect(
         self.parameterModel.addManualParameter)
     self.parameterTableView.addAction(self.addManualParameterAction)
     self.addParameterToMeasurementAction = QtWidgets.QAction(
         "add as column to measurement", self)
     self.addParameterToMeasurementAction.triggered.connect(
         self.onAddParameterToMeasurement)
     self.parameterTableView.addAction(self.addParameterToMeasurementAction)
     self.timespanComboBox.addItems(self.timespans)
     self.timespanComboBox.setCurrentIndex(self.settings.timespan)
     isCustom = self.timespans[self.settings.timespan] == 'Custom'
     self.timespanComboBox.currentIndexChanged[int].connect(
         self.onChangeTimespan)
     self.container.beginInsertMeasurement.subscribe(
         self.measurementModel.beginInsertRows)
     self.container.endInsertMeasurement.subscribe(
         self.measurementModel.endInsertRows)
     self.container.measurementsUpdated.subscribe(
         self.measurementModel.setMeasurements)
     self.measurementTableView.selectionModel().currentChanged.connect(
         self.onActiveInstrumentChanged)
     self.refreshButton.clicked.connect(self.onFilterRefresh)
     # DateTimeEdit
     self.fromDateTimeEdit.setDateTime(self.settings.fromDateTimeEdit)
     self.toDateTimeEdit.setDateTime(self.settings.toDateTimeEdit)
     self.fromDateTimeEdit.dateTimeChanged.connect(
         partial(self.setDateTimeEdit, 'fromDateTimeEdit'))
     self.toDateTimeEdit.dateTimeChanged.connect(
         partial(self.setDateTimeEdit, 'toDateTimeEdit'))
     self.toDateTimeEdit.setEnabled(isCustom)
     self.fromDateTimeEdit.setEnabled(isCustom)
     self.plainTextEdit.editingFinished.connect(self.onCommentFinished)
     self.onFilterRefresh()
     self.scanNameFilterButton.clicked.connect(self.onFilterButton)
     self.updateComboBoxes()
     self.plotButton.clicked.connect(self.onCreatePlot)
     self.updatePlotButton.clicked.connect(self.onUpdatePlot)
     self.updateAllPlotsButton.clicked.connect(self.onUpdateAll)
     self.xComboBox.currentIndexChanged[str].connect(
         partial(self.onComboBoxChanged, 'plotXAxis'))
     self.yComboBox.currentIndexChanged[str].connect(
         partial(self.onComboBoxChanged, 'plotYAxis'))
     self.windowComboBox.currentIndexChanged[str].connect(
         partial(self.onComboBoxChanged, 'plotWindow'))
     self.xUnitEdit.setText(self.settings.xUnit)
     self.yUnitEdit.setText(self.settings.yUnit)
     self.xUnitEdit.editingFinished.connect(
         partial(self.onEditingFinished, 'xUnit', 'xUnitEdit'))
     self.yUnitEdit.editingFinished.connect(
         partial(self.onEditingFinished, 'yUnit', 'yUnitEdit'))
     restoreGuiState(self, self.config.get(self.configname + ".guiSate"))
コード例 #28
0
    def setupUi(self, parent):
        ControlForm.setupUi(self, parent)
        # History and Dictionary
        self.removeAnalysisConfigurationButton.clicked.connect( self.onRemoveAnalysisConfiguration )
        self.saveButton.clicked.connect( self.onSave )
        self.reloadButton.clicked.connect( self.onReload )
        self.addAnalysisButton.clicked.connect( self.onAddAnalysis )
        self.removeAnalysisButton.clicked.connect( self.onRemoveAnalysis )
        self.addPushButton.clicked.connect( self.onAddPushVariable )
        self.removePushButton.clicked.connect( self.onRemovePushVariable )
        self.pushButton.clicked.connect( self.onPush )
        self.fitButton.clicked.connect( self.onFit )
        self.fitAllButton.clicked.connect( self.onFitAll )
        self.plotButton.clicked.connect( self.onPlot )
        self.removePlotButton.clicked.connect( self.onRemoveFit )
        self.extractButton.clicked.connect( self.onExtractFit )
        self.fitToStartButton.clicked.connect( self.onFitToStart )
        self.getSmartStartButton.clicked.connect( self.onSmartToStart )
        self.checkBoxUseSmartStartValues.stateChanged.connect( self.onUseSmartStart )
        self.useErrorBarsCheckBox.stateChanged.connect( self.onUseErrorBars )
        self.analysisComboDelegate = ComboBoxDelegate()
        self.analysisTableModel = AnalysisTableModel(self.analysisDefinition, self.config, self.globalDict, self.evaluationNames )
        self.analysisTableModel.fitfunctionChanged.connect( self.onFitfunctionChanged )
        self.analysisTableModel.analysisChanged.connect( self.autoSave )
        self.analysisTableView.setModel( self.analysisTableModel )
        self.analysisTableView.selectionModel().currentChanged.connect( self.onActiveAnalysisChanged )
        self.analysisTableView.setItemDelegateForColumn(2, self.analysisComboDelegate)
        self.analysisTableView.setItemDelegateForColumn(3, self.analysisComboDelegate)
        self.pushTableModel = PushVariableTableModel(self.config, self.globalDict)
        self.pushTableModel.pushChanged.connect( self.autoSave )
        self.pushTableView.setModel( self.pushTableModel )
        self.pushItemDelegate = MagnitudeSpinBoxDelegate(self.globalDict)
        self.pushComboDelegate = ComboBoxDelegate()
        for column in range(1, 3):
            self.pushTableView.setItemDelegateForColumn(column, self.pushComboDelegate)
        for column in range(3, 7):
            self.pushTableView.setItemDelegateForColumn(column, self.pushItemDelegate)
        self.pushDestinations['Database'] = DatabasePushDestination('fit')

        self.analysisConfigurationComboBox.addItems( sorted([ key for key in self.analysisDefinitionDict.keys() if key ]) )
        if self.currentAnalysisName in self.analysisDefinitionDict:
            self.analysisConfigurationComboBox.setCurrentIndex( self.analysisConfigurationComboBox.findText(self.currentAnalysisName))
        else:
            self.currentAnalysisName = str( self.analysisConfigurationComboBox.currentText() )
        self.analysisConfigurationComboBox.currentIndexChanged[str].connect( self.onLoadAnalysisConfiguration )
        self.analysisConfigurationComboBox.lineEdit().editingFinished.connect( self.onConfigurationEditingFinished ) 
        self.analysisConfigurationChanged.emit( self.analysisDefinitionDict )

        # FitUi
        self.fitfunctionTableModel = FitUiTableModel(self.config)
        self.parameterTableView.setModel(self.fitfunctionTableModel)
        self.fitfunctionTableModel.parametersChanged.connect( self.autoSave )
        self.magnitudeDelegate = MagnitudeSpinBoxDelegate(self.globalDict, emptyStringValue=None)
        self.parameterTableView.setItemDelegateForColumn(2, self.magnitudeDelegate)
        self.parameterTableView.setItemDelegateForColumn(3, self.magnitudeDelegate)
        self.parameterTableView.setItemDelegateForColumn(4, self.magnitudeDelegate)
        self.fitResultsTableModel = FitResultsTableModel(self.config)
        self.resultsTableView.setModel(self.fitResultsTableModel)
        restoreGuiState( self, self.config.get(self.configname+'.guiState') )
        self.setButtonEnabledState()
        self.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
        self.autoSaveAction = QtWidgets.QAction( "auto save", self)
        self.autoSaveAction.setCheckable(True)
        self.autoSaveAction.setChecked(self.parameters.autoSave )
        self.autoSaveAction.triggered.connect( self.onAutoSave )
        self.addAction( self.autoSaveAction )
        self.autoSave()
        self.currentAnalysisChanged.emit( self.currentAnalysisName )
コード例 #29
0
ファイル: AutoLoad.py プロジェクト: pyIonControl/IonControl
    def setupUi(self,widget):
        UiForm.setupUi(self,widget)
        #Set the GUI values from the settings stored in the config files, and
        #connect the valueChanged events of each button to the appropriate method

        self.startButton.clicked.connect( self.onStart )
        self.stopButton.clicked.connect( self.onStop )
        self.saveProfileButton.clicked.connect( self.onSaveProfile )
        self.removeProfileButton.clicked.connect( self.onRemoveProfile )
        self.initCheckBox(self.autoReloadBox, 'autoReload')

        self.historyTableModel = LoadingHistoryModel(self.loadingHistory.loadingEvents )
        self.loadingHistory.beginResetModel.subscribe( self.historyTableModel.beginResetModel )
        self.loadingHistory.endResetModel.subscribe( self.historyTableModel.endResetModel )
        self.loadingHistory.beginInsertRows.subscribe( self.historyTableModel.beginInsertRows )
        self.loadingHistory.endInsertRows.subscribe( self.historyTableModel.endInsertRows )
        self.historyTableView.setModel(self.historyTableModel)
        self.keyFilter = KeyFilter(QtCore.Qt.Key_Delete)
        self.keyFilter.keyPressed.connect( self.deleteFromHistory )
        self.historyTableView.installEventFilter( self.keyFilter )

        #Wavemeter interlock setup
        self.useInterlockGui.setChecked(self.settings.useInterlock)
        self.useInterlockGui.stateChanged.connect(self.onUseInterlockClicked)
        self.tableModel = WavemeterInterlockTableModel(self.settings.interlock)
        self.tableModel.edited.connect(self.autoSave)
        self.delegate = MagnitudeSpinBoxDelegate()
        self.interlockTableView.setItemDelegateForColumn(3, self.delegate)
        self.interlockTableView.setItemDelegateForColumn(4, self.delegate)
        self.tableModel.getWavemeterData.connect(self.getWavemeterData)
        self.tableModel.getWavemeterData.connect(self.checkFreqsInRange)
        self.interlockTableView.setModel(self.tableModel)
        self.interlockTableView.resizeColumnsToContents()
        self.interlockTableView.setSortingEnabled(True)
        if self.wavemeterAvailable:
            self.am = QtNetwork.QNetworkAccessManager()
            self.checkFreqsInRange() #Begins the loop which continually checks if frequencies are in range
            for ilChannel in list(self.settings.interlock.values()):
                self.getWavemeterData(ilChannel.channel)
        else:

            self.useInterlockGui.setEnabled(False)
            #end wavemeter interlock setup
        self.interlockTableView.setEnabled(self.wavemeterAvailable)
        self.pulser.ppActiveChanged.connect( self.setDisabled )
        self.statemachine.initialize( 'Idle' )

        # Settings
        self.AdjustTableModel = AutoLoadSettingsTableModel(self.settings.adjustDisplayData, self.settings.shuttlingNodes, self.globalVariablesUi.globalDict,
                                                           self.shutterUi.shutterTableModel.data, self.statemachine.states)
        self.AdjustTableModel.edited.connect(self.calculateOverrides)
        self.AdjustTableView.setModel( self.AdjustTableModel )
        self.comboBoxDelegate = ComboBoxDelegate()
        self.magnitudeSpinBoxDelegate = MagnitudeSpinBoxDelegate(globalDict=self.globalVariablesUi.globalDict)
        self.multiSelectDelegate = MultiSelectDelegate()
        self.AdjustTableView.setItemDelegateForColumn( 0, self.comboBoxDelegate )
        self.AdjustTableView.setItemDelegateForColumn( 1, self.comboBoxDelegate )
        self.AdjustTableView.setItemDelegateForColumn( 2, self.magnitudeSpinBoxDelegate )
        self.AdjustTableView.setItemDelegateForColumn( 3, self.multiSelectDelegate )
        self.AdjustTableView.clicked.connect(self.AdjustTableModel.onClicked)
        self.dropAdjustSettingButton.clicked.connect( self.onAdjustRemoveSetting )
        self.addAdjustSettingButton.clicked.connect( self.AdjustTableModel.addSetting )

        # Counters
        self.CounterTableModel = AutoLoadCounterTableModel( self.settings.counterDisplayData,self.globalVariablesUi.globalDict )
        self.CounterTableModel.edited.connect( self.autoSave )
        self.CounterTableModel.edited.connect( self.updateCounterMask )
        self.CounterTableView.setModel( self.CounterTableModel )
        self.CounterTableView.setItemDelegateForColumn( 0, self.comboBoxDelegate )
        self.CounterTableView.setItemDelegateForColumn( 1, self.multiSelectDelegate )
        self.CounterTableView.setItemDelegateForColumn( 2, self.magnitudeSpinBoxDelegate  )
        self.CounterTableView.setItemDelegateForColumn( 3, self.magnitudeSpinBoxDelegate  )
        self.dropCounterSettingButton.clicked.connect( self.onCounterRemoveSetting )
        self.addCounterSettingButton.clicked.connect( self.CounterTableModel.addSetting )

        # Actions
        self.createAction("Last ion is still trapped", self.onIonIsStillTrapped )
        self.createAction("Trapped an ion now", self.onTrappedIonNow )
        self.createAction("auto save profile", self.onAutoSave, checkable=True, checked=self.parameters.autoSave )
        self.createAction("Add wavemeter channel", self.tableModel.addChannel)
        self.createAction("Remove selected wavemeter channels", self.onRemoveChannel)
        self.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
        restoreGuiState( self, self.config.get('AutoLoad.guiState') )

        self.profileComboBox.addItems( self.settingsDict.keys() )
        if self.currentSettingsName in self.settingsDict:
            self.profileComboBox.setCurrentIndex( self.profileComboBox.findText(self.currentSettingsName))
        else:
            self.currentSettingsName = str( self.profileComboBox.currentText() )
        self.profileComboBox.currentIndexChanged[str].connect(self.onLoadProfile)
        self.profileComboBox.lineEdit().editingFinished.connect( self.autoSave )

        self.setProfile( self.currentSettingsName, self.settings )
        self.calculateOverrides()
        self.autoSave()
コード例 #30
0
    def setupUi(self, parent):
        logger = logging.getLogger(__name__)
        AWGForm.setupUi(self, parent)
        self.setWindowTitle(self.device.displayName)

        self._varAsOutputChannelDict = dict()
        self.area = DockArea()
        self.splitter.insertWidget(0, self.area)
        self.awgChannelUiList = []
        for channel in range(self.device.deviceProperties['numChannels']):
            awgChannelUi = AWGChannelUi(channel,
                                        self.settings,
                                        self.globalDict,
                                        self.waveformCache,
                                        parent=self)
            awgChannelUi.setupUi(awgChannelUi)
            awgChannelUi.dependenciesChanged.connect(
                self.onDependenciesChanged)
            self.awgChannelUiList.append(awgChannelUi)
            dock = Dock("AWG Channel {0}".format(channel))
            dock.addWidget(awgChannelUi)
            self.area.addDock(dock, 'right')
            self.device.waveforms[channel] = awgChannelUi.waveform
        self.refreshVarDict()

        # Settings control
        self.saveButton.clicked.connect(self.onSave)
        self.removeButton.clicked.connect(self.onRemove)
        self.reloadButton.clicked.connect(self.onReload)
        self.settingsModel = QtCore.QStringListModel()
        self.settingsComboBox.setModel(self.settingsModel)
        self.settingsModel.setStringList(sorted(self.settingsDict.keys()))
        self.settingsComboBox.setCurrentIndex(
            self.settingsComboBox.findText(self.settingsName))
        self.settingsComboBox.currentIndexChanged[str].connect(self.onLoad)
        self.settingsComboBox.lineEdit().editingFinished.connect(
            self.onComboBoxEditingFinished)
        self.autoSaveCheckBox.setChecked(self.autoSave)
        self.saveButton.setEnabled(not self.autoSave)
        self.saveButton.setVisible(not self.autoSave)
        self.reloadButton.setEnabled(not self.autoSave)
        self.reloadButton.setVisible(not self.autoSave)
        self.autoSaveCheckBox.stateChanged.connect(self.onAutoSave)

        #programming options table
        self.programmingOptionsTable.setupUi(
            globalDict=self.globalDict, parameterDict=self.device.parameters())
        self.programmingOptionsTable.valueChanged.connect(self.device.update)

        # Table
        self.tableModel = AWGTableModel(self.settings, self.globalDict)
        self.tableView.setModel(self.tableModel)
        self.tableModel.valueChanged.connect(self.onValue)
        self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
        self.tableView.setItemDelegateForColumn(self.tableModel.column.value,
                                                self.delegate)

        #File
        self.filenameModel = QtCore.QStringListModel()
        self.filenameComboBox.setModel(self.filenameModel)
        self.filenameModel.setStringList([
            basename for basename, filename in list(self.recentFiles.items())
            if os.path.exists(filename)
        ])
        self.filenameComboBox.setCurrentIndex(
            self.filenameComboBox.findText(
                os.path.basename(self.settings.filename)))
        self.filenameComboBox.currentIndexChanged[str].connect(self.onFilename)
        self.removeFileButton.clicked.connect(self.onRemoveFile)
        self.newFileButton.clicked.connect(self.onNewFile)
        self.openFileButton.clicked.connect(self.onOpenFile)
        self.saveFileButton.clicked.connect(self.onSaveFile)
        self.reloadFileButton.clicked.connect(self.onReloadFile)

        #cache
        self.cacheDepthSpinBox.setValue(self.settings.cacheDepth)
        self.cacheDepthSpinBox.valueChanged.connect(self.onCacheDepth)
        self.clearCacheButton.clicked.connect(self.onClearCache)

        #status bar
        self.label = QtGui.QLabel('Sample Rate: {0}'.format(
            self.settings.deviceProperties['sampleRate']))
        self.statusbar.addWidget(self.label)

        #Restore GUI state
        state = self.config.get(self.configname + '.state')
        pos = self.config.get(self.configname + '.pos')
        size = self.config.get(self.configname + '.size')
        isMaximized = self.config.get(self.configname + '.isMaximized')
        dockAreaState = self.config.get(self.configname + '.dockAreaState')
        guiState = self.config.get(self.configname + ".guiState")
        restoreGuiState(self, guiState)
        try:
            if pos:
                self.move(pos)
            if size:
                self.resize(size)
            if isMaximized:
                self.showMaximized()
            if state:
                self.restoreState(state)
            for awgChannelUi in self.awgChannelUiList:
                channelGuiState = self.config[
                    self.configname +
                    "channel{0}.guiState".format(awgChannelUi.channel)]
                restoreGuiState(awgChannelUi, channelGuiState)
        except Exception as e:
            logger.warning(
                "Error on restoring state in AWGUi {0}. Exception occurred: {1}"
                .format(self.device.displayName, e))
        try:
            if dockAreaState:
                self.area.restoreState(dockAreaState)
        except Exception as e:
            logger.warning(
                "Cannot restore dock state in AWGUi {0}. Exception occurred: {1}"
                .format(self.device.displayName, e))
            self.area.deleteLater()
            self.area = DockArea()
            self.splitter.insertWidget(0, self.area)
            for channelUi in self.awgChannelUiList:
                dock = Dock("AWG Channel {0}".format(channel))
                dock.addWidget(channelUi)
                self.area.addDock(dock, 'right')
        self.saveIfNecessary()