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