Salome HOME
sauve du 9 mai
[tools/eficas.git] / InterfaceQT4 / monWidgetSimpComplexe.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 # Modules Python
21 import string,types,os
22
23 # Modules Eficas
24 if monEnvQT5:
25     from PyQt5.QtWidgets import QLineEdit, QRadioButton
26     from PyQt5.QtCore import Qt
27 else :
28     from PyQt4.QtGui  import *
29     from PyQt4.QtCore import *
30
31
32 from Extensions.i18n import tr
33
34 from feuille                import Feuille
35 from desWidgetSimpComplexe  import Ui_WidgetSimpComplexe 
36 from politiquesValidation   import PolitiqueUnique
37 from qtSaisie               import SaisieValeur
38
39
40 class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
41
42   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
43         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
44         self.parentQt.commandesLayout.insertWidget(-1,self)
45         self.setFocusPolicy(Qt.StrongFocus)
46         if monEnvQT5 :
47           self.LEImag.returnPressed.connect(self.LEImagRPressed)
48           self.LEReel.returnPressed.connect()"),self.LEReelRPressed)
49           self.RBRI.clicked.connect(self.ValeurPressed )
50           self.RBMP.clicked.connect(self.ValeurPressed )
51           self.LEComp.returnPressed.connect(self.LECompRPressed)
52         else :
53           self.connect(self.LEImag,SIGNAL("returnPressed()"),self.LEImagRPressed)
54           self.connect(self.LEReel,SIGNAL("returnPressed()"),self.LEReelRPressed)
55           self.connect(self.RBRI,SIGNAL("clicked()"), self.ValeurPressed )
56           self.connect(self.RBMP,SIGNAL("clicked()"), self.ValeurPressed )
57           self.connect(self.LEComp,SIGNAL("returnPressed()"),self.LECompRPressed)
58         self.maCommande.listeAffichageWidget.append(self.LEComp)
59         #self.maCommande.listeAffichageWidget.append(self.RBRI)
60         #self.maCommande.listeAffichageWidget.append(self.RBMP)
61         #self.maCommande.listeAffichageWidget.append(self.LEReel)
62         #self.maCommande.listeAffichageWidget.append(self.LEImag)
63
64
65   def setValeurs(self):
66        self.politique=PolitiqueUnique(self.node,self.editor)
67        valeur=self.node.item.get_valeur()
68        if valeur == None or valeur == '' : return
69        if type(valeur) not in (types.ListType,types.TupleType) :
70            self.LEComp.setText(str(valeur))
71        else :
72            typ_cplx,x1,x2=valeur
73            self.LEReel.setText(str(x1))
74            self.LEImag.setText(str(x2))
75            if typ_cplx == "RI" :
76               self.RBRI.setChecked(1)
77            else :
78               self.RBMP.setChecked(1)
79
80   def LECompRPressed(self) :
81         self.LEReel.clear()
82         self.LEImag.clear()
83         commentaire=tr("expression valide")
84         valeur = str(self.LEComp.text())
85         d={}
86         try :
87           v=eval(valeur,d)
88         except :
89           commentaire=tr("expression invalide")
90           self.editor.affiche_infos(commentaire,Qt.red)
91           return
92         try :
93           i=v.imag
94           self.editor.affiche_infos(commentaire)
95           self.ValeurPressed()
96         except :
97           commentaire=tr("l expression n est pas de la forme a+bj")
98           self.editor.affiche_infos(commentaire,Qt.red)
99
100   def LEReelRPressed(self):
101         self.LEComp.clear()
102         commentaire=tr("expression valide")
103         valeur = str(self.LEReel.text())
104         try :
105           a=string.atof(valeur)
106           self.editor.affiche_infos(commentaire)
107         except :
108           commentaire=tr("expression invalide")
109           self.editor.affiche_infos(commentaire,Qt.red)
110         if self.LEImag.text()!="" : self.ValeurPressed()
111
112   def LEImagRPressed(self):
113         self.LEComp.clear()
114         commentaire=tr("expression valide")
115         valeur = str(self.LEImag.text())
116         try :
117           a=string.atof(valeur)
118           self.editor.affiche_infos(commentaire)
119         except :
120           commentaire=tr("expression invalide")
121           self.editor.affiche_infos(commentaire,Qt.red)
122         if self.LEReel.text()!="" : self.ValeurPressed()
123
124   def finCommentaire(self):
125       commentaire="valeur de type complexe"
126       return commentaire
127
128   def getValeurComp(self):
129         commentaire=tr("expression valide")
130         valeur = str(self.LEComp.text())
131         d={}
132         try :
133           v=eval(valeur,d)
134         except :
135           commentaire=tr("expression invalide")
136           self.editor.affiche_infos(commentaire,Qt.red)
137           return None
138         try :
139           i=v.imag
140         except :
141           commentaire=tr("expression n est pas de la forme a+bj")
142           self.editor.affiche_infos(commentaire,Qt.red)
143           return None
144         return v
145
146
147   def ValeurPressed(self):
148       if self.LEComp.text()== ""  and (self.LEReel.text()=="" or self.LEImag.text()=="") :
149          return
150       if self.LEComp.text()== "" : valeur = self.getValeurRI()
151       else :
152           if self.LEReel.text() != "" or self.LEImag.text() != "" :
153               commentaire=tr("entrer une seule valeur SVP")
154               self.editor.affiche_infos(commentaire,Qt.red)
155               return
156           valeur=  self.getValeurComp()
157       self.politique.RecordValeur(valeur)
158       self.reaffiche()
159       self.parentQt.donneFocus()
160
161   def getValeurRI(self):
162       """
163       Retourne le complexe saisi par l'utilisateur
164       """
165       l=[]
166       if  (self.RBMP.isChecked() == 1 ) :
167          l.append("MP")
168       elif (self.RBRI.isChecked() == 1) :
169          l.append("RI")
170       else :
171          commentaire=tr("saisir le type de complexe")
172          self.editor.affiche_infos(commentaire,Qt.red)
173          return None
174       try :
175          l.append(string.atof(str(self.LEReel.text())))
176          l.append(string.atof(str(self.LEImag.text())))
177       except :
178          return None
179       return `tuple(l)`
180
181