1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021 EDF R&D
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 Ce module contient la classe COMMENTAIRE qui sert dans EFICAS
22 pour gerer les commentaires dans un JDC
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
31 class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
33 Cette classe permet de creer des objets de type COMMENTAIRE
35 nature = 'COMMENTAIRE'
38 def __init__(self,valeur,parent=None):
39 # parent est un objet de type OBJECT (ETAPE ou MC ou JDC...)
42 self.jdc = self.parent = CONTEXT.getCurrentStep()
44 self.jdc = self.parent = parent
45 # La classe COMMENTAIRE n'a pas de definition. On utilise self
49 self.niveau = self.parent.niveau
51 self.state="unchanged"
57 Enregistre le commentaire dans la liste des etapes de son parent
58 lorsque celui-ci est un JDC
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)
66 c=COMMENTAIRE(valeur=self.valeur,parent=self.jdc)
71 Retourne 1 si self est valide, 0 sinon
72 Retourne toujours 1 car un commentaire est toujours valide
77 """ Indique si self est obligatoire ou non : retourne toujours 0 """
80 def isRepetable(self):
81 """ Indique si self est repetable ou non : retourne toujours 1 """
86 Rend l'etape courante active
92 Rend l'etape courante inactive
93 NB : un commentaire est toujours actif !
99 Booleenne qui retourne 1 si self est valide, 0 sinon
105 Methode qui supprime toutes les boucles de references afin que
106 l'objet puisse etre correctement detruit par le garbage collector
110 self.definition = None
113 def listeMcPresents(self):
116 def getValeur(self) :
117 """ Retourne la valeur de self, cad le contenu du commentaire """
123 def setValeur(self,new_valeur):
125 Remplace la valeur de self(si elle existe) par new_valeur
127 self.valeur = new_valeur
131 self.state = 'modified'
133 self.parent.initModif()
135 def supprimeSdProds(self):
138 def updateContext(self,d):
140 Update le dictionnaire d avec les concepts ou objets produits par self
141 --> ne fait rien pour un commentaire
146 """ Genere l'objet rapport (classe CR) """
148 if not self.isValid(): self.cr.warn(tr("Objet commentaire non valorise"))
152 """ Retourne le nom interne associe a self
153 Ce nom n'est jamais vu par l'utilisateur dans EFICAS
157 def deleteConcept(self,sd):
160 def replaceConcept (self,old_sd,sd):
163 def verifConditionBloc(self):
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
173 def verifConditionRegles(self,liste_presents):
175 Retourne la liste des mots-cles a rajouter pour satisfaire les regles
176 en fonction de la liste des mots-cles presents
180 def getSdprods(self,nom_sd):
182 Retourne les concepts produits par la commande
186 def verifExistenceSd(self):
191 Retourne le commentaire lui meme tronque a la 1ere ligne
193 return self.valeur.split('\n',1)[0]
195 def controlSdprods(self,d):
202 def resetContext(self):