Salome HOME
modifs pour Telemac
[tools/eficas.git] / InterfaceQT4 / monFonctionPanel.py
index 0909093ff16900967784bc02df0385d97cbbe1aa..31cc2245d3f91cc9032b173b6ee965476a612b7f 100644 (file)
 # -*- coding: utf-8 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
+# Copyright (C) 2007-2017   EDF R&D
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
 #
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# 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
+except : pass
+
+import types,os
+from six.moves import range
+from PyQt5.QtCore import  Qt
+
 
 # Modules Eficas
-from qtSaisie      import SaisieValeur
+from .qtSaisie      import SaisieValeur
 from monPlusieursBasePanel import MonPlusieursBasePanel
 
-from PyQt4.QtGui  import *
-from PyQt4.QtCore import *
+from Extensions.i18n import tr
 
 # Import des panels
 
 class MonFonctionPanel(MonPlusieursBasePanel):
-  """
-  Classe définissant le panel associé aux mots-clés qui demandent
-  à l'utilisateur de choisir une seule valeur parmi une liste de valeurs
-  discrètes
-  """
+#  Classe definissant le panel associee aux mots-cles qui demandent
+#  a l'utilisateur de choisir une seule valeur parmi une liste de valeurs
+#  discretes
   def __init__(self,node, parent = None,name = None,fl = 0):
         #print "MonFonctionPanel"
         self.node=node
-        self.SetNbValeurs()
+        self.setNbValeurs()
         MonPlusieursBasePanel.__init__(self,node,parent,name,fl)
 
-  def SetNbValeurs(self):
+  def setNbValeurs(self):
         self.nbValeurs = 1
-        if self.node.item.wait_tuple()== 1 :
+        if self.node.item.waitTuple()== 1 :
            for a in self.node.item.definition.type :
                try :
                    self.nbValeurs = a.ntuple
                    break
                except :
                    pass
-        genea=self.node.item.get_genealogie()
-        if "VALE" in genea:
-            self.nbValeurs=2
-        if "VALE_C" in genea:
-            self.nbValeurs=3
+        genea=self.node.item.getGenealogie()
+        self.nbValeursASaisir=self.nbValeurs
+        if "VALE" in genea: self.nbValeurs=2
+        if "VALE_C" in genea: self.nbValeurs=3
 
 
-  def DecoupeListeValeurs(self,liste):
+  def decoupeListeValeurs(self,liste):
         #decoupe la liste des valeurs en n ( les x puis les y)
         l_valeurs=[]
-        if (len(liste)% self.nbValeurs != 0):
-            message="La cardinalité n'est pas correcte, la dernière valeur est ignorée"
-            #self.Commentaire.setText(QString(commentaire)) 
-            self.editor.affiche_infos(message)
+        if ((len(liste)% self.nbValeursASaisir != 0 and (len(liste)% self.nbValeurs))):
+            message=tr("La cardinalite n'est pas correcte, la derniere valeur est ignoree")
+            self.editor.afficheInfos(message,Qt.red)
         i=0
-        while ( i < (len(liste) - self.nbValeurs + 1)) :
-            t=tuple(liste[i:i+self.nbValeurs])
+        while ( i < len(liste) ) :
+            try :
+              t=tuple(liste[i:i+self.nbValeurs])
+              i=i+self.nbValeurs
+            except:
+              t=tuple(liste[i:len(liste)])
             l_valeurs.append(t)
-            i=i+self.nbValeurs
         return l_valeurs
 
-  def BuildLBValeurs(self):
+  def buildLBValeurs(self,listeValeurs=None):
         self.LBValeurs.clear()
-        listeValeurs=self.node.item.GetListeValeurs()
-        if self.node.item.wait_tuple()== 1 :
+        if listeValeurs== None :
+           listeValeurs=self.node.item.getListeValeurs()
+        if self.node.item.waitTuple()== 1 :
              listeATraiter=listeValeurs
+              for valeur in listeATraiter:
+                  str_valeur=str(valeur)
+                  self.LBValeurs.addItem(str_valeur)
         else : 
-              listeATraiter=self.DecoupeListeValeurs(listeValeurs)
-        for valeur in listeATraiter:
-            str_valeur=str(valeur)
-            self.LBValeurs.addItem(str_valeur)
+             for valeur in self.decoupeListeValeurs(listeValeurs):
+                   if type(valeur) == tuple:
+                       TupleEnTexte="("
+                       for val in valeur :
+                           TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", "
+                       TupleEnTexte = TupleEnTexte[0:-2] +")"
+                       self.LBValeurs.addItem(TupleEnTexte)
+                   else :
+                       self.LBValeurs.addItem(str(valeur))
+
 
-  def  Ajout1Valeur(self,liste=[]):
-        # Pour être appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
+  def  ajout1Valeur(self,liste=[]):
+        # Pour etre appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
+        validite=1
         if liste == [] :
