From dc4ba45cead68e81d959dbe05f2e014860b6c162 Mon Sep 17 00:00:00 2001 From: eficas <> Date: Wed, 3 Apr 2002 12:36:15 +0000 Subject: [PATCH] =?utf8?q?F.R:=20recette=20modifs=20CCa=20:=20correction?= =?utf8?q?=20bug=20sur=20la=20copie=20et=20les=20F.R:=20r=C3=A9f=C3=A9renc?= =?utf8?q?es=20=C3=A0=20dezs=20concepts=20qui=20n'existent=20pas=20au=20ni?= =?utf8?q?veau=20F.R:=20d'arborscence=20o=C3=B9=20l'on=20copie=20la=20comm?= =?utf8?q?ande?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Editeur/composimp.py | 2 -- Ihm/I_ETAPE.py | 29 ++++++++++++++++++++++++++ Ihm/I_JDC.py | 3 +++ Ihm/I_MCCOMPO.py | 8 ++++++++ Ihm/I_MCLIST.py | 9 ++++++++- Ihm/I_MCSIMP.py | 48 +++++++++++++++++++++++++++++++++++++++++--- 6 files changed, 93 insertions(+), 6 deletions(-) diff --git a/Editeur/composimp.py b/Editeur/composimp.py index bd6f6d20..7de92d86 100644 --- a/Editeur/composimp.py +++ b/Editeur/composimp.py @@ -913,10 +913,8 @@ class UNIQUE_SDCO_Panel(UNIQUE_ASSD_Panel): """ if self.parent.modified == 'n' : self.parent.init_modif() valeur = self.get_valeur() - print "valid_valeur ",valeur self.erase_valeur() anc_val = self.node.item.get_valeur() - print "anc_val ",anc_val test_CO=self.node.item.is_CO(anc_val) test = self.node.item.set_valeur(valeur) if not test : diff --git a/Ihm/I_ETAPE.py b/Ihm/I_ETAPE.py index 35351a44..7929971b 100644 --- a/Ihm/I_ETAPE.py +++ b/Ihm/I_ETAPE.py @@ -290,3 +290,32 @@ class ETAPE(I_MCCOMPO.MCCOMPO): for mocle in self.mc_liste: mocle.reparent(self) + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + """ + for motcle in self.mc_liste : + motcle.verif_existence_sd() + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ihm/I_JDC.py b/Ihm/I_JDC.py index 1765b2c5..7e3fd61f 100644 --- a/Ihm/I_JDC.py +++ b/Ihm/I_JDC.py @@ -127,6 +127,9 @@ class JDC(I_OBJECT.OBJECT): objet.parent.dict_niveaux[objet.nom_niveau_definition].register(objet) objet.niveau = objet.parent.dict_niveaux[objet.nom_niveau_definition] self.etapes.insert(pos,objet) + # il faut vérifier que les concepts utilisés par objet existent bien + # à ce niveau d'arborescence + objet.verif_existence_sd() self.active_etapes() self.editmode=0 self.reset_context() diff --git a/Ihm/I_MCCOMPO.py b/Ihm/I_MCCOMPO.py index 0473b104..b0278b94 100644 --- a/Ihm/I_MCCOMPO.py +++ b/Ihm/I_MCCOMPO.py @@ -369,3 +369,11 @@ class MCCOMPO(I_OBJECT.OBJECT): self.etape=parent.etape for mocle in self.mc_liste: mocle.reparent(self) + + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + """ + for motcle in self.mc_liste : + motcle.verif_existence_sd() diff --git a/Ihm/I_MCLIST.py b/Ihm/I_MCLIST.py index 243992ce..db2e0552 100644 --- a/Ihm/I_MCLIST.py +++ b/Ihm/I_MCLIST.py @@ -146,7 +146,14 @@ class MCList: """ self.parent=parent self.jdc=parent.jdc - self.etape=etape + self.etape=parent.etape for mcfact in self.data: mcfact.reparent(parent) + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + """ + for motcle in self.data : + motcle.verif_existence_sd() diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index 1875b989..840c5934 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -254,9 +254,13 @@ class MCSIMP(I_OBJECT.OBJECT): def copy(self): """ Retourne une copie de self """ objet = self.makeobjet() - #XXX est ce utile ?? - objet.valeur = copy(self.valeur) - objet.val = copy(self.val) + # il faut copier les listes et les tuples mais pas les autres valeurs + # possibles (réel,SD,...) + if type(self.valeur) in (types.ListType,types.TupleType): + objet.valeur = copy(self.valeur) + else: + objet.valeur = self.valeur + objet.val = objet.valeur return objet def makeobjet(self): @@ -321,3 +325,41 @@ class MCSIMP(I_OBJECT.OBJECT): self.jdc=parent.jdc self.etape=parent.etape + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + """ + l_sd_avant_etape = self.jdc.get_contexte_avant(self.etape).values() + if type(self.valeur) in (types.TupleType,types.ListType) : + l=[] + for sd in self.valeur: + if isinstance(sd,ASSD) : + if sd in l_sd_avant_etape : + l.append(sd) + else: + l.append(sd) + self.valeur=l + self.init_modif() + else: + if isinstance(self.valeur,ASSD) : + if self.valeur not in l_sd_avant_etape : + self.valeur = None + self.init_modif() + + + + + + + + + + + + + + + + + -- 2.39.2