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 Ce module contient la classe OBJECT classe mère de tous les objets
23 servant à controler les valeurs par rapport aux définitions
25 from __future__ import absolute_import
27 from builtins import object
36 Classe OBJECT : cette classe est virtuelle et sert de classe mère
37 aux classes de type ETAPE et MOCLES.
38 Elle ne peut etre instanciée.
39 Une sous classe doit obligatoirement implémenter les méthodes :
47 Retourne l'étape à laquelle appartient self
48 Un objet de la catégorie etape doit retourner self pour indiquer que
50 XXX double emploi avec self.etape ???
52 if self.parent == None:
54 return self.parent.getEtape()
58 Méthode qui supprime les références arrières suffisantes pour
59 que l'objet puisse etre correctement détruit par le
70 Retourne la valeur de l'objet. Cette méthode fournit
71 une valeur par defaut. Elle doit etre dérivée pour chaque
79 Cette méthode doit retourner l'objet racine c'est à dire celui qui
83 return self.parent.getJdcRoot()
87 def getValeurEffective(self, val):
89 Retourne la valeur effective du mot-clé en fonction
90 de la valeur donnée. Defaut si val == None
92 if (val is None and hasattr(self.definition, 'defaut')):
93 return self.definition.defaut
97 def reparent(self, parent):
99 Cette methode sert a reinitialiser la parente de l'objet
102 self.jdc = parent.jdc
106 Indique si l'objet est un BLOC
107 surcharge dans MCBLOC
111 def longueurDsArbre(self):
112 if self.nom == "Consigne" : return 0
113 if self.nom == "blocConsigne" : return 0
118 class ErrorObj(OBJECT):
120 """Classe pour objets errones : emule le comportement d'un objet tel mcsimp ou mcfact
123 def __init__(self, definition, valeur, parent, nom="err"):
125 self.definition = definition
130 self.jdc = self.parent.jdc
131 # self.niveau = self.parent.niveau
132 # self.etape = self.parent.etape
139 def isValid(self, cr='non'):
143 """ génère le rapport de validation de self """
145 self.cr.debut = u"Mot-clé invalide : " + self.nom
146 self.cr.fin = u"Fin Mot-clé invalide : " + self.nom
147 self.cr.fatal(_(u"Type non autorisé pour le mot-clé %s : '%s'"),
148 self.nom, self.valeur)
152 def newGetattr(self,name):
154 fils=self.getChildOrChildInBloc(name,restreint='non')
156 if fils.nature == 'MCSIMP' : return fils.valeur
157 if fils.nature == 'MCList' :
158 if fils[0].definition.max == 1 : return fils[0]
161 raise AttributeError("%r object has no attribute %r" % (self.__class__.__name__, name))
162 raise AttributeError("%r object has no attribute %r" % (self.__class__.__name__, name))
164 def newGetattrForEtape(self,name):
166 lesFils=self.getEtapesByName(name)
167 if lesFils != [] : return lesFils
169 raise AttributeError("%r object has no attribute %r" % (self.__class__.__name__, name))
170 raise AttributeError("%r object has no attribute %r" % (self.__class__.__name__, name))
172 def activeSurcharge():
173 from .N_MCCOMPO import MCCOMPO
174 MCCOMPO.__getattr__ = newGetattr
175 from .N_JDC import JDC
176 JDC.__getattr__ = newGetattrForEtape