1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
27 from Noyau import N_MCCOMPO
28 from Validation import V_MCCOMPO
30 class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
36 def __init__(self,val,definition,nom,parent):
37 # val contient la valeur initial du nuplet
39 if val == None: self.val=()
40 self.definition=definition
43 # GETVAL affecte la valeur par defaut si necessaire
44 self.valeur=self.GETVAL(self.val)
46 self.jdc = self.parent.jdc
47 self.niveau = self.parent.niveau
48 self.etape = self.parent.etape
50 # Le mot cle a été créé sans parent
54 self.state = 'undetermined'
56 self.mc_liste=self.build_mc()
60 Construit la liste des sous-entites de MCNUPLET
61 à partir de la liste des arguments (valeur)
64 if args ==None : args =()
67 # on crée les sous entites du NUPLET a partir des valeurs initiales
69 for v in self.definition.entites:
74 objet=v(val=val,nom=`k`,parent=self)
75 if hasattr(objet.definition,'position'):
76 if objet.definition.position == 'global' :
77 self.append_mc_global(objet)
79 mc_liste.append(objet)
81 # Un nuplet n'a pas de mots inconnus
85 def isvalid(self,cr='non'):
87 Indique si self (MCNUPLET) est un objet valide ou non : retourne 1 si oui, 0 sinon
89 if self.state == 'unchanged' :
93 if hasattr(self,'valid'):
94 old_valid = self.valid
97 for child in self.mc_liste :
98 if not child.isvalid():
101 if len(self.mc_liste) != len(self.definition.entites):
104 self.cr.fatal(string.join(("Nuplet : ",self.nom," Longueur incorrecte")))
106 self.state = 'unchanged'
108 if old_valid != self.valid : self.init_modif_up()
111 def __getitem__(self,key):
113 Retourne le key ème élément du nuplet
115 # Un nuplet est toujours une liste de mots cles simples
116 # On retourne donc la valeur
117 return self.mc_liste[key].valeur
121 Retourne une représentation du nuplet sous forme de chaine
125 for e in self.mc_liste:
126 s=s + str(e.valeur) + ','
131 Retourne une représentation du nuplet sous forme de chaine
135 for e in self.mc_liste:
136 s=s + str(e.valeur) + ','
139 def get_regles(self):
141 Retourne la liste des règles attachées au nuplet
145 def verif_condition_bloc(self):
147 Vérifie s'il y a des blocs sous le nuplet et retourne
148 les blocs en question
150 # Il n y a pas de BLOCs sous un NUPLET
153 def isrepetable(self):
155 Indique si le NUPLET peut etre répété.
156 Retourne 1 si c'est le cas.
157 Retourne 0 dans le cas contraire.
158 L'information est donnée par le catalogue, cad la définition de self
160 if self.definition.min != self.definition.max :
166 return self.definition(val = None, nom = self.nom,parent = self.parent)
168 def get_valeur(self):
170 Cette méthode doit retourner la valeur de l'objet. Elle est utilisée par
171 cree_dict_valeurs pour construire un dictionnaire contenant les mots clés
173 Dans le cas d'un nuplet, on retournera comme valeur une liste des valeurs
174 des mots clé simples contenus.
177 for v in self.mc_liste:
183 Une autre méthode qui retourne une "autre" valeur du mot clé facteur.
184 Elle est utilisée par la méthode get_mocle
187 for v in self.mc_liste:
192 return self.definition.statut=='o'
196 Retourne le texte d'aide dans la langue choisie
199 return getattr(self.definition,prefs.lang)
203 def cree_dict_valeurs(self,liste=[],condition=0):
207 def update_condition_bloc(self):
209 Realise l'update des blocs conditionnels fils de self
210 et propage au parent (rien a faire pour nuplet)