コード例 #1
0
 def updateppDisplay(self):
     for pppTab in list(self.sourceCodeEdits.values()):
         self.sourceTabs.removeTab(self.sourceTabs.indexOf(pppTab))
     self.sourceCodeEdits = dict()
     for name, text in self.pulseProgram.source.items():
         textEdit = PulseProgramSourceEdit()
         textEdit.setupUi(textEdit,
                          extraKeywords1=self.definitionWords,
                          extraKeywords2=[key for key in OPS])
         textEdit.setPlainText(text)
         self.sourceCodeEdits[name] = textEdit
         self.sourceTabs.addTab(textEdit, name)
         textEdit.setReadOnly(self.currentContext.pulseProgramMode != 'pp')
コード例 #2
0
 def updatepppDisplay(self):
     for pppTab in list(self.pppCodeEdits.values()):
         self.sourceTabs.removeTab(self.sourceTabs.indexOf(pppTab))
     self.pppCodeEdits = dict()
     if self.currentContext.pulseProgramMode == 'ppp':
         for name, text in [(self.pppSourceFile, self.pppSource)]:
             textEdit = PulseProgramSourceEdit(mode='ppp')
             encodingStrings = [
                 encoding for encoding in EncodingDict.keys()
                 if type(encoding) == str
             ]
             textEdit.setupUi(textEdit,
                              extraKeywords1=self.definitionWords +
                              encodingStrings,
                              extraKeywords2=self.builtinWords)
             textEdit.setPlainText(text)
             self.pppCodeEdits[name] = textEdit
             self.sourceTabs.addTab(textEdit, name)
