Salome HOME
gestion des liste et bugs
[tools/eficas.git] / InterfaceQT4 / gereListe.py
index 518b24e6d8368d936f143fe360c6560afdb6079f..f08adac3b21b98ee0d86001a12781016aed31d9a 100644 (file)
 # 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 PyQt4 import *
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
+
+import six
+from six.moves import range
+from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog
+from PyQt5.QtCore    import QEvent, Qt
+from PyQt5.QtGui     import QIcon, QPalette
+
 from Extensions.i18n import tr
-from monViewTexte   import ViewText
+from InterfaceQT4.monViewTexte   import ViewText
 
 
 # ---------------------- #
@@ -36,23 +48,31 @@ class LECustom(QLineEdit):
         Constructor
         """
         QLineEdit.__init__(self,parent)
+        
         self.parentQt=parentQt
         self.num=i
         self.dansUnTuple=False
+        self.numDsLaListe=-1
 
  def focusInEvent(self,event):
      #print "dans focusInEvent de LECustom"
      self.parentQt.LineEditEnCours=self
      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"
      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 isinstance(self,LECustomTuple)  and  not self.tupleCustomParent.inFocusOutEvent:
+         self.tupleCustomParent.inFocusOutEvent=True
+         self.tupleCustomParent.valueChange()
+         self.tupleCustomParent.inFocusOutEvent=False
      QLineEdit.focusOutEvent(self,event)
 
  def clean(self):
@@ -64,6 +84,8 @@ class LECustom(QLineEdit):
  def setValeur(self,valeur):
      self.setText(valeur)
 
+
+
 # --------------------------- #
 class LECustomTuple(LECustom):
 # --------------------------- #
@@ -71,6 +93,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):
@@ -89,18 +112,64 @@ class MonLabelListeClic(QLabel):
 
 
 # ------------- #
-class GereListe:
+class GereListe(object):
 # ------------- #
 
    def __init__(self):
        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):
-       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,'RBHaut'):
+          self.RBHaut.clicked.connect(self.hautPushed)
+          self.RBBas.clicked.connect(self.basPushed)
+          self.RBMoins.clicked.connect(self.moinsPushed)
+          self.RBPlus.clicked.connect(self.plusPushed)
+          self.RBVoisListe.clicked.connect(self.voisListePushed)
+       if hasattr(self,'PBAlpha'):
+          self.PBCata.clicked.connect(self.cataPushed)
+          self.PBAlpha.clicked.connect(self.alphaPushed)
+          self.PBFind.clicked.connect(self.findPushed)
+          self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed)
+
+   def filtreListe(self):
+       l=[]
+       if self.filtre != "" :
+          for i in self.listeAAfficher :
+              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()
+
+   def findPushed(self):
+       self.filtre= self.LEFiltre.text()
+       self.prepareListeResultatFiltre()
+
+   def alphaPushed(self):
+       #print "alphaPushed" ,self.alpha
+       if self.alpha == 1 : return
+       self.alpha=1
+       self.prepareListeResultat()
+
+   def cataPushed(self):
+       if self.alpha == 0 : return
+       self.alpha=0
+       self.prepareListeResultat()
 
    def hautPushed(self):
        if self.NumLineEditEnCours == 1 : return
@@ -136,6 +205,7 @@ class GereListe:
 
    def moinsPushed(self):
        # on supprime le dernier
+       if self.NumLineEditEnCours == 0 : return
        if self.NumLineEditEnCours==self.indexDernierLabel : 
           nomLineEdit=self.nomLine+str(self.indexDernierLabel)
           courant=getattr(self,nomLineEdit)
@@ -144,12 +214,9 @@ class GereListe:
          for i in range (self.NumLineEditEnCours, self.indexDernierLabel):
              aRemonter=i+1
              nomLineEdit=self.nomLine+str(aRemonter)
-             print nomLineEdit
              courant=getattr(self,nomLineEdit)
              valeurARemonter=courant.getValeur()
-             print valeurARemonter
              nomLineEdit=self.nomLine+str(i)
-             print nomLineEdit
              courant=getattr(self,nomLineEdit)
              if valeurARemonter != None : courant.setValeur(valeurARemonter)
              else : courant.clean()
@@ -161,11 +228,20 @@ class GereListe:
 
    def plusPushed(self):
        if self.indexDernierLabel == self.monSimpDef.max:
-          self.editor.affiche_infos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
+          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)
           return
        self.ajoutLineEdit()
        self.descendLesLignes()
 
+   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
+
+
    def descendLesLignes(self):
        if self.NumLineEditEnCours==self.indexDernierLabel : return
        nomLineEdit=self.nomLine+str(self.NumLineEditEnCours+1)
@@ -183,7 +259,6 @@ class GereListe:
        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
 
    def voisListePushed(self):
-       print "voisListePushed"
        texteValeurs=""
        for v in self.node.item.GetListeValeurs():
           texteValeurs+=str(v)+", "
@@ -193,18 +268,53 @@ class GereListe:
 
 
    def selectInFile(self):
-       print "selectInFile"
-       init=QString( self.editor.CONFIGURATION.savedir)
+       init=str( self.editor.CONFIGURATION.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))
+       ulfile = os.path.abspath(six.text_type(fn))
        self.editor.CONFIGURATION.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)
+          t=cb.text()
+          cb.setText(t)
+      self.LEFiltre.setText("")
+      self.listeCbRouge = []
+
   
+# ----------- #
+class GerePlie(object):
+# ----------- #
+
+   def gereIconePlier(self):
+      if not(hasattr(self,'BFermeListe')) : return
+      self.editor.listeDesListesOuvertes.add(self.node.item)
+      repIcon=self.node.editor.appliEficas.repIcon
+      if not (self.editor.afficheListesPliees):
+         fichier=os.path.join(repIcon, 'empty.png')
+         icon = QIcon(fichier)
+         self.BFermeListe.setIcon(icon)
+         return
+      fichier=os.path.join(repIcon, 'minusnode.png')
+      icon = QIcon(fichier)
+      self.BFermeListe.setIcon(icon)
+      self.BFermeListe.clicked.connect( self.selectWidgetPlie)
+
+   def selectWidgetPlie(self):
+      self.editor.listeDesListesOuvertes.remove(self.node.item)
+      self.reaffichePourDeplier()
+
+        
+