Salome HOME
ef4c5cea810fda7efdd2b1d661fd0a85da1b12ea
[tools/eficas.git] / InterfaceQT4 / monWidgetSimpBase.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
27
28 # Modules Eficas
29 from PyQt5.QtWidgets import QLineEdit
30 from PyQt5.QtCore import  Qt
31 from Extensions.i18n import tr
32
33 from .feuille               import Feuille
34 from desWidgetSimpBase     import Ui_WidgetSimpBase 
35 from .politiquesValidation  import PolitiqueUnique
36 from .qtSaisie              import SaisieValeur
37
38
39 class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille):
40
41   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
42         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
43         self.parentQt.commandesLayout.insertWidget(-1,self,1)
44         self.setFocusPolicy(Qt.StrongFocus)
45         self.lineEditVal.returnPressed.connect(self.LEvaleurPressed)
46         self.AAfficher=self.lineEditVal
47         self.maCommande.listeAffichageWidget.append(self.lineEditVal)
48         self.lineEditVal.focusInEvent=self.monFocusInEvent
49         self.lineEditVal.focusOutEvent=self.monFocusOutEvent
50
51
52   def monFocusInEvent(self,event):
53       self.editor.nodeEnCours = self
54       QLineEdit.focusInEvent(self.lineEditVal,event)
55
56   def monFocusOutEvent(self,event):
57       if self.oldValeurTexte != self.lineEditVal.text():
58          self.oldValeurTexte= self.lineEditVal.text()
59          self.LEvaleurPressed()
60       QLineEdit.focusOutEvent(self.lineEditVal,event)
61
62   #def showEvent(self, event):
63   #    if self.prendLeFocus==1 :
64   #       self.activateWindow()
65   #       self.lineEditVal.setFocus()
66   #       self.prendLeFocus=0
67   #    QWidget.showEvent(self,event)
68
69   def setValeurs(self):
70        #print ("dans setValeurs")
71        self.politique=PolitiqueUnique(self.node,self.editor)
72        valeur=self.node.item.getValeur()
73        valeurTexte=self.politique.getValeurTexte(valeur)
74        chaine=""
75
76        if valeurTexte != None :
77           from decimal import Decimal
78           if isinstance(valeurTexte,Decimal):
79              chaine=str(valeurTexte)
80           elif repr(valeurTexte.__class__).find("PARAMETRE") > 0:
81              chaine = repr(valeur)
82           else :
83              #PN ????
84              #try :
85              #  chaine=QString("").setNum(valeurTexte)
86              #except :
87              chaine=str(valeurTexte)
88        self.oldValeurTexte=chaine
89        self.lineEditVal.setText(chaine)
90
91
92   def finCommentaire(self):
93       mc = self.objSimp.definition
94       d_aides = { 'TXM' : tr(u"Une chaine de caracteres est attendue.  "),
95                   'R'   : tr(u"Un reel est attendu. "),
96                   'I'   : tr(u"Un entier est attendu.  "),
97                   'Matrice' : tr(u'Une Matrice est attendue.  '),
98                   'Fichier' : tr(u'Un fichier est attendu.  '),
99                   'FichierNoAbs' : tr(u'Un fichier est attendu.  '),
100                   'Repertoire' : tr(u'Un repertoire est attendu.  '),
101                   'FichierOuRepertoire' : tr(u'Un repertoire ou un fichier est attendu.  '),
102                   'Heure' : tr(u'Heure sous la forme HH:MM'),
103                   'Date' :  tr(u'Date sous la forme JJ/MM/AA')}
104       if mc.type[0] != type:
105          commentaire = d_aides.get(mc.type[0], tr("Type de base inconnu"))
106       else : commentaire=""
107       return commentaire
108
109
110   def LEvaleurPressed(self):
111       # pour les soucis d encoding
112       try :
113         if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return
114       except : pass
115       SaisieValeur.LEvaleurPressed(self)
116       self.parentQt.donneFocus()
117       self.setValeurs()
118       self.reaffiche()
119       
120       #if self.objSimp.parent.nom == "MODEL" :
121       #   if self.objSimp.isValid():
122       #      self.objSimp.parent.change_fichier="1"
123             #self.node.item.parent.buildInclude(None,"")
124