Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[tools/eficas.git] / InterfaceQT4 / monWidgetFormule.py
1 # Copyright (C) 2007-2021   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()