]> SALOME platform Git repositories - tools/eficas.git/blob - Ihm/I_OBJECT.py
Salome HOME
update version
[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     # est surcharge dans  MC_SIMP et dans MC_List
184         #print ('je suis dans deleteRef pour', self.nom)
185         for obj in (self.mcListe):
186             obj.deleteRef()
187
188     def supprimeUserAssd(self):
189         pass
190
191     def demandeRedessine(self):
192         #print ('demandeRedessine pour', self.nom, self, tout)
193         CONNECTOR.Emit(self,"redessine")
194
195     def isUQActivate(self):
196         # valide uniquement pour les MCSIMP
197         return True
198
199
200 class ErrorObj(OBJECT):pass