]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monWidgetFormule.py
Salome HOME
bug
[tools/eficas.git] / InterfaceQT4 / monWidgetFormule.py
1 # Copyright (C) 2007-2013   EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19 # Modules Python
20 # Modules Eficas
21
22 from desWidgetFormule import Ui_WidgetFormule
23 from gereIcones import FacultatifOuOptionnel
24 from determine import monEnvQT5
25
26 if monEnvQT5:
27    from PyQt5.QtWidgets  import QWidget
28    from PyQt5.QtGui import QIcon
29    from PyQt5.QtCore import Qt
30 else :
31    from PyQt4.QtGui import *
32    from PyQt4.QtCore import *
33
34
35 from Extensions.i18n import tr
36 import Accas 
37 import os
38 import string
39
40     
41 # Import des panels
42
43 class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
44   """
45   """
46   def __init__(self,node,editor,etape):
47       #print "MonWidgetFormule ", self
48       QWidget.__init__(self,None)
49       self.node=node
50       self.node.fenetre=self
51       self.editor=editor
52       self.appliEficas=self.editor.appliEficas
53       self.repIcon=self.appliEficas.repIcon
54       self.setupUi(self)
55       
56  
57       self.setIconePoubelle()
58       self.setIconesGenerales()
59       self.setValeurs()
60       self.setValide()
61
62      
63       if monEnvQT5 :
64          #if self.editor.code in ['MAP','CARMELCND','CF'] : self.bCatalogue.close()
65          if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
66          else : self.bCatalogue.clicked.connect(self.afficheCatalogue)
67          #if self.editor.code in ['Adao','MAP','CF'] : 
68          if self.editor.code in ['Adao','MAP','ADAO'] : 
69                self.bAvant.close()
70                self.bApres.close()
71          else : 
72                self.bAvant.clicked.connect(self.afficheAvant)
73                self.bApres.clicked.connect(self.afficheApres)
74          self.LENom.returnPressed.connect(self.nomChange)
75          self.LENomFormule.returnPressed.connect(self.NomFormuleSaisi)
76          self.LENomsArgs.returnPressed.connect(self.argsSaisis)
77          self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie)
78       else : 
79          if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
80          else : self.connect(self.bCatalogue,SIGNAL("clicked()"), self.afficheCatalogue)
81          if self.editor.code in ['Adao','MAP'] : 
82                self.bAvant.close()
83                self.bApres.close()
84          else : 
85                self.connect(self.bAvant,SIGNAL("clicked()"), self.afficheAvant)
86                self.connect(self.bApres,SIGNAL("clicked()"), self.afficheApres)
87          self.connect(self.LENom,SIGNAL("returnPressed()"),self.nomChange)
88          self.connect(self.LENomFormule,SIGNAL("returnPressed()"),self.NomFormuleSaisi)
89          self.connect(self.LENomsArgs,SIGNAL("returnPressed()"),self.argsSaisis)
90          self.connect(self.LECorpsFormule,SIGNAL("returnPressed()"),self.FormuleSaisie)
91
92
93    
94       self.racine=self.node.tree.racine
95       self.monOptionnel=None
96       self.editor.fermeOptionnel()
97       #print "fin init de widget Commande"
98       
99
100   def donnePremier(self):
101       self.listeAffichageWidget[0].setFocus(7)
102
103
104   def setValeurs(self):
105         self.LENomFormule.setText(self.node.item.get_nom())
106         self.LECorpsFormule.setText(self.node.item.get_corps())
107         texte_args=""
108         if self.node.item.get_args() != None :
109             for i in self.node.item.get_args() :
110                 if texte_args != "" : texte_args = texte_args +","
111                 texte_args=texte_args + i
112         self.LENomsArgs.setText(texte_args)
113
114
115   def nomChange(self):
116       nom = str(self.LENom.text())
117       self.LENomFormule.setText(nom)
118       self.NomFormuleSaisi()
119
120
121   def afficheCatalogue(self):
122       if self.editor.widgetOptionnel != None : self.monOptionnel.hide()
123       self.racine.affichePanneau()
124       if self.node : self.node.select()
125       else : self.racine.select()
126
127   def afficheApres(self):
128        self.node.selectApres()
129
130   def afficheAvant(self):
131        self.node.selectAvant()
132
133   def setValide(self):
134       if not(hasattr (self,'RBValide')) : return
135       icon = QIcon()
136       if self.node.item.object.isvalid() :
137          icon=QIcon(self.repIcon+"/ast-green-ball.png")
138       else :
139          icon=QIcon(self.repIcon+"/ast-red-ball.png")
140       if self.node.item.GetIconName() == "ast-yellow-square" :
141          icon=QIcon(self.repIcon+"/ast-yel-ball.png")
142       self.RBValide.setIcon(icon)
143
144
145   def NomFormuleSaisi(self):
146       nomFormule = str(self.LENomFormule.text())
147       if nomFormule == '' : return
148       self.LENom.setText(nomFormule)
149       test,erreur = self.node.item.verif_nom(nomFormule)
150       if test :
151          commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
152          self.editor.affiche_infos(commentaire)
153       else :
154          commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
155          self.editor.affiche_infos(commentaire,Qt.red)
156          return
157       if str(self.LENomsArgs.text()) != "" and  str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
158       self.LENomsArgs.setFocus(7)
159
160   def argsSaisis(self):
161       arguments = str(self.LENomsArgs.text())
162       if arguments == '' : return
163       test,erreur = self.node.item.verif_arguments(arguments)
164       if test:
165          commentaire=tr("Argument(s) valide(s) pour une FORMULE")
166          self.editor.affiche_infos(commentaire)
167       else:
168          commentaire=tr("Argument(s) invalide(s) pour une FORMULE")
169          self.editor.affiche_infos(commentaire,Qt.red)
170       if str(self.LECorpsFormule.text()) != "" and  str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
171       self.LECorpsFormule.setFocus(7)
172
173   def FormuleSaisie(self):
174       nomFormule = str(self.LENomFormule.text())
175       arguments  = str(self.LENomsArgs.text())
176       expression = str(self.LECorpsFormule.text())
177       if expression == '' : return
178       test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
179
180       if test:
181          commentaire=tr("Corps de FORMULE valide")
182          self.editor.affiche_infos(commentaire)
183       else:
184          commentaire=tr("Corps de FORMULE invalide")
185          self.editor.affiche_infos(commentaire,Qt.red)
186       if str(self.LENomsArgs.text()) != "" and  str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
187
188   def BOkPressedFormule(self):
189       #print dir(self)
190       #if self.parent.modified == 'n' : self.parent.init_modif()
191
192       nomFormule = str(self.LENomFormule.text())
193       test,erreur = self.node.item.verif_nom(nomFormule)
194       if not test :
195          self.editor.affiche_infos(erreur,Qt.red)
196          return
197
198       arguments  = str(self.LENomsArgs.text())
199       test,erreur = self.node.item.verif_arguments(arguments)
200       if not test :
201          self.editor.affiche_infos(erreur,Qt.red)
202          return
203
204       expression = str(self.LECorpsFormule.text())
205       test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
206       if not test :
207          self.editor.affiche_infos(erreur,Qt.red)
208          return
209
210       test=self.node.item.object.update_formule_python(formule=(nomFormule,"REEL",arguments,expression))
211       test,erreur = self.node.item.save_formule(nomFormule,"REEL",arguments,expression)
212       if test :
213          #self.node.update_texte()
214          #self.node.update_label()
215          #self.node.update_node()
216          self.node.onValid()
217          self.node.update_valid()
218          commentaire = "Formule saisie"
219          self.editor.affiche_infos(commentaire)
220       else:
221          commentaire ="Formule incorrecte : " + erreur
222          self.editor.affiche_infos(commentaire,Qt.red)
223       self.editor.init_modif()
224