+ #-------------------------------------#
+ def getValeur(self,nomEtape,MCFils,listeAvant=()):
+ #-------------------------------------#
+ # dans le JDC
+
+ ouChercher=None
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+ if ouChercher==None : return None
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ #print (mot, ouChercher)
+ if ouChercher==None : return None
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC== None : return None
+ return monMC.valeur
+
+ #-----------------------------------------------------------#
+ def setValeur(self,nomEtape,MCFils,valeur,listeAvant=()):
+ #--------------------------------------------------------#
+ # dans le JDC
+
+ ouChercher=None
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+ if ouChercher==None : return None
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ #print (mot, ouChercher)
+ if ouChercher==None : return None
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ monMC.set_valeur(valeur)
+ monMC.isvalid()
+
+ #-----------------------------------------------------------#
+ def changeIntoMC(self,etape,MCFils,valeurs, listeAvant=()):
+ #-----------------------------------------------------------#
+ # dans le JDC
+ ouChercher=etape
+ if isinstance (etape, str):
+ ouChercher=None
+ for e in self.jdc.etapes:
+ if e.nom == etape : ouChercher=e; break
+ if ouChercher==None : return
+
+ for mot in listeAvant :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ if ouChercher==None : return
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC== None : monMC= ouChercher.addentite(MCFils)
+
+ monMC.definition.into=valeurs
+ from Noyau.N_VALIDATOR import IntoProtocol
+ monMC.definition.intoProto = IntoProtocol("into", into=monMC.definition.into, val_min=monMC.definition.val_min, val_max=monMC.definition.val_max)
+ monMC.state='changed'
+ monMC.isvalid()
+
+ #-------------------------------------------------------------------#
+ def reCalculeValiditeMCApresChgtInto(self,nomEtape,MCFils,listeAvant=()):
+ #-------------------------------------------------------------------#
+ # dans le JDC
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+
+ for mot in listeAvant :
+ try :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ # Le mot clef n est pas la
+ except : return 0
+ try :
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ # Le mot clef n est pas la
+ except : return 0
+ if monMC == None : return 0
+
+ if hasattr(monMC.definition,'into') :
+ if type(monMC.definition.into) ==types.FunctionType : maListeDeValeur=monMC.definition.into()
+ else : maListeDeValeur=monMC.definition.into
+ else :
+ return 0
+
+ monMC.state='changed'
+ return 1
+
+ #-------------------------------------#
+ def changeDefautDefMC(self,nomEtape,listeMC,valeurs):
+ #-------------------------------------#
+ # dans le MDD
+
+ #if isinstance (etape, str):
+ # for e in self.jdc.etapes:
+ # if e.nom == etape : etape=e; break
+ #if etape == None : return
+ definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+ if len(listeMC) > 1 :
+
+ for mc in listeMC[0:-1]:
+ mcfact=ouChercher.entites[mc]
+ ouChercher=mcfact
+
+ mcAccas=ouChercher.entites[listeMC[-1]]
+ mcAccas.defaut=valeurs
+ return 1
+
+ #------------------------------------------------#
+ def changeIntoDefMC(self,nomEtape,listeMC,valeurs):
+ #------------------------------------------------#
+ # dans le MDD
+ definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+
+ if len(listeMC) > 1 :
+ for mc in listeMC[0:-1]:
+ mcfact=ouChercher.entites[mc]
+ ouChercher=mcfact
+ mcAccas=ouChercher.entites[listeMC[-1]]
+
+ if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into
+ else : oldValeurs=None
+ if oldValeurs==valeurs : return 0
+
+ mcAccas.into=valeurs
+ from Noyau.N_VALIDATOR import IntoProtocol
+ mcAccas.intoProto = IntoProtocol("into", into=valeurs, val_min=mcAccas.val_min, val_max=mcAccas.val_max)
+ return 1
+
+ #-------------------------------------------------------------#
+ def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
+ #-------------------------------------------------------------#
+ # dans le MDD
+ #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC
+ if isinstance (etape, str):
+ for e in self.jdc.etapes:
+ if e.nom == etape : etape=e; break
+ if etape == None : return
+ definitionEtape=getattr(self.jdc.cata[0],etape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ MCADetruire=ouChercher.entites[nomDuMC]
+ ouChercher.ordre_mc.remove(nomDuMC)
+ del ouChercher.entites[nomDuMC]
+ del self.dicoNouveauxMC[nomDuMC]
+
+
+ #-------------------------------------------------------------#
+ def ajoutDefinitionMC(self,nomEtape,listeAvant,nomDuMC,typ,**args):
+ #-------------------------------------------------------------#
+ # dans le MDD
+ definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ from Accas import A_SIMP
+ Nouveau=A_SIMP.SIMP(typ,**args)
+ Nouveau.pere=ouChercher
+ Nouveau.nom=nomDuMC
+ #Nouveau.ordre_mc=[]
+ ouChercher.entites[nomDuMC]=Nouveau
+ ouChercher.ordre_mc.append(nomDuMC)
+ self.dicoNouveauxMC[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,typ,args)
+ #print self.dicoNouveauxMC
+
+ #---------------------------------------------------------------------#
+ def ajoutDefinitionMCFact(self,nomEtape,listeAvant,nomDuMC,listeMC,**args):
+ #---------------------------------------------------------------------#
+ # dans le MDD
+ print ('ajoutDefinitionMCFact', nomDuMC)
+ definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+ ouChercher=definitionEtape
+ for k in listeAvant :
+ ouChercher=ouChercher.entites[k]
+ from Accas import A_SIMP
+ for mc in listeMC :
+ nomMC=mc[0]
+ typMC=mc[1]
+ argsMC=mc[2]
+ nouveauMC=A_SIMP.SIMP(typMC,**argsMC)
+ nouveauMC.nom=nomMC
+ args[nomMC]=nouveauMC
+ from Accas import A_FACT
+ nouveauFact=A_FACT.FACT(**args)
+ nouveauFact.pere=ouChercher
+ nouveauFact.nom=nomDuMC
+ from Editeur.autre_analyse_cata import traite_entite
+ traite_entite(nouveauFact,[])
+ ouChercher.entites[nomDuMC]=nouveauFact
+ ouChercher.ordre_mc.append(nomDuMC)
+ self.dicoNouveauxFact[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,listeMC,args)
+ #print self.dicoNouveauxMC
+
+ #----------------------------------------------------#
+
+ #----------------------------------------------------#
+ def changeIntoMCandSet(self,etape,listeMC,into,valeurs):
+ #----------------------------------------------------#
+ # dans le MDD et le JDC
+
+ self.changeIntoDefMC(etape,listeMC,into)
+
+ if isinstance (etape, str):
+ for e in self.jdc.etapes:
+ if e.nom == etape : etape=e; break
+ if etape == None : return
+
+ ouChercher = etape
+ for mot in listeMC[:-1] :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ if ouChercher==None : return
+ MCFils=listeMC[-1]
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ if monMC== None : monMC= etape.addentite(MCFils)
+
+ monMC.definition.into=into
+ monMC.valeur=valeurs
+ monMC.val=valeurs
+ monMC.state='changed'
+ monMC.isvalid()