예제 #1
0
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"
예제 #2
0
            {'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)
예제 #3
0
    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)
예제 #4
0
        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)
예제 #5
0
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)
예제 #6
0
    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)
예제 #7
0
#===============================================================================
# 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.")
예제 #8
0
    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',
예제 #9
0
        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
    """
예제 #10
0
            # 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())
예제 #11
0
        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)
예제 #13
0
#===============================================================================


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))))
예제 #14
0
        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},