]> SALOME platform Git repositories - tools/eficas.git/blob - Ihm/I_OBJECT.py
Salome HOME
chgt Copyrigth
[tools/eficas.git] / Ihm / I_OBJECT.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021   EDF R&D
3 #
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.
8 #
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.
13 #
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
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 """
21 """
22 from __future__ import absolute_import
23 import Noyau
24
25 from . import CONNECTOR
26 import re
27 conceptRE=re.compile(r'[a-zA-Z_]\w*$')
28
29 class OBJECT:
30   from Noyau.N_CO import CO
31   from Noyau.N_ASSD import assd
32
33   def isMCList(self):
34     """ 
35         Retourne 1 si self est une MCList (liste de mots-cles), 0 sinon (defaut) 
36     """
37     return 0
38
39   def getRegles(self):
40     """ 
41        Retourne les regles de self 
42     """
43     if hasattr(self,'definition'):
44       return self.definition.regles
45     elif hasattr(self,'regles'):
46       return self.regles
47     else :
48       return []
49
50   def initModif(self):
51     """
52        Met l'etat de l'objet a modified et propage au parent
53        qui vaut None s'il n'existe pas
54     """
55     self.state = 'modified'
56     if self.parent:
57       self.parent.initModif()
58
59   def finModif(self):
60       """
61       Methode appelee apres qu'une modification a ete faite afin de declencher
62       d'eventuels traitements post-modification
63       """
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")
68       if self.parent:
69         self.parent.finModif()
70
71   def isRepetable(self):
72     """
73          Indique si l'objet est repetable
74     """
75     return 0
76
77   def listeMcPresents(self):
78     """
79          Retourne la liste des noms des mots cles presents
80     """
81     return []
82
83   def getDocu(self):
84     return self.definition.getDocu()
85
86   def getListeMcInconnus(self):
87      """
88      Retourne la liste des mots-cles inconnus dans self
89      """
90      return []
91
92   def verifConditionRegles(self,liste_presents):
93     """ 
94         Retourne la liste des mots-cles a rajouter pour satisfaire les regles
95         en fonction de la liste des mots-cles presents 
96     """
97     liste=[]
98     for regle in self.definition.regles:
99         liste=regle.verifConditionRegle(liste,liste_presents)
100     return liste
101
102   def verifConditionBloc(self):
103     """ 
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
109     """
110     return [],[]
111
112   def getGenealogiePrecise(self):
113     if self.parent:
114        l=self.parent.getGenealogiePrecise()
115        l.append(self.nom.strip())
116        return l
117     else:
118        return [self.nom.strip()]
119
120
121   def getGenealogie(self):
122     """ 
123         Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC
124         ou ETAPE) de self jusqu'au premier objet etape rencontre
125     """
126     if self.parent:
127        l=self.parent.getGenealogie()
128        l.append(self.nom.strip())
129        return l
130     else:
131        return [self.nom.strip()]
132
133   def getFr(self):
134      """
135          Retourne la chaine d'aide contenue dans le catalogue
136          en tenant compte de la langue
137      """
138      try:
139      #if 1 :
140         c=getattr(self.definition,self.jdc.lang)
141         return c
142      except:
143      #else:
144         try :
145             c=getattr(self.definition,"fr")
146             return c
147         except :
148             return ''
149
150   def updateConcept(self,sd):
151      pass
152
153   def normalize(self):
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).
157      """
158      return self
159
160   def deleteMcGlobal(self):
161      return
162
163   def updateMcGlobal(self):
164      return
165
166   #def __del__(self):
167   #   print "__del__",self
168
169   def nommeSd(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")
174       self.initModif()
175       #self.getSdProd()
176       #self.sd.nom = nom
177       #self.sdnom=nom
178       #self.parent.updateConceptAfterEtape(self,self.sd)
179       #self.finModif()
180       #return 1, tr("Nommage du concept effectue")
181
182   def deleteRef(self):
183   # doit etre surcharge dans MC_COMPO et MC_SIMP 
184       pass
185
186   def demandeRedessine(self):
187       CONNECTOR.Emit(self,"redessine")
188
189
190
191 class ErrorObj(OBJECT):pass
192