Salome HOME
sauve du 9 mai
[tools/eficas.git] / InterfaceQT4 / monWidgetPlusieursInto.py
index a4f3e39ff85ce3a95bac51d8ff977aa397928d56..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,commande):
         #print "MonWidgetPlusieursInto", nom, self
@@ -39,17 +45,41 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         self.listeValeursCourantes=self.node.item.GetListeValeurs()
         self.parentQt.commandesLayout.insertWidget(-1,self)
-        self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+        #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()
-       #print "dans setValeurs"
-       #print self.node.item.definition.validators
-       #print self.monSimpDef.into
-       #if len(self.monSimpDef.into)*20 > 400 : self.setMinimumHeight(400)
-       #else : self.setMinimumHeight(len(self.monSimpDef.into)*30)
-       #self.adjustSize()
        if hasattr(self.node.item.definition.validators,'set_MCSimp'):
             obj=self.node.item.getObject()
             self.node.item.definition.validators.set_MCSimp(obj)
@@ -63,33 +93,40 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
             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="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):
       #print "ajoutCB ", index
       nomCB="lineEditVal"+str(index)
-      if hasattr(self,nomCB) : 
-         return
+      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)")
@@ -99,26 +136,7 @@ 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 "________________"
@@ -146,7 +164,7 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
   def changeValeur(self):
       self.listeValeursCourantesAvant=self.listeValeursCourantes
       self.listeValeursCourantes = []
-      print "changeValeur ____________" , self.monSimpDef.into, len(self.monSimpDef.into)
+      #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)
@@ -156,15 +174,17 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
              commentaire=self.ajout1Valeur(valeur)
              if (commentaire != None ):
                  self.editor.affiche_infos(commentaire,Qt.red)
-                 courant.setText("")
       min,max = self.node.item.GetMinMax()
       if len(self.listeValeursCourantes) < min : 
          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)
-      else :
-         self.editor.affiche_infos(tr(""))
+      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()