Salome HOME
nettoyage des GetPanel et affichage pler deplier selon l ancien etat
[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 définir les objets graphiques
23 représentant un objet de type FORMULE, cad le panneau et l'item de l'arbre
24 d'EFICAS
25 """
26
27 import string
28 import compooper
29 import browser
30 import typeNode
31
32
33 class FormuleNode(browser.JDCNode,typeNode.PopUpMenuNode):
34         
35     def getPanel(self):
36       
37       from monFormulePanel import MonFormulePanel
38       return MonFormulePanel(self,parent=self.editor)
39         
40    
41     def createPopUpMenu(self):
42       typeNode.PopUpMenuNode.createPopUpMenu(self)
43
44
45 class FORMULETreeItem(compooper.EtapeTreeItem):
46     """
47     Classe servant a définir l'item porté par le noeud de l'arbre d'EFICAS
48     qui représente la FORMULE
49     """
50     itemNode=FormuleNode
51
52     def init(self):
53       self.setfunction = self.set_valeur
54
55 # ---------------------------------------------------------------------------
56 #                   API de FORMULE pour l'arbre 
57 # ---------------------------------------------------------------------------
58     def GetSubList(self):
59       """
60       Retourne la liste des fils de self
61       On considére que FORMULE n'a pas de fils
62       --> modification par rapport a MACRO classique
63       """
64       # dans EFICAS on ne souhaite pas afficher les mots-clés fils de FORMULE
65       # de façon traditionnelle
66       return []
67
68     def GetIconName(self):
69       """
70       Retourne le nom de l'icone à afficher dans l'arbre
71       Ce nom dépend de la validité de l'objet
72       """
73       if self.object.isactif():
74         if self.object.isvalid():
75           return "ast-green-square"
76         else:
77           return "ast-red-square"
78       else:
79         return "ast-white-text"
80
81     def GetLabelText(self):
82       """ Retourne 3 valeurs :
83       - le texte a afficher dans le noeud représentant l'item
84       - la fonte dans laquelle afficher ce texte
85       - la couleur du texte
86       """
87       return self.labeltext,None,None
88       #if self.object.isactif():
89         # None --> fonte et couleur par défaut
90       #  return tr(self.labeltext),None,None
91       #else:
92       #   return tr(self.labeltext),None,None
93       #return self.labeltext,fontes.standard_italique,None
94     
95 # ---------------------------------------------------------------------------
96 #       Méthodes permettant la modification et la lecture des attributs
97 #       du paramètre = API graphique de la FORMULE pour Panel et EFICAS
98 # ---------------------------------------------------------------------------
99
100     def get_nom(self):
101       """
102       Retourne le nom de la FORMULE
103       """
104       return self.object.get_nom()
105
106     def get_type(self):
107       """
108       Retourne le type de la valeur retournée par la FORMULE
109       """
110       return self.object.type_retourne
111
112     def get_args(self):
113       """
114       Retourne les arguments de la FORMULE
115       """
116       args=""
117       for mot in self.object.mc_liste:
118           if mot.nom == 'NOM_PARA':
119              args=mot.valeur
120              break
121       if args :
122           if args[0] == "(" and args[-1] ==")":
123              args=args[1:-1]
124           # transforme en tuple si ce n est pas déja le casa
125           try :
126              args=string.split(args,',')
127           except :
128              pass
129       return args
130
131     def get_corps(self):
132       """
133       Retourne le corps de la FORMULE
134       """
135       corps=""
136       for mot in self.object.mc_liste:
137           if mot.nom == 'VALE':
138              corps=mot.valeur
139              break
140       return corps
141
142
143     def get_liste_types_autorises(self):
144       """
145          Retourne la liste des types autorises pour les valeurs de sortie 
146          d'une FORMULE
147       """
148       return self.object.l_types_autorises
149
150     def save_formule(self,new_nom,new_typ,new_arg,new_exp):
151       """
152       Vérifie si (new_nom,new_typ,new_arg,new_exp) définit bien une FORMULE 
153       licite :
154           - si oui, stocke ces paramètres comme nouveaux paramètres de la 
155             FORMULE courante et retourne 1
156           - si non, laisse les paramètres anciens de la FORMULE inchangés et 
157             retourne 0
158       """
159       test,erreur = self.object.verif_formule_python(formule=(new_nom,new_typ,new_arg,
160                                                        new_exp))
161       if test :
162           # la formule est bien correcte : on sauve les nouveaux paramètres
163           test=self.object.update_formule_python(formule=(new_nom,new_typ,new_exp,new_arg))
164       return test,erreur
165
166 # ---------------------------------------------------------------------------
167 #          Accès aux méthodes de vérification de l'objet FORM_ETAPE
168 # ---------------------------------------------------------------------------
169
170     def verif_nom(self,nom):
171         """
172         Lance la vérification du nom passé en argument
173         """
174         return self.object.verif_nom(nom)
175
176     def verif_arguments(self,arguments):
177         """
178         Lance la vérification des arguments passés en argument
179         """
180         return self.object.verif_arguments('('+arguments+')')
181
182     def verif_formule(self,formule):
183         """
184         Lance la vérification de FORMULE passée en argument
185         """
186         return self.object.verif_formule(formule=formule)
187
188
189     def verif_formule_python(self,formule):
190         """
191         Lance la vérification de FORMULE passée en argument
192         """
193         return self.object.verif_formule_python(formule=formule)
194
195 import Accas
196 treeitem =FORMULETreeItem
197 objet = Accas.FORM_ETAPE