diff --git a/library/cadbiom/models/guard_transitions/chart_model.py b/library/cadbiom/models/guard_transitions/chart_model.py index 3c69444751023ff30e313feac48c78b117c89e3d..b768d5b4fe801d6cec4c4475b45318b782489907 100644 --- a/library/cadbiom/models/guard_transitions/chart_model.py +++ b/library/cadbiom/models/guard_transitions/chart_model.py @@ -1920,12 +1920,20 @@ class CTransition(object): """ remove the transition from its macro node """ - lgtr = self.macro_node.transitions - for gtr in self.macro_node.transitions: - if self in gtr: - gtr.remove(self) - if len(gtr) == 0: - lgtr.remove(gtr) + # list<list<CTransitions>> Sublists: transitions with common extremities + # defaultdict(<type 'list'>, {frozenset(['A', 'D']): [D -> A, C:, E:], + temp_transitions = self.macro_node.new_transitions + for nodes, transitions in self.macro_node.new_transitions.items(): + if self in transitions: + if len(transitions) == 1: + temp_transitions.pop(nodes) + continue + # Multiple transitions: remove only the current one + # Is it really happen? + print("Remove only the current transition") + transitions.remove(self) + + self.macro_node.new_transitions = temp_transitions self.ori.outgoing_trans.remove(self) self.ext.incoming_trans.remove(self) self.ori.model.transition_list.remove(self)