Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. from sardana.macroserver.macroserver import MacroServer, MacroManager
  2. from sardana.spock.ipython_01_00.genutils import expose_magic
  3. from sardana.spock.spockms import split_macro_parameters
  4.  
  5.  
  6. def on_ElementsChanged(value):
  7. print("from on_ElementsChanged: value =", value)
  8. elements = value["new"]
  9. for elem_name, elem_info in elements.items():
  10. if "MacroCode" in elem_info["interfaces"]:
  11. def macro_fn(parameter_s='', name=elem_name, *args, **kwargs):
  12. # def macro_fn(*args, **kwargs):
  13. print("from macro_fn: parameter_s =", parameter_s)
  14. print("from macro_fn: name =", name)
  15. print("from macro_fn: args =", args)
  16. print("from macro_fn: kwargs =", kwargs)
  17. params_def = ms.get_macro(name).get_parameter()
  18. print(params_def)
  19. parameters = split_macro_parameters(parameter_s, params_def)
  20. print(parameters)
  21. par_str_lst = [name]
  22. #par_str_lst.extend(parameters)
  23. par_str_lst.append(parameter_s)
  24. print("from macr_fn: par_str_lst =", par_str_lst)
  25. try:
  26. door.run_macro(par_str_lst)
  27. except KeyboardInterrupt:
  28. door.macro_executor.stop()
  29. macro = door.get_running_macro()
  30. # print(dir(macro))
  31. return macro.getResult()
  32. expose_magic(elem_name, macro_fn)
  33.  
  34.  
  35. def cb(source, typ, value):
  36. print("from cb: source =", source)
  37. print("from cb: typ =", typ)
  38. print("from cb: value =", value)
  39. if typ.name == "ElementsChanged":
  40. on_ElementsChanged(value)
  41. # elif typ.name == "Input":
  42. else:
  43. return
  44.  
  45.  
  46. ms_full_name = ms_name = "dummy_ms"
  47. door_full_name = door_name = "dummy_door"
  48. ms = MacroServer(ms_full_name, ms_name)
  49. ms.add_listener(cb)
  50. ms.set_macro_path(["/home/schooft/git/sardana_fork/sardana/macros"])
  51. door = ms.create_door(full_name=door_full_name, name=door_name)
  52. #ms.set_pool_names(["p02/pool/haso232s"])
  53. #ms.set_environment_db("/tmp/tmpB5HgUl/MacroServer/haso232s/macroserver.properties")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement