# -*- 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
+from __future__ import absolute_import
+try :
+ from builtins import str
+ from builtins import range
+except : pass
+
+import types,os
# Modules Eficas
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
+from six.moves import range
+from PyQt5.QtWidgets import QCheckBox, QScrollBar, QFrame, QApplication, QLabel
+from PyQt5.QtWidgets import QSizePolicy,QSpacerItem
+from PyQt5.QtGui import QPalette, QFont
+from PyQt5.QtCore import Qt
+
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 GerePlie
+from InterfaceQT4.feuille import Feuille
+from desWidgetPlusieursInto import Ui_WidgetPlusieursInto
+from InterfaceQT4.politiquesValidation import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie import SaisieValeur
+from InterfaceQT4.gereListe import GerePlie
+from InterfaceQT4.gereListe import GereListe
-class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie):
+class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe):
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
- #print "MonWidgetPlusieursInto", nom, self
+
self.index=1
+ self.alpha=0
+ self.listeCB=[]
+ self.listeCbRouge=[]
+ self.listeValeursCourantes=node.item.getListeValeurs()
+ if self.listeValeursCourantes == None : self.listeValeursCourantes=[]
+
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ GereListe.__init__(self)
+
self.parentQt.commandesLayout.insertWidget(-1,self)
- #if len(self.listeValeursCourantes) == len(self.monSimpDef.into) : self.CBCheck.setChecked(False)
- #else : self.CBCheck.setChecked(True)
- self.connect(self.CBCheck, SIGNAL('stateChanged(int)'),self.change)
+ self.CBCheck.stateChanged.connect(self.changeTout)
+
self.gereIconePlier()
+ self.editor.listeDesListesOuvertes.add(self.node.item)
self.inhibe=False
+ #self.finCommentaireListe()
+
+ if self.listeAAfficher== None or self.listeAAfficher==[] :
+ spacerItem = QSpacerItem(30, 20, QSizePolicy.Fixed, QSizePolicy.Minimum)
+ self.CBLayout.addItem(spacerItem)
+ nouveauCommentaire=QLabel()
+ maPolice= QFont("Times", 16)
+ nouveauCommentaire.setFont(maPolice);
+ nouveauCommentaire.setText(tr('Pas de valeurs possibles'))
+ self.CBLayout.addWidget(nouveauCommentaire)
+ spacerItem2 = QSpacerItem(40, 70, QSizePolicy.Fixed, QSizePolicy.Minimum)
+ self.CBLayout.addItem(spacerItem2)
+
+ if len(self.listeAAfficher) < 30 and hasattr(self,'frameRecherche') : self.frameRecherche.close()
+ if len(self.listeAAfficher) == len(self.listeValeursCourantes) : self.CBCheck.setChecked(True)
# try except si la liste des possibles est vide
# prevoir qqchose
try :
pass
- def change(self,int):
- if self.inhibe:return
+ def changeTout(self,int):
+ #print ('changeTout')
+ if self.inhibe : return
self.inhibe=True
- if not(self.CBCheck.isChecked()) :
+ if not(self.CBCheck.isChecked()) :
+ min,max = self.node.item.getMinMax()
+ if max < len(self.listeAAfficher) :
+ commentaire=tr('impossible de tout selectionner : max =')+str(max)
+ self.editor.afficheInfos(commentaire,Qt.red)
+ self.inhibe=False
+ return
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
+ self.changeValeur()
def setValeurs(self):
- self.listeValeursCourantes=self.node.item.GetListeValeurs()
+ #print ('setValeurs')
+ self.listeValeursCourantes =self.node.item.getValeur()
+ if self.listeValeursCourantes == None : self.listeValeursCourantes=[]
+ #print "ds set Valeur", self.listeValeursCourantes, self.node.item.getValeur()
+ self.politique=PolitiquePlusieurs(self.node,self.editor)
+ self.vScrollBar = self.scrollArea.verticalScrollBar()
+
if hasattr(self.node.item.definition.validators,'set_MCSimp'):
obj=self.node.item.getObject()
self.node.item.definition.validators.set_MCSimp(obj)
- if self.node.item.isvalid() == 0 :
+ if self.node.item.isValid() == 0 :
liste=[]
for item in self.listeValeursCourantes:
- if self.node.item.definition.validators.verif_item(item)==1:
+ if self.node.item.definition.validators.verifItem(item)==1:
liste.append(item)
- self.listeAAfficher=self.node.item.get_liste_possible(liste)
- #print self.listeAAfficher
- else:
- self.listeAAfficher=self.node.item.get_liste_possible([])
+ self.listeAAfficher=self.node.item.getListePossible(liste)
+ else:
+ self.listeAAfficher=self.node.item.getListePossible([])
else :
- 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(len(self.listeAAfficher)):
+ self.listeAAfficher=self.node.item.getListePossible([])
+
+ if self.node.item.hasIntoSug() : self.listeAAfficher=self.node.item.getListePossibleAvecSug([])
+
+
+ if self.objSimp.waitAssd() :
+ self.listeAAfficher=self.node.item.getSdAvantDuBonType()
+ if self.listeAAfficher== None or self.listeAAfficher==[] : self.listeAAfficher=[]
+
+ #if len(self.listeAAfficher)*20 > 400 : self.setMinimumHeight(400)
+ #else : self.setMinimumHeight(len(self.listeAAfficher)*30)
+
+ self.PourEtreCoche=[]
+ if self.objSimp.waitAssd() :
+ for concept in self.listeValeursCourantes: self.PourEtreCoche.append(concept.nom)
+ else :
+ for val in self.listeValeursCourantes: self.PourEtreCoche.append(val)
+
+ maListe=[]
+ for i in self.listeAAfficher: maListe.append(i)
+ if self.alpha==1 : maListe.sort()
+ for i in range(1,len(maListe)+1): self.ajoutCB(i)
+
+ self.inhibe=True
+ for i in range(len(maListe)):
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.listeAAfficher[i] in self.PourEtreCoche :
- courant.setChecked(True)
- self.connect(courant,SIGNAL("toggled(bool)"),self.changeValeur)
+ courant.setText(str(maListe[i]))
+ if maListe[i] in self.PourEtreCoche : courant.setChecked(True)
+ else : courant.setChecked(False)
+
+ courant.toggled.connect(self.changeValeur)
+ self.inhibe=False
+
self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum)
-
+
def ajoutCB(self,index,valeur=None):
- #print "ajoutCB ", index
+ #print ('ajoutCB')
nomCB="lineEditVal"+str(index)
if hasattr(self,nomCB) : return
nouveauCB = QCheckBox(self.scrollArea)
- self.CBLayout.addWidget(nouveauCB)
- qApp.processEvents()
+ self.CBLayout.insertWidget(index-1,nouveauCB)
+ self.listeCB.append(nouveauCB)
nouveauCB.setText("")
if index % 2 == 1 : nouveauCB.setStyleSheet("background:rgb(210,210,210)")
else : nouveauCB.setStyleSheet("background:rgb(240,240,240)")
self.vScrollBar.triggerAction(QScrollBar.SliderToMaximum)
nouveauCB.setFocus()
setattr(self,nomCB,nouveauCB)
-
-
- 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 ")+'\n'
- else :
- commentaire=tr("Entrez entre ")+str(mc.min)+tr(" et ")+str(mc.max)+tr(" valeurs ")+'\n'
- else :
- if mc.min == mc.max:
- commentaire=tr("Entrez ")+str(mc.min)+" "+tr(d_aides[type])+'\n'
- else :
- commentaire=tr("Entrez entre ")+str(mc.min)+(" et ")+str(mc.max) +" " +tr(d_aides[type])+'\n'
- aideval=self.node.item.aide()
- commentaire=commentaire + " " + QString.toUtf8(QString(aideval))
- return str(commentaire)
+
+
def ajout1Valeur(self,valeur=None):
- #print "________________"
- #print self
- #print self.node
- #print self.node.item
+ #print ('ajout1Valeur')
if valeur == None : return
liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
if validite == 0 : return
if liste ==[] : return
listeVal=[]
for valeur in self.listeValeursCourantes : listeVal.append(valeur)
- validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,-1,listeVal)
+ validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal)
if (comm2 != "" and comm != None) : return comm2
- if validite :
+ if validite :
self.listeValeursCourantes=self.listeValeursCourantes+listeRetour
- if len(self.listeValeursCourantes) > self.monSimpDef.min :
- self.node.item.set_valeur(self.listeValeursCourantes)
return None
else :
return(comm2+" "+comm)
-
+
def changeValeur(self):
+ #print ('changeValeur')
+ if self.inhibe == True: return
+ if hasattr(self,'LEFiltre') :self.noircirResultatFiltre()
self.listeValeursCourantesAvant=self.listeValeursCourantes
self.listeValeursCourantes = []
- #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()
- if valeur != None and valeur != "" :
+ if valeur != None and valeur != "" :
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.editor.afficheInfos(commentaire,Qt.red)
+ self.listeValeursCourantesAvant=self.listeValeursCourantes
+ self.setValeurs()
+
+ min,max = self.node.item.getMinMax()
+ if len(self.listeValeursCourantes) < min :
+ self.editor.afficheInfos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
+ elif len(self.listeValeursCourantes) > max :
+ self.editor.afficheInfos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
+
+ if self.listeValeursCourantes== [] : self.node.item.setValeur([])
+ else : self.node.item.setValeur(self.listeValeursCourantes)
+
+ # Exception pour PSEN
+ if min==0 and self.listeValeursCourantes== []: self.node.item.setValeur([])
self.setValide()
- self.reaffiche()
+
+
+ def prepareListeResultatFiltre(self):
+ #print ('prepareListeResultatFiltre')
+ filtre=str(self.LEFiltre.text())
+ for cb in self.listeCB:
+ texte=cb.text()
+ if texte.find(filtre) == 0 :
+ palette = QPalette(Qt.red)
+ palette.setColor(QPalette.WindowText,Qt.red)
+ cb.setPalette(palette)
+ t=cb.text()
+ cb.setText(t)
+ self.listeCbRouge.append(cb)
+
+ def prepareListeResultat(self):
+ #print ('prepareListeResultat')
+ self.clearAll()
+ self.setValeurs()
+
+ def clearAll(self):
+ #print ('clearAll')
+ for cb in self.listeCB :
+ cb.setText("")