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 de definition SIMP
22 qui permet de spécifier les caractéristiques des mots clés simples
25 from __future__ import absolute_import
29 from Noyau import N_ENTITE
30 from Noyau import N_MCSIMP
33 class SIMP(N_ENTITE.ENTITE):
36 Classe pour definir un mot cle simple
38 Cette classe a deux attributs de classe
40 - class_instance qui indique la classe qui devra etre utilisée
41 pour créer l'objet qui servira à controler la conformité d'un
42 mot-clé simple avec sa définition
44 - label qui indique la nature de l'objet de définition (ici, SIMP)
47 class_instance = N_MCSIMP.MCSIMP
50 def __init__(self, typ,ang="", fr="", statut='f', into=None, intoSug = None,siValide = None, defaut=None,
51 min=1, max=1, homo=1, position='local',
52 val_min=float('-inf'), val_max=float('inf'), docu="", validators=None, nomXML=None,
53 sug=None,fenetreIhm=None, attribut=False, sortie='n', intoXML=None):
55 Un mot-clé simple est caractérisé par les attributs suivants :
56 - type : cet attribut est obligatoire et indique le type de valeur attendue
57 - fr : chaîne documentaire en français
58 - statut : obligatoire ou facultatif ou caché
59 - into : valeurs autorisées
60 - intoSug : valeurs possibles mais des valeurs autres du bon type peuvent etre entrees par l utilsateur
61 - defaut : valeur par défaut
62 - min : nombre minimal de valeurs
63 - max : nombre maximal de valeurs
64 - homo : un certatin nb de choses qui il faut redispacher ailleurs (information, constant)
66 - position : si global, le mot-clé peut-être lu n'importe où dans la commande
67 - val_min : valeur minimale autorisée
68 - val_max : valeur maximale autorisée
69 - docu : clef sur de la documentation utilisateur
70 - sug : valeur suggere
71 - fenetreIhm : si widget particulier
72 - attribut : si projection XSD sur attribut
73 - creeDesObjetsDeType : type des UserASSD si siValide en cree
74 - nomXML : se projette en XSD avec un autre nom pour accepter les tirets
75 - sortie : force l ecriture dans le fichier de sortie (utile pour Telemac)
79 #traceback.print_stack()
81 N_ENTITE.ENTITE.__init__(self, validators)
82 # Initialisation des attributs
83 self.creeDesObjets = False
84 self.utiliseUneReference = False
85 self.creeDesObjetsDeType = None
86 self.utiliseDesObjetsDeType = None
87 if type(typ) == tuple:
91 for t in (self.type) :
93 if issubclass(t,Accas.UserASSD) :
94 creeDesObjetsDeType = t
95 self.utiliseUneReference = True
97 if t == 'createObject' : self.creeDesObjets=True
98 if self.utiliseUneReference :
99 if self.creeDesObjets :
100 self.utiliseUneReference = False
101 self.creeDesObjetsDeType = creeDesObjetsDeType
102 else : self.utiliseDesObjetsDeType = creeDesObjetsDeType
106 self.intoSug = intoSug
107 self.siValide = siValide
112 self.position = position
113 self.val_min = val_min
114 self.val_max = val_max
118 if self.max == '**' : self.max = float('inf')
119 if self.val_max == '**' : self.val_max = float('inf')
120 if self.min == '**' : self.min = float('-inf')
121 if self.val_min == '**' : self.val_min = float('-inf')
122 self.fenetreIhm = fenetreIhm
123 self.attribut = attribut
125 self.intoXML = intoXML
130 Cette methode sert à valider les attributs de l'objet de définition
139 self.checkValidators()
142 def __call__(self, val, nom, parent=None, objPyxbDeConstruction = None):
144 Construit un objet mot cle simple (MCSIMP) a partir de sa definition (self)
145 de sa valeur (val), de son nom (nom) et de son parent dans l arboresence (parent)
147 return self.class_instance(nom=nom, definition=self, val=val, parent=parent, objPyxbDeConstruction=objPyxbDeConstruction)