]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/compoformule.py
Salome HOME
premiere version
[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       if self.object.isactif():
88         # None --> fonte et couleur par défaut
89         return self.labeltext,None,None
90       else:
91         return self.labeltext,None,None
92         #return self.labeltext,fontes.standard_italique,None
93     
94 # ---------------------------------------------------------------------------
95 #       Méthodes permettant la modification et la lecture des attributs
96 #       du paramètre = 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 retournée 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 déja le casa
124           try :
125              args=string.split(args,',')
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       Vérifie si (new_nom,new_typ,new_arg,new_exp) définit bien une FORMULE 
152       licite :
153           - si oui, stocke ces paramètres comme nouveaux paramètres de la 
154             FORMULE courante et retourne 1
155           - si non, laisse les paramètres anciens de la FORMULE inchangés 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 paramètres
162           test=self.object.update_formule_python(formule=(new_nom,new_typ,new_exp,new_arg))
163       return test,erreur
164
165 # ---------------------------------------------------------------------------
166 #          Accès aux méthodes de vérification de l'objet FORM_ETAPE
167 # ---------------------------------------------------------------------------
168
169     def verif_nom(self,nom):
170         """
171         Lance la vérification du nom passé en argument
172         """
173         return self.object.verif_nom(nom)
174
175     def verif_arguments(self,arguments):
176         """
177         Lance la vérification des arguments passés en argument
178         """
179         return self.object.verif_arguments('('+arguments+')')
180
181     def verif_formule(self,formule):
182         """
183         Lance la vérification de FORMULE passée en argument
184         """
185         return self.object.verif_formule(formule=formule)
186
187
188     def verif_formule_python(self,formule):
189         """
190         Lance la vérification de FORMULE passée en argument
191         """
192         return self.object.verif_formule_python(formule=formule)
193
194 import Accas
195 treeitem =FORMULETreeItem
196 objet = Accas.FORM_ETAPE