]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monWidgetFormule.py
Salome HOME
import, formule, param et etc
[tools/eficas.git] / InterfaceQT4 / monWidgetFormule.py
1 # Copyright (C) 2007-2013   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 desWidgetFormule import Ui_WidgetFormule
23 from gereIcones import FacultatifOuOptionnel
24 from determine import monEnvQT5
25
26 if monEnvQT5:
27    from PyQt5.QtWidgets  import QWidget
28    from PyQt5.QtGui import QIcon
29    from PyQt5.QtCore import Qt
30 else :
31    from PyQt4.QtGui import *
32    from PyQt4.QtCore import *
33
34
35 from Extensions.i18n import tr
36 import Accas 
37 import os
38 import string
39
40     
41 # Import des panels
42
43 class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
44   """
45   """
46   def __init__(self,node,editor,etape):
47       #print "MonWidgetFormule ", self
48       QWidget.__init__(self,None)
49       self.node=node
50       self.node.fenetre=self
51       self.editor=editor
52       self.appliEficas=self.editor.appliEficas
53       self.repIcon=self.appliEficas.repIcon
54       self.setupUi(self)
55       
56  
57       self.setIconePoubelle()
58       self.setIconesGenerales()
59       self.setValide()
60
61      
62       if monEnvQT5 :
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'] : 
66                self.bAvant.close()
67                self.bApres.close()
68          else : 
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)
75       else : 
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'] : 
79                self.bAvant.close()
80                self.bApres.close()
81          else : 
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)
88
89
90    
91       self.racine=self.node.tree.racine
92       self.monOptionnel=None
93       #self.editor.restoreSplitterSizes()
94       #print "fin init de widget Commande"
95       
96
97   def donnePremier(self):
98       self.listeAffichageWidget[0].setFocus(7)
99
100
101
102   def nomChange(self):
103       nom = str(self.LENom.text())
104       self.LENomFormule.setText(nom)
105       self.NomFormuleSaisi()
106
107
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()
113
114   def afficheApres(self):
115        self.node.selectApres()
116
117   def afficheAvant(self):
118        self.node.selectAvant()
119
120   def setValide(self):
121       if not(hasattr (self,'RBValide')) : return
122       icon = QIcon()
123       if self.node.item.object.isvalid() :
124          icon=QIcon(self.repIcon+"/ast-green-ball.png")
125       else :
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)
130
131
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)
137       if test :
138          commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
139          self.editor.affiche_infos(commentaire)
140       else :
141          commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
142          self.editor.affiche_infos(commentaire,Qt.red)
143          return
144       if str(self.LENomsArgs.text()) != "" and  str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
145       self.LENomsArgs.setFocus(7)
146
147   def argsSaisis(self):
148       arguments = str(self.LENomsArgs.text())
149       if arguments == '' : return
150       test,erreur = self.node.item.verif_arguments(arguments)
151       if test:
152          commentaire=tr("Argument(s) valide(s) pour une FORMULE")
153          self.editor.affiche_infos(commentaire)
154       else:
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)
159
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))
166
167       if test:
168          commentaire=tr("Corps de FORMULE valide")
169          self.editor.affiche_infos(commentaire)
170       else:
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()
174
175   def BOkPressedFormule(self):
176       #print dir(self)
177       #if self.parent.modified == 'n' : self.parent.init_modif()
178
179       nomFormule = str(self.LENomFormule.text())
180       test,erreur = self.node.item.verif_nom(nomFormule)
181       if not test :
182          self.editor.affiche_infos(erreur,Qt.red)
183          return
184
185       arguments  = str(self.LENomsArgs.text())
186       test,erreur = self.node.item.verif_arguments(arguments)
187       if not test :
188          self.editor.affiche_infos(erreur,Qt.red)
189          return
190
191       expression = str(self.LECorpsFormule.text())
192       test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
193       if not test :
194          self.editor.affiche_infos(erreur,Qt.red)
195          return
196
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)
199       if test :
200          #self.node.update_texte()
201          #self.node.update_label()
202          #self.node.update_node()
203          self.node.onValid()
204          self.node.update_valid()
205          commentaire = "Formule saisie"
206          self.editor.affiche_infos(commentaire)
207       else:
208          commentaire ="Formule incorrecte : " + erreur
209          self.editor.affiche_infos(commentaire,Qt.red)
210       self.editor.init_modif()
211