Salome HOME
CloseEntete
[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'] : self.bCatalogue.close()
65          else : self.bCatalogue.clicked.connect(self.afficheCatalogue)
66          if self.editor.code in ['Adao','MAP'] : 
67                self.bAvant.close()
68                self.bApres.close()
69          else : 
70                self.bAvant.clicked.connect(self.afficheAvant)
71                self.bApres.clicked.connect(self.afficheApres)
72          self.LENom.returnPressed.connect(self.nomChange)
73          self.LENomFormule.returnPressed.connect(self.NomFormuleSaisi)
74          self.LENomsArgs.returnPressed.connect(self.argsSaisis)
75          self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie)
76       else : 
77          if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
78          else : self.connect(self.bCatalogue,SIGNAL("clicked()"), self.afficheCatalogue)
79          if self.editor.code in ['Adao','MAP'] : 
80                self.bAvant.close()
81                self.bApres.close()
82          else : 
83                self.connect(self.bAvant,SIGNAL("clicked()"), self.afficheAvant)
84                self.connect(self.bApres,SIGNAL("clicked()"), self.afficheApres)
85          self.connect(self.LENom,SIGNAL("returnPressed()"),self.nomChange)
86          self.connect(self.LENomFormule,SIGNAL("returnPressed()"),self.NomFormuleSaisi)
87          self.connect(self.LENomsArgs,SIGNAL("returnPressed()"),self.argsSaisis)
88          self.connect(self.LECorpsFormule,SIGNAL("returnPressed()"),self.FormuleSaisie)
89
90
91    
92       self.racine=self.node.tree.racine
93       self.monOptionnel=None
94       self.editor.fermeOptionnel()
95       #print "fin init de widget Commande"
96       
97
98   def donnePremier(self):
99       self.listeAffichageWidget[0].setFocus(7)
100
101
102   def setValeurs(self):
103         self.LENomFormule.setText(self.node.item.get_nom())
104         self.LECorpsFormule.setText(self.node.item.get_corps())
105         texte_args=""
106         if self.node.item.get_args() != None :
107             for i in self.node.item.get_args() :
108                 if texte_args != "" : texte_args = texte_args +","
109                 texte_args=texte_args + i
110         self.LENomsArgs.setText(texte_args)
111
112
113   def nomChange(self):
114       nom = str(self.LENom.text())
115       self.LENomFormule.setText(nom)
116       self.NomFormuleSaisi()
117
118
119   def afficheCatalogue(self):
120       if self.editor.widgetOptionnel != None : self.monOptionnel.hide()
121       self.racine.affichePanneau()
122       if self.node : self.node.select()
123       else : self.racine.select()
124
125   def afficheApres(self):
126        self.node.selectApres()
127
128   def afficheAvant(self):
129        self.node.selectAvant()
130
131   def setValide(self):
132       if not(hasattr (self,'RBValide')) : return
133       icon = QIcon()
134       if self.node.item.object.isvalid() :
135          icon=QIcon(self.repIcon+"/ast-green-ball.png")
136       else :
137          icon=QIcon(self.repIcon+"/ast-red-ball.png")
138       if self.node.item.GetIconName() == "ast-yellow-square" :
139          icon=QIcon(self.repIcon+"/ast-yel-ball.png")
140       self.RBValide.setIcon(icon)
141
142
143   def NomFormuleSaisi(self):
144       nomFormule = str(self.LENomFormule.text())
145       if nomFormule == '' : return
146       self.LENom.setText(nomFormule)
147       test,erreur = self.node.item.verif_nom(nomFormule)
148       if test :
149          commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
150          self.editor.affiche_infos(commentaire)
151       else :
152          commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
153          self.editor.affiche_infos(commentaire,Qt.red)
154          return
155       if str(self.LENomsArgs.text()) != "" and  str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
156       self.LENomsArgs.setFocus(7)
157
158   def argsSaisis(self):
159       arguments = str(self.LENomsArgs.text())
160       if arguments == '' : return
161       test,erreur = self.node.item.verif_arguments(arguments)
162       if test:
163          commentaire=tr("Argument(s) valide(s) pour une FORMULE")
164          self.editor.affiche_infos(commentaire)
165       else:
166          commentaire=tr("Argument(s) invalide(s) pour une FORMULE")
167          self.editor.affiche_infos(commentaire,Qt.red)
168       if str(self.LECorpsFormule.text()) != "" and  str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
169       self.LECorpsFormule.setFocus(7)
170
171   def FormuleSaisie(self):
172       nomFormule = str(self.LENomFormule.text())
173       arguments  = str(self.LENomsArgs.text())
174       expression = str(self.LECorpsFormule.text())
175       if expression == '' : return
176       test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
177
178       if test:
179          commentaire=tr("Corps de FORMULE valide")
180          self.editor.affiche_infos(commentaire)
181       else:
182          commentaire=tr("Corps de FORMULE invalide")
183          self.editor.affiche_infos(commentaire,Qt.red)
184       if str(self.LENomsArgs.text()) != "" and  str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
185
186   def BOkPressedFormule(self):
187       #print dir(self)
188       #if self.parent.modified == 'n' : self.parent.init_modif()
189
190       nomFormule = str(self.LENomFormule.text())
191       test,erreur = self.node.item.verif_nom(nomFormule)
192       if not test :
193          self.editor.affiche_infos(erreur,Qt.red)
194          return
195
196       arguments  = str(self.LENomsArgs.text())
197       test,erreur = self.node.item.verif_arguments(arguments)
198       if not test :
199          self.editor.affiche_infos(erreur,Qt.red)
200          return
201
202       expression = str(self.LECorpsFormule.text())
203       test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
204       if not test :
205          self.editor.affiche_infos(erreur,Qt.red)
206          return
207
208       test=self.node.item.object.update_formule_python(formule=(nomFormule,"REEL",arguments,expression))
209       test,erreur = self.node.item.save_formule(nomFormule,"REEL",arguments,expression)
210       if test :
211          #self.node.update_texte()
212          #self.node.update_label()
213          #self.node.update_node()
214          self.node.onValid()
215          self.node.update_valid()
216          commentaire = "Formule saisie"
217          self.editor.affiche_infos(commentaire)
218       else:
219          commentaire ="Formule incorrecte : " + erreur
220          self.editor.affiche_infos(commentaire,Qt.red)
221       self.editor.init_modif()
222