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()
63 if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
64 else : self.bCatalogue.clicked.connect(self.afficheCatalogue)
65 if self.editor.code in ['Adao','MAP'] :
69 self.bAvant.clicked.connect(self.afficheAvant)
70 self.bApres.clicked.connect(self.afficheApres)
71 self.LENom.returnPressed.connect(self.nomChange)
72 self.LENomFormule.returnPressed.connect(self.NomFormuleSaisi)
73 self.LENomsArgs.returnPressed.connect(self.argsSaisis)
74 self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie)
76 if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
77 else : self.connect(self.bCatalogue,SIGNAL("clicked()"), self.afficheCatalogue)
78 if self.editor.code in ['Adao','MAP'] :
82 self.connect(self.bAvant,SIGNAL("clicked()"), self.afficheAvant)
83 self.connect(self.bApres,SIGNAL("clicked()"), self.afficheApres)
84 self.connect(self.LENom,SIGNAL("returnPressed()"),self.nomChange)
85 self.connect(self.LENomFormule,SIGNAL("returnPressed()"),self.NomFormuleSaisi)
86 self.connect(self.LENomsArgs,SIGNAL("returnPressed()"),self.argsSaisis)
87 self.connect(self.LECorpsFormule,SIGNAL("returnPressed()"),self.FormuleSaisie)
91 self.racine=self.node.tree.racine
92 self.monOptionnel=None
93 self.editor.fermeOptionnel()
94 #print "fin init de widget Commande"
97 def donnePremier(self):
98 self.listeAffichageWidget[0].setFocus(7)
103 nom = str(self.LENom.text())
104 self.LENomFormule.setText(nom)
105 self.NomFormuleSaisi()
108 def afficheCatalogue(self):
109 if self.editor.widgetOptionnel != None : self.monOptionnel.hide()
110 self.racine.affichePanneau()
111 if self.node : self.node.select()
112 else : self.racine.select()
114 def afficheApres(self):
115 self.node.selectApres()
117 def afficheAvant(self):
118 self.node.selectAvant()
121 if not(hasattr (self,'RBValide')) : return
123 if self.node.item.object.isvalid() :
124 icon=QIcon(self.repIcon+"/ast-green-ball.png")
126 icon=QIcon(self.repIcon+"/ast-red-ball.png")
127 if self.node.item.GetIconName() == "ast-yellow-square" :
128 icon=QIcon(self.repIcon+"/ast-yel-ball.png")
129 self.RBValide.setIcon(icon)
132 def NomFormuleSaisi(self):
133 nomFormule = str(self.LENomFormule.text())
134 if nomFormule == '' : return
135 self.LENom.setText(nomFormule)
136 test,erreur = self.node.item.verif_nom(nomFormule)
138 commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
139 self.editor.affiche_infos(commentaire)
141 commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
142 self.editor.affiche_infos(commentaire,Qt.red)
144 if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
145 self.LENomsArgs.setFocus(7)
147 def argsSaisis(self):
148 arguments = str(self.LENomsArgs.text())
149 if arguments == '' : return
150 test,erreur = self.node.item.verif_arguments(arguments)
152 commentaire=tr("Argument(s) valide(s) pour une FORMULE")
153 self.editor.affiche_infos(commentaire)
155 commentaire=tr("Argument(s) invalide(s) pour une FORMULE")
156 self.editor.affiche_infos(commentaire,Qt.red)
157 if str(self.LECorpsFormule.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
158 self.LECorpsFormule.setFocus(7)
160 def FormuleSaisie(self):
161 nomFormule = str(self.LENomFormule.text())
162 arguments = str(self.LENomsArgs.text())
163 expression = str(self.LECorpsFormule.text())
164 if expression == '' : return
165 test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
168 commentaire=tr("Corps de FORMULE valide")
169 self.editor.affiche_infos(commentaire)
171 commentaire=tr("Corps de FORMULE invalide")
172 self.editor.affiche_infos(commentaire,Qt.red)
173 if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
175 def BOkPressedFormule(self):
177 #if self.parent.modified == 'n' : self.parent.init_modif()
179 nomFormule = str(self.LENomFormule.text())
180 test,erreur = self.node.item.verif_nom(nomFormule)
182 self.editor.affiche_infos(erreur,Qt.red)
185 arguments = str(self.LENomsArgs.text())
186 test,erreur = self.node.item.verif_arguments(arguments)
188 self.editor.affiche_infos(erreur,Qt.red)
191 expression = str(self.LECorpsFormule.text())
192 test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
194 self.editor.affiche_infos(erreur,Qt.red)
197 test=self.node.item.object.update_formule_python(formule=(nomFormule,"REEL",arguments,expression))
198 test,erreur = self.node.item.save_formule(nomFormule,"REEL",arguments,expression)
200 #self.node.update_texte()
201 #self.node.update_label()
202 #self.node.update_node()
204 self.node.update_valid()
205 commentaire = "Formule saisie"
206 self.editor.affiche_infos(commentaire)
208 commentaire ="Formule incorrecte : " + erreur
209 self.editor.affiche_infos(commentaire,Qt.red)
210 self.editor.init_modif()