Salome HOME
sauve du 9 mai
[tools/eficas.git] / InterfaceQT4 / monWidgetPlusieursInto.py
index 9a4d1aa0c7a959b3b990446f9992dee017a71082..ca31a0b546e82acb51ae53a9564546c1cf35ffaa 100644 (file)
 import string,types,os
 
 # Modules Eficas
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
+from determine import monEnvQT5
+if monEnvQT5:
+    from PyQt5.QtWidgets  import QCheckBox, QScrollBar, QFrame, QApplication
+    from PyQt5.QtCore import Qt
+else :
+    from PyQt4.QtGui  import *
+    from PyQt4.QtCore import *
+
 from Extensions.i18n import tr
 
 from feuille                import Feuille
 from desWidgetPlusieursInto import Ui_WidgetPlusieursInto 
 from politiquesValidation   import PolitiquePlusieurs
 from qtSaisie               import SaisieValeur
-from gereListe              import GereListe
+from gereListe              import GerePlie
 
-class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
+class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie):
 
-  def __init__(self,node,monSimpDef,nom,objSimp,parentQt):
-        print "MonWidgetPlusieursInto", nom
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        #print "MonWidgetPlusieursInto", nom, self
         self.index=1
-        Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt)
+        Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         self.listeValeursCourantes=self.node.item.GetListeValeurs()
         self.parentQt.commandesLayout.insertWidget(-1,self)
+        #if len(self.listeValeursCourantes) == len(self.monSimpDef.into) : self.CBCheck.setChecked(False)
+        #else : self.CBCheck.setChecked(True)
+        if monEnvQT5 : self.CBCheck.stateChanged.connect(self.change)
+        else         : self.connect(self.CBCheck, SIGNAL('stateChanged(int)'),self.change)
+        self.gereIconePlier()
+        self.inhibe=False
+        self.finCommentaireListe()
+        # try except si la liste des possibles est vide
+        # prevoir qqchose
+        try :
+          self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+        except :
+          pass
+
 
+  def change(self,int):
+       if self.inhibe:return
+       self.inhibe=True
+       if not(self.CBCheck.isChecked()) : 
+          for i in range(len(self.listeAAfficher)):
+              nomCB="lineEditVal"+str(i+1)
+              courant=getattr(self,nomCB)
+              courant.setChecked(True)
+          self.CBCheck.setChecked(False)
+       else :
+          min,max = self.node.item.GetMinMax()
+          for i in range(len(self.listeAAfficher)):
+              nomCB="lineEditVal"+str(i+1)
+              courant=getattr(self,nomCB)
+              courant.setChecked(False)
+          self.CBCheck.setChecked(True)
+       self.inhibe=False
 
   def setValeurs(self):
        self.listeValeursCourantes=self.node.item.GetListeValeurs()
@@ -52,31 +89,44 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
                    if self.node.item.definition.validators.verif_item(item)==1:
                       liste.append(item)
                self.listeAAfficher=self.node.item.get_liste_possible(liste)
-               print self.listeAAfficher
+               #print self.listeAAfficher
+            else: 
+               self.listeAAfficher=self.node.item.get_liste_possible([])
        else :
-               self.listeAAfficher=self.monSimpDef.into
+               self.listeAAfficher=self.node.item.get_liste_possible([])
+
+       self.PourEtreCoche=self.listeValeursCourantes
+       if self.objSimp.wait_assd() : 
+          self.listeAAfficher=self.node.item.get_sd_avant_du_bon_type()
+          self.PourEtreCoche=[]
+          for concept in self.listeValeursCourantes:
+              self.PourEtreCoche.append(concept.nom)
+       if len(self.listeAAfficher)*20 > 400 : self.setMinimumHeight(400)
+       else : self.setMinimumHeight(len(self.listeAAfficher)*30)
+       self.adjustSize()
        self.vScrollBar = self.scrollArea.verticalScrollBar()
        self.politique=PolitiquePlusieurs(self.node,self.editor)
        self.indexListe=1
-       for i in range(1,len(self.listeAAfficher)+1):
-           self.ajoutCB(i)
+       for i in range(1,len(self.listeAAfficher)+1): self.ajoutCB(i)
        for i in range(len(self.listeAAfficher)):
-           nomCB="labelVal"+str(i+1)
+           nomCB="lineEditVal"+str(i+1)
            courant=getattr(self,nomCB)
            courant.setText(str(self.listeAAfficher[i]))