コード例 #3
0
ファイル: ScriptingUi.py プロジェクト: Yodaquette/IonControl
    def setupUi(self, parent):
        super(ScriptingUi, self).setupUi(parent)
        self.configname = 'Scripting'
        
        #setup console
        self.consoleMaximumLines = self.config.get(self.configname+'.consoleMaximumLinesNew', 100)
        self.consoleEnable = self.config.get(self.configname+'.consoleEnable', True)
        self.consoleClearButton.clicked.connect( self.onClearConsole )
        self.linesSpinBox.valueChanged.connect( self.onConsoleMaximumLinesChanged )
        self.linesSpinBox.setValue( self.consoleMaximumLines )
        self.checkBoxEnableConsole.stateChanged.connect( self.onEnableConsole )
        self.checkBoxEnableConsole.setChecked( self.consoleEnable )
        
        #setup editor
        self.textEdit = PulseProgramSourceEdit()
        self.textEdit.setupUi(self.textEdit, extraKeywords1=[], extraKeywords2=scriptFunctions)
        self.textEdit.textEdit.currentLineMarkerNum = 9
        self.textEdit.textEdit.markerDefine(QsciScintilla.Background, self.textEdit.textEdit.currentLineMarkerNum) #This is a marker that highlights the background
        self.textEdit.textEdit.setMarkerBackgroundColor(QtGui.QColor(0xd0, 0xff, 0xd0), self.textEdit.textEdit.currentLineMarkerNum)
        self.textEdit.setPlainText(self.script.code)
        self.splitterVertical.insertWidget(0, self.textEdit)
        
        #setup documentation list
        self.getDocs()
        self.docTreeWidget.setHeaderLabels(['Available Script Functions'])
        for funcDef, funcDesc in list(self.docDict.items()):
            itemDef  = QtWidgets.QTreeWidgetItem(self.docTreeWidget, [funcDef])
            self.docTreeWidget.addTopLevelItem(itemDef)
            QtWidgets.QTreeWidgetItem(itemDef, [funcDesc])
            self.docTreeWidget.setWordWrap(True)

        #load file
        self.script.fullname = self.config.get( self.configname+'.script.fullname', '' )
        if self.script.fullname != '' and os.path.exists(self.script.fullname):
            with open(self.script.fullname, "r") as f:
                self.script.code = f.read()
        else:
            self.script.code = ''
        
        #setup filename combo box
        self.recentFiles = self.config.get( self.configname+'.recentFiles', dict() )
        self.recentFiles = {k: v for k,v in self.recentFiles.items() if os.path.exists(v)} #removes files from dict if file paths no longer exist
        self.filenameComboBox.setInsertPolicy(1)
        self.filenameComboBox.setMaxCount(10)
        self.filenameComboBox.addItems( [shortname for shortname, fullname in list(self.recentFiles.items()) if os.path.exists(fullname)] )
        self.filenameComboBox.currentIndexChanged[str].connect( self.onFilenameChange )
        self.removeCurrent.clicked.connect( self.onRemoveCurrent )
        self.filenameComboBox.setValidator( QtGui.QRegExpValidator() ) #verifies that files typed into combo box can be used
        self.updateValidator()

        #connect buttons
        self.script.repeat = self.config.get(self.configname+'.repeat',False)
        self.repeatButton.setChecked(self.script.repeat)
        self.repeatButton.clicked.connect( self.onRepeat )
        self.script.slow = self.config.get(self.configname+'.slow',False)
        self.slowButton.setChecked(self.script.slow)
        self.slowButton.clicked.connect( self.onSlow )
        self.revert = self.config.get(self.configname+'.revert',False)
        self.revertButton.setChecked(self.revert)
        self.revertButton.clicked.connect( self.onRevert )
        #File control actions
        self.actionOpen.triggered.connect( self.onLoad )
        self.actionSave.triggered.connect( self.onSave )
        self.actionReset.triggered.connect(self.onReset)
        self.actionNew.triggered.connect( self.onNew )
        #Script control actions
        self.actionStartScript.triggered.connect( self.onStartScript )
        self.actionPauseScript.triggered.connect( self.onPauseScript )
        self.actionStopScript.triggered.connect( self.onStopScript )
        self.actionPauseScriptAndScan.triggered.connect( self.onPauseScriptAndScan )
        self.actionStopScriptAndScan.triggered.connect( self.onStopScriptAndScan )
        #Script finished signal
        self.script.finished.connect( self.onFinished )

        self.loadFile(self.script.fullname)
        self.populateTree() #populates file explorer tree widget

        #Connect buttons for fileTreeWidget
        self.fileTreeWidget.itemDoubleClicked.connect(self.onDoubleClick)

        self.expandTree = QtWidgets.QAction("Expand All", self)
        self.collapseTree = QtWidgets.QAction("Collapse All", self)
        self.expandChild = QtWidgets.QAction("Expand Selected", self)
        self.collapseChild = QtWidgets.QAction("Collapse Selected", self)
        self.expandTree.triggered.connect(partial(self.onExpandOrCollapse, True, True))
        self.collapseTree.triggered.connect(partial(self.onExpandOrCollapse, True, False))
        self.expandChild.triggered.connect(partial(self.onExpandOrCollapse, False, True))
        self.collapseChild.triggered.connect(partial(self.onExpandOrCollapse, False, False))
        self.fileTreeWidget.addAction(self.expandTree)
        self.fileTreeWidget.addAction(self.collapseTree)
        self.fileTreeWidget.addAction(self.expandChild)
        self.fileTreeWidget.addAction(self.collapseChild)

        self.fileTreeWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)

        self.setWindowTitle(self.configname)
        self.setWindowIcon(QtGui.QIcon(":/other/icons/Terminal-icon.png"))
        self.statusLabel.setText("Idle")
