Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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))
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 def __init__(self):
     self.p = Parameter.create(name='', type='empty')
     ParameterTree.__init__(self, showHeader=False)
     self.setParameters(self.p, showTop=False)
Exemplo n.º 6
0
 def __init__(self, tool):
     self.p = Parameter.create(name="", type="empty")
     ParameterTree.__init__(self, self.p, showHeader=False)
Exemplo n.º 7
0
    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))
Exemplo n.º 8
0
    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)