Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement