Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[tools/eficas.git] / InterfaceQT4 / monWidgetSimpComplexe.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021   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.maCommande.listeAffichageWidget.append(self.RBRI)
52         self.maCommande.listeAffichageWidget.append(self.RBMP)
53         self.maCommande.listeAffichageWidget.append(self.LEReel)
54         self.maCommande.listeAffichageWidget.append(self.LEImag)
55
56
57     def setValeurs(self):
58         self.politique=PolitiqueUnique(self.node,self.editor)
59         valeur=self.node.item.getValeur()
60         if valeur == None or valeur == '' : return
61         if type(valeur) not in (list,tuple) :
62             self.LEComp.setText(str(valeur))
63             commentaire=tr('complexe form deprecated, od value : ', valeur)
64             self.editor.afficheInfos(commentaire,Qt.red)
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     #    if 1 :
81     #    try :
82     #        v=eval(valeur,d)
83     #    except :
84     #        commentaire=tr("expression invalide")
85     #        self.editor.afficheInfos(commentaire,Qt.red)
86     #        return
87     #    try :
88     #        i=v.imag
89     #        self.editor.afficheInfos(commentaire)
90     #        self.valeurPressed()
91     #    except :
92     #        commentaire=tr("l expression n est pas de la forme a+bj")
93     #        self.editor.afficheInfos(commentaire,Qt.red)
94
95     def LEReelRPressed(self):
96         #self.LEComp.clear()
97         commentaire=tr("expression valide")
98         valeur = str(self.LEReel.text())
99         try :
100             a=locale.atof(valeur)
101             self.editor.afficheInfos(commentaire)
102         except :
103             commentaire=tr("expression invalide")
104             self.editor.afficheInfos(commentaire,Qt.red)
105         if self.LEImag.text()!="" : self.valeurPressed()
106         else : self.LEImag.setFocus(True)
107
108     def LEImagRPressed(self):
109         commentaire=tr("expression valide")
110         valeur = str(self.LEImag.text())
111         try :
112             a=locale.atof(valeur)
113             self.editor.afficheInfos(commentaire)
114         except :
115             commentaire=tr("expression invalide")
116             self.editor.afficheInfos(commentaire,Qt.red)
117         if self.LEReel.text()!="" : self.valeurPressed()
118         else : self.LEReel.setFocus(True)
119
120     def finCommentaire(self):
121         commentaire="valeur de type complexe"
122         return commentaire
123
124     #def getValeurComp(self):
125     #    commentaire=tr("expression valide")
126     #    valeur = str(self.LEComp.text())
127     #    d={}
128     #    try :
129     #        v=eval(valeur,d)
130     #    except :
131     #        commentaire=tr("expression invalide")
132     #        self.editor.afficheInfos(commentaire,Qt.red)
133     #        return None
134     #     try :
135     #        i=v.imag
136     #    except :
137     #        commentaire=tr("expression n est pas de la forme a+bj")
138     #        self.editor.afficheInfos(commentaire,Qt.red)
139     #        return None
140     #    return v
141
142
143     def valeurPressed(self):
144         if (self.LEReel.text()=="" and self.LEImag.text()=="") : self.LEReel.setFocus(True)
145         if (self.LEReel.text()=="" and self.LEImag.text()!="") : self.LEReel.setFocus(True)
146         if (self.LEReel.text()!="" and self.LEImag.text()=="") : self.LEImag.setFocus(True)
147         valeur = self.getValeurRI()
148         self.politique.recordValeur(valeur)
149         self.reaffiche()
150         self.parentQt.donneFocus()
151
152     def getValeurRI(self):
153         """
154         Retourne le complexe saisi par l'utilisateur
155         """
156         l=[]
157         if (self.RBMP.isChecked() == 1 ) : l.append("MP")
158         elif (self.RBRI.isChecked() == 1) : l.append("RI")
159         else :
160             self.editor.afficheInfos(commentaire,Qt.red)
161             self.RBMP.setFocus(True)
162             return None
163         try :
164             l.append(locale.atof(str(self.LEReel.text())))
165             l.append(locale.atof(str(self.LEImag.text())))
166         except :
167             return None
168         return repr(tuple(l))