From: eficas <> Date: Wed, 3 Apr 2002 12:36:15 +0000 (+0000) Subject: F.R: recette modifs CCa : correction bug sur la copie et les X-Git-Tag: AY_av_utilites~84 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=dc4ba45cead68e81d959dbe05f2e014860b6c162;p=tools%2Feficas.git F.R: recette modifs CCa : correction bug sur la copie et les F.R: références à dezs concepts qui n'existent pas au niveau F.R: d'arborscence où l'on copie la commande --- 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() + + + + + + + + + + + + + + + + +