Salome HOME
modif pour MT
[tools/eficas.git] / InterfaceQT4 / monWidgetSimpComplexe.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2017   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 from __future__ import absolute_import
22 try :
23    from builtins import str
24 except : pass
25
26 import types,os, locale
27
28 # Modules Eficas
29 from PyQt5.QtWidgets import QLineEdit, QRadioButton
30 from PyQt5.QtCore import Qt
31
32
33 from Extensions.i18n import tr
34
35 from .feuille                import Feuille
36 from desWidgetSimpComplexe  import Ui_WidgetSimpComplexe 
37 from .politiquesValidation   import PolitiqueUnique
38 from .qtSaisie               import SaisieValeur
39
40
41 class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
42
43   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
44         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
45         self.parentQt.commandesLayout.insertWidget(-1,self)
46         self.setFocusPolicy(Qt.StrongFocus)
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         self.maCommande.listeAffichageWidget.append(self.LEComp)
53         #self.maCommande.listeAffichageWidget.append(self.RBRI)
54         #self.maCommande.listeAffichageWidget.append(self.RBMP)
55         #self.maCommande.listeAffichageWidget.append(self.LEReel)
56         #self.maCommande.listeAffichageWidget.append(self.LEImag)
57
58
59   def setValeurs(self):
60        self.politique=PolitiqueUnique(self.node,self.editor)
61        valeur=self.node.item.getValeur()
62        if valeur == None or valeur == '' : return
63        if type(valeur) not in (list,tuple) :
64            self.LEComp.setText(str(valeur))
65        else :
66            typ_cplx,x1,x2=valeur
67            self.LEReel.setText(str(x1))
68            self.LEImag.setText(str(x2))
69            if typ_cplx == "RI" :
70               self.RBRI.setChecked(1)
71            else :
72               self.RBMP.setChecked(1)
73
74   def LECompRPressed(self) :
75         self.LEReel.clear()
76         self.LEImag.clear()
77         commentaire=tr("expression valide")
78         valeur = str(self.LEComp.text())
79         d={}
80         try :
81           v=eval(valeur,d)
82         except :
83           commentaire=tr("expression invalide")
84           self.editor.afficheInfos(commentaire,Qt.red)
85           return
86         try :
87           i=v.imag
88           self.editor.afficheInfos(commentaire)
89           self.valeurPressed()
90         except :
91           commentaire=tr("l expression n est pas de la forme a+bj")
92           self.editor.afficheInfos(commentaire,Qt.red)
93
94   def LEReelRPressed(self):
95         self.LEComp.clear()
96         commentaire=tr("expression valide")
97         valeur = str(self.LEReel.text())
98         try :
99           a=locale.atof(valeur)
100           self.editor.afficheInfos(commentaire)
101         except :
102           commentaire=tr("expression invalide")
103           self.editor.afficheInfos(commentaire,Qt.red)
104         if self.LEImag.text()!="" : self.valeurPressed()
105
106   def LEImagRPressed(self):
107         self.LEComp.clear()
108         commentaire=tr("expression valide")
109         valeur = str(self.LEImag.text())
110         try :
111           a=locale.atof(valeur)
112           self.editor.afficheInfos(commentaire)
113         except :
114           commentaire=tr("expression invalide")
115           self.editor.afficheInfos(commentaire,Qt.red)
116         if self.LEReel.text()!="" : self.valeurPressed()
117
118   def finCommentaire(self):
119       commentaire="valeur de type complexe"
120       return commentaire
121
122   def getValeurComp(self):
123         commentaire=tr("expression valide")
124         valeur = str(self.LEComp.text())
125         d={}
126         try :
127           v=eval(valeur,d)
128         except :
129           commentaire=tr("expression invalide")
130           self.editor.afficheInfos(commentaire,Qt.red)
131           return None
132         try :
133           i=v.imag
134         except :
135           commentaire=tr("expression n est pas de la forme a+bj")
136           self.editor.afficheInfos(commentaire,Qt.red)
137           return None
138         return v
139
140
141   def valeurPressed(self):
142       if self.LEComp.text()== ""  and (self.LEReel.text()=="" or self.LEImag.text()=="") :
143          return
144       if self.LEComp.text()== "" : valeur = self.getValeurRI()
145       else :
146           if self.LEReel.text() != "" or self.LEImag.text() != "" :
147               commentaire=tr("entrer une seule valeur SVP")
148               self.editor.afficheInfos(commentaire,Qt.red)
149               return
150           valeur=  self.getValeurComp()
151       self.politique.recordValeur(valeur)
152       self.reaffiche()
153       self.parentQt.donneFocus()
154
155   def getValeurRI(self):
156       """
157       Retourne le complexe saisi par l'utilisateur
158       """
159       l=[]
160       if  (self.RBMP.isChecked() == 1 ) :
161          l.append("MP")
162       elif (self.RBRI.isChecked() == 1) :
163          l.append("RI")
164       else :
165          commentaire=tr("saisir le type de complexe")
166          self.editor.afficheInfos(commentaire,Qt.red)
167          return None
168       try :
169          l.append(locale.atof(str(self.LEReel.text())))
170          l.append(locale.atof(str(self.LEImag.text())))
171       except :
172          return None
173       return repr(tuple(l))
174
175