Exemplo n.º 1
0
    def cameraParamsChanged(self, changes):
        # camera parameters changed; update ui to match
        if 'exposure' in changes:
            with pg.SignalBlock(self.ui.spinExposure.valueChanged,
                                self.setExposure):
                self.ui.spinExposure.setValue(changes['exposure'])

        if 'binningX' in changes:
            self.setUiBinning(changes['binningX'], updateCamera=False)
        elif 'binning' in changes:
            self.setUiBinning(changes['binning'][0], updateCamera=False)

        if 'region' in changes:
            with pg.SignalBlock(self.roi.sigRegionChangeFinished,
                                self.regionWidgetChanged):
                rgn = changes['region']
                self.roi.setPos([rgn[0], rgn[1]])
                self.roi.setSize([rgn[2], rgn[3]])
        if 'regionX' in changes or 'regionY' in changes:
            with pg.SignalBlock(self.roi.sigRegionChangeFinished,
                                self.regionWidgetChanged):
                x = changes.get('regionX', self.roi.pos().x())
                y = changes.get('regionY', self.roi.pos().y())
                self.roi.setPos([x, y])
        if 'regionW' in changes or 'regionH' in changes:
            with pg.SignalBlock(self.roi.sigRegionChangeFinished,
                                self.regionWidgetChanged):
                w = changes.get('regionW', self.roi.state['size'][0])
                h = changes.get('regionH', self.roi.state['size'][1])
                self.roi.setSize([w, h])
Exemplo n.º 2
0
    def transformChanged(self):
        # manipulator's global transform has changed; update the center arrow and orientation axis
        dev = self.getDevice()
        pos = dev.mapToGlobal([0, 0, 0])
        x = dev.mapToGlobal([1, 0, 0])

        p1 = pg.Point(x[:2])
        p2 = pg.Point(pos[:2])
        p3 = pg.Point(1, 0)
        angle = (p1 - p2).angle(p3)
        if angle is None:
            angle = 0

        self.centerArrow.setPos(pos[0], pos[1])
        self.centerArrow.setStyle(angle=180 - angle)
        # self.depthLine.setValue(pos[2])
        self.depthArrow.setPos(0, pos[2])

        self.target.setLabelAngle(dev.getYawAngle())

        if self.ui.setOrientationBtn.isChecked():
            return

        with pg.SignalBlock(self.calibrateAxis.sigRegionChangeFinished,
                            self.calibrateAxisChanged):
            self.calibrateAxis.setPos(pos[:2])
            self.calibrateAxis.setAngle(angle)
            ys = self.calibrateAxis.size()[1]
Exemplo n.º 3
0
 def _paramsChanged(self, root, changes):
     for param, change, args in changes:
         if change == 'value' and isinstance(param, PointParameter):
             target = param.parent().target
             with pg.SignalBlock(target.sigDragged, self._targetMoved):
                 target.setPos(*param.value()[:2])
         elif change == 'name' and param in self.params.children():
             param.target.setLabel(param.name())
Exemplo n.º 4
0
    def _treeStateChanged(self, root, changes):
        # child parameter value changed; update this value to match

        for param, change, args in changes:
            if change != 'value':
                continue
            if param is self:
                self._updateChildren()
            else:
                with pg.SignalBlock(self.sigTreeStateChanged,
                                    self._treeStateChanged):
                    self.setValue((self['x'], self['y'], self['z']))
Exemplo n.º 5
0
    def transformChanged(self):
        focus = self.getDevice().getFocusDepth()
        self.focusLine.setValue(focus)

        # Compute the target focal plane.
        # This is a little tricky because the objective might have an offset+scale relative
        # to the focus device.
        fd = self.getDevice().focusDevice()
        if fd is None:
            return
        tpos = fd.globalTargetPosition()
        fpos = fd.globalPosition()
        dif = tpos[2] - fpos[2]
        with pg.SignalBlock(self.movableFocusLine.sigPositionChangeFinished,
                            self.focusDragged):
            self.movableFocusLine.setValue(focus + dif)

        depth = fpos[2] - self.getDevice().getSurfaceDepth()
        self.depthLabel.setValue(depth)
Exemplo n.º 6
0
 def _updateChildren(self):
     with pg.SignalBlock(self.sigTreeStateChanged, self._treeStateChanged):
         self['x'], self['y'], self['z'] = self.value()
Exemplo n.º 7
0
 def updateCalibrateAxis(self):
     pos, angle = self.analyzeTransform()
     with pg.SignalBlock(self.calibrateAxis.sigRegionChangeFinished,
                         self.calibrateAxisChanged):
         self.calibrateAxis.setPos(pos[:2])
         self.calibrateAxis.setAngle(angle)