Skip to content

Instantly share code, notes, and snippets.

@reszelaz
Created June 5, 2019 21:00
Show Gist options
  • Save reszelaz/97835ccd6abca92e4833e6ac162a7d24 to your computer and use it in GitHub Desktop.
Save reszelaz/97835ccd6abca92e4833e6ac162a7d24 to your computer and use it in GitHub Desktop.
from sardana.macroserver.macroserver import MacroServer, MacroManager
from sardana.spock.ipython_01_00.genutils import expose_magic
from sardana.spock.spockms import split_macro_parameters
def on_ElementsChanged(value):
print("from on_ElementsChanged: value =", value)
elements = value["new"]
for elem_name, elem_info in elements.items():
if "MacroCode" in elem_info["interfaces"]:
def macro_fn(parameter_s='', name=elem_name, *args, **kwargs):
# def macro_fn(*args, **kwargs):
print("from macro_fn: parameter_s =", parameter_s)
print("from macro_fn: name =", name)
print("from macro_fn: args =", args)
print("from macro_fn: kwargs =", kwargs)
params_def = ms.get_macro(name).get_parameter()
print(params_def)
parameters = split_macro_parameters(parameter_s, params_def)
print(parameters)
par_str_lst = [name]
#par_str_lst.extend(parameters)
par_str_lst.append(parameter_s)
print("from macr_fn: par_str_lst =", par_str_lst)
try:
door.run_macro(par_str_lst)
except KeyboardInterrupt:
door.macro_executor.stop()
macro = door.get_running_macro()
# print(dir(macro))
return macro.getResult()
expose_magic(elem_name, macro_fn)
def cb(source, typ, value):
print("from cb: source =", source)
print("from cb: typ =", typ)
print("from cb: value =", value)
if typ.name == "ElementsChanged":
on_ElementsChanged(value)
# elif typ.name == "Input":
else:
return
ms_full_name = ms_name = "dummy_ms"
door_full_name = door_name = "dummy_door"
ms = MacroServer(ms_full_name, ms_name)
ms.add_listener(cb)
ms.set_macro_path(["/home/schooft/git/sardana_fork/sardana/macros"])
door = ms.create_door(full_name=door_full_name, name=door_name)
#ms.set_pool_names(["p02/pool/haso232s"])
#ms.set_environment_db("/tmp/tmpB5HgUl/MacroServer/haso232s/macroserver.properties")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment