Salome HOME
suite chgt copyright et menage
[tools/eficas.git] / InterfaceQT4 / monWidgetPlusieursPlie.py
index 69d1a9313b4fbbb53b1f5d1c433c2b594b4c2fa1..295a025b1b9baf5423b226ea8d54b362e9505ed5 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,sys
+from __future__ import absolute_import
+try :
+   from builtins import str
+except : pass
+
+import types,os,sys,re
+
+from PyQt5.QtWidgets  import   QFrame
+from PyQt5.QtCore import QTimer, QSize, Qt
+from PyQt5.QtGui  import QIcon, QBrush, QColor
 
-# Modules Eficas
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
 from Extensions.i18n import tr
 
-from feuille                import Feuille
+from .feuille                import Feuille
 from desWidgetPlusieursPlie import Ui_WidgetPlusieursPlie 
 
+from .politiquesValidation   import PolitiquePlusieurs
+from .qtSaisie               import SaisieValeur
+
+pattern_blanc = re.compile(r"^\s*$")
+
 
 class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
-        #print "MonWidgetPlusieursBase", nom
+        #print ("MonWidgetPlusieursBase", nom)
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         self.parentQt.commandesLayout.insertWidget(-1,self)
         self.AAfficher=self.lineEditVal
         self.maCommande.listeAffichageWidget.append(self.lineEditVal)
-        
-        repIcon=self.node.editor.appliEficas.repIcon
-        fichier=os.path.join(repIcon, 'plusnode.png')
-        icon = QIcon(fichier)
-        self.BVisuListe.setIcon(icon)
-
-        self.connect(self.BVisuListe,SIGNAL("clicked()"), self.selectWidgetDeplie)
+        if self.node.item.has_into() : 
+           self.lineEditVal.setReadOnly(True)
+           self.lineEditVal.setStyleSheet("background:rgb(235,235,235);\n")
+           self.lineEditVal.setToolTip("Ensemble discret de valeurs possibles, pas de Saisie Manuelle")
+           #self.lineEditVal.setPen(QtGui.QColor(0,0,200))
+          #b=QBrush(Qt.DiagCrossPattern)
+           #b.setColor(QColor(255,100,0))
+           #self.lineEditVal.setBrush(b)
+        else :
+           self.lineEditVal.returnPressed.connect(self.valeurEntree)
+        self.BVisuListe.clicked.connect(self.selectWidgetDeplie)
 
 
   def setValeurs(self):
        self.listeValeursCourantes=self.node.item.GetListeValeurs()
        if self.listeValeursCourantes != []  :  self.lineEditVal.setText(str(self.listeValeursCourantes))
        else : self.lineEditVal.setText("")
-       self.lineEditVal.setReadOnly(True)
+       self.politique=PolitiquePlusieurs(self.node,self.editor)
        return
 
   def selectWidgetDeplie(self):
       self.editor.listeDesListesOuvertes.add(self.node.item)
       self.reaffichePourDeplier()
 
+  def valeurEntree(self):
+      valeurTexte=self.lineEditVal.text()
+      print (valeurTexte[0])
+      print (valeurTexte[-1])
+      if valeurTexte[0] == '[' or valeurTexte[0] == '('   : valeurTexte = valeurTexte[1:]
+      if valeurTexte[-1] == ']' or valeurTexte[-1] == ')' : valeurTexte = valeurTexte[:-1]
+      print (valeurTexte)
+      listeValeursBrutes=valeurTexte.split(',')
+      if listeValeursBrutes == [] or listeValeursBrutes == None : 
+         self.lineEditVal.setText(str(self.listeValeursCourantes))
+         return
+      listeValeur=[]
+      for v in listeValeursBrutes: 
+          if v == None or pattern_blanc.match(v) : 
+             self.editor.affiche_infos(str(listeValeur)+'   Valeurs saisies incorrectes',Qt.red)
+             return
+          liste,validite=SaisieValeur.TraiteLEValeur(self,str(v))
+          if not validite : 
+             self.editor.affiche_infos(str(listeValeur) +'   Valeurs saisies incorrectes',Qt.red)
+             return
+          listeValeur.append(liste[0])
+      validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(listeValeur,-1,[])
+      if validite : 
+         self.node.item.set_valeur(listeValeur)
+         self.node.item.isvalid()
+         self.setValeurs()
+      else :
+         self.editor.affiche_infos(str(listeValeur) + '   ' +comm,Qt.red)
+         self.lineEditVal.setText('')
        
+class MonWidgetPlusieursPlieASSD (MonWidgetPlusieursPlie):
+
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        MonWidgetPlusieursPlie.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+        self.lineEditVal.setReadOnly(True)
+
+  def setValeurs(self):
+       self.listeValeursCourantes=self.node.item.GetListeValeurs()
+       self.politique=PolitiquePlusieurs(self.node,self.editor)
+       if self.listeValeursCourantes == []  :  self.lineEditVal.setText(""); return
+       txt="["
+       for elt in self.listeValeursCourantes :
+            txt= txt+ (str(elt)) + ","
+       txt= txt + "]"
+       self.lineEditVal.setText(txt)
+
+  def valeurEntree(self):
+      pass