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
22 Ce module contient la classe MCBLOC qui sert à controler la valeur
23 d'un bloc de mots-clés par rapport à sa définition portée par un objet
27 from __future__ import absolute_import
30 from . import N_MCCOMPO
33 class MCBLOC(N_MCCOMPO.MCCOMPO):
36 Classe support d'un bloc de mots-clés.
42 def __init__(self, val, definition, nom, parent,dicoPyxbDeConstruction=None):
46 - val : valeur du bloc (dictionnaire dont les clés sont des noms de mots-clés et les valeurs
47 les valeurs des mots-clés)
49 - definition : objet de définition de type BLOC associé au bloc (porte les attributs de définition)
51 - nom : nom du bloc. Ce nom lui est donné par celui qui crée le bloc de mot-clé
53 - parent : le créateur du bloc. Ce peut etre un mot-clé facteur ou un autre objet composite de type
54 OBJECT. Si parent vaut None, le bloc ne possède pas de contexte englobant.
56 - mcListe : liste des sous-objets du bloc construite par appel à la méthode buildMc
59 #print ('MCBLOC' , val, definition, nom, parent)
60 self.definition = definition
65 self.objPyxbDeConstruction=None
66 self.dicoPyxbDeConstruction=dicoPyxbDeConstruction
68 self.jdc = self.parent.jdc
69 self.niveau = self.parent.niveau
70 self.etape = self.parent.etape
72 # Le mot cle a été créé sans parent
76 self.mcListe = self.buildMc()
80 Retourne la "valeur" de l'objet bloc. Il s'agit d'un dictionnaire dont
81 les clés seront les noms des objets de self.mcListe et les valeurs
82 les valeurs des objets de self.mcListe obtenues par application de
85 Dans le cas particulier d'un objet bloc les éléments du dictionnaire
86 obtenu par appel de la méthode getValeur sont intégrés au niveau
91 for mocle in self.mcListe:
93 # Si mocle est un BLOC, on inclut ses items dans le dictionnaire
94 # représentatif de la valeur de self. Les mots-clés fils de blocs sont
95 # donc remontés au niveau supérieur.
96 dico.update(mocle.getValeur())
98 dico[mocle.nom] = mocle.getValeur()
100 # On rajoute tous les autres mots-clés locaux possibles avec la valeur
102 # Pour les mots-clés facteurs, on ne traite que ceux avec statut défaut ('d')
104 # On n'ajoute aucune information sur les blocs. Ils n'ont pas de défaut seulement
106 for k, v in list(self.definition.entites.items()):
108 if v.label == 'SIMP':
111 elif v.label == 'FACT':
112 if v.statut in ('c', 'd'):
113 # Mot clé facteur avec défaut ou caché provisoire
114 dico[k] = v(val=None, nom=k, parent=self)
115 # On demande la suppression des pointeurs arrieres
116 # pour briser les eventuels cycles
125 Indique si l'objet est un BLOC
129 def accept(self, visitor):
131 Cette methode permet de parcourir l'arborescence des objets
132 en utilisant le pattern VISITEUR
134 visitor.visitMCBLOC(self)
137 return self.definition(val=None, nom=self.nom, parent=self.parent)