Salome HOME
bug sur un mesage dans une exception sur un validator (cf JPA)
[tools/eficas.git] / InterfaceQT4 / compoformule.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 """
22 Ce module contient les classes permettant de definir les objets graphiques
23 representant un objet de type FORMULE, cad le panneau et l'item de l'arbre
24 d'EFICAS
25 """
26
27 from __future__ import absolute_import
28 from . import compooper
29 from . import browser
30 from . import typeNode
31
32
33 class FormuleNode(browser.JDCNode,typeNode.PopUpMenuNode):
34
35     def getPanel(self):
36         from .monWidgetFormule import MonWidgetFormule
37         return MonWidgetFormule(self,self.editor,self.item.object)
38
39
40     def createPopUpMenu(self):
41         typeNode.PopUpMenuNode.createPopUpMenu(self)
42
43
44 class FORMULETreeItem(compooper.EtapeTreeItem):
45     """
46     Classe servant a definir l'item porte par le noeud de l'arbre d'EFICAS
47     qui represente la FORMULE
48     """
49     itemNode=FormuleNode
50
51     def init(self):
52         self.setFunction = self.setValeur
53
54 # ---------------------------------------------------------------------------
55 #                   API de FORMULE pour l'arbre
56 # ---------------------------------------------------------------------------
57     def getSubList(self):
58         """
59         Retourne la liste des fils de self
60         On considere que FORMULE n'a pas de fils
61         --> modification par rapport a MACRO classique
62         """
63         # dans EFICAS on ne souhaite pas afficher les mots-cles fils de FORMULE
64         # de facon traditionnelle
65         return []
66
67     def getIconName(self):
68         """
69         Retourne le nom de l'icone a afficher dans l'arbre
70         Ce nom depend de la validite de l'objet
71         """
72         if self.object.isActif():
73             if self.object.isValid():
74                 return "ast-green-square"
75             else:
76                 return "ast-red-square"
77         else:
78             return "ast-white-text"
79
80     def getLabelText(self):
81         """ Retourne 3 valeurs :
82         - le texte a afficher dans le noeud representant l'item
83         - la fonte dans laquelle afficher ce texte
84         - la couleur du texte
85         """
86         return self.labeltext,None,None
87         #if self.object.isActif():
88             # None --> fonte et couleur par defaut
89         #  return tr(self.labeltext),None,None
90         #else:
91         #   return tr(self.labeltext),None,None
92         #return self.labeltext,fontes.standard_italique,None
93
94 # ---------------------------------------------------------------------------
95 #       Methodes permettant la modification et la lecture des attributs
96 #       du parametre = API graphique de la FORMULE pour Panel et EFICAS
97 # ---------------------------------------------------------------------------
98
99     def getNom(self):
100         """
101         Retourne le nom de la FORMULE
102         """
103         return self.object.getNom()
104
105     def getType(self):
106         """
107         Retourne le type de la valeur retournee par la FORMULE
108         """
109         return self.object.type_retourne
110
111     def getArgs(self):
112         """
113         Retourne les arguments de la FORMULE
114         """
115         args=""
116         for mot in self.object.mcListe:
117             if mot.nom == 'NOM_PARA':
118                 args=mot.valeur
119                 break
120         if args :
121             if args[0] == "(" and args[-1] ==")":
122                 args=args[1:-1]
123             # transforme en tuple si ce n est pas deja le casa
124             try :
125                 args=args.split(',')
126             except :
127                 pass
128         return args
129
130     def getCorps(self):
131         """
132         Retourne le corps de la FORMULE
133         """
134         corps=""
135         for mot in self.object.mcListe:
136             if mot.nom == 'VALE':
137                 corps=mot.valeur
138                 break
139         return corps
140
141
142     def getListeTypesAutorises(self):
143         """
144            Retourne la liste des types autorises pour les valeurs de sortie
145            d'une FORMULE
146         """
147         return self.object.l_types_autorises
148
149     def saveFormule(self,new_nom,new_typ,new_arg,new_exp):
150         """
151         Verifie si (new_nom,new_typ,new_arg,new_exp) definit bien une FORMULE
152         licite :
153             - si oui, stocke ces parametres comme nouveaux parametres de la
154               FORMULE courante et retourne 1
155             - si non, laisse les parametres anciens de la FORMULE inchanges et
156               retourne 0
157         """
158         test,erreur = self.object.verifFormule_python(formule=(new_nom,new_typ,new_arg,
159                                                          new_exp))
160         if test :
161             # la formule est bien correcte : on sauve les nouveaux parametres
162             test=self.object.updateFormulePython(formule=(new_nom,new_typ,new_exp,new_arg))
163         return test,erreur
164
165 # ---------------------------------------------------------------------------
166 #          Acces aux methodes de verification de l'objet FORM_ETAPE
167 # ---------------------------------------------------------------------------
168
169     def verifNom(self,nom):
170         """
171         Lance la verification du nom passe en argument
172         """
173         return self.object.verifNom(nom)
174
175     def verifArguments(self,arguments):
176         """
177         Lance la verification des arguments passes en argument
178         """
179         return self.object.verifArguments('('+arguments+')')
180
181     def verifFormule(self,formule):
182         """
183         Lance la verification de FORMULE passee en argument
184         """
185         return self.object.verifFormule(formule=formule)
186
187
188     def verifFormule_python(self,formule):
189         """
190         Lance la verification de FORMULE passee en argument
191         """
192         return self.object.verifFormule_python(formule=formule)
193
194 import Accas
195 treeitem =FORMULETreeItem
196 objet = Accas.FORM_ETAPE