Ejemplo n.º 1
0
    def __init__(self, dev, win):
        QtGui.QWidget.__init__(self)
        self.win = win
        self.dev = dev
        self.dev.sigObjectiveChanged.connect(self.objectiveChanged)
        #self.dev.sigPositionChanged.connect(self.positionChanged)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.objList = self.dev._allObjectives()
        self.switchN = len(self.objList)
        self.objWidgets = {}
        self.blockSpinChange = False
        row = 1
        for i in self.objList:
            ## For each objective, create a set of widgets for selecting and updating.
            c = QtGui.QComboBox()
            r = QtGui.QRadioButton(i)
            #first = self.objList[i].keys()[0]
            #first = self.objList[i][first]
            xs = pg.SpinBox(step=1e-6, suffix='m', siPrefix=True)
            ys = pg.SpinBox(step=1e-6, suffix='m', siPrefix=True)
            zs = pg.SpinBox(step=1e-6, suffix='m', siPrefix=True)
            ss = pg.SpinBox(step=1e-7, bounds=(1e-10, None))

            xs.index = ys.index = zs.index = ss.index = i  ## used to determine which row has changed
            widgets = (r, c, xs, ys, zs, ss)
            for col, w in enumerate(widgets):
                self.ui.objectiveLayout.addWidget(w, row, col)
            self.objWidgets[i] = widgets

            for o in self.objList[i].values():
                c.addItem(o.name(), o)
                o.sigTransformChanged.connect(self.updateSpins)

            ## objectives are accessed like:
            ##   index = changedWidget.index
            ##   combo = self.objWidgets[index][1]
            ##   obj = combo.currentData()

            r.clicked.connect(self.objRadioClicked)
            c.currentIndexChanged.connect(self.objComboChanged)
            xs.sigValueChanged.connect(self.offsetSpinChanged)
            ys.sigValueChanged.connect(self.offsetSpinChanged)
            zs.sigValueChanged.connect(self.offsetSpinChanged)
            ss.sigValueChanged.connect(self.scaleSpinChanged)
            row += 1
        self.updateSpins()