Salome HOME
Modifications liees a MT
[tools/eficas.git] / InterfaceQT4 / gereListe.py
index c7b87989dce89340a5491fabcacee7ab77826a25..f3c2c6cb620caa80a6204903100f605c9a381051 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013   EDF R&D
+# Copyright (C) 2007-2017   EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 # Modules Python
-import string,types,os
+
+from __future__ import absolute_import
+try :
+   from builtins import str
+   from builtins import range
+   from builtins import object
+except : pass
+
+import types,os
 import traceback
 
-from determine import monEnvQT5
-if monEnvQT5:
-   from PyQt5.QtWidgets import QLineEdit, QLabel
-   from PyQt5.QtCore    import QEvent, Qt
-   from PyQt5.QtGui     import QIcon, QPalette
-else :
-   from PyQt4.QtGui import *
-   from PyQt4.QtCore import *
+
+from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog
+from PyQt5.QtCore    import QEvent, Qt, QTimer
+from PyQt5.QtGui     import QIcon, QPalette
 
 from Extensions.i18n import tr
-from monViewTexte   import ViewText
+from InterfaceQT4.monViewTexte   import ViewText
 
 
 # ---------------------- #
@@ -42,34 +46,68 @@ class LECustom(QLineEdit):
         Constructor
         """
         QLineEdit.__init__(self,parent)
+
         self.parentQt=parentQt
         self.num=i
         self.dansUnTuple=False
+        self.numDsLaListe=-1
+        self.parentTuple=None
+        self.valeur=None
 
  def focusInEvent(self,event):
-     #print "dans focusInEvent de LECustom"
+     #print ("dans focusInEvent de LECustom")
+     self.parentQt.aEuLeFocus=True
+     self.aEuLeFocus=True
      self.parentQt.LineEditEnCours=self
-     self.parentQt.NumLineEditEnCours=self.num
+     self.parentQt.numLineEditEnCours=self.num
+     self.parentQt.textSelected=self.text()
      self.setStyleSheet("border: 2px solid gray")
      QLineEdit.focusInEvent(self,event)
 
  def focusOutEvent(self,event):
-     #print "dans focusOutEvent de LECustom"
+     #print (self.aEuLeFocus)
      self.setStyleSheet("border: 0px")
      if self.dansUnTuple    : self.setStyleSheet("background:rgb(235,235,235); border: 0px;")
      elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)")
      else                   : self.setStyleSheet("background:rgb(235,235,235)")
+     if self.aEuLeFocus:
+       self.aEuLeFocus=False
+       self.litValeur()
+       if self.dansUnTuple : self.parentTuple.getValeur()
      QLineEdit.focusOutEvent(self,event)
 
+
+ def litValeur(self):
+     #print ("dans litValeur de LECustom")
+     self.aEuLeFocus=False
+     val=str(self.text())
+     if str(val)=="" or val==None :
+        self.valeur=None
+        return
+     try :
+       valeur=eval(val,{})
+     except :
+       try :
+          d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
+          valeur=eval(val,d)
+       except :
+          valeur=val
+     self.valeur=valeur
+     #print ('self.valeur', self.valeur)
+
+
  def clean(self):
      self.setText("")
 
  def getValeur(self):
-     return self.text()
+     #return self.text()
+     return self.valeur
 
  def setValeur(self,valeur):
      self.setText(valeur)
 
+
+
 # --------------------------- #
 class LECustomTuple(LECustom):
 # --------------------------- #
@@ -77,6 +115,7 @@ class LECustomTuple(LECustom):
    #  index sera mis a jour par TupleCustom
    parentQt=parent.parent().parent().parent()
    LECustom. __init__(self,parent,parentQt,0)
+   #print (dir(self))
 
 # ---------------------------- #
 class MonLabelListeClic(QLabel):
@@ -95,25 +134,12 @@ class MonLabelListeClic(QLabel):
 
 
 # ------------- #
-class GereListe:
+class GereListe(object):
 # ------------- #
 
    def __init__(self):
-       if monEnvQT5 :self.connecterSignaux()
-       else : self.connecterSignauxQT4()
+       self.connecterSignaux()
 
-   def connecterSignauxQT4(self):
-       if hasattr(self,'RBHaut'):
-          self.connect(self.RBHaut,SIGNAL("clicked()"),self.hautPushed)
-          self.connect(self.RBBas,SIGNAL("clicked()"),self.basPushed)
-          self.connect(self.RBMoins,SIGNAL("clicked()"),self.moinsPushed)
-          self.connect(self.RBPlus,SIGNAL("clicked()"),self.plusPushed)
-          self.connect(self.RBVoisListe,SIGNAL("clicked()"),self.voisListePushed)
-       if hasattr(self,'PBAlpha'):
-          self.connect(self.PBAlpha,SIGNAL("clicked()"),self.alphaPushed)
-          self.connect(self.PBCata,SIGNAL("clicked()"),self.cataPushed)
-          self.connect(self.PBFind,SIGNAL("clicked()"),self.findPushed)
-          self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEFiltreReturnPressed)
 
    def connecterSignaux(self):
        if hasattr(self,'RBHaut'):
@@ -127,6 +153,8 @@ class GereListe:
           self.PBAlpha.clicked.connect(self.alphaPushed)
           self.PBFind.clicked.connect(self.findPushed)
           self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed)
+       if hasattr(self, 'PBValideFeuille'):
+          self.PBValideFeuille.clicked.connect(self.changeValeur)
 
    def filtreListe(self):
        l=[]
@@ -135,7 +163,7 @@ class GereListe:
               if i.find(self.filtre) == 0 :l.append(i)
           self.listeAAfficher=l
        if self.alpha : self.listeAAfficher.sort()
-      
+
    def LEFiltreReturnPressed(self):
        self.filtre= self.LEFiltre.text()
        self.prepareListeResultatFiltre()
@@ -145,7 +173,7 @@ class GereListe:
        self.prepareListeResultatFiltre()
 
    def alphaPushed(self):
-       print "alphaPushed" ,self.alpha
+       #print "alphaPushed" ,self.alpha
        if self.alpha == 1 : return
        self.alpha=1
        self.prepareListeResultat()
@@ -156,17 +184,17 @@ class GereListe:
        self.prepareListeResultat()
 
    def hautPushed(self):
-       if self.NumLineEditEnCours == 1 : return
-       else : numEchange=self.NumLineEditEnCours-1
-       self.echange(self.NumLineEditEnCours,numEchange)
+       if self.numLineEditEnCours == 1 : return
+       else : numEchange=self.numLineEditEnCours-1
+       self.echange(self.numLineEditEnCours,numEchange)
        self.LineEditEnCours.setFocus(True)
        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
 
 
    def basPushed(self):
-       if self.NumLineEditEnCours == self.indexDernierLabel : return
-       else : numEchange=self.NumLineEditEnCours+1
-       self.echange(self.NumLineEditEnCours,numEchange)
+       if self.numLineEditEnCours == self.indexDernierLabel : return
+       else : numEchange=self.numLineEditEnCours+1
+       self.echange(self.numLineEditEnCours,numEchange)
        self.LineEditEnCours.setFocus(True)
        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
 
@@ -183,18 +211,20 @@ class GereListe:
        courant.setText(courant2.text())
        courant2.setText(valeurAGarder)
        self.changeValeur(changeDePlace=False)
-       self.NumLineEditEnCours=num2
+       self.numLineEditEnCours=num2
        self.LineEditEnCours=courant2
        self.LineEditEnCours.setFocus(True)
 
    def moinsPushed(self):
        # on supprime le dernier
-       if self.NumLineEditEnCours==self.indexDernierLabel : 
+       if self.numLineEditEnCours == 0 : return
+       if self.indexDernierLabel == 0 : return
+       if self.numLineEditEnCours==self.indexDernierLabel :
           nomLineEdit=self.nomLine+str(self.indexDernierLabel)
           courant=getattr(self,nomLineEdit)
           courant.clean()
        else :
-         for i in range (self.NumLineEditEnCours, self.indexDernierLabel):
+         for i in range (self.numLineEditEnCours, self.indexDernierLabel):
              aRemonter=i+1
              nomLineEdit=self.nomLine+str(aRemonter)
              courant=getattr(self,nomLineEdit)
@@ -212,26 +242,31 @@ class GereListe:
    def plusPushed(self):
        if self.indexDernierLabel == self.monSimpDef.max:
           if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide()
-          else : self.editor.affiche_infos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
+          else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
           return
        self.ajoutLineEdit()
        self.descendLesLignes()
+       self.chercheLigneVide()
+       QTimer.singleShot(1, self.rendVisibleLigne)
 
    def chercheLigneVide(self):
        for i in range(self.indexDernierLabel) :
           nomLineEdit=self.nomLine+str(i+1)
           courant=getattr(self,nomLineEdit)
           valeur=courant.getValeur()
-          if valeur=="" : courant.setFocus(7);return
+          if valeur=="" :
+             courant.setFocus(True)
+             self.estVisible=courant
+             return
 
 
    def descendLesLignes(self):
-       if self.NumLineEditEnCours==self.indexDernierLabel : return
-       nomLineEdit=self.nomLine+str(self.NumLineEditEnCours+1)
+       if self.numLineEditEnCours==self.indexDernierLabel : return
+       nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1)
        courant=getattr(self,nomLineEdit)
        valeurADescendre=courant.getValeur()
        courant.clean()
-       for i in range (self.NumLineEditEnCours+1, self.indexDernierLabel):
+       for i in range (self.numLineEditEnCours+1, self.indexDernierLabel):
              aDescendre=i+1
              nomLineEdit=self.nomLine+str(aDescendre)
              courant=getattr(self,nomLineEdit)
@@ -239,11 +274,11 @@ class GereListe:
              courant.setValeur(valeurADescendre)
              valeurADescendre=valeurAGarder
        self.changeValeur(changeDePlace=False)
-       self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+       if hasattr (self, 'LineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
 
    def voisListePushed(self):
        texteValeurs=""
-       for v in self.node.item.GetListeValeurs():
+       for v in self.node.item.getListeValeurs():
           texteValeurs+=str(v)+", "
        entete="Valeurs pour "+self.nom
        f=ViewText(self,self.editor,entete,texteValeurs[0:-2])
@@ -251,33 +286,34 @@ class GereListe:
 
 
    def selectInFile(self):
-       init=QString( self.editor.CONFIGURATION.savedir)
+       init=str( self.editor.maConfiguration.savedir)
        fn = QFileDialog.getOpenFileName(self.node.appliEficas,
                                          tr("Fichier de donnees"),
                                          init,
                                          tr('Tous les  Fichiers (*)',))
+       fn=fn[0]
        if fn == None : return
        if fn == "" : return
-       ulfile = os.path.abspath(unicode(fn))
-       self.editor.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+       ulfile = os.path.abspath(fn)
+       self.editor.maConfiguration.savedir=os.path.split(ulfile)[0]
 
-       from monSelectVal import MonSelectVal
+       from .monSelectVal import MonSelectVal
        MonSelectVal(file=fn,parent=self).show()
 
    def noircirResultatFiltre(self):
       filtre=str(self.LEFiltre.text())
       for cb in self.listeCbRouge:
           palette = QPalette(Qt.red)
-         palette.setColor(QPalette.WindowText,Qt.black)
-         cb.setPalette(palette)
+          palette.setColor(QPalette.WindowText,Qt.black)
+          cb.setPalette(palette)
           t=cb.text()
           cb.setText(t)
       self.LEFiltre.setText("")
       self.listeCbRouge = []
 
-  
+
 # ----------- #
-class GerePlie:
+class GerePlie(object):
 # ----------- #
 
    def gereIconePlier(self):
@@ -292,12 +328,8 @@ class GerePlie:
       fichier=os.path.join(repIcon, 'minusnode.png')
       icon = QIcon(fichier)
       self.BFermeListe.setIcon(icon)
-      if monEnvQT5 : self.BFermeListe.clicked.connect( self.selectWidgetPlie)
-      else : self.connect(self.BFermeListe,SIGNAL("clicked()"), self.selectWidgetPlie)
+      self.BFermeListe.clicked.connect( self.selectWidgetPlie)
 
    def selectWidgetPlie(self):
       self.editor.listeDesListesOuvertes.remove(self.node.item)
       self.reaffichePourDeplier()
-
-        
-