コード例 #4
0
    def setupUi(self, parent):
        super(UserFunctionsEditor, self).setupUi(parent)
        self.tableModel = EvalTableModel(self.globalDict)
        self.tableView.setModel(self.tableModel)
        self.tableView.setSortingEnabled(True)  # triggers sorting
        self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
        self.tableView.setItemDelegateForColumn(1, self.delegate)
        self.addEvalRow.clicked.connect(self.onAddRow)
        self.removeEvalRow.clicked.connect(self.onRemoveRow)

        #initialize default options
        self.optionsWindow = OptionsWindow(self.config,
                                           'UserFunctionsEditorOptions')
        self.optionsWindow.setupUi(self.optionsWindow)
        self.actionOptions.triggered.connect(self.onOpenOptions)
        self.optionsWindow.OptionsChangedSignal.connect(self.updateOptions)
        self.updateOptions()
        if self.optionsWindow.defaultExpand:
            onExpandOrCollapse(self.fileTreeWidget, True, True)

        #hot keys for copy/past and sorting
        self.filter = KeyListFilter(
            [QtCore.Qt.Key_PageUp, QtCore.Qt.Key_PageDown])
        self.filter.keyPressed.connect(self.onReorder)
        self.tableView.installEventFilter(self.filter)
        QtWidgets.QShortcut(QtGui.QKeySequence(QtGui.QKeySequence.Copy), self,
                            self.copy_to_clipboard)
        QtWidgets.QShortcut(QtGui.QKeySequence(QtGui.QKeySequence.Paste), self,
                            self.paste_from_clipboard)

        #setup editor
        self.textEdit = PulseProgramSourceEdit()
        self.textEdit.setupUi(self.textEdit,
                              extraKeywords1=[],
                              extraKeywords2=[])
        self.textEdit.textEdit.currentLineMarkerNum = 9
        self.textEdit.textEdit.markerDefine(
            QsciScintilla.Background,
            self.textEdit.textEdit.currentLineMarkerNum
        )  #This is a marker that highlights the background
        self.textEdit.textEdit.setMarkerBackgroundColor(
            QtGui.QColor(0xd0, 0xff, 0xd0),
            self.textEdit.textEdit.currentLineMarkerNum)
        self.textEdit.setPlainText(self.script.code)
        self.splitterVertical.insertWidget(0, self.textEdit)

        #load recent files, also checks if data was saved correctly and if files still exist
        savedfiles = self.config.get(self.configname + '.recentFiles',
                                     OrderedList())
        self.initRecentFiles(savedfiles)
        self.initComboBox()

        self.tableModel.exprList = self.config.get(
            self.configname + '.evalstr',
            [ExpressionValue(None, self.globalDict)])
        if not isinstance(self.tableModel.exprList, list) or not isinstance(
                self.tableModel.exprList[0], ExpressionValue):
            self.tableModel.exprList = [ExpressionValue(None, self.globalDict)]
        self.tableModel.dataChanged.emit(QtCore.QModelIndex(),
                                         QtCore.QModelIndex())
        self.tableModel.layoutChanged.emit()
        self.tableModel.connectAllExprVals()

        #load last opened file
        self.script.fullname = self.config.get(
            self.configname + '.script.fullname', '')
        self.initLoad()

        #connect buttons
        self.actionOpen.triggered.connect(self.onLoad)
        self.actionSave.triggered.connect(self.onSave)
        self.actionNew.triggered.connect(self.onNew)

        self.setWindowTitle(self.configname)
        self.setWindowIcon(QtGui.QIcon(":/latex/icons/FuncIcon2.png"))
        self.statusLabel.setText("")
        self.tableModel.updateData()
