1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013 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
23 from __future__ import absolute_import
25 from builtins import str
30 from Noyau import N_MCCOMPO
31 from Validation import V_MCCOMPO
32 from Extensions.i18n import tr
34 class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
40 def __init__(self,val,definition,nom,parent):
41 # val contient la valeur initial du nuplet
43 if val == None: self.val=()
44 self.definition=definition
47 # GETVAL affecte la valeur par defaut si necessaire
48 self.valeur=self.GETVAL(self.val)
50 self.jdc = self.parent.jdc
51 self.niveau = self.parent.niveau
52 self.etape = self.parent.etape
54 # Le mot cle a ete cree sans parent
58 self.state = 'undetermined'
60 self.mc_liste=self.build_mc()
64 Construit la liste des sous-entites de MCNUPLET
65 a partir de la liste des arguments (valeur)
68 if args ==None : args =()
71 # on cree les sous entites du NUPLET a partir des valeurs initiales
73 for v in self.definition.entites:
78 objet=v(val=val,nom=repr(k),parent=self)
79 if hasattr(objet.definition,'position'):
80 if objet.definition.position == 'global' :
81 self.append_mc_global(objet)
83 mc_liste.append(objet)
85 # Un nuplet n'a pas de mots inconnus
89 def isvalid(self,cr='non'):
91 Indique si self (MCNUPLET) est un objet valide ou non : retourne 1 si oui, 0 sinon
93 if self.state == 'unchanged' :
97 if hasattr(self,'valid'):
98 old_valid = self.valid
101 for child in self.mc_liste :
102 if not child.isvalid():
105 if len(self.mc_liste) != len(self.definition.entites):
108 self.cr.fatal(''.join(("Nuplet : ",self.nom,tr("Longueur incorrecte"))))
110 self.state = 'unchanged'
112 if old_valid != self.valid : self.init_modif_up()
115 def __getitem__(self,key):
117 Retourne le key eme element du nuplet
119 # Un nuplet est toujours une liste de mots cles simples
120 # On retourne donc la valeur
121 return self.mc_liste[key].valeur
125 Retourne une representation du nuplet sous forme de chaine
129 for e in self.mc_liste:
130 s=s + str(e.valeur) + ','
135 Retourne une representation du nuplet sous forme de chaine
139 for e in self.mc_liste:
140 s=s + str(e.valeur) + ','
143 def get_regles(self):
145 Retourne la liste des regles attachees au nuplet
149 def verif_condition_bloc(self):
151 Verifie s'il y a des blocs sous le nuplet et retourne
152 les blocs en question
154 # Il n y a pas de BLOCs sous un NUPLET
157 def isrepetable(self):
159 Indique si le NUPLET peut etre repete.
160 Retourne 1 si c'est le cas.
161 Retourne 0 dans le cas contraire.
162 L'information est donnee par le catalogue, cad la definition de self
164 if self.definition.min != self.definition.max :
170 return self.definition(val = None, nom = self.nom,parent = self.parent)
172 def get_valeur(self):
174 Cette methode doit retourner la valeur de l'objet. Elle est utilisee par
175 cree_dict_valeurs pour construire un dictionnaire contenant les mots cles
177 Dans le cas d'un nuplet, on retournera comme valeur une liste des valeurs
178 des mots cle simples contenus.
181 for v in self.mc_liste:
187 Une autre methode qui retourne une "autre" valeur du mot cle facteur.
188 Elle est utilisee par la methode get_mocle
191 for v in self.mc_liste:
196 return self.definition.statut=='o'
200 Retourne le texte d'aide dans la langue choisie
203 return getattr(self.definition,self.jdc.lang)
207 def cree_dict_valeurs(self,liste=[],condition=0):
211 def update_condition_bloc(self):
213 Realise l'update des blocs conditionnels fils de self
214 et propage au parent (rien a faire pour nuplet)