1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013 EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 import string,types,os
24 from determine import monEnvQT5
26 from PyQt5.QtWidgets import QCheckBox, QScrollBar, QFrame, QApplication
27 from PyQt5.QtGui import QPalette
28 from PyQt5.QtCore import Qt
30 from PyQt4.QtGui import *
31 from PyQt4.QtCore import *
33 from Extensions.i18n import tr
35 from feuille import Feuille
36 from desWidgetPlusieursInto import Ui_WidgetPlusieursInto
37 from politiquesValidation import PolitiquePlusieurs
38 from qtSaisie import SaisieValeur
39 from gereListe import GerePlie
40 from gereListe import GereListe
42 class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe):
44 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
45 print "MonWidgetPlusieursInto", nom, self
51 self.listeValeursCourantes=node.item.GetListeValeurs()
52 if self.listeValeursCourantes == None : self.listeValeursCourantes=[]
54 Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
55 GereListe.__init__(self)
57 self.parentQt.commandesLayout.insertWidget(-1,self)
58 if monEnvQT5 : self.CBCheck.stateChanged.connect(self.changeTout)
59 else : self.connect(self.CBCheck, SIGNAL('stateChanged(int)'),self.changeTout)
63 self.finCommentaireListe()
65 # try except si la liste des possibles est vide
68 self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
73 def changeTout(self,int):
74 if self.inhibe : return
76 if not(self.CBCheck.isChecked()) :
77 min,max = self.node.item.GetMinMax()
78 if max < len(self.listeAAfficher) :
79 commentaire=tr('impossible de tout selectionner : max =')+str(max)
80 self.editor.affiche_infos(commentaire,Qt.red)
83 for i in range(len(self.listeAAfficher)):
84 nomCB="lineEditVal"+str(i+1)
85 courant=getattr(self,nomCB)
86 courant.setChecked(True)
87 self.CBCheck.setChecked(False)
89 for i in range(len(self.listeAAfficher)):
90 nomCB="lineEditVal"+str(i+1)
91 courant=getattr(self,nomCB)
92 courant.setChecked(False)
93 self.CBCheck.setChecked(True)
98 self.listeValeursCourantes =self.node.item.get_valeur()
99 if self.listeValeursCourantes == None : self.listeValeursCourantes=[]
100 #print "ds set Valeur", self.listeValeursCourantes, self.node.item.get_valeur()
101 self.politique=PolitiquePlusieurs(self.node,self.editor)
102 self.vScrollBar = self.scrollArea.verticalScrollBar()
104 if hasattr(self.node.item.definition.validators,'set_MCSimp'):
105 obj=self.node.item.getObject()
106 self.node.item.definition.validators.set_MCSimp(obj)
107 if self.node.item.isvalid() == 0 :
109 for item in self.listeValeursCourantes:
110 if self.node.item.definition.validators.verif_item(item)==1:
112 self.listeAAfficher=self.node.item.get_liste_possible(liste)
114 self.listeAAfficher=self.node.item.get_liste_possible([])
116 self.listeAAfficher=self.node.item.get_liste_possible([])
119 for i in self.listeAAfficher: maListe.append(i)
120 if self.alpha==1 : maListe.sort()
121 if len(self.listeAAfficher)*20 > 400 : self.setMinimumHeight(400)
122 else : self.setMinimumHeight(len(self.listeAAfficher)*30)
125 self.PourEtreCoche=[]
126 if self.objSimp.wait_assd() :
127 self.listeAAfficher=self.node.item.get_sd_avant_du_bon_type()
128 for concept in self.listeValeursCourantes:
129 self.PourEtreCoche.append(concept.nom)
131 for val in self.listeValeursCourantes:
132 self.PourEtreCoche.append(val)
133 print self.PourEtreCoche
135 for i in range(1,len(maListe)+1): self.ajoutCB(i)
138 for i in range(len(maListe)):
139 nomCB="lineEditVal"+str(i+1)
140 courant=getattr(self,nomCB)
141 courant.setText(str(maListe[i]))
142 if maListe[i] in self.PourEtreCoche : courant.setChecked(True)
143 else : courant.setChecked(False)
145 if monEnvQT5 : courant.toggled.connect(self.changeValeur)
146 else : self.connect(courant,SIGNAL("toggled(bool)"),self.changeValeur)
149 self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum)
152 def ajoutCB(self,index,valeur=None):
153 nomCB="lineEditVal"+str(index)
154 if hasattr(self,nomCB) : return
155 nouveauCB = QCheckBox(self.scrollArea)
156 #self.CBLayout.addWidget(nouveauCB)
157 self.CBLayout.insertWidget(index-1,nouveauCB)
158 #QApplication.processEvents()
159 self.listeCB.append(nouveauCB)
160 nouveauCB.setText("")
161 if index % 2 == 1 : nouveauCB.setStyleSheet("background:rgb(210,210,210)")
162 else : nouveauCB.setStyleSheet("background:rgb(240,240,240)")
163 self.vScrollBar.triggerAction(QScrollBar.SliderToMaximum)
165 setattr(self,nomCB,nouveauCB)
168 def finCommentaire(self):
169 return self.finCommentaireListe()
171 def ajout1Valeur(self,valeur=None):
172 if valeur == None : return
173 liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
174 if validite == 0 : return
175 if liste ==[] : return
177 for valeur in self.listeValeursCourantes : listeVal.append(valeur)
178 validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,-1,listeVal)
179 if (comm2 != "" and comm != None) : return comm2
181 self.listeValeursCourantes=self.listeValeursCourantes+listeRetour
184 return(comm2+" "+comm)
188 def changeValeur(self):
189 if self.inhibe == True: return
190 self.noircirResultatFiltre()
191 self.listeValeursCourantesAvant=self.listeValeursCourantes
192 self.listeValeursCourantes = []
194 for i in range (1,len(self.listeAAfficher)+1):
195 nomLineEdit="lineEditVal"+str(i)
196 courant=getattr(self,nomLineEdit)
197 if not (courant.isChecked()):continue
198 valeur=courant.text()
199 if valeur != None and valeur != "" :
200 commentaire=self.ajout1Valeur(valeur)
201 if (commentaire != None ):
202 self.editor.affiche_infos(commentaire,Qt.red)
203 self.listeValeursCourantesAvant=self.listeValeursCourantes
206 min,max = self.node.item.GetMinMax()
207 if len(self.listeValeursCourantes) < min :
208 self.editor.affiche_infos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
209 elif len(self.listeValeursCourantes) > max :
210 self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
212 if self.listeValeursCourantes== [] : self.node.item.set_valeur(None)
213 else : self.node.item.set_valeur(self.listeValeursCourantes)
219 def prepareListeResultatFiltre(self):
220 filtre=str(self.LEFiltre.text())
221 for cb in self.listeCB:
223 if texte.find(filtre) == 0 :
224 palette = QPalette(Qt.red)
225 palette.setColor(QPalette.WindowText,Qt.red)
226 cb.setPalette(palette)
229 self.listeCbRouge.append(cb)
231 def prepareListeResultat(self):
236 for cb in self.listeCB :