1 # Copyright (C) 2007-2017 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 __future__ import absolute_import
24 from builtins import str
27 from desWidgetFormule import Ui_WidgetFormule
28 from .gereIcones import FacultatifOuOptionnel
30 from PyQt5.QtWidgets import QWidget
31 from PyQt5.QtGui import QIcon
32 from PyQt5.QtCore import Qt
35 from Extensions.i18n import tr
42 class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
45 def __init__(self,node,editor,etape):
46 #print "MonWidgetFormule ", self
47 QWidget.__init__(self,None)
49 self.node.fenetre=self
51 self.appliEficas=self.editor.appliEficas
52 self.repIcon=self.appliEficas.repIcon
56 self.setIconePoubelle()
57 self.setIconesGenerales()
62 if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
63 else : self.bCatalogue.clicked.connect(self.afficheCatalogue)
64 if self.editor.code in ['Adao','MAP','ADAO'] :
68 self.bAvant.clicked.connect(self.afficheAvant)
69 self.bApres.clicked.connect(self.afficheApres)
70 self.LENom.returnPressed.connect(self.nomChange)
71 self.LENomFormule.returnPressed.connect(self.NomFormuleSaisi)
72 self.LENomsArgs.returnPressed.connect(self.argsSaisis)
73 self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie)
77 self.racine=self.node.tree.racine
78 self.monOptionnel=None
79 self.editor.fermeOptionnel()
80 #print "fin init de widget Commande"
83 def donnePremier(self):
84 self.listeAffichageWidget[0].setFocus(7)
88 self.LENomFormule.setText(self.node.item.get_nom())
89 self.LECorpsFormule.setText(self.node.item.get_corps())
91 if self.node.item.get_args() != None :
92 for i in self.node.item.get_args() :
93 if texte_args != "" : texte_args = texte_args +","
94 texte_args=texte_args + i
95 self.LENomsArgs.setText(texte_args)
99 nom = str(self.LENom.text())
100 self.LENomFormule.setText(nom)
101 self.NomFormuleSaisi()
104 def afficheCatalogue(self):
105 if self.editor.widgetOptionnel != None : self.monOptionnel.hide()
106 self.racine.affichePanneau()
107 if self.node : self.node.select()
108 else : self.racine.select()
110 def afficheApres(self):
111 self.node.selectApres()
113 def afficheAvant(self):
114 self.node.selectAvant()
117 if not(hasattr (self,'RBValide')) : return
119 if self.node.item.object.isvalid() :
120 icon=QIcon(self.repIcon+"/ast-green-ball.png")
122 icon=QIcon(self.repIcon+"/ast-red-ball.png")
123 if self.node.item.GetIconName() == "ast-yellow-square" :
124 icon=QIcon(self.repIcon+"/ast-yel-ball.png")
125 self.RBValide.setIcon(icon)
128 def NomFormuleSaisi(self):
129 nomFormule = str(self.LENomFormule.text())
130 if nomFormule == '' : return
131 self.LENom.setText(nomFormule)
132 test,erreur = self.node.item.verif_nom(nomFormule)
134 commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
135 self.editor.affiche_infos(commentaire)
137 commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
138 self.editor.affiche_infos(commentaire,Qt.red)
140 if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
141 self.LENomsArgs.setFocus(7)
143 def argsSaisis(self):
144 arguments = str(self.LENomsArgs.text())
145 if arguments == '' : return
146 test,erreur = self.node.item.verif_arguments(arguments)
148 commentaire=tr("Argument(s) valide(s) pour une FORMULE")
149 self.editor.affiche_infos(commentaire)
151 commentaire=tr("Argument(s) invalide(s) pour une FORMULE")
152 self.editor.affiche_infos(commentaire,Qt.red)
153 if str(self.LECorpsFormule.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
154 self.LECorpsFormule.setFocus(7)
156 def FormuleSaisie(self):
157 nomFormule = str(self.LENomFormule.text())
158 arguments = str(self.LENomsArgs.text())
159 expression = str(self.LECorpsFormule.text())
160 if expression == '' : return
161 test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
164 commentaire=tr("Corps de FORMULE valide")
165 self.editor.affiche_infos(commentaire)
167 commentaire=tr("Corps de FORMULE invalide")
168 self.editor.affiche_infos(commentaire,Qt.red)
169 if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
171 def BOkPressedFormule(self):
173 #if self.parent.modified == 'n' : self.parent.init_modif()
175 nomFormule = str(self.LENomFormule.text())
176 test,erreur = self.node.item.verif_nom(nomFormule)
178 self.editor.affiche_infos(erreur,Qt.red)
181 arguments = str(self.LENomsArgs.text())
182 test,erreur = self.node.item.verif_arguments(arguments)
184 self.editor.affiche_infos(erreur,Qt.red)
187 expression = str(self.LECorpsFormule.text())
188 test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
190 self.editor.affiche_infos(erreur,Qt.red)
193 test=self.node.item.object.update_formule_python(formule=(nomFormule,"REEL",arguments,expression))
194 test,erreur = self.node.item.save_formule(nomFormule,"REEL",arguments,expression)
196 #self.node.update_texte()
197 #self.node.update_label()
198 #self.node.update_node()
200 self.node.update_valid()
201 commentaire = "Formule saisie"
202 self.editor.affiche_infos(commentaire)
204 commentaire ="Formule incorrecte : " + erreur
205 self.editor.affiche_infos(commentaire,Qt.red)
206 self.editor.init_modif()