The followig macro updated PreScanSnapshot with the avalable motors.
#!/bin/env python3
__all__ = ["updatePreScanSnapshot", "listPreScanSnapshot", "clearPreScanSnapshot"]
from sardana.macroserver.macro import *
from sardana.macroserver.macro import macro
class updatePreScanSnapshot(Macro):
"""
Updates PreScanSnapShot with the avalable motors and some other devices
"""
param_def = [ ]
def run( self):
all_motors = self.findObjs('.*', type_class=Type.Motor, reserve=False)
all_motors.sort()
lst = []
for mot in all_motors:
try:
lst.append( (mot.full_name, mot.name))
except Exception as e:
pass
#
# Non-motor devices can be included in the PreScanSnapshot.
# Here we show how two attribute counters are included.
#
otherDevices = [
('tango://haso107d10:10000/expchan/tangoattributectctrl/1', 'pos2'),
('tango://haso107d10:10000/expchan/tangoattributectctrl/2', 'pos3'),
]
for (fullName, name) in otherDevices:
try:
lst.append( (fullName, name))
except Exception as e:
pass
self.setEnv( "PreScanSnapshot", lst)
return
class listPreScanSnapshot(Macro):
"""
lists PreScanSnapShot
"""
param_def = [ ]
def run( self):
lst = self.getEnv( "PreScanSnapshot")
for elm in lst:
self.output( "PreScanSnapshot: %s" % repr( elm))
return
class clearPreScanSnapshot(Macro):
"""
clear PreScanSnapShot
"""
param_def = [ ]
def run( self):
self.setEnv( "PreScanSnapshot", [])
return