Salome HOME
pb d accent. on les enleve en français
[tools/eficas.git] / InterfaceQT4 / gereListe.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 import traceback
23
24 from PyQt4 import *
25 from PyQt4.QtGui import *
26 from PyQt4.QtCore import *
27 from Extensions.i18n import tr
28 from monViewTexte   import ViewText
29
30
31 # ---------------------- #
32 class LECustom(QLineEdit):
33 # ---------------------- #
34  def __init__(self,parent,parentQt,i):
35         """
36         Constructor
37         """
38         QMainWindow.__init__(self,parent)
39         self.parentQt=parentQt
40         self.num=i
41
42  def focusInEvent(self,event):
43      print "dans focusInEvent de LECustom"
44      self.parentQt.LineEditEnCours=self
45      self.parentQt.NumLineEditEnCours=self.num
46      self.setFrame(True)
47      QLineEdit.focusInEvent(self,event)
48
49  def focusOutEvent(self,event):
50      self.setFrame(False)
51      QLineEdit.focusOutEvent(self,event)
52
53 # ---------------------------- #
54 class MonLabelListeClic(QLabel):
55 # ---------------------------- #
56      def __init__(self,parent):
57         QLabel.__init__(self,parent)
58         self.parent=parent
59
60      def event(self,event) :
61          if event.type() == QEvent.MouseButtonRelease:
62             self.texte=self.text()
63             self.parent.traiteClicSurLabelListe(self.texte)
64          return QLabel.event(self,event)
65
66
67
68
69 # ------------- #
70 class GereListe:
71 # ------------- #
72
73    def __init__(self):
74        self.connecterSignaux()
75
76    def connecterSignaux(self):
77        self.connect(self.RBHaut,SIGNAL("clicked()"),self.hautPushed)
78        self.connect(self.RBBas,SIGNAL("clicked()"),self.basPushed)
79        self.connect(self.RBMoins,SIGNAL("clicked()"),self.moinsPushed)
80        self.connect(self.RBPlus,SIGNAL("clicked()"),self.plusPushed)
81        self.connect(self.RBVoisListe,SIGNAL("clicked()"),self.voisListePushed)
82
83    def hautPushed(self):
84        if self.NumLineEditEnCours == 1 : return
85        else : numEchange=self.NumLineEditEnCours-1
86        self.echange(self.NumLineEditEnCours,numEchange)
87        self.LineEditEnCours.setFocus(True)
88        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
89
90
91    def basPushed(self):
92        if self.NumLineEditEnCours == self.indexDernierLabel : return
93        else : numEchange=self.NumLineEditEnCours+1
94        self.echange(self.NumLineEditEnCours,numEchange)
95        self.LineEditEnCours.setFocus(True)
96        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
97
98    def echange(self,num1,num2):
99        # on donne le focus au a celui ou on a bouge
100        # par convention le 2
101        nomLineEdit=self.nomLine+str(num1)
102        #print nomLineEdit
103        courant=getattr(self,nomLineEdit)
104        valeurAGarder=courant.text()
105        nomLineEdit2=self.nomLine+str(num2)
106        #print nomLineEdit2
107        courant2=getattr(self,nomLineEdit2)
108        courant.setText(courant2.text())
109        courant2.setText(valeurAGarder)
110        self.changeValeur(changeDePlace=False)
111        self.NumLineEditEnCours=num2
112        self.LineEditEnCours=courant2
113        self.LineEditEnCours.setFocus(True)
114
115    def moinsPushed(self):
116        # on supprime le dernier
117        if self.NumLineEditEnCours==self.indexDernierLabel : 
118           nomLineEdit=self.nomLine+str(aRemonter)
119           courant=getattr(self,nomLineEdit)
120           courant.setText("")
121        else :
122          for i in range (self.NumLineEditEnCours, self.indexDernierLabel):
123              aRemonter=i+1
124              nomLineEdit=self.nomLine+str(aRemonter)
125              courant=getattr(self,nomLineEdit)
126              valeurARemonter=courant.text()
127              nomLineEdit=self.nomLine+str(i)
128              courant=getattr(self,nomLineEdit)
129              courant.setText(valeurARemonter)
130          nomLineEdit=self.nomLine+str(self.indexDernierLabel)
131          courant=getattr(self,nomLineEdit)
132          courant.setText("")
133        self.changeValeur(changeDePlace=False,oblige=True)
134        self.setValide()
135
136    def plusPushed(self):
137        if self.indexDernierLabel == self.monSimpDef.max:
138           self.editor.affiche_infos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint')
139           return
140        self.ajoutLineEdit()
141        if self.NumLineEditEnCours==self.indexDernierLabel : return
142        nomLineEdit=self.nomLine+str(self.NumLineEditEnCours+1)
143        courant=getattr(self,nomLineEdit)
144        valeurADescendre=courant.text()
145        courant.setText("")
146        for i in range (self.NumLineEditEnCours+1, self.indexDernierLabel):
147              aDescendre=i+1
148              nomLineEdit=self.nomLine+str(aDescendre)
149              courant=getattr(self,nomLineEdit)
150              valeurAGarder=courant.text()
151              courant.setText(valeurADescendre)
152              valeurADescendre=valeurAGarder
153        self.changeValeur(changeDePlace=False)
154        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
155
156    def voisListePushed(self):
157        print "voisListePushed"
158        texteValeurs=""
159        for v in self.node.item.GetListeValeurs():
160           texteValeurs+=str(v)+", "
161        entete="Valeurs pour "+self.nom
162        f=ViewText(self,self.editor,entete,texteValeurs[0:-2])
163        f.show()
164
165
166    def selectInFile(self):
167        print "selectInFile"
168        init=QString( self.editor.CONFIGURATION.savedir)
169        fn = QFileDialog.getOpenFileName(self.node.appliEficas,
170                                          tr("Fichier de donnees"),
171                                          init,
172                                          tr('Tous les  Fichiers (*)',))
173        if fn == None : return
174        if fn == "" : return
175        ulfile = os.path.abspath(unicode(fn))
176        self.editor.CONFIGURATION.savedir=os.path.split(ulfile)[0]
177
178        from monSelectVal import MonSelectVal
179        MonSelectVal(file=fn,parent=self).show()
180
181