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
67 self.estIdentifiePar=None
69 self.jdc = self.parent.jdc
70 self.niveau = self.parent.niveau
71 self.etape = self.parent.etape
73 # Le mot cle a été créé sans parent
77 self.mcListe = self.buildMc()
81 Retourne la "valeur" de l'objet bloc. Il s'agit d'un dictionnaire dont
82 les clés seront les noms des objets de self.mcListe et les valeurs
83 les valeurs des objets de self.mcListe obtenues par application de
86 Dans le cas particulier d'un objet bloc les éléments du dictionnaire
87 obtenu par appel de la méthode getValeur sont intégrés au niveau
92 for mocle in self.mcListe:
94 # Si mocle est un BLOC, on inclut ses items dans le dictionnaire
95 # représentatif de la valeur de self. Les mots-clés fils de blocs sont
96 # donc remontés au niveau supérieur.
97 dico.update(mocle.getValeur())
99 dico[mocle.nom] = mocle.getValeur()
101 # On rajoute tous les autres mots-clés locaux possibles avec la valeur
103 # Pour les mots-clés facteurs, on ne traite que ceux avec statut défaut ('d')
105 # On n'ajoute aucune information sur les blocs. Ils n'ont pas de défaut seulement
107 for k, v in list(self.definition.entites.items()):
109 if v.label == 'SIMP':
112 elif v.label == 'FACT':
113 if v.statut in ('c', 'd'):
114 # Mot clé facteur avec défaut ou caché provisoire
115 dico[k] = v(val=None, nom=k, parent=self)
116 # On demande la suppression des pointeurs arrieres
117 # pour briser les eventuels cycles
126 Indique si l'objet est un BLOC
130 def accept(self, visitor):
132 Cette methode permet de parcourir l'arborescence des objets
133 en utilisant le pattern VISITEUR
135 visitor.visitMCBLOC(self)
138 return self.definition(val=None, nom=self.nom, parent=self.parent)