class WeightParamGroup(pTypes.GroupParameter): def __init__(self, **opts): opts['type'] = 'weight_group' opts['addText'] = "Add" opts['addList'] = ['float'] pTypes.GroupParameter.__init__(self, **opts) def addNew(self, typ): val = { 'float': 0.0, }[typ] self.addChild(dict(name="w%d" % (len(self.childs)+1), type=typ, value=val, removable=True, renamable=True)) registerParameterType('weight_group', WeightParamGroup, override = True) def generate_arr(array): sign, nelem = array a = np.empty(nelem) a.fill(sign) return a mainViewBase, mainViewForm = uic.loadUiType("RTS_main_view.ui") class RTSmainView(mainViewBase,mainViewForm): def __init__(self, parent = None): super().__init__() self.params_filename = "params.dat"
{'title': 'Actionner type:', 'name': 'actionner_type', 'type': 'list', 'limits': ['Axis', 'Button', 'Hat'], 'visible': False}, {'title': 'Actionner ID:', 'name': 'actionnerID', 'type': 'int', 'value': -1, 'visible': False}, ]) # for param in params: # if param['type'] == 'itemselect' or param['type'] == 'list': # param['show_pb'] = True child = {'title': f'Action {newindex:02d}', 'name': f'{name_prefix}{newindex:02d}', 'type': 'group', 'removable': True, 'children': params, 'removable': True, 'renamable': False} self.addChild(child) registerParameterType('groupremote', ScalableGroupRemote, override=True) class ScalableGroupModules(GroupParameter): """ """ def __init__(self, **opts): opts['type'] = 'groupremote' opts['addText'] = "Add" if 'modtype' not in opts: opts['modtype'] = 'Actuator' if 'addList' not in opts: opts['addList'] = [] super().__init__(**opts)
def makeWidget(self): w = RangeWidget() return w class RangeParameter(Parameter): itemClass = RangeParameterItem sigActivated = pyqtSignal(object) def activate(self): self.sigActivated.emit(self) self.emitStateChanged('activated', None) registerParameterType('range', RangeParameter, override=True) ## logfloat class SpinAndSliderWidget(QWidget): """this combinate a spin box and a slider in log scale""" sigChanged = pyqtSignal() def __init__( self, parent=None, value=1., limits=[0.001, 1000], orientation=Qt.Horizontal, ): QWidget.__init__(self, parent)
if 'limits' in opts: defs['bounds'] = opts['limits'] w = pg.SpinBox() w.setOpts(**defs) w.sigChanged = w.sigValueChanged w.sigChanging = w.sigValueChanging return w class ChannelParameter(Parameter): '''The parameter setup entries for channels are created using this class and the underlying :class:`ChannelParameterItem`. ''' itemClass = ChannelParameterItem def __init__(self, *args, **kargs): Parameter.__init__(self, *args, **kargs) class DisabledMouseViewBox(pg.ViewBox): '''Mouse is disabled in histogram plots using this pg viewbox.''' def __init__(self, *args, **kwds): pg.ViewBox.__init__(self, *args, **kwds) self.setMouseEnabled(False, False) #self.setMouseMode(self.RectMode) registerParameterType('channel', ChannelParameter, override=True)
class PlayPauseStopParameter(Parameter): """Used for displaying a button within the tree.""" itemClass = PlayPauseStopParameterItem sigPlayPauseClicked = QtCore.Signal(object) sigStepClicked = QtCore.Signal(object) sigStopClicked = QtCore.Signal(object) def buttonPlayPauseClicked(self): self.sigPlayPauseClicked.emit(self) self.emitStateChanged('playPauseClicked', None) def buttonStepClicked(self): self.sigStepClicked.emit(self) self.emitStateChanged('stepClicked', None) def buttonStopClicked(self): self.sigStopClicked.emit(self) self.emitStateChanged('stopClicked', None) registerParameterType('play_pause_stop', PlayPauseStopParameter, override=True) # this is what framework sees/gets as gui class PGGuiProxy(object): def __init__(self, parent, r=None, kd=None): self.renderer = r self._is_key_down = kd self._parent = parent def is_key_down(self, key): return self._is_key_down[key] def add_param(self, *args, **kwargs): return self._parent.add_param(*args, **kwargs)
sigChanged = pyqtSignal def __init__(self, param, depth): types.WidgetParameterItem.__init__(self, param, depth) def makeWidget(self): w = RangeWidget() return w class RangeParameter(Parameter): itemClass = RangeParameterItem sigActivated = pyqtSignal(object) def activate(self): self.sigActivated.emit(self) self.emitStateChanged('activated', None) registerParameterType('range', RangeParameter, override=True) ## logfloat class SpinAndSliderWidget(QWidget): """this combinate a spin box and a slider in log scale""" sigChanged = pyqtSignal() def __init__(self, parent = None, value = 1., limits = [0.001, 1000], orientation = Qt.Horizontal, ): QWidget.__init__(self, parent)
#=============================================================================== # TupleParameter #=============================================================================== class TupleParameter(parametertree.Parameter): itemClass = MyWidgetParameterItem def __init__(self, *args, **kargs): parametertree.Parameter.__init__(self, *args, **kargs) if self.opts['type'] == 'color': self.value = self.colorValue def colorValue(self): return pg.mkColor(parametertree.Parameter.value(self)) parametertree.registerParameterType("(bool, float)", TupleParameter) #=============================================================================== # Methods #=============================================================================== def ExceptionHook(eType, value, tback): logger.error("ExceptionHook error!", exc_info = (eType, value, tback)) box = QtGui.QMessageBox() box.setWindowTitle("Error") box.setIcon(QtGui.QMessageBox.Critical) box.setText("<b>Errors:</b> <br> - " + "<br> - ".join(reversed(map(str, value.args)))) box.setInformativeText("Please contract your system administrator and show this message. \n" + \ "The application can not get started without a correct configuration.")
def makeWidget(self): self.textBox = QtGui.QTextEdit() self.textBox.setMaximumHeight(100) self.textBox.value = lambda: str(self.textBox.toPlainText()) self.textBox.setValue = self.textBox.setPlainText self.textBox.sigChanged = self.textBox.textChanged return self.textBox class TextParameter(Parameter): type = 'text' itemClass = TextParameterItem registerParameterType('text', TextParameter) params = [ { 'name': 'Group 0', 'type': 'group', 'children': [ { 'name': 'Param 1', 'type': 'int', 'value': 10 }, { 'name': 'Param 2',
else: newindex = len(childnames) child = { 'title': typ, 'name': 'ai{:02.0f}'.format(newindex), 'type': 'group', 'children': self.params, 'removable': True, 'renamable': False } self.addChild(child) registerParameterType('groupai', ScalableGroupAI, override=True) class ScalableGroupCounter(pTypes.GroupParameter): """ | ================ ============= **Attributes** **Type** *opts* dictionnary ================ ============= See Also -------- hardware.DAQ_Move_Stage_type """
# self.sigValueChanged.emit(self, value) finally: if blockSignal is not None: self.sigValueChanged.connect(blockSignal) return value def setDefault(self, val): """Set the default value for this parameter.""" if np.all(self.opts['default'] == val): return self.opts['default'] = val self.sigDefaultChanged.emit(self, val) registerParameterType("ndarray", ImageParameter, override=True) class FixableWidgetParameterItem(parameterTypes.WidgetParameterItem): def __init__(self, param, depth): super(FixableWidgetParameterItem, self).__init__(param, depth) if param.opts.get("fixable"): self.fixbutton = QPushButton() self.fixbutton.setFixedWidth(20) self.fixbutton.setFixedHeight(20) self.fixbutton.setCheckable(True) self.fixbutton.setChecked(param.opts["fixed"]) self.fixbutton.toggled.connect(param.sigFixToggled) self.fixbutton.toggled.connect( lambda fixed: param.setOpts(fixed=fixed)) # self.fixbutton.toggled.connect(lambda fixed: self.widgetValueChanged())
pass class ImageParameter(Parameter): itemClass = ImageParameterItem def __init__(self, *args, **kwargs): if 'expanded' not in kwargs: kwargs['expanded'] = False super(ImageParameter, self).__init__(*args, **kwargs) def setValue(self, value, blockSignal=None): """ Set the value of this Parameter; return the actual value that was set. (this may be different from the value that was requested) """ try: if blockSignal is not None: self.sigValueChanged.disconnect(blockSignal) if np.array_equal(self.opts['value'], value): return value self.opts['value'] = value # self.sigValueChanged.emit(self, value) finally: if blockSignal is not None: self.sigValueChanged.connect(blockSignal) return value registerParameterType('ndarray', ImageParameter, override=True)
def makeWidget(self): opts = self.param.opts t = opts['type'] if t == 'float2': defs = { 'value': 0, 'min': None, 'max': None, 'step': 1.0, 'dec': False, 'siPrefix': False, 'suffix': '' } defs.update(opts) if 'limits' in opts: defs['bounds'] = opts['limits'] w = MySpinBox(decimals=10) w.setOpts(**defs) w.sigChanged = w.sigValueChanged w.sigChanging = w.sigValueChanging else: raise Exception("Unknown type '%s'" % asUnicode(t)) return w class MyFloatParameter(Parameter): """Editable string; displayed as large text box in the tree.""" def __init__(self, **opts): Parameter.__init__(self, **opts) self.itemClass = MyFloatParameterItem registerParameterType('float2', MyFloatParameter, override=True)
#=============================================================================== class TupleParameter(parametertree.Parameter): itemClass = MyWidgetParameterItem def __init__(self, *args, **kargs): parametertree.Parameter.__init__(self, *args, **kargs) if self.opts['type'] == 'color': self.value = self.colorValue def colorValue(self): return pg.mkColor(parametertree.Parameter.value(self)) parametertree.registerParameterType("(bool, float)", TupleParameter) #=============================================================================== # Methods #=============================================================================== def ExceptionHook(eType, value, tback): logger.error("ExceptionHook error!", exc_info=(eType, value, tback)) box = QtGui.QMessageBox() box.setWindowTitle("Error") box.setIcon(QtGui.QMessageBox.Critical) box.setText("<b>Errors:</b> <br> - " + "<br> - ".join(reversed(map(str, value.args))))
self.treeWidget().setItemWidget(self.subItem, 0, self.textBox) self.setExpanded(True) def makeWidget(self): self.textBox = QtGui.QTextEdit() self.textBox.setMaximumHeight(100) self.textBox.value = lambda: str(self.textBox.toPlainText()) self.textBox.setValue = self.textBox.setPlainText self.textBox.sigChanged = self.textBox.textChanged return self.textBox class TextParameter(Parameter): type = 'text' itemClass = TextParameterItem registerParameterType('text', TextParameter) params = [ {'name': 'Group 0', 'type': 'group', 'children': [ {'name': 'Param 1', 'type': 'int', 'value': 10}, {'name': 'Param 2', 'type': 'float', 'value': 10}, ]}, {'name': 'Group 1', 'type': 'group', 'children': [ {'name': 'Param 1.1', 'type': 'float', 'value': 1.2e-6, 'dec': True, 'siPrefix': True, 'suffix': 'V'}, {'name': 'Param 1.2', 'type': 'float', 'value': 1.2e6, 'dec': True, 'siPrefix': True, 'suffix': 'Hz'}, {'name': 'Group 1.3', 'type': 'group', 'children': [ {'name': 'Param 1.3.1', 'type': 'int', 'value': 11, 'limits': (-7, 15), 'default': -6}, {'name': 'Param 1.3.2', 'type': 'float', 'value': 1.2e6, 'dec': True, 'siPrefix': True, 'suffix': 'Hz', 'readonly': True},