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'))
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))
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 )
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') )
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'))
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
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))
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)
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()
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 )
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()
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
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'))
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
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)
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)
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") )
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()
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)
def setupUi(self, parent): Form.setupUi(self, parent) self.model = StatusTableModel(self.statusBits) self.tableView.setModel(self.model) restoreGuiState(self, self.config.get("StatusDisplay"))
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()
def setupUi(self, parent): Form.setupUi(self, parent) self.model = StatusTableModel(self.statusBits) self.tableView.setModel( self.model ) restoreGuiState( self, self.config.get("StatusDisplay") )
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))
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()
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)
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)
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"))
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 )
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()
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()