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