def __init__(self, display, axes, pStack): self.display = display self.p = Parameter.create(name='Axes', type='group') pSize = self.p.addChild({'name': 'size', 'type': 'int', 'value': 9}) pSize.sigValueChanged.connect( lambda param, val: [ax.setFontSize(val) for ax in self]) orientations = ['bottom', 'left', 'bottom', 'bottom', None] for n, a in enumerate(axes): self.append(a, orientations[n]) # CREATE STACK AXIS - an axis representing the stack of datasets self.stackAxis = getattr( axes, 'stackAxis', StackAxis('(Stack)', 'n', orientations[n + 1])) self.stackAxis.registerStackParam(pStack) self.p.addChild(self.stackAxis.p)
def __init__(self, display, axes, pStack): self.display = display self.p = Parameter.create(name='Axes', type='group') pSize = self.p.addChild({ 'name': 'size', 'type': 'int', 'value': 9}) pSize.sigValueChanged.connect( lambda param, val: [ax.setFontSize(val) for ax in self]) orientations = ['bottom', 'left', 'bottom', 'bottom', None] for n, a in enumerate(axes): self.append(a, orientations[n]) # CREATE STACK AXIS - an axis representing the stack of datasets self.stackAxis = getattr(axes, 'stackAxis', StackAxis('(Stack)', 'n', orientations[n + 1])) self.stackAxis.registerStackParam(pStack) self.p.addChild(self.stackAxis.p)
def __init__(self, name, value, orientation, state=None): pg.AxisItem.__init__(self, orientation) self.p = Parameter.create(**{ 'name': name, 'type': 'str', 'value': value, 'expanded': False, 'highlight': True}) self.setLabel(value) self.pLinked = self.p.addChild({ 'name': 'axis linked', 'type': 'bool', 'value': True, 'visible': False}) self.pLinked.sigValueChanged.connect(lambda param, val, self=self: self.linkToAxis() if val else self.unlinkFromAxis) self.pUnit = self.p.addChild({ 'name': 'unit', 'type': 'str', 'value': ''}) self.pPrefix = self.p.addChild({ 'name': 'prefix', 'type': 'str', 'value': ''}) self.pRange = self.p.addChild({ 'name': 'range', 'type': 'list', 'limits': ['linear', 'percent'] }) self.pRange.sigValueChanged.connect(self._pRangeChanged) # scale self.pScale = self.pRange.addChild({ 'name': 'scale', 'type': 'float', 'value': 1}) # offset # TODO self.pOffset = self.pRange.addChild({ 'name': 'offset', 'type': 'float', 'value': 0, #'tip': "Doesn't work at the moment", 'visible': False }) # TODO: need to know the orientation first # pOffset.sigValueChanged.connect(lambda x: dock.display.item.setPos ( # qreal x, qreal y )) if state: self.p.restoreState(state) self.p.sigValueChanged.connect(lambda param, x, self=self: self.setLabel(text=x)) self.pUnit.sigValueChanged.connect(lambda param, x, self=self: self.setLabel(units=x)) self.pPrefix.sigValueChanged.connect(lambda param, x, self=self: self.setLabel(unitPrefix=x)) self.pScale.sigValueChanged.connect(lambda param, x, self=self: self.setScale(x))
def __init__( self, number, workspace, origin=None, index=None, names=None, title="", data=None, axes=None, info=None, changes=None, openfiles=True, docktitle=None, ): """ ============ =============================================== Arguments Description ============ =============================================== number The display number, like 1,2... workspace The workspace within the display is names Path(s) of input files to open title ... of the DisplayDock data ... to display within the corresponding widget axes Instance of AxesContainer with names and scales for the axes scaling the data origin The origin display index The index of the origin layer info informational text about the input changes Additional changes done to the data openfiles [True/False] whether to open the files given in [filenames] ============ =============================================== """ self.workspace = workspace self.number = number self.widget = None self._isclosed = False # GET VALUES FROM ORIGIN DISPLAY data, names, axes, title = self._extractInfoFromOrigin(origin, index, data, names, axes, title) if data is None and names is None and axes is None: raise Exception("either filenames, data or axes must be given") one_layer = False # FORMAT FILENAMES TO A LIST OF FILENAMES: if names is None: if data is not None: names = [None] * len(data) else: names = [] elif isinstance(names, string_types): names = [names] one_layer = True if docktitle is None: docktitle = self._getDockTitle(title, number, names) # INIT SUPER CLASS Dock.__init__(self, docktitle) # SETUP FILE READER: self.reader = None if names and data is None: # -->load input from file self.reader = getFileReader(names) self.reader = self.reader(weakref.proxy(self)) # GET AXES FROM INPUT READER IF NOT DEFINED YET: if axes is None: axes = self.reader.axes # CREATE/FORMAT AXES IF INPUT GIVES AS DATA: if axes is None: axes = ["x", "y", "", "i", "j"][: data[0].ndim + 1] elif isinstance(axes, int): axes = ["x", "y", "", "i", "j"][:axes] self.stack = _StackParameter(self) # PARAMETERS: self.p = Parameter.create(name="", type="empty") # TAB DISPLAYING PREFERENCES AND INPUT INFORMATION: self.tab = _DisplayTab(self) # FILL PARAMETERS: self.pTitle = self.p.addChild({"name": "Title", "type": "str", "value": ""}) self.pTitle.sigValueChanged.connect(self._setWidgetTitle) pSize = self.pTitle.addChild({"name": "Size", "type": "int", "value": 11}) pSize.sigValueChanged.connect(lambda param, size: self.widget.setTitleSize(size)) self.pTitleFromLayer = self.pTitle.addChild({"name": "From layer", "type": "bool", "value": False}) self.pTitleFromLayer.sigValueChanged.connect(self._pTitleFromLayerChanged) self.pLimitLayers = self.p.addChild({"name": "Limit Layers", "type": "bool", "value": False}) self.pLimitLayers.sigValueChanged.connect(self._pLimitLayersChanged) self.pMaxLayers = self.pLimitLayers.addChild( {"name": "Max. Layers", "type": "int", "value": 10, "visible": False, "limits": [1, 1e4]} ) self.pMaxLayers.sigValueChanged.connect(self._limitLayers) # HANDLING THE INPUT LAYERS: self.p.addChild(self.stack) self.axes = AxesContainer(weakref.proxy(self), axes, weakref.proxy(self.stack)) # ADD AXES PARAMETERS: self.p.addChild(self.axes.p) # LIST OF ALL FITTING DISPLAY FIGURES: # widgetList = _DisplayFigureList(self) # UPDATE DATA FROM FILE USING SPECIFIED PREFERENCES: if self.reader: if self.reader.preferences: self.p.addChild(self.reader.preferences) # LIST OF ALL FITTING DISPLAY FIGURES: widgetList = _DisplayFigureList(self) if len(widgetList) > 1: # only show available widgets if # there are more than one: self.p.addChild(widgetList) # INIT WIDGET self.changeWidget(widgetList.getWidget()) # , data, names) # ADD DATA if len(names): if data is None and PathStr(names[0]).isfile(): self.addFiles(names, openfiles) # TODO: what to do with mixed file/non file input? else: if one_layer: self.addLayer(data, names[0], origin=origin) else: self.addLayers(data, names, origin=origin)
def __init__(self): self.p = Parameter.create(name='', type='empty') ParameterTree.__init__(self, showHeader=False) self.setParameters(self.p, showTop=False)
def __init__(self, tool): self.p = Parameter.create(name="", type="empty") ParameterTree.__init__(self, self.p, showHeader=False)
def __init__(self, name, value, orientation, state=None): pg.AxisItem.__init__(self, orientation) self.p = Parameter.create( **{ 'name': name, 'type': 'str', 'value': value, 'expanded': False, 'highlight': True }) self.setLabel(value) self.pLinked = self.p.addChild({ 'name': 'axis linked', 'type': 'bool', 'value': True, 'visible': False }) self.pLinked.sigValueChanged.connect( lambda param, val, self=self: self.linkToAxis() if val else self.unlinkFromAxis) self.pUnit = self.p.addChild({ 'name': 'unit', 'type': 'str', 'value': '' }) # self.pPrefix = self.p.addChild({ # 'name': 'prefix', # 'type': 'str', # 'value': ''}) # self.pRange = self.p.addChild({ # 'name': 'range', # 'type': 'list', # 'limits': ['linear', 'percent'] # }) # self.pRange.sigValueChanged.connect(self._pRangeChanged) # scale self.pScale = self.p.addChild({ 'name': 'scale', 'type': 'float', 'min': 1e-100, 'value': 1 }) # offset # TODO # self.pOffset = self.pRange.addChild({ # 'name': 'offset', # 'type': 'float', # 'value': 0, # #'tip': "Doesn't work at the moment", # #'visible': False # }) # TODO: need to know the orientation first # pOffset.sigValueChanged.connect(lambda x: dock.display.item.setPos ( # qreal x, qreal y )) if state: self.p.restoreState(state) self.p.sigValueChanged.connect( lambda param, x, self=self: self.setLabel(text=x)) self.pUnit.sigValueChanged.connect( lambda param, x, self=self: self.setLabel(units=x)) # self.pPrefix.sigValueChanged.connect(lambda param, x, self=self: # self.setLabel(unitPrefix=x)) self.pScale.sigValueChanged.connect( lambda param, x, self=self: self.setScale(x))
def __init__(self, number, workspace, origin=None, index=None, names=None, title='', data=None, axes=None, info=None, changes=None, openfiles=True, docktitle=None): ''' ============ =============================================== Arguments Description ============ =============================================== number The display number, like 1,2... workspace The workspace within the display is names Path(s) of input files to open title ... of the DisplayDock data ... to display within the corresponding widget axes Instance of AxesContainer with names and scales for the axes scaling the data origin The origin display index The index of the origin layer info informational text about the input changes Additional changes done to the data openfiles [True/False] whether to open the files given in [filenames] ============ =============================================== ''' self.workspace = workspace self.number = number self.widget = None self._isclosed = False # GET VALUES FROM ORIGIN DISPLAY data, names, axes, title = self._extractInfoFromOrigin( origin, index, data, names, axes, title) if data is None and names is None and axes is None: raise Exception('either filenames, data or axes must be given') one_layer = False # FORMAT FILENAMES TO A LIST OF FILENAMES: if names is None: if data is not None: names = [None] * len(data) else: names = [] elif isinstance(names, str): names = [names] one_layer = True if docktitle is None: docktitle = self._getDockTitle(title, number, names) # INIT SUPER CLASS Dock.__init__(self, docktitle) # SETUP FILE READER: self.reader = None if names and data is None: # -->load input from file self.reader = getFileReader(names) self.reader = self.reader(weakref.proxy(self)) # GET AXES FROM INPUT READER IF NOT DEFINED YET: if axes is None: axes = self.reader.axes # CREATE/FORMAT AXES IF INPUT GIVES AS DATA: if axes is None: axes = ['x', 'y', '', 'i', 'j'][:data[0].ndim + 1] elif isinstance(axes, int): axes = ['x', 'y', '', 'i', 'j'][:axes] self.stack = _StackParameter(self) # PARAMETERS: self.p = Parameter.create(name='', type='empty') # TAB DISPLAYING PREFERENCES AND INPUT INFORMATION: self.tab = _DisplayTab(self) # FILL PARAMETERS: self.pTitle = self.p.addChild({ 'name': 'Title', 'type': 'str', 'value': '' }) self.pTitle.sigValueChanged.connect(self._setWidgetTitle) pSize = self.pTitle.addChild({ 'name': 'Size', 'type': 'int', 'value': 11 }) pSize.sigValueChanged.connect( lambda _param, size: self.widget.setTitleSize(size)) self.pTitleFromLayer = self.pTitle.addChild({ 'name': 'From layer', 'type': 'bool', 'value': False }) self.pTitleFromLayer.sigValueChanged.connect( self._pTitleFromLayerChanged) self.pLimitLayers = self.p.addChild({ 'name': 'Limit Layers', 'type': 'bool', 'value': False }) self.pLimitLayers.sigValueChanged.connect(self._pLimitLayersChanged) self.pMaxLayers = self.pLimitLayers.addChild({ 'name': 'Max. Layers', 'type': 'int', 'value': 10, 'visible': False, 'min': 1 }) self.pMaxLayers.sigValueChanged.connect(self._limitLayers) # HANDLING THE INPUT LAYERS: self.p.addChild(self.stack) self.axes = AxesContainer(weakref.proxy(self), axes, weakref.proxy(self.stack)) # ADD AXES PARAMETERS: self.p.addChild(self.axes.p) # UPDATE DATA FROM FILE USING SPECIFIED PREFERENCES: if self.reader: if self.reader.preferences: self.p.addChild(self.reader.preferences) # LIST OF ALL FITTING DISPLAY FIGURES: widgetList = _DisplayFigureList(self) if len(widgetList) > 1: # only show available widgets if # there are more than one: self.p.addChild(widgetList) # INIT WIDGET self.changeWidget(widgetList.getWidget()) # ADD DATA if len(names): if data is None and PathStr(names[0]).isfile(): self.addFiles(names, openfiles) # TODO: what to do with mixed file/non file input? else: if one_layer: self.addLayer(data, names[0], origin=origin) else: self.addLayers(data, names, origin=origin)