コード例 #5
0
    def setupUi(self, parent):
        super(UserFunctionsEditor, self).setupUi(parent)
        self.configname = 'UserFunctionsEditor'
        self.fileTreeWidget.setHeaderLabels(['User Function Files'])
        self.populateTree()

        self.tableModel = EvalTableModel(self.globalDict)
        self.tableView.setModel(self.tableModel)
        self.tableView.setSortingEnabled(True)  # triggers sorting
        self.delegate = MagnitudeSpinBoxDelegate(self.globalDict)
        self.tableView.setItemDelegateForColumn(1, self.delegate)
        self.addEvalRow.clicked.connect(self.onAddRow)
        self.removeEvalRow.clicked.connect(self.onRemoveRow)

        #hot keys for copy/past and sorting
        self.filter = KeyListFilter(
            [QtCore.Qt.Key_PageUp, QtCore.Qt.Key_PageDown])
        self.filter.keyPressed.connect(self.onReorder)
        self.tableView.installEventFilter(self.filter)
        QtWidgets.QShortcut(QtGui.QKeySequence(QtGui.QKeySequence.Copy), self,
                            self.copy_to_clipboard)
        QtWidgets.QShortcut(QtGui.QKeySequence(QtGui.QKeySequence.Paste), self,
                            self.paste_from_clipboard)

        #setup editor
        self.textEdit = PulseProgramSourceEdit()
        self.textEdit.setupUi(self.textEdit,
                              extraKeywords1=[],
                              extraKeywords2=[])
        self.textEdit.textEdit.currentLineMarkerNum = 9
        self.textEdit.textEdit.markerDefine(
            QsciScintilla.Background,
            self.textEdit.textEdit.currentLineMarkerNum
        )  #This is a marker that highlights the background
        self.textEdit.textEdit.setMarkerBackgroundColor(
            QtGui.QColor(0xd0, 0xff, 0xd0),
            self.textEdit.textEdit.currentLineMarkerNum)
        self.textEdit.setPlainText(self.script.code)
        self.splitterVertical.insertWidget(0, self.textEdit)

        #load file
        self.script.fullname = self.config.get(
            self.configname + '.script.fullname', '')
        self.tableModel.exprList = self.config.get(
            self.configname + '.evalstr',
            [ExpressionValue(None, self.globalDict)])
        if not isinstance(self.tableModel.exprList, list) or not isinstance(
                self.tableModel.exprList[0], ExpressionValue):
            self.tableModel.exprList = [ExpressionValue(None, self.globalDict)]
        self.tableModel.dataChanged.emit(QtCore.QModelIndex(),
                                         QtCore.QModelIndex())
        self.tableModel.layoutChanged.emit()
        self.tableModel.connectAllExprVals()
        if self.script.fullname != '' and os.path.exists(self.script.fullname):
            with open(self.script.fullname, "r") as f:
                self.script.code = f.read()
        else:
            self.script.code = ''

        #setup filename combo box
        self.recentFiles = self.config.get(self.configname + '.recentFiles',
                                           dict())
        self.recentFiles = {
            k: v
            for k, v in self.recentFiles.items() if os.path.exists(v)
        }  #removes files from dict if file paths no longer exist
        self.filenameComboBox.setInsertPolicy(1)
        self.filenameComboBox.setMaxCount(10)
        self.filenameComboBox.addItems([
            shortname for shortname, fullname in list(self.recentFiles.items())
            if os.path.exists(fullname)
        ])
        self.filenameComboBox.currentIndexChanged[str].connect(
            self.onFilenameChange)
        self.removeCurrent.clicked.connect(self.onRemoveCurrent)
        self.filenameComboBox.setValidator(QtGui.QRegExpValidator(
        ))  #verifies that files typed into combo box can be used
        self.updateValidator()

        #connect buttons
        self.actionOpen.triggered.connect(self.onLoad)
        self.actionSave.triggered.connect(self.onSave)
        self.actionNew.triggered.connect(self.onNew)

        self.fileTreeWidget.itemDoubleClicked.connect(self.onDoubleClick)
        self.loadFile(self.script.fullname)

        self.expandTree = QtWidgets.QAction("Expand All", self)
        self.collapseTree = QtWidgets.QAction("Collapse All", self)
        self.expandChild = QtWidgets.QAction("Expand Selected", self)
        self.collapseChild = QtWidgets.QAction("Collapse Selected", self)
        self.expandTree.triggered.connect(
            partial(self.onExpandOrCollapse, True, True))
        self.collapseTree.triggered.connect(
            partial(self.onExpandOrCollapse, True, False))
        self.expandChild.triggered.connect(
            partial(self.onExpandOrCollapse, False, True))
        self.collapseChild.triggered.connect(
            partial(self.onExpandOrCollapse, False, False))
        self.fileTreeWidget.addAction(self.expandTree)
        self.fileTreeWidget.addAction(self.collapseTree)
        self.fileTreeWidget.addAction(self.expandChild)
        self.fileTreeWidget.addAction(self.collapseChild)

        self.fileTreeWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)

        self.setWindowTitle(self.configname)
        self.setWindowIcon(QtGui.QIcon(":/latex/icons/FuncIcon2.png"))
        self.statusLabel.setText("")
        self.tableModel.updateData()
