Interactive macros can speak to the SardanaMacroExecutor like in the example below.
#!/usr/bin/env python
import HasyUtils
from sardana.macroserver.macro import macro, Macro, Type
class interactive_macro(Macro):
"""
interactive macro class. communicates to the MacroExecutor, if it is alive.
p09/door/haso107tk.01 [1]: %interactive_macro
interactive_macro: {u'result': u'yes'}
interactive_macro: {u'result': u'dev1'}
"""
interactive = True
def run(self):
if HasyUtils.isMacroExecutorAlive():
answer = HasyUtils.toMacroExecutor( { 'yesno': "Really start scan?"})
self.output( "interactive_macro: %s" % repr( answer))
answer = HasyUtils.toMacroExecutor( { 'getstring': "Enter device name"})
self.output( "interactive_macro: %s" % repr( answer))
else:
answer = self.input("Enter device name",data_type=Type.String)
self.output("Device name is '%s'", answer)
return