Salome HOME
legere difference ds VARIABLES_TO_BE...
[tools/eficas.git] / InterfaceQT4 / compoformule.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013   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.set_valeur
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 get_nom(self):
100       """
101       Retourne le nom de la FORMULE
102       """
103       return self.object.get_nom()
104
105     def get_type(self):
106       """
107       Retourne le type de la valeur retournee par la FORMULE
108       """
109       return self.object.type_retourne
110
111     def get_args(self):
112       """
113       Retourne les arguments de la FORMULE
114       """
115       args=""
116       for mot in self.object.mc_liste:
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 get_corps(self):
131       """
132       Retourne le corps de la FORMULE
133       """
134       corps=""
135       for mot in self.object.mc_liste:
136           if mot.nom == 'VALE':
137              corps=mot.valeur
138              break
139       return corps
140
141
142     def get_liste_types_autorises(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 save_formule(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.verif_formule_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.update_formule_python(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 verif_nom(self,nom):
170         """
171         Lance la verification du nom passe en argument
172         """
173         return self.object.verif_nom(nom)
174
175     def verif_arguments(self,arguments):
176         """
177         Lance la verification des arguments passes en argument
178         """
179         return self.object.verif_arguments('('+arguments+')')
180
181     def verif_formule(self,formule):
182         """
183         Lance la verification de FORMULE passee en argument
184         """
185         return self.object.verif_formule(formule=formule)
186
187
188     def verif_formule_python(self,formule):
189         """
190         Lance la verification de FORMULE passee en argument
191         """
192         return self.object.verif_formule_python(formule=formule)
193
194 import Accas
195 treeitem =FORMULETreeItem
196 objet = Accas.FORM_ETAPE