]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monWidgetParam.py
Salome HOME
mse a jour du 07/03/2016 pour sauvegarde
[tools/eficas.git] / InterfaceQT4 / monWidgetParam.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 desWidgetParam import Ui_WidgetParam
23 from gereIcones import FacultatifOuOptionnel
24 from determine import monEnvQT5
25 if monEnvQT5:
26     from PyQt5.QtWidgets import QWidget
27 else :
28     from PyQt4.QtGui  import *
29     from PyQt4.QtCore import *
30
31 from Extensions.i18n import tr
32 from Extensions.eficas_exception import EficasException
33 import Accas 
34 import os, re
35 import string
36 import types
37
38 pattern_name       = re.compile(r'^[^\d\W]\w*\Z')
39
40     
41 # Import des panels
42
43 class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel):
44   """
45   """
46   def __init__(self,node,editor,commentaire):
47       QWidget.__init__(self,None)
48       self.node=node
49       self.node.fenetre=self
50       self.setupUi(self)
51       self.editor=editor
52       self.appliEficas=self.editor.appliEficas
53       self.repIcon=self.appliEficas.repIcon
54
55       self.setIconePoubelle()
56       self.remplit()
57       if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
58       elif monEnvQt5 : self.bCatalogue.clicked.connect(self.afficheCatalogue)
59       else : self.connect(self.bCatalogue,SIGNAL("clicked()"), self.afficheCatalogue)
60
61       if monEnvQt5 :
62         self.lineEditVal.returnPressed.connect.(self.LEValeurPressed)
63         self.lineEditNom.returnPressed.connect.(self.LENomPressed)
64         self.bAvant.clicked.connect.(self.afficheAvant)
65         self.bApres.clicked.connect.(self.afficheApres)
66         self.bVerifie.clicked.connect.(self.verifiePressed)
67       else :
68         self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.LEValeurPressed)
69         self.connect(self.lineEditNom,SIGNAL("returnPressed()"),self.LENomPressed)
70         self.connect(self.bAvant,SIGNAL("clicked()"), self.afficheAvant)
71         self.connect(self.bApres,SIGNAL("clicked()"), self.afficheApres)
72         self.connect(self.bVerifie,SIGNAL("clicked()"), self.verifiePressed)
73         self.editor.affiche_infos("")
74
75
76       if self.editor.widgetOptionnel!= None :
77          self.editor.widgetOptionnel.close()
78          self.editor.widgetOptionnel=None
79
80
81
82        
83   def afficheCatalogue(self):
84       self.node.tree.racine.affichePanneau()
85       if self.node : self.node.select()
86       else : self.node.tree.racine.select()
87
88   def remplit(self):
89       nom=self.node.item.get_nom()
90       self.lineEditNom.setText(nom)
91
92       valeur=self.node.item.get_valeur()
93       if valeur == None : 
94          self.lineEditVal.clear()
95       elif type(valeur) == types.ListType :
96          texte="["
97          for l in valeur :
98            texte=texte+str(l) +","
99          texte=texte[0:-1]+"]"
100          self.lineEditVal.setText(texte)
101       else :
102          self.lineEditVal.setText(str(valeur))
103
104
105   def donnePremier(self):
106       self.lineEditVal.setFocus(7)
107
108   def LEValeurPressed(self):
109       if self.verifiePressed() == False :
110          QMessageBox.warning( self,tr( "Modification Impossible"),tr( "le parametre n'est pas valide"))
111       nom=str(self.lineEditNom.text())
112       val=str(self.lineEditVal.text())
113       self.node.item.set_nom(nom)
114       self.node.item.set_valeur(val)
115       self.node.update_texte()
116       self.node.update_node_valid()
117
118   def LENomPressed(self):
119       self.LEValeurPressed()
120
121   def verifiePressed(self):
122         nomString=str(self.lineEditNom.text())
123         if not pattern_name.match(nomString) : 
124            self.LECommentaire.setText(nomString + tr(" n est pas un identifiant correct"))
125            return False
126
127         valString=str(self.lineEditVal.text())
128
129         contexte={}
130         exec "from math import *" in contexte
131         jdc=self.node.item.get_jdc()
132         for p in jdc.params :
133            try:
134               tp=p.nom+'='+str(repr(p.valeur))
135               exec tp  in contexte
136            except exc :
137               pass
138
139         monTexte=nomString+"="+valString
140         try :
141           exec monTexte in contexte
142         except (ValueError,TypeError, NameError,RuntimeError,ZeroDivisionError),  exc:
143           self.LECommentaire.setText(tr("Valeur incorrecte: ")+unicode (exc))
144           return False
145         except :
146           self.LECommentaire.setText(tr("Valeur incorrecte "))
147           return False
148
149         self.LECommentaire.setText(tr("Valeur correcte "))
150         return True
151
152   def afficheApres(self):
153        self.node.selectApres()
154
155   def afficheAvant(self):
156        self.node.selectAvant()
157
158