1 # Copyright (C) 2007-2013 EDF R&D
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.
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.
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
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 from desWidgetFormule import Ui_WidgetFormule
23 from gereIcones import FacultatifOuOptionnel
24 from determine import monEnvQT5
27 from PyQt5.QtWidgets import QWidget
28 from PyQt5.QtGui import QIcon
29 from PyQt5.QtCore import Qt
31 from PyQt4.QtGui import *
32 from PyQt4.QtCore import *
35 from Extensions.i18n import tr
43 class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
46 def __init__(self,node,editor,etape):
47 #print "MonWidgetFormule ", self
48 QWidget.__init__(self,None)
50 self.node.fenetre=self
52 self.appliEficas=self.editor.appliEficas
53 self.repIcon=self.appliEficas.repIcon
57 self.setIconePoubelle()
58 self.setIconesGenerales()
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'] :
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)
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'] :
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)
92 self.racine=self.node.tree.racine
93 self.monOptionnel=None
94 self.editor.fermeOptionnel()
95 #print "fin init de widget Commande"
98 def donnePremier(self):
99 self.listeAffichageWidget[0].setFocus(7)
102 def setValeurs(self):
103 self.LENomFormule.setText(self.node.item.get_nom())
104 self.LECorpsFormule.setText(self.node.item.get_corps())
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)
114 nom = str(self.LENom.text())
115 self.LENomFormule.setText(nom)
116 self.NomFormuleSaisi()
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()
125 def afficheApres(self):
126 self.node.selectApres()
128 def afficheAvant(self):
129 self.node.selectAvant()
132 if not(hasattr (self,'RBValide')) : return
134 if self.node.item.object.isvalid() :
135 icon=QIcon(self.repIcon+"/ast-green-ball.png")
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)
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)
149 commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
150 self.editor.affiche_infos(commentaire)
152 commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
153 self.editor.affiche_infos(commentaire,Qt.red)
155 if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
156 self.LENomsArgs.setFocus(7)
158 def argsSaisis(self):
159 arguments = str(self.LENomsArgs.text())
160 if arguments == '' : return
161 test,erreur = self.node.item.verif_arguments(arguments)
163 commentaire=tr("Argument(s) valide(s) pour une FORMULE")
164 self.editor.affiche_infos(commentaire)
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)
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))
179 commentaire=tr("Corps de FORMULE valide")
180 self.editor.affiche_infos(commentaire)
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()
186 def BOkPressedFormule(self):
188 #if self.parent.modified == 'n' : self.parent.init_modif()
190 nomFormule = str(self.LENomFormule.text())
191 test,erreur = self.node.item.verif_nom(nomFormule)
193 self.editor.affiche_infos(erreur,Qt.red)
196 arguments = str(self.LENomsArgs.text())
197 test,erreur = self.node.item.verif_arguments(arguments)
199 self.editor.affiche_infos(erreur,Qt.red)
202 expression = str(self.LECorpsFormule.text())
203 test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
205 self.editor.affiche_infos(erreur,Qt.red)
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)
211 #self.node.update_texte()
212 #self.node.update_label()
213 #self.node.update_node()
215 self.node.update_valid()
216 commentaire = "Formule saisie"
217 self.editor.affiche_infos(commentaire)
219 commentaire ="Formule incorrecte : " + erreur
220 self.editor.affiche_infos(commentaire,Qt.red)
221 self.editor.init_modif()