Salome HOME
fa3244d073f4e6393c304427f09a389d3047c2c8
[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         if self.object.isvalid():
57           return "ast-green-square"
58         else:
59           return "ast-red-square"
60       else:
61         return "ast-white-text"
62
63     def GetLabelText(self):
64       """ Retourne 3 valeurs :
65       - le texte a afficher dans le noeud représentant l'item
66       - la fonte dans laquelle afficher ce texte
67       - la couleur du texte
68       """
69       if self.object.isactif():
70         # None --> fonte et couleur par défaut
71         return self.labeltext,None,None
72       else:
73         return self.labeltext,None,None
74         #return self.labeltext,fontes.standard_italique,None
75     
76 # ---------------------------------------------------------------------------
77 #       Méthodes permettant la modification et la lecture des attributs
78 #       du paramètre = API graphique de la FORMULE pour Panel et EFICAS
79 # ---------------------------------------------------------------------------
80
81     def get_nom(self):
82       """
83       Retourne le nom de la FORMULE
84       """
85       return self.object.get_nom()
86
87     def get_type(self):
88       """
89       Retourne le type de la valeur retournée par la FORMULE
90       """
91       return self.object.type_retourne
92
93     def get_args(self):
94       """
95       Retourne les arguments de la FORMULE
96       """
97       args=""
98       for mot in self.object.mc_liste:
99           if mot.nom == 'NOM_PARA':
100              args=mot.valeur
101              break
102       if args :
103           if args[0] == "(" and args[-1] ==")":
104              args=args[1:-1]
105           # transforme en tuple si ce n est pas déja le casa
106           try :
107              args=string.split(args,',')
108           except :
109              pass
110       return args
111
112     def get_corps(self):
113       """
114       Retourne le corps de la FORMULE
115       """
116       corps=""
117       for mot in self.object.mc_liste:
118           if mot.nom == 'VALE':
119              corps=mot.valeur
120              break
121       return corps
122
123
124     def get_liste_types_autorises(self):
125       """
126          Retourne la liste des types autorises pour les valeurs de sortie 
127          d'une FORMULE
128       """
129       return self.object.l_types_autorises
130
131     def save_formule(self,new_nom,new_typ,new_arg,new_exp):
132       """
133       Vérifie si (new_nom,new_typ,new_arg,new_exp) définit bien une FORMULE 
134       licite :
135           - si oui, stocke ces paramètres comme nouveaux paramètres de la 
136             FORMULE courante et retourne 1
137           - si non, laisse les paramètres anciens de la FORMULE inchangés et 
138             retourne 0
139       """
140       test,erreur = self.object.verif_formule_python(formule=(new_nom,new_typ,new_arg,
141                                                        new_exp))
142       if test :
143           # la formule est bien correcte : on sauve les nouveaux paramètres
144           test=self.object.update_formule_python(formule=(new_nom,new_typ,new_exp,new_arg))
145       return test,erreur
146
147 # ---------------------------------------------------------------------------
148 #          Accès aux méthodes de vérification de l'objet FORM_ETAPE
149 # ---------------------------------------------------------------------------
150
151     def verif_nom(self,nom):
152         """
153         Lance la vérification du nom passé en argument
154         """
155         return self.object.verif_nom(nom)
156
157     def verif_arguments(self,arguments):
158         """
159         Lance la vérification des arguments passés en argument
160         """
161         return self.object.verif_arguments('('+arguments+')')
162
163     def verif_formule(self,formule):
164         """
165         Lance la vérification de FORMULE passée en argument
166         """
167         return self.object.verif_formule(formule=formule)
168
169
170     def verif_formule_python(self,formule):
171         """
172         Lance la vérification de FORMULE passée en argument
173         """
174         return self.object.verif_formule_python(formule=formule)
175
176 import Accas
177 treeitem =FORMULETreeItem
178 objet = Accas.FORM_ETAPE