Salome HOME
etat provisoire pour sauvegarde avant vacances. non stable
[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 gérer les commentaires dans un JDC
23 """
24
25 from Noyau.N_CR import CR
26 from Noyau import N_OBJECT
27 from Ihm import I_OBJECT
28 from Extensions.i18n import tr
29
30 class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
31   """ 
32       Cette classe permet de créer des objets de type COMMENTAIRE 
33   """
34   nature = 'COMMENTAIRE'
35   idracine = '_comm'
36
37   def __init__(self,valeur,parent=None):
38     # parent est un objet de type OBJECT (ETAPE ou MC ou JDC...)
39     self.valeur=valeur
40     if not parent :
41       self.jdc = self.parent = CONTEXT.get_current_step()
42     else:
43       self.jdc = self.parent = parent
44     # La classe COMMENTAIRE n'a pas de définition. On utilise self
45     # pour complétude
46     self.definition=self
47     self.nom=''
48     self.niveau = self.parent.niveau
49     self.actif=1
50     self.state="unchanged"
51     self.register()
52
53   def register(self):
54     """ 
55         Enregistre le commentaire dans la liste des étapes de son parent
56         lorsque celui-ci est un JDC 
57     """
58     if self.parent.nature == 'JDC':
59       # le commentaire est entre deux commandes:
60       # il faut l'enregistrer dans la liste des étapes
61       self.parent.register(self)
62
63   def copy(self):
64     c=COMMENTAIRE(valeur=self.valeur,parent=self.jdc)
65     return c
66
67   def isvalid(self):
68     """
69     Retourne 1 si self est valide, 0 sinon
70     Retourne toujours 1 car un commentaire est toujours valide
71     """
72     return 1
73
74   def isoblig(self):
75     """ Indique si self est obligatoire ou non : retourne toujours 0 """
76     return 0
77
78   def isrepetable(self):
79     """ Indique si self est répétable ou non : retourne toujours 1 """
80     return 1
81
82   def active(self):
83       """
84       Rend l'etape courante active
85       """
86       self.actif = 1
87
88   def inactive(self):
89       """
90       Rend l'etape courante inactive
91       NB : un commentaire est toujours actif !
92       """
93       self.actif = 1
94
95   def isactif(self):
96       """
97       Booléenne qui retourne 1 si self est valide, 0 sinon
98       """
99       return self.actif
100
101   def supprime(self):
102       """
103       Méthode qui supprime toutes les boucles de références afin que 
104       l'objet puisse être correctement détruit par le garbage collector
105       """
106       self.parent=None
107       self.jdc=None
108       self.definition = None
109       self.niveau = None
110
111   def liste_mc_presents(self):
112       return []
113
114   def get_valeur(self) :
115     """ Retourne la valeur de self, cad le contenu du commentaire """
116     try :
117       return self.valeur
118     except:
119       return None
120
121   def set_valeur(self,new_valeur):
122     """ 
123         Remplace la valeur de self(si elle existe) par new_valeur
124     """
125     self.valeur = new_valeur
126     self.init_modif()
127
128   def init_modif(self):
129     self.state = 'modified'
130     if self.parent:
131       self.parent.init_modif()
132
133   def supprime_sdprods(self):
134     pass
135
136   def update_context(self,d):
137     """
138         Update le dictionnaire d avec les concepts ou objets produits par self
139         --> ne fait rien pour un commentaire
140     """
141     pass
142
143   def report(self):
144     """ Génère l'objet rapport (classe CR) """
145     self.cr=CR()
146     if not self.isvalid(): self.cr.warn(tr("Objet commentaire non valorise"))
147     return self.cr
148
149   def ident(self):
150     """ Retourne le nom interne associé à self
151         Ce nom n'est jamais vu par l'utilisateur dans EFICAS
152     """
153     return self.nom
154
155   def delete_concept(self,sd):
156     pass
157
158   def replace_concept (self,old_sd,sd):
159     pass
160
161   def verif_condition_bloc(self):
162     """
163         Evalue les conditions de tous les blocs fils possibles
164         (en fonction du catalogue donc de la définition) de self et
165         retourne deux listes :
166           - la première contient les noms des blocs à rajouter
167           - la seconde contient les noms des blocs à supprimer
168     """
169     return [],[]
170
171   def verif_condition_regles(self,liste_presents):
172     """
173         Retourne la liste des mots-clés à rajouter pour satisfaire les règles
174         en fonction de la liste des mots-clés présents
175     """
176     return []
177
178   def get_sdprods(self,nom_sd):
179      """
180          Retourne les concepts produits par la commande
181      """
182      return None
183
184   def verif_existence_sd(self):
185      pass
186
187   def get_fr(self):
188     """
189     Retourne le commentaire lui meme tronque a la 1ere ligne
190     """
191     return self.valeur.split('\n',1)[0]
192
193   def control_sdprods(self,d):
194       """sans objet """
195       pass
196
197   def close(self):
198       pass
199
200   def reset_context(self):
201       pass
202
203