Created
June 5, 2019 21:00
-
-
Save reszelaz/97835ccd6abca92e4833e6ac162a7d24 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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