def __init__(self, polarizerProtocol, stepperMotorProtocol): QtGui.QWidget.__init__(self) self.setLayout(QtGui.QVBoxLayout()) self.polSMC = StepperMotorClient(stepperMotorProtocol, POL) gotoWidget = GotoWidget({ MIN: -360, MAX: 360, PRECISION: .1, SLIDER: 2, POI: {} }) self.layout().addWidget(LabelWidget('angle', gotoWidget)) # send command to tracking server when goto requested @inlineCallbacks def onGotoRequested(payload): angle, deferred = payload yield polarizerProtocol.sendCommand('set-angle', angle) deferred.callback(None) gotoWidget.gotoRequested.connect(onGotoRequested) # handle update requests (should the position fall out of sync) def onUpdateReqested(): polarizerProtocol.sendCommand('get-angle').addCallback( gotoWidget.setPosition) gotoWidget.updateRequested.connect(onUpdateReqested) # send cancel request when goto widget requests gotoWidget.cancelRequested.connect( partial(polarizerProtocol.sendCommand, 'cancel-angle-set')) # set goto widget position on polarizer sm position change self.polSMC.addListener( self.polSMC.POSITION, lambda _: polarizerProtocol.sendCommand( 'get-angle').addCallback(gotoWidget.setPosition)) # initialize position of goto widget polarizerProtocol.sendCommand('get-angle').addCallback( gotoWidget.setPosition) # add enable button to toggle state of sm enableButton = QtGui.QPushButton('enable', self) enableButton.clicked.connect(self.polSMC.toggleStatus) def adjustEnbStatus(status): if status == 'enabled': enableButton.setText('disable') gotoWidget.setEnabled(True) elif status == 'disabled': enableButton.setText('enable') gotoWidget.setEnabled(False) self.polSMC.addListener(self.polSMC.ENABLE, adjustEnbStatus) self.layout().addWidget(enableButton)
def __init__(self,polarizerProtocol,stepperMotorProtocol): QtGui.QWidget.__init__(self) self.setLayout(QtGui.QVBoxLayout()) self.polSMC = StepperMotorClient(stepperMotorProtocol,POL) gotoWidget = GotoWidget( { MIN:-360, MAX:360, PRECISION:.1, SLIDER:2, POI:{} } ) self.layout().addWidget(LabelWidget('angle',gotoWidget)) # send command to tracking server when goto requested @inlineCallbacks def onGotoRequested(payload): angle, deferred = payload yield polarizerProtocol.sendCommand('set-angle',angle) deferred.callback(None) gotoWidget.gotoRequested.connect(onGotoRequested) # handle update requests (should the position fall out of sync) def onUpdateReqested(): polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition) gotoWidget.updateRequested.connect(onUpdateReqested) # send cancel request when goto widget requests gotoWidget.cancelRequested.connect(partial(polarizerProtocol.sendCommand,'cancel-angle-set')) # set goto widget position on polarizer sm position change self.polSMC.addListener( self.polSMC.POSITION, lambda _:polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition) ) # initialize position of goto widget polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition) # add enable button to toggle state of sm enableButton = QtGui.QPushButton('enable', self) enableButton.clicked.connect(self.polSMC.toggleStatus) def adjustEnbStatus(status): if status == 'enabled': enableButton.setText('disable') gotoWidget.setEnabled(True) elif status == 'disabled': enableButton.setText('enable') gotoWidget.setEnabled(False) self.polSMC.addListener(self.polSMC.ENABLE,adjustEnbStatus) self.layout().addWidget(enableButton)
def main(): options = yield getStepperMotorOptions() url = yield getStepperMotorURL(options) StepperMotorClient.__ccname__ = '(%s) sm client' % options['name'] protocol = yield getProtocol(url) smc = StepperMotorClient(protocol) runConsoleClient( StepperMotorConsoleClient, smc )
def __init__(self,polarizerProtocol,stepperMotorProtocol): QtGui.QWidget.__init__(self) self.setLayout(QtGui.QVBoxLayout()) self.polSMC = StepperMotorClient(stepperMotorProtocol,POL) gotoWidget = GotoWidget( { MIN:-360, MAX:360, PRECISION:.1, SLIDER:2, POI:{} } ) self.layout().addWidget(LabelWidget('angle',gotoWidget)) # send command to tracking server when goto requested @inlineCallbacks def onGotoRequested(payload): angle, deferred = payload yield polarizerProtocol.sendCommand('set-angle',angle) deferred.callback(None) gotoWidget.gotoRequested.connect(onGotoRequested) # handle update requests (should the position fall out of sync) def onUpdateReqested(): polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition) gotoWidget.updateRequested.connect(onUpdateReqested) # send cancel request when goto widget requests gotoWidget.cancelRequested.connect(partial(polarizerProtocol.sendCommand,'cancel-angle-set')) # set goto widget position on polarizer sm position change self.polSMC.addListener( self.polSMC.POSITION, lambda _:polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition) ) # initialize position of goto widget polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition) '''