Salome HOME
fin portage python 3
[tools/eficas.git] / Extensions / commentaire.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013   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.get_current_step()
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
54   def register(self):
55     """ 
56         Enregistre le commentaire dans la liste des etapes de son parent
57         lorsque celui-ci est un JDC 
58     """
59     if self.parent.nature == 'JDC':
60       # le commentaire est entre deux commandes:
61       # il faut l'enregistrer dans la liste des etapes
62       self.parent.register(self)
63
64   def copy(self):
65     c=COMMENTAIRE(valeur=self.valeur,parent=self.jdc)
66     return c
67
68   def isvalid(self):
69     """
70     Retourne 1 si self est valide, 0 sinon
71     Retourne toujours 1 car un commentaire est toujours valide
72     """
73     return 1
74
75   def isoblig(self):
76     """ Indique si self est obligatoire ou non : retourne toujours 0 """
77     return 0
78
79   def isrepetable(self):
80     """ Indique si self est repetable ou non : retourne toujours 1 """
81     return 1
82
83   def active(self):
84       """
85       Rend l'etape courante active
86       """
87       self.actif = 1
88
89   def inactive(self):
90       """
91       Rend l'etape courante inactive
92       NB : un commentaire est toujours actif !
93       """
94       self.actif = 1
95
96   def isactif(self):
97       """
98       Booleenne qui retourne 1 si self est valide, 0 sinon
99       """
100       return self.actif
101
102   def supprime(self):
103       """
104       Methode qui supprime toutes les boucles de references afin que 
105       l'objet puisse etre correctement detruit par le garbage collector
106       """
107       self.parent=None
108       self.jdc=None
109       self.definition = None
110       self.niveau = None
111
112   def liste_mc_presents(self):
113       return []
114
115   def get_valeur(self) :
116     """ Retourne la valeur de self, cad le contenu du commentaire """
117     try :
118       return self.valeur
119     except:
120       return None
121
122   def set_valeur(self,new_valeur):
123     """ 
124         Remplace la valeur de self(si elle existe) par new_valeur
125     """
126     self.valeur = new_valeur
127     self.init_modif()
128
129   def init_modif(self):
130     self.state = 'modified'
131     if self.parent:
132       self.parent.init_modif()
133
134   def supprime_sdprods(self):
135     pass
136
137   def update_context(self,d):
138     """
139         Update le dictionnaire d avec les concepts ou objets produits par self
140         --> ne fait rien pour un commentaire
141     """
142     pass
143
144   def report(self):
145     """ Genere l'objet rapport (classe CR) """
146     self.cr=CR()
147     if not self.isvalid(): self.cr.warn(tr("Objet commentaire non valorise"))
148     return self.cr
149
150   def ident(self):
151     """ Retourne le nom interne associe a self
152         Ce nom n'est jamais vu par l'utilisateur dans EFICAS
153     """
154     return self.nom
155
156   def delete_concept(self,sd):
157     pass
158
159   def replace_concept (self,old_sd,sd):
160     pass
161
162   def verif_condition_bloc(self):
163     """
164         Evalue les conditions de tous les blocs fils possibles
165         (en fonction du catalogue donc de la definition) de self et
166         retourne deux listes :
167           - la premiere contient les noms des blocs a rajouter
168           - la seconde contient les noms des blocs a supprimer
169     """
170     return [],[]
171
172   def verif_condition_regles(self,liste_presents):
173     """
174         Retourne la liste des mots-cles a rajouter pour satisfaire les regles
175         en fonction de la liste des mots-cles presents
176     """
177     return []
178
179   def get_sdprods(self,nom_sd):
180      """
181          Retourne les concepts produits par la commande
182      """
183      return None
184
185   def verif_existence_sd(self):
186      pass
187
188   def get_fr(self):
189     """
190     Retourne le commentaire lui meme tronque a la 1ere ligne
191     """
192     return self.valeur.split('\n',1)[0]
193
194   def control_sdprods(self,d):
195       """sans objet """
196       pass
197
198   def close(self):
199       pass
200
201   def reset_context(self):
202       pass
203
204