1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021 EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 from __future__ import absolute_import
25 from . import CONNECTOR
27 conceptRE=re.compile(r'[a-zA-Z_]\w*$')
30 from Noyau.N_CO import CO
31 from Noyau.N_ASSD import assd
35 Retourne 1 si self est une MCList (liste de mots-cles), 0 sinon (defaut)
41 Retourne les regles de self
43 if hasattr(self,'definition'):
44 return self.definition.regles
45 elif hasattr(self,'regles'):
52 Met l'etat de l'objet a modified et propage au parent
53 qui vaut None s'il n'existe pas
55 self.state = 'modified'
57 self.parent.initModif()
61 Methode appelee apres qu'une modification a ete faite afin de declencher
62 d'eventuels traitements post-modification
64 #print "finModif",self
65 # pour les objets autres que les commandes, aucun traitement specifique
66 # on remonte l'info de fin de modif au parent
67 CONNECTOR.Emit(self,"valid")
69 self.parent.finModif()
71 def isRepetable(self):
73 Indique si l'objet est repetable
77 def listeMcPresents(self):
79 Retourne la liste des noms des mots cles presents
84 return self.definition.getDocu()
86 def getListeMcInconnus(self):
88 Retourne la liste des mots-cles inconnus dans self
92 def verifConditionRegles(self,liste_presents):
94 Retourne la liste des mots-cles a rajouter pour satisfaire les regles
95 en fonction de la liste des mots-cles presents
98 for regle in self.definition.regles:
99 liste=regle.verifConditionRegle(liste,liste_presents)
102 def verifConditionBloc(self):
104 Evalue les conditions de tous les blocs fils possibles
105 (en fonction du catalogue donc de la definition) de self et
106 retourne deux listes :
107 - la premiere contient les noms des blocs a rajouter
108 - la seconde contient les noms des blocs a supprimer
112 def getGenealogiePrecise(self):
114 l=self.parent.getGenealogiePrecise()
115 l.append(self.nom.strip())
118 return [self.nom.strip()]
121 def getGenealogie(self):
123 Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC
124 ou ETAPE) de self jusqu'au premier objet etape rencontre
127 l=self.parent.getGenealogie()
128 l.append(self.nom.strip())
131 return [self.nom.strip()]
135 Retourne la chaine d'aide contenue dans le catalogue
136 en tenant compte de la langue
140 c=getattr(self.definition,self.jdc.lang)
145 c=getattr(self.definition,"fr")
150 def updateConcept(self,sd):
154 """ Retourne l'objet normalise. En general self sauf si
155 pour etre insere dans l'objet pere il doit etre
156 wrappe dans un autre objet (voir mot cle facteur).
160 def deleteMcGlobal(self):
163 def updateMcGlobal(self):
167 # print "__del__",self
170 # surcharge dans I_ETAPE.py
171 if ( nom in dir(self.jdc.cata)) : return (0, nom + tr("mot reserve"))
172 if not conceptRE.match(nom):
173 return 0, tr("Un nom de concept doit etre un identificateur Python")
178 #self.parent.updateConceptAfterEtape(self,self.sd)
180 #return 1, tr("Nommage du concept effectue")
183 # est surcharge dans MC_SIMP et dans MC_List
184 #print ('je suis dans deleteRef pour', self.nom)
185 for obj in (self.mcListe):
188 def supprimeUserAssd(self):
191 def demandeRedessine(self):
192 #print ('demandeRedessine pour', self.nom, self, tout)
193 CONNECTOR.Emit(self,"redessine")
195 def isUQActivate(self):
196 # valide uniquement pour les MCSIMP
200 class ErrorObj(OBJECT):pass