Add support for displacementCurve

This commit is contained in:
usov_i 2020-07-31 16:45:00 +02:00
parent e2745d940c
commit fa4d6ccefc
2 changed files with 32 additions and 15 deletions

View File

@ -409,18 +409,30 @@ class AnatricConfig:
@property @property
def displacementCurve(self): def displacementCurve(self):
param_elem = self._alg_elems["adaptivedynamic"].find("displacementCurve") maps = []
if param_elem is None: displacementCurve_elem = self._alg_elems["adaptivedynamic"].find("displacementCurve")
return None if displacementCurve_elem is not None:
return param_elem.attrib["value"] for map_elem in displacementCurve_elem.findall("map"):
maps.append(
(
float(map_elem.attrib["twotheta"]),
float(map_elem.attrib["x"]),
float(map_elem.attrib["y"]),
)
)
return maps
@displacementCurve.setter @displacementCurve.setter
def displacementCurve(self, value): def displacementCurve(self, value):
alg_elem = self._alg_elems["adaptivedynamic"] # clear old map elements
param_elem = alg_elem.find("displacementCurve") displacementCurve_elem = self._alg_elems["adaptivedynamic"].find("displacementCurve")
if param_elem is None: for map_elem in displacementCurve_elem.findall("map"):
new_elem = ET.Element("displacementCurve", attrib={"value": value}) displacementCurve_elem.remove(map_elem)
new_elem.tail = "\n"
alg_elem.append(new_elem) # add new map elements
else: for map_vals in value:
param_elem.attrib["value"] = value attrib = {"twotheta": map_vals[0], "x": map_vals[1], "y": map_vals[2]}
map_elem = ET.Element("map", attrib=attrib)
map_elem.tail = "\n"
displacementCurve_elem.append(map_elem)

View File

@ -60,7 +60,7 @@ def create():
smoothSize_textinput.value = config.smoothSize smoothSize_textinput.value = config.smoothSize
loop_textinput.value = config.loop loop_textinput.value = config.loop
minPeakCount_textinput.value = config.minPeakCount minPeakCount_textinput.value = config.minPeakCount
# displacementCurve_textinput.value = config.displacementCurve displacementCurve_textinput.value = "\n".join(map(str, config.displacementCurve))
else: else:
raise ValueError("Unknown processing mode.") raise ValueError("Unknown processing mode.")
@ -320,9 +320,14 @@ def create():
# ---- displacementCurve # ---- displacementCurve
def displacementCurve_textinput_callback(_attr, _old, new): def displacementCurve_textinput_callback(_attr, _old, new):
config.displacementCurve = new maps = []
for line in new.splitlines():
maps.append(re.findall(r"\d+(?:\.\d+)?", line))
config.displacementCurve = maps
displacementCurve_textinput = TextInput(title="Displacement Curve:") displacementCurve_textinput = TextAreaInput(
title="Displacement Curve (twotheta, x, y):", height=100
)
displacementCurve_textinput.on_change("value", displacementCurve_textinput_callback) displacementCurve_textinput.on_change("value", displacementCurve_textinput_callback)
def mode_radio_button_group_callback(active): def mode_radio_button_group_callback(active):