コード例 #6
0
    def setupUi(self, parent):
        super(ScriptingUi, self).setupUi(parent)
        self.configname = 'Scripting'

        #initialize default options
        self.optionsWindow = OptionsWindow(self.config, 'ScriptingEditorOptions')
        self.optionsWindow.setupUi(self.optionsWindow)
        self.actionOptions.triggered.connect(self.onOpenOptions)
        self.optionsWindow.OptionsChangedSignal.connect(self.updateOptions)
        self.updateOptions()
        if self.optionsWindow.defaultExpand:
            onExpandOrCollapse(self.fileTreeWidget, True, True)

        #setup console
        self.consoleMaximumLines = self.config.get(self.configname+'.consoleMaximumLinesNew', 100)
        self.consoleEnable = self.config.get(self.configname+'.consoleEnable', True)
        self.consoleClearButton.clicked.connect( self.onClearConsole )
        self.linesSpinBox.valueChanged.connect( self.onConsoleMaximumLinesChanged )
        self.linesSpinBox.setValue( self.consoleMaximumLines )
        self.checkBoxEnableConsole.stateChanged.connect( self.onEnableConsole )
        self.checkBoxEnableConsole.setChecked( self.consoleEnable )
        
        #setup editor
        self.textEdit = PulseProgramSourceEdit()
        self.textEdit.setupUi(self.textEdit, extraKeywords1=[], extraKeywords2=scriptFunctions)
        self.textEdit.textEdit.currentLineMarkerNum = 9
        self.textEdit.textEdit.markerDefine(QsciScintilla.Background, self.textEdit.textEdit.currentLineMarkerNum) #This is a marker that highlights the background
        self.textEdit.textEdit.setMarkerBackgroundColor(QtGui.QColor(0xd0, 0xff, 0xd0), self.textEdit.textEdit.currentLineMarkerNum)
        self.textEdit.setPlainText(self.script.code)
        self.splitterVertical.insertWidget(0, self.textEdit)
        
        #setup documentation list
        self.getDocs()
        self.docTreeWidget.setHeaderLabels(['Available Script Functions'])
        for funcDef, funcDesc in list(self.docDict.items()):
            itemDef  = QtWidgets.QTreeWidgetItem(self.docTreeWidget, [funcDef])
            self.docTreeWidget.addTopLevelItem(itemDef)
            QtWidgets.QTreeWidgetItem(itemDef, [funcDesc])
            self.docTreeWidget.setWordWrap(True)

        #load recent files, also checks if data was saved correctly and if files still exist
        savedfiles = self.config.get( self.configname+'.recentFiles', OrderedList())
        self.initRecentFiles(savedfiles)
        self.initComboBox()

        #load last opened file
        self.script.fullname = self.config.get( self.configname+'.script.fullname', '' )
        self.initLoad()

        #connect buttons
        self.script.repeat = self.config.get(self.configname+'.repeat',False)
        self.repeatButton.setChecked(self.script.repeat)
        self.repeatButton.clicked.connect( self.onRepeat )
        self.script.slow = self.config.get(self.configname+'.slow',False)
        self.slowButton.setChecked(self.script.slow)
        self.slowButton.clicked.connect( self.onSlow )
        self.revert = self.config.get(self.configname+'.revert',False)
        self.revertButton.setChecked(self.revert)
        self.revertButton.clicked.connect( self.onRevert )
        #File control actions
        self.actionOpen.triggered.connect( self.onLoad )
        self.actionSave.triggered.connect( self.onSave )
        self.actionReset.triggered.connect(self.onReset)
        self.actionNew.triggered.connect( self.onNew )
        #Script control actions
        self.actionStartScript.triggered.connect( self.onStartScript )
        self.actionPauseScript.triggered.connect( self.onPauseScript )
        self.actionStopScript.triggered.connect( self.onStopScript )
        self.actionPauseScriptAndScan.triggered.connect( self.onPauseScriptAndScan )
        self.actionStopScriptAndScan.triggered.connect( self.onStopScriptAndScan )
        #Script finished signal
        self.script.finished.connect( self.onFinished )

        self.setWindowTitle(self.configname)
        self.setWindowIcon(QtGui.QIcon(":/other/icons/Terminal-icon.png"))
        self.statusLabel.setText("Idle")