diff --git a/pymead/core/geometry_collection.py b/pymead/core/geometry_collection.py index 31f4451d..7cc08986 100644 --- a/pymead/core/geometry_collection.py +++ b/pymead/core/geometry_collection.py @@ -839,15 +839,25 @@ def set_from_dict_rep(cls, d: dict, canvas=None, tree=None, gui_obj=None): for name, point_dict in d["points"].items(): geo_col.add_point(**point_dict, name=name, assign_unique_name=False) for name, desvar_dict in d["desvar"].items(): - point = None - if ".x" in name or ".y" in name: + if ".x" in name: point = geo_col.container()["points"][name.split(".")[0]] - geo_col.add_desvar(**desvar_dict, name=name, assign_unique_name=False, point=point) + geo_col.add_pymead_obj_by_ref(point.x(), assign_unique_name=False) + geo_col.promote_param_to_desvar(point.x(), lower=desvar_dict["lower"], upper=desvar_dict["upper"]) + elif ".y" in name: + point = geo_col.container()["points"][name.split(".")[0]] + geo_col.add_pymead_obj_by_ref(point.y(), assign_unique_name=False) + geo_col.promote_param_to_desvar(point.y(), lower=desvar_dict["lower"], upper=desvar_dict["upper"]) + else: + geo_col.add_desvar(**desvar_dict, name=name, assign_unique_name=False) for name, param_dict in d["params"].items(): - point = None - if ".x" in name or ".y" in name: + if ".x" in name: point = geo_col.container()["points"][name.split(".")[0]] - geo_col.add_param(**param_dict, name=name, assign_unique_name=False, point=point) + geo_col.add_pymead_obj_by_ref(point.x(), assign_unique_name=False) + elif ".y" in name: + point = geo_col.container()["points"][name.split(".")[0]] + geo_col.add_pymead_obj_by_ref(point.y(), assign_unique_name=False) + else: + geo_col.add_param(**param_dict, name=name, assign_unique_name=False) for name, line_dict in d["lines"].items(): geo_col.add_line(point_sequence=PointSequence( points=[geo_col.container()["points"][k] for k in line_dict["points"]]), diff --git a/pymead/core/point.py b/pymead/core/point.py index 5feb6dfd..9ec4dfba 100644 --- a/pymead/core/point.py +++ b/pymead/core/point.py @@ -214,6 +214,7 @@ def request_move(self, xp: float, yp: float, force: bool = False): constraints. """ + print(f"{self.is_movement_allowed() = }") if not self.is_movement_allowed() and not force: return diff --git a/pymead/gui/parameter_tree.py b/pymead/gui/parameter_tree.py index ad17ac62..3816a75a 100644 --- a/pymead/gui/parameter_tree.py +++ b/pymead/gui/parameter_tree.py @@ -116,6 +116,7 @@ def __init__(self, parent, param: Param): # return f"{UNITS.convert_angle_from_base(2 * np.pi)} {suffix}" def onValueChanged(self, value: float): + print(f"Value changed! {value = }, {self.param = }, {self.param.point = }, {self.param is self.param.point.x() = }") if self.param.point is None: self.param.set_value(value) else: