From c69cbdb34eab3bfbf440c83a1ec533c4f4b62c82 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Mon, 27 Nov 2023 08:55:14 +0100 Subject: [PATCH] BC: Make node association unique (#25). --- src/Model/BoundaryCondition/BoundaryConditionList.py | 8 ++++++++ src/View/BoundaryCondition/UndoCommand.py | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/src/Model/BoundaryCondition/BoundaryConditionList.py b/src/Model/BoundaryCondition/BoundaryConditionList.py index 051a3ea8..b2c7b8bc 100644 --- a/src/Model/BoundaryCondition/BoundaryConditionList.py +++ b/src/Model/BoundaryCondition/BoundaryConditionList.py @@ -89,3 +89,11 @@ class BoundaryConditionList(PamhyrModelListWithTab): def copy(self): return copy(self) + + def get_assoc_to_node(self, tab, node): + return next( + filter( + lambda i: i.node is node, + self._tabs[tab] + ) + ) diff --git a/src/View/BoundaryCondition/UndoCommand.py b/src/View/BoundaryCondition/UndoCommand.py index 64bfebbe..fd2923d3 100644 --- a/src/View/BoundaryCondition/UndoCommand.py +++ b/src/View/BoundaryCondition/UndoCommand.py @@ -53,12 +53,19 @@ class SetNodeCommand(QUndoCommand): self._index = index self._old = self._bcs.get(self._tab, self._index).node self._new = node + self._prev_assoc_to_node = self._bcs.get_assoc_to_node(tab, node) + + def _previous_assoc_node(self, node): + if self._prev_assoc_to_node is not None: + self._prev_assoc_to_node.node = node def undo(self): self._bcs.get(self._tab, self._index).node = self._old + self._previous_assoc_node(self._new) def redo(self): self._bcs.get(self._tab, self._index).node = self._new + self._previous_assoc_node(None) class SetTypeCommand(QUndoCommand): -- GitLab