Salome HOME
fin du menage
[tools/eficas.git] / Extensions / commentaire.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    Ce module contient la classe COMMENTAIRE qui sert dans EFICAS
22    pour gerer les commentaires dans un JDC
23 """
24
25 from __future__ import absolute_import
26 from Noyau.N_CR import CR
27 from Noyau import N_OBJECT
28 from Ihm import I_OBJECT
29 from Extensions.i18n import tr
30
31 class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
32   """ 
33       Cette classe permet de creer des objets de type COMMENTAIRE 
34   """
35   nature = 'COMMENTAIRE'
36   idracine = '_comm'
37
38   def __init__(self,valeur,parent=None):
39     # parent est un objet de type OBJECT (ETAPE ou MC ou JDC...)
40     self.valeur=valeur
41     if not parent :
42       self.jdc = self.parent = CONTEXT.getCurrentStep()
43     else:
44       self.jdc = self.parent = parent
45     # La classe COMMENTAIRE n'a pas de definition. On utilise self
46     # pour completude
47     self.definition=self
48     self.nom=''
49     self.niveau = self.parent.niveau
50     self.actif=1
51     self.state="unchanged"
52     self.register()
53     self.fenetreIhm=None
54
55   def register(self):
56     """ 
57         Enregistre le commentaire dans la liste des etapes de son parent
58         lorsque celui-ci est un JDC 
59     """
60     if self.parent.nature == 'JDC':
61       # le commentaire est entre deux commandes:
62       # il faut l'enregistrer dans la liste des etapes
63       self.parent.register(self)
64
65   def copy(self):
66     c=COMMENTAIRE(valeur=self.valeur,parent=self.jdc)
67     return c
68
69   def isValid(self):
70     """
71     Retourne 1 si self est valide, 0 sinon
72     Retourne toujours 1 car un commentaire est toujours valide
73     """
74     return 1
75
76   def isOblig(self):
77     """ Indique si self est obligatoire ou non : retourne toujours 0 """
78     return 0
79
80   def isRepetable(self):
81     """ Indique si self est repetable ou non : retourne toujours 1 """
82     return 1
83
84   def active(self):
85       """
86       Rend l'etape courante active
87       """
88       self.actif = 1
89
90   def inactive(self):
91       """
92       Rend l'etape courante inactive
93       NB : un commentaire est toujours actif !
94       """
95       self.actif = 1
96
97   def isActif(self):
98       """
99       Booleenne qui retourne 1 si self est valide, 0 sinon
100       """
101       return self.actif
102
103   def supprime(self):
104       """
105       Methode qui supprime toutes les boucles de references afin que 
106       l'objet puisse etre correctement detruit par le garbage collector
107       """
108       self.parent=None
109       self.jdc=None
110       self.definition = None
111       self.niveau = None
112
113   def listeMcPresents(self):
114       return []
115
116   def getValeur(self) :
117     """ Retourne la valeur de self, cad le contenu du commentaire """
118     try :
119       return self.valeur
120     except:
121       return None
122
123   def setValeur(self,new_valeur):
124     """ 
125         Remplace la valeur de self(si elle existe) par new_valeur
126     """
127     self.valeur = new_valeur
128     self.initModif()
129
130   def initModif(self):
131     self.state = 'modified'
132     if self.parent:
133       self.parent.initModif()
134
135   def supprimeSdProds(self):
136     pass
137
138   def updateContext(self,d):
139     """
140         Update le dictionnaire d avec les concepts ou objets produits par self
141         --> ne fait rien pour un commentaire
142     """
143     pass
144
145   def report(self):
146     """ Genere l'objet rapport (classe CR) """
147     self.cr=CR()
148     if not self.isValid(): self.cr.warn(tr("Objet commentaire non valorise"))
149     return self.cr
150
151   def ident(self):
152     """ Retourne le nom interne associe a self
153         Ce nom n'est jamais vu par l'utilisateur dans EFICAS
154     """
155     return self.nom
156
157   def deleteConcept(self,sd):
158     pass
159
160   def replaceConcept (self,old_sd,sd):
161     pass
162
163   def verifConditionBloc(self):
164     """
165         Evalue les conditions de tous les blocs fils possibles
166         (en fonction du catalogue donc de la definition) de self et
167         retourne deux listes :
168           - la premiere contient les noms des blocs a rajouter
169           - la seconde contient les noms des blocs a supprimer
170     """
171     return [],[]
172
173   def verifConditionRegles(self,liste_presents):
174     """
175         Retourne la liste des mots-cles a rajouter pour satisfaire les regles
176         en fonction de la liste des mots-cles presents
177     """
178     return []
179
180   def getSdprods(self,nom_sd):
181      """
182          Retourne les concepts produits par la commande
183      """
184      return None
185
186   def verifExistenceSd(self):
187      pass
188
189   def getFr(self):
190     """
191     Retourne le commentaire lui meme tronque a la 1ere ligne
192     """
193     return self.valeur.split('\n',1)[0]
194
195   def controlSdprods(self,d):
196       """sans objet """
197       pass
198
199   def close(self):
200       pass
201
202   def resetContext(self):
203       pass
204
205