Salome HOME
Pour Adao
[tools/eficas.git] / InterfaceQT4 / monWidgetSimpTuple.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 from PyQt4.QtGui import *
25 from PyQt4.QtCore import *
26 from Extensions.i18n import tr
27
28 from feuille               import Feuille
29 from politiquesValidation  import PolitiqueUnique
30 from qtSaisie              import SaisieValeur
31
32
33 class MonWidgetSimpTuple(Feuille):
34
35   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
36         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
37         self.politique=PolitiqueUnique(self.node,self.editor)
38         self.parentQt.commandesLayout.insertWidget(-1,self)
39         self.setFocusPolicy(Qt.StrongFocus)
40
41   def setValeurs(self):
42        valeur=self.node.item.get_valeur()
43        for i in range(self.nbValeurs) :
44            nomLineEdit="lineEditVal"+str(i+1)
45            courant=getattr(self,nomLineEdit)
46            if valeur !=None: courant.setText(str(valeur[i]))
47            setattr(self,nomLineEdit,courant)
48            self.connect(courant,SIGNAL("returnPressed()"),self.valeursPressed)
49
50   def valeursPressed(self):
51       aLeFocus=self.focusWidget()
52       self.editor.affiche_infos("")
53       texteValeur=""
54       for i in range(self.nbValeurs) :
55           nomLineEdit="lineEditVal"+str(i+1)
56           courant=getattr(self,nomLineEdit)
57           if courant.text()=="" or courant.text()==None :
58              courant.setFocus(True)
59              return 
60           s=str(courant.text())
61           if self.objSimp.definition.validators.typeDesTuples[i] == "R" :
62              if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : 
63                  s=s+'.0'
64                  courant.setText(s)
65           if self.objSimp.definition.validators.typeDesTuples[i] == "TXM" :
66              if s[0]!='"' and s[0] != "'": 
67                 if s[-1]=="'": s="'"+s
68                 else :         s='"'+s
69              if s[-1]!='"' and s[-1] != "'": 
70                 if s[0]=="'": s=s+"'"
71                 else :        s=s+'"'
72              courant.setText(s)
73           texteValeur+=str(courant.text())
74           if i+1 != self.nbValeurs : texteValeur+=','
75       validite,commentaire=self.politique.RecordValeur(texteValeur)
76       if not validite:self.editor.affiche_infos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
77
78       # Passage au champ suivant
79       nom=aLeFocus.objectName()[11:]
80       i=nom.toInt()[0]+1
81       if i == self.nbValeurs +1 : i=1
82       nomLineEdit="lineEditVal"+str(i)
83       courant=getattr(self,nomLineEdit)
84       courant.setFocus(True)
85           
86