Ejemplo n.º 1
0
    def setupWindows(self):
        '''
        Setup all the Windows and put them in self.windows
        '''
        self.ScanControl = ScanControl.Window(self.reactor, None)
        self.LabRAD = LabRADConnect.Window(self.reactor, None)
        self.DeviceSelect = DeviceSelect.Window(self.reactor, None)
        self.nSOTChar = nSOTCharacterizer.Window(self.reactor, None)
        self.PlottingModule = PlottingModule.CommandCenter(self.reactor, None)
        self.TFChar = TFCharacterizer.Window(self.reactor, None)
        self.Approach = Approach.Window(self.reactor, None)
        self.ApproachMonitor = ApproachMonitor.Window(self.reactor, None)
        self.PosCalibration = PositionCalibration.Window(self.reactor, None)
        self.FieldControl = FieldControl.Window(self.reactor, None)
        self.TempControl = TemperatureControl.Window(self.reactor,None)
        self.QRreader = QRreader.Window(self.reactor,None)
        self.GoToSetpoint = gotoSetpoint.Window(self.reactor, None)
        self.SampleCharacterizer = SampleCharacterizer.Window(self.reactor,None)
        self.AttocubeCoarseControl = CoarseAttocubeControl.Window(self.reactor,None)

        self.windows = [self.LabRAD, self.DeviceSelect, self.ScanControl, self.nSOTChar, self.PlottingModule, self.TFChar, self.Approach, self.ApproachMonitor,
            self.PosCalibration, self.FieldControl, self.TempControl, self.QRreader, self.GoToSetpoint, self.SampleCharacterizer, self.AttocubeCoarseControl]

        #This module should always be initialized last, and have the modules
        #That are desired to be scriptable be input
        self.Simulate = Simulation.ScriptSimulator(self.reactor, self, None)
        self.Scripting = Scripting.Window(self.reactor, None, self.ScanControl, self.Approach, self.nSOTChar, self.FieldControl, self.TempControl,
            self.SampleCharacterizer, self.GoToSetpoint, self.Simulate)

        self.windows.append(self.Scripting)
        self.windows.append(self.Simulate)

        #Connect signals between modules
        #When LabRAD Connect module emits all the local and remote labRAD connections, it goes to the device
        #select module. This module selects appropriate devices for things. That is then emitted and is distributed
        #among all the other modules
        self.LabRAD.cxnLocal.connect(self.DeviceSelect.connectLabRAD)
        self.LabRAD.cxnRemote.connect(self.DeviceSelect.connectRemoteLabRAD)
        self.DeviceSelect.newDeviceInfo.connect(self.distributeDeviceInfo)
        self.LabRAD.cxnDisconnected.connect(self.disconnectLabRADConnections)
        self.LabRAD.newSessionFolder.connect(self.distributeSessionFolder)
        self.TFChar.workingPointSelected.connect(self.distributeWorkingPoint)
        self.nSOTChar.newToeField.connect(self.FieldControl.updateToeField)
        self.Approach.newPLLData.connect(self.ApproachMonitor.updatePLLPlots)
        self.Approach.newAux2Data.connect(self.ApproachMonitor.updateAux2Plot)
        self.Approach.newZData.connect(self.ApproachMonitor.updateZPlot)
        self.Approach.updateFeedbackStatus.connect(self.ScanControl.updateFeedbackStatus)
        self.Approach.updateConstantHeightStatus.connect(self.ScanControl.updateConstantHeightStatus)
        self.PosCalibration.newTemperatureCalibration.connect(self.setVoltageCalibration)
        self.ScanControl.updateScanningStatus.connect(self.Approach.updateScanningStatus)