示例#1
0
    def __init__(self, dev):
        QtGui.QWidget.__init__(self)
        self.dev = dev
        #self.dev.devGui = self  ## make this gui accessible from LaserDevice, so device can change power values. NO, BAD FORM (device is not allowed to talk to guis, it can only send signals)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.calibrateWarning = self.dev.config.get('calibrationWarning', None)
        self.calibrateBtnState = 0

        ### configure gui
        self.ui.energyCalcGroup.hide()  ## not using this for now

        self.ui.wavelengthSpin.setOpts(suffix='m',
                                       siPrefix=True,
                                       dec=False,
                                       step=5e-9)
        self.ui.wavelengthSpin.setValue(self.dev.getWavelength())
        if not self.dev.hasTunableWavelength:
            self.ui.wavelengthGroup.setVisible(False)
        else:
            for x in self.dev.config.get('namedWavelengths', {}).keys():
                self.ui.wavelengthCombo.addItem(x)
            self.ui.wavelengthSpin.setOpts(
                bounds=self.dev.getWavelengthRange())

        if not self.dev.hasPCell:
            self.ui.pCellGroup.hide()
        else:
            self.ui.minVSpin.setOpts(step=0.1,
                                     minStep=0.01,
                                     siPrefix=True,
                                     dec=True)
            self.ui.maxVSpin.setOpts(step=0.1,
                                     minStep=0.01,
                                     siPrefix=True,
                                     dec=True)
            self.ui.stepsSpin.setOpts(step=1, dec=True)

        self.ui.measurementSpin.setOpts(suffix='s',
                                        siPrefix=True,
                                        bounds=[0.0, 5.0],
                                        dec=True,
                                        step=1,
                                        minStep=0.01)
        self.ui.settlingSpin.setOpts(suffix='s',
                                     siPrefix=True,
                                     value=0.1,
                                     dec=True,
                                     step=1,
                                     minStep=0.01)
        self.ui.expectedPowerSpin.setOpts(
            suffix='W',
            siPrefix=True,
            bounds=[0.0, None],
            value=self.dev.getParam('expectedPower'),
            dec=True,
            step=0.1,
            minStep=0.01)
        self.ui.toleranceSpin.setOpts(step=1,
                                      suffix='%',
                                      bounds=[0.1, None],
                                      value=self.dev.getParam('tolerance'))

        if not self.dev.hasShutter:
            self.ui.shutterBtn.setEnabled(False)
        if not self.dev.hasQSwitch:
            self.ui.qSwitchBtn.setEnabled(False)

        ### Populate device lists
        #self.ui.microscopeCombo.setTypes('microscope')
        self.ui.meterCombo.setTypes('daqChannelGroup')
        #defMicroscope = self.dev.config.get('scope', None)
        defPowerMeter = self.dev.config.get('defaultPowerMeter', None)
        #self.ui.microscopeCombo.setCurrentText(defMicroscope)
        self.ui.meterCombo.setCurrentText(defPowerMeter)
        #devs = self.dev.dm.listDevices()
        #for d in devs:
        #self.ui.microscopeCombo.addItem(d)
        #self.ui.meterCombo.addItem(d)
        #if d == defMicroscope:
        #self.ui.microscopeCombo.setCurrentIndex(self.ui.microscopeCombo.count()-1)
        #if d == defPowerMeter:
        #self.ui.meterCombo.setCurrentIndex(self.ui.meterCombo.count()-1)

        ## get scope device to connect objective changed signal
        #self.scope = getManager().getDevice(self.dev.config['scope'])
        #self.scope.sigObjectiveChanged.connect(self.objectiveChanged)

        ## Populate list of calibrations
        #self.microscopes = []
        self.updateCalibrationList()

        ## get scope device to connect objective changed signal
        #self.scope = None
        #while self.scope == None:
        #for m in self.microscopes:
        #try:
        #self.scope = getManager().getDevice(m)
        #except:
        #pass

        ## make connections
        self.ui.calibrateBtn.focusOutEvent = self.calBtnLostFocus

        self.ui.calibrateBtn.clicked.connect(self.calibrateClicked)
        self.ui.deleteBtn.clicked.connect(self.deleteClicked)
        self.ui.currentPowerRadio.toggled.connect(self.currentPowerToggled)
        self.ui.expectedPowerRadio.toggled.connect(self.expectedPowerToggled)
        self.ui.expectedPowerSpin.valueChanged.connect(
            self.expectedPowerSpinChanged)
        self.ui.toleranceSpin.valueChanged.connect(self.toleranceSpinChanged)
        self.ui.wavelengthSpin.valueChanged.connect(self.wavelengthSpinChanged)
        self.ui.wavelengthCombo.currentIndexChanged.connect(
            self.wavelengthComboChanged)
        #self.ui.microscopeCombo.currentIndexChanged.connect(self.microscopeChanged)
        self.ui.meterCombo.currentIndexChanged.connect(self.powerMeterChanged)
        self.ui.channelCombo.currentIndexChanged.connect(self.channelChanged)
        #self.ui.measurementSpin.valueChanged.connect(self.measurmentSpinChanged)
        #self.ui.settlingSpin.valueChanged.connect(self.settlingSpinChanged)
        self.ui.shutterBtn.toggled.connect(self.shutterToggled)
        self.ui.qSwitchBtn.toggled.connect(self.qSwitchToggled)
        self.ui.checkPowerBtn.clicked.connect(
            lambda: self.dev.outputPower(forceUpdate=True))
        self.ui.powerAlertCheck.toggled.connect(self.powerAlertToggled)

        self.ui.GDDEnableCheck.toggled.connect(self.GDDEnableToggled)
        self.ui.GDDSpin.valueChanged.connect(self.GDDSpinChanged)

        self.dev.sigOutputPowerChanged.connect(self.outputPowerChanged)
        self.dev.sigSamplePowerChanged.connect(self.samplePowerChanged)
        try:
            self.dev.outputPower()  ## check laser power
        except:
            pass

        self.powerMeterChanged(
        )  ## populate channel combo for default power meter