-           if self.node.item.wait_tuple()== 1 :
+           if self.node.item.waitTuple()== 1 :
               liste=SaisieValeur.TraiteLEValeurTuple(self)
               if liste == [''] : return
-              validite=1
            else :
               liste,validite=SaisieValeur.TraiteLEValeur(self)
-        else :
-           validite=1
-        if validite == 0 : return
+              if validite == 0 : return
         if liste ==[]    : return
 
-        if len(liste) != self.nbValeurs :
-            commentaire  = QString(str(liste)
-            commentaire += QString(" n est pas un tuple de ") 
-            commentaire += QString(str(self.nbValeurs)
-            commentaire += QString(" valeurs")
-           self.LEValeur.setText(QString(str(liste)))
-            self.editor.affiche_infos(commentaire)
+        if (self.node.item.waitTuple()== 1 and len(liste) != self.nbValeurs):
+            commentaire  = str(liste
+            commentaire += tr(" n est pas un tuple de ") 
+            commentaire += str(self.nbValeursASaisir
+            commentaire += tr(" valeurs")
+           self.LEValeur.setText(str(liste))
+            self.editor.afficheInfos(commentaire,Qt.red)
             return
 
-        if self.node.item.wait_tuple()== 1 :
+        if self.node.item.waitTuple()== 1 :
               liste2=tuple(liste)
               liste=liste2
+
         index=self.LBValeurs.currentRow()
         if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )):
            index=0
         else :
            index=self.LBValeurs.currentRow() + 1
         indexListe=index*self.nbValeurs
-        if index == 0 : 
-           indexListe=len(self.listeValeursCourantes)
+        if index == 0 : indexListe=len(self.listeValeursCourantes)
+
         listeVal=[]
         for valeur in self.listeValeursCourantes :
                 listeVal.append(valeur)
-        if self.node.item.wait_tuple()== 1 :
+        if self.node.item.waitTuple()== 1 :
              indexListe = index
-             validite,comm,comm2,listeRetour=self.politique.AjoutTuple(liste,index,listeVal)
+             validite,comm,comm2,listeRetour=self.politique.ajoutTuple(liste,index,listeVal)
         else :
-             validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
-        self.Commentaire.setText(comm2)
+             validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,index,listeVal)
+        self.Commentaire.setText(tr(comm2))
         if not validite :
-                self.editor.affiche_infos(comm)
+                self.editor.afficheInfos(comm,Qt.red)
         else:
-           self.LEValeur.setText(QString(""))
+           self.LEValeur.setText("")
            l1=self.listeValeursCourantes[:indexListe]
            l3=self.listeValeursCourantes[indexListe:]
-           if self.node.item.wait_tuple()== 1 :
+           if self.node.item.waitTuple()== 1 :
              listeATraiter=listeRetour
            else : 
-              listeATraiter=self.DecoupeListeValeurs(listeRetour)
+              listeATraiter=self.decoupeListeValeurs(listeRetour)
            for valeur in  listeATraiter :
-               str_valeur=str(valeur)
+               if type(valeur) == tuple:
+                  TupleEnTexte="("
+                  for val in valeur :
+                      TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", "
+                  str_valeur = TupleEnTexte[0:-2] +")"
+               else :
+                  str_valeur=str(valeur)
                self.LBValeurs.insertItem(index,str_valeur)
                item=self.LBValeurs.item(index)
                item.setSelected(1)
                self.LBValeurs.setCurrentItem(item)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
+           self.buildLBValeurs(self.listeValeursCourantes)
 
 
-  def AjoutNValeur(self,liste) :
+  def ajoutNValeur(self,liste) :
         if len(liste)%self.nbValeurs != 0 :
            texte="Nombre de valeur incorrecte"
            #self.Commentaire.setText(texte)
-           self.editor.affiche_infos(texte)
+           self.editor.afficheInfos(texte,Qt.red)
            return
-        listeDecoupee=self.DecoupeListeValeurs(liste)
+        listeDecoupee=self.decoupeListeValeurs(liste)
         for vals in listeDecoupee :
-            self.Ajout1Valeur(vals)
+            self.ajout1Valeur(vals)
            
-  def Sup1Valeur(self):
+  def sup1Valeur(self):
         index=self.LBValeurs.currentRow()
         if index == None : return
-        self.LBValeurs.takeItem(index)
+        removed_item = self.LBValeurs.takeItem(index)
+        text = removed_item.text()[1:-1] # Remove the parenthesis
+        self.LEValeur.setText(text)
         listeVal=[]
         indexInterdit=[]
         for i in range(self.nbValeurs):
             indexAOter=index*self.nbValeurs + i
             indexInterdit.append(indexAOter)
-        if self.node.item.wait_tuple()== 1 :
+        if self.node.item.waitTuple()== 1 :
            indexInterdit=[index]
 
         i=0