-           if self.monSimpDef.into[i] in self.listeValeursCourantes : 
+           #if self.monSimpDef.into[i] in self.listeValeursCourantes : 
+           if self.listeAAfficher[i] in self.PourEtreCoche : 
               courant.setChecked(True)
-           self.connect(courant,SIGNAL("toggled(bool)"),self.changeValeur)
+           if monEnvQT5 : courant.toggled.connect(self.changeValeur)
+           else :         self.connect(courant,SIGNAL("toggled(bool)"),self.changeValeur)
        self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum)
        
 
   def ajoutCB(self,index,valeur=None):
-      nomCB="labelVal"+str(index)
-      if hasattr(self,nomCB) : 
-         return
+      #print "ajoutCB ", index
+      nomCB="lineEditVal"+str(index)
+      if hasattr(self,nomCB) : return
       nouveauCB = QCheckBox(self.scrollArea)
       self.CBLayout.addWidget(nouveauCB)
-      qApp.processEvents()
+      QApplication.processEvents()
       nouveauCB.setText("")
       if index % 2 == 1 : nouveauCB.setStyleSheet("background:rgb(210,210,210)")
       else :                       nouveauCB.setStyleSheet("background:rgb(240,240,240)")
@@ -86,32 +136,13 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
       
 
   def finCommentaire(self):
-        commentaire=""
-        mc = self.node.item.get_definition()
-        d_aides = { 'TXM' : 'chaines de caracteres',
-                  'R'   : 'reels',
-                  'I'   : 'entiers',
-                  'C'   : 'complexes'}
-        type = mc.type[0]
-        if not d_aides.has_key(type) :
-           if mc.min == mc.max:
-               commentaire=tr("Entrez ")+str(mc.min)+tr(" valeurs ")
-           else :
-               commentaire=tr("Entrez entre ")+str(mc.min)+tr(" et ")+str(mc.max)+tr(" valeurs ")
-        else :
-           if mc.min == mc.max:
-               commentaire=tr("Entrez ")+str(mc.min)+" "+tr(d_aides[type])
-           else :
-               commentaire=tr("Entrez entre ")+str(mc.min)+(" et  ")+str(mc.max) +" " +tr(d_aides[type])
-        aideval=self.node.item.aide()
-        commentaire=commentaire + "   " + QString.toUtf8(QString(aideval))
-        return str(commentaire)
+        return self.finCommentaireListe() 
 
   def ajout1Valeur(self,valeur=None):
-        print "________________"
-        print self
-        print self.node
-        print self.node.item
+        #print "________________"
+        #print self
+        #print self.node
+        #print self.node.item
         if valeur == None : return
         liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
         if validite == 0 : return
@@ -130,10 +161,12 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
         
 
 
-  def changeValeur(self,etat):
+  def changeValeur(self):
+      self.listeValeursCourantesAvant=self.listeValeursCourantes
       self.listeValeursCourantes = []
-      for i in range (1,len(self.monSimpDef.into)+1):
-          nomLineEdit="labelVal"+str(i)
+      #print "changeValeur ____________" , self.monSimpDef.into, len(self.monSimpDef.into)
+      for i in range (1,len(self.listeAAfficher)+1):
+          nomLineEdit="lineEditVal"+str(i)
           courant=getattr(self,nomLineEdit)
           if not (courant.isChecked()):continue
           valeur=courant.text()
@@ -141,19 +174,18 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
              commentaire=self.ajout1Valeur(valeur)
              if (commentaire != None ):
                  self.editor.affiche_infos(commentaire,Qt.red)
-                 courant.setText("")
-      if self.listeValeursCourantes == [] : 
-         self.setValide()
-         return
       min,max = self.node.item.GetMinMax()
-      print (self.listeValeursCourantes),min
       if len(self.listeValeursCourantes) < min : 
-                 self.editor.affiche_infos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
+         self.editor.affiche_infos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
       elif len(self.listeValeursCourantes) > max : 
-                 self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
+         self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
+      if self.listeValeursCourantes== [] : self.listeValeursCourantes=None
       self.node.item.set_valeur(self.listeValeursCourantes)
+      if self.listeValeursCourantes != None and (len(self.listeValeursCourantes) != len(self.monSimpDef.into)) : 
+         self.inhibe=True
+         self.CBCheck.setChecked(True)
+         self.inhibe=False
       self.setValide()
+      self.reaffiche()
 
-          
 
-# Avertissement quand on quitte le widget