Salome HOME
modif pour MT
[tools/eficas.git] / InterfaceQT4 / monWidgetFormule.py
1 # Copyright (C) 2007-2017   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 __future__ import absolute_import
23 try :
24    from builtins import str
25 except : pass
26
27 from desWidgetFormule import Ui_WidgetFormule
28 from .gereIcones import FacultatifOuOptionnel
29
30 from PyQt5.QtWidgets  import QWidget
31 from PyQt5.QtGui import QIcon
32 from PyQt5.QtCore import Qt
33
34
35 from Extensions.i18n import tr
36 import Accas 
37 import os
38
39     
40 # Import des panels
41
42 class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
43   """
44   """
45   def __init__(self,node,editor,etape):
46       #print "MonWidgetFormule ", self
47       QWidget.__init__(self,None)
48       self.node=node
49       self.node.fenetre=self
50       self.editor=editor
51       self.appliEficas=self.editor.appliEficas
52       self.repIcon=self.appliEficas.repIcon
53       self.setupUi(self)
54       
55  
56       self.setIconePoubelle()
57       self.setIconesGenerales()
58       self.setValeurs()
59       self.setValide()
60
61      
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'] : 
65           self.bAvant.close()
66           self.bApres.close()
67       else : 
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)
74
75
76    
77       self.racine=self.node.tree.racine
78       self.monOptionnel=None
79       self.editor.fermeOptionnel()
80       #print "fin init de widget Commande"
81       
82
83   def donnePremier(self):
84       self.listeAffichageWidget[0].setFocus(7)
85
86
87   def setValeurs(self):
88         self.LENomFormule.setText(self.node.item.getNom())
89         self.LECorpsFormule.setText(self.node.item.getCorps())
90         texte_args=""
91         if self.node.item.getArgs() != None :
92             for i in self.node.item.getArgs() :
93                 if texte_args != "" : texte_args = texte_args +","
94                 texte_args=texte_args + i
95         self.LENomsArgs.setText(texte_args)
96
97
98   def nomChange(self):
99       nom = str(self.LENom.text())
100       self.LENomFormule.setText(nom)
101       self.nomFormuleSaisi()
102
103
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()
109
110   def afficheApres(self):
111        self.node.selectApres()
112
113   def afficheAvant(self):
114        self.node.selectAvant()
115
116   def setValide(self):
117       if not(hasattr (self,'RBValide')) : return
118       icon = QIcon()
119       if self.node.item.object.isValid() :
120          icon=QIcon(self.repIcon+"/ast-green-ball.png")
121       else :
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)
126
127
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.verifNom(nomFormule)
133       if test :
134          commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
135          self.editor.afficheInfos(commentaire)
136       else :
137          commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
138          self.editor.afficheInfos(commentaire,Qt.red)
139          return
140       if str(self.LENomsArgs.text()) != "" and  str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
141       self.LENomsArgs.setFocus(7)
142
143   def argsSaisis(self):
144       arguments = str(self.LENomsArgs.text())
145       if arguments == '' : return
146       test,erreur = self.node.item.verifArguments(arguments)
147       if test:
148          commentaire=tr("Argument(s) valide(s) pour une FORMULE")
149          self.editor.afficheInfos(commentaire)
150       else:
151          commentaire=tr("Argument(s) invalide(s) pour une FORMULE")
152          self.editor.afficheInfos(commentaire,Qt.red)
153       if str(self.LECorpsFormule.text()) != "" and  str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
154       self.LECorpsFormule.setFocus(7)
155
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.verifFormule_python((nomFormule,"REEL",arguments,expression))
162
163       if test:
164          commentaire=tr("Corps de FORMULE valide")
165          self.editor.afficheInfos(commentaire)
166       else:
167          commentaire=tr("Corps de FORMULE invalide")
168          self.editor.afficheInfos(commentaire,Qt.red)
169       if str(self.LENomsArgs.text()) != "" and  str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
170
171   def BOkPressedFormule(self):
172       #print dir(self)
173       #if self.parent.modified == 'n' : self.parent.initModif()
174
175       nomFormule = str(self.LENomFormule.text())
176       test,erreur = self.node.item.verifNom(nomFormule)
177       if not test :
178          self.editor.afficheInfos(erreur,Qt.red)
179          return
180
181       arguments  = str(self.LENomsArgs.text())
182       test,erreur = self.node.item.verifArguments(arguments)
183       if not test :
184          self.editor.afficheInfos(erreur,Qt.red)
185          return
186
187       expression = str(self.LECorpsFormule.text())
188       test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression))
189       if not test :
190          self.editor.afficheInfos(erreur,Qt.red)
191          return
192
193       test=self.node.item.object.updateFormulePython(formule=(nomFormule,"REEL",arguments,expression))
194       test,erreur = self.node.item.saveFormule(nomFormule,"REEL",arguments,expression)
195       if test :
196          self.node.onValid()
197          self.node.update_valid()
198          commentaire = "Formule saisie"
199          self.editor.afficheInfos(commentaire)
200       else:
201          commentaire ="Formule incorrecte : " + erreur
202          self.editor.afficheInfos(commentaire,Qt.red)
203       self.editor.initModif()
204