Salome HOME
34e22b204382c394f08c9ef8eae130180d8b2829
[tools/eficas.git] / Noyau / N_SIMP.py
1 # coding=utf-8
2 # Copyright (C) 2007-2021   EDF R&D
3 #
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.
8 #
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.
13 #
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
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19
20
21 """ Ce module contient la classe de definition SIMP
22     qui permet de spécifier les caractéristiques des mots clés simples
23 """
24
25 from __future__ import absolute_import
26 import types
27
28 import Accas
29 from Noyau import N_ENTITE
30 from Noyau import N_MCSIMP
31
32
33 class SIMP(N_ENTITE.ENTITE):
34
35     """
36      Classe pour definir un mot cle simple
37
38      Cette classe a deux attributs de classe
39
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
43
44      - label qui indique la nature de l'objet de définition (ici, SIMP)
45
46     """
47     class_instance = N_MCSIMP.MCSIMP
48     label = 'SIMP'
49
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):
54         """
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)
65             - ang : doc
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)
76         """
77         #print (self)
78         #import traceback
79         #traceback.print_stack()
80         #print (self)
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:
88             self.type = typ
89         else:
90             self.type = (typ,)
91         for t in (self.type) :
92             try :   
93               if issubclass(t,Accas.UserASSD) : 
94                  creeDesObjetsDeType = t 
95                  self.utiliseUneReference = True
96             except : pass
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
103         self.fr       = fr
104         self.statut   = statut
105         self.into     = into
106         self.intoSug  = intoSug
107         self.siValide = siValide
108         self.defaut   = defaut
109         self.min      = min
110         self.max      = max
111         self.homo     = homo
112         self.position = position
113         self.val_min  = val_min
114         self.val_max  = val_max
115         self.docu     = docu
116         self.sug      = sug
117         self.ang      = ang
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
124         self.nomXML     = nomXML
125         self.intoXML    = intoXML
126         self.sortie     = sortie
127
128     def verifCata(self):
129         """
130             Cette methode sert à valider les attributs de l'objet de définition
131             de la classe SIMP
132         """
133         self.checkMinMax()
134         self.checkFr()
135         self.checkStatut()
136         self.checkHomo()
137         self.checkInto()
138         self.checkPosition()
139         self.checkValidators()
140    
141
142     def __call__(self, val, nom, parent=None, objPyxbDeConstruction = None):
143         """
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)
146         """
147         return self.class_instance(nom=nom, definition=self, val=val, parent=parent, objPyxbDeConstruction=objPyxbDeConstruction)
148
149