X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2FgereListe.py;h=5cd8e4b4ddc1832f181ce4144c37e06e7190e1c1;hb=108e744248ce24d85a96ab83969cd337acf78408;hp=519adf151149df9d15cbbf4cf5f44750326bef66;hpb=6b93dd9154f46226a66def0da861602cb791749d;p=tools%2Feficas.git diff --git a/InterfaceQT4/gereListe.py b/InterfaceQT4/gereListe.py index 519adf15..5cd8e4b4 100644 --- a/InterfaceQT4/gereListe.py +++ b/InterfaceQT4/gereListe.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2021 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 @@ -18,210 +18,324 @@ # 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 object +except : pass + +import types,os import traceback -from PyQt4 import * -from PyQt4.QtGui import * -from PyQt4.QtCore import * + +from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog, QMessageBox +from PyQt5.QtCore import QEvent, Qt, QTimer +from PyQt5.QtGui import QIcon, QPalette + from Extensions.i18n import tr -from monViewTexte import ViewText +from InterfaceQT4.monViewTexte import ViewText # ---------------------- # class LECustom(QLineEdit): # ---------------------- # - def __init__(self,parent,parentQt,i): + def __init__(self,parent,parentQt,i): """ Constructor """ QLineEdit.__init__(self,parent) + self.parentQt=parentQt self.num=i self.dansUnTuple=False + self.numDsLaListe=-1 + self.parentTuple=None + self.valeur=None + self.aEuLeFocus=True + + def focusInEvent(self,event): + #print ("dans focusInEvent de LECustom") + self.parentQt.aEuLeFocus=True + self.aEuLeFocus=True + self.parentQt.lineEditEnCours=self + self.parentQt.numLineEditEnCours=self.num + self.parentQt.textSelected=self.text() + self.setStyleSheet("border: 2px solid gray") + QLineEdit.focusInEvent(self,event) + + def focusOutEvent(self,event): + #print ('focusOutEvent', self.aEuLeFocus) + self.setStyleSheet("border: 0px") + if self.dansUnTuple : self.setStyleSheet("background:rgb(235,235,235); border: 0px;") + elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)") + else : self.setStyleSheet("background:rgb(235,235,235)") + if self.aEuLeFocus: + self.aEuLeFocus=False + self.litValeur() + if self.dansUnTuple : self.parentTuple.getValeur() + QLineEdit.focusOutEvent(self,event) + + + def litValeur(self): + #print ("dans litValeur de LECustom") + self.aEuLeFocus=False + val=str(self.text()) + if str(val)=="" or val==None : + self.valeur=None + return + try : + valeur=eval(val,{}) + except : + try : + d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) + valeur=eval(val,d) + except : + valeur=val + self.valeur=valeur + #print ('self.valeur', self.valeur) + + + def clean(self): + self.setText("") + + def getValeur(self): + #return self.text() + self.litValeur() + return self.valeur + + def setValeur(self,valeur): + self.setText(valeur) - def focusInEvent(self,event): - #print "dans focusInEvent de LECustom" - self.parentQt.LineEditEnCours=self - self.parentQt.NumLineEditEnCours=self.num - self.setStyleSheet("border: 2px solid gray") - QLineEdit.focusInEvent(self,event) - - def focusOutEvent(self,event): - #print "dans focusOutEvent de LECustom" - self.setStyleSheet("border: 0px") - if self.dansUnTuple : self.setStyleSheet("background:rgb(235,235,235); border: 0px;") - elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)") - else : self.setStyleSheet("background:rgb(235,235,235)") - QLineEdit.focusOutEvent(self,event) - def clean(self): - self.setText("") - - def getValeur(self): - return self.text() - - def setValeur(self,valeur): - self.setText(valeur) # --------------------------- # class LECustomTuple(LECustom): # --------------------------- # - def __init__(self,parent): - # index sera mis a jour par TupleCustom - parentQt=parent.parent().parent().parent() - LECustom. __init__(self,parent,parentQt,0) + def __init__(self,parent): + # index sera mis a jour par TupleCustom + parentQt=parent.parent().parent().parent() + LECustom. __init__(self,parent,parentQt,0) + #print (dir(self)) # ---------------------------- # class MonLabelListeClic(QLabel): # ---------------------------- # - def __init__(self,parent): + def __init__(self,parent): QLabel.__init__(self,parent) self.parent=parent - def event(self,event) : - if event.type() == QEvent.MouseButtonRelease: + def event(self,event) : + if event.type() == QEvent.MouseButtonRelease: self.texte=self.text() self.parent.traiteClicSurLabelListe(self.texte) - return QLabel.event(self,event) - - - + return QLabel.event(self,event) # ------------- # -class GereListe: +class GereListe(object): # ------------- # + def __init__(self): + self.connecterSignaux() + + def connecterSignaux(self): + if hasattr(self,'RBHaut'): + self.RBHaut.clicked.connect(self.hautPushed) + self.RBBas.clicked.connect(self.basPushed) + self.RBMoins.clicked.connect(self.moinsPushed) + self.RBPlus.clicked.connect(self.plusPushed) + self.RBVoisListe.clicked.connect(self.voisListePushed) + if hasattr(self,'PBAlpha'): + self.PBCata.clicked.connect(self.cataPushed) + self.PBAlpha.clicked.connect(self.alphaPushed) + self.PBFind.clicked.connect(self.findPushed) + self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed) + if hasattr(self, 'PBValideFeuille'): + self.PBValideFeuille.clicked.connect(self.changeValeur) + + def filtreListe(self): + l=[] + if self.filtre != "" : + for i in self.listeAAfficher : + if i.find(self.filtre) == 0 :l.append(i) + self.listeAAfficher=l + if self.alpha : self.listeAAfficher.sort() + + def LEFiltreReturnPressed(self): + self.filtre= self.LEFiltre.text() + self.prepareListeResultatFiltre() + + def findPushed(self): + self.filtre= self.LEFiltre.text() + self.prepareListeResultatFiltre() + + def alphaPushed(self): + #print "alphaPushed" ,self.alpha + if self.alpha == 1 : return + self.alpha=1 + self.prepareListeResultat() + + def cataPushed(self): + if self.alpha == 0 : return + self.alpha=0 + self.prepareListeResultat() + + def hautPushed(self): + #print ('hautPushed') + if self.numLineEditEnCours == 0 : return + if self.numLineEditEnCours == 1 : return + else : numEchange=self.numLineEditEnCours-1 + self.echange(self.numLineEditEnCours,numEchange) + self.lineEditEnCours.setFocus(True) + self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + + def basPushed(self): + #print ('hautPushed') + if self.numLineEditEnCours == 0 : return + if self.numLineEditEnCours == self.indexDernierLabel : return + else : numEchange=self.numLineEditEnCours+1 + self.echange(self.numLineEditEnCours,numEchange) + self.lineEditEnCours.setFocus(True) + self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + def echange(self,num1,num2): + # on donne le focus au a celui ou on a bouge + # par convention le 2 + #print ('echange') + nomLineEdit=self.nomLine+str(num1) + #print (nomLineEdit) + courant=getattr(self,nomLineEdit) + valeurAGarder=courant.text() + nomLineEdit2=self.nomLine+str(num2) + #print (nomLineEdit2) + courant2=getattr(self,nomLineEdit2) + courant.setText(courant2.text()) + courant2.setText(valeurAGarder) + # pour monWidgetCreeUserAssd + self.num1=num1 + self.num2=num2 + self.changeValeur(changeDePlace=False) + self.numLineEditEnCours=num2 + self.lineEditEnCours=courant2 + self.lineEditEnCours.setFocus(True) + + def moinsPushed(self): + # on supprime le dernier + #print ('moinsPushed') + if self.numLineEditEnCours == 0 : return + if self.indexDernierLabel == 0 : return + if self.numLineEditEnCours==self.indexDernierLabel : + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + courant.clean() + else : + for i in range (self.numLineEditEnCours, self.indexDernierLabel): + aRemonter=i+1 + nomLineEdit=self.nomLine+str(aRemonter) + courant=getattr(self,nomLineEdit) + valeurARemonter=courant.getValeur() + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if valeurARemonter != None : courant.setValeur(valeurARemonter) + else : courant.clean() + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + courant.clean() + self.changeValeur(changeDePlace=False,oblige=True) + self.setValide() + + def plusPushed(self): + #print ('plusPushed gereliste') + if self.indexDernierLabel == self.monSimpDef.max: + if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide() + else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red) + return + self.ajoutLineEdit() + self.descendLesLignes() + self.chercheLigneVide() + QTimer.singleShot(1, self.rendVisibleLigne) + + def chercheLigneVide(self): + #print ('chercheLigneVide') + for i in range(self.indexDernierLabel) : + nomLineEdit=self.nomLine+str(i+1) + courant=getattr(self,nomLineEdit) + valeur=courant.getValeur() + if valeur=="" or valeur == None : + courant.setFocus(True) + self.estVisible=courant + + def descendLesLignes(self): + #print ('descendLesLignes') + if self.numLineEditEnCours==self.indexDernierLabel : return + nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1) + courant=getattr(self,nomLineEdit) + valeurADescendre=courant.getValeur() + courant.clean() + for i in range (self.numLineEditEnCours+1, self.indexDernierLabel): + aDescendre=i+1 + nomLineEdit=self.nomLine+str(aDescendre) + courant=getattr(self,nomLineEdit) + valeurAGarder=courant.getValeur() + courant.setValeur(valeurADescendre) + valeurADescendre=valeurAGarder + self.changeValeur(changeDePlace=False) + if hasattr (self, 'lineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + def voisListePushed(self): + texteValeurs="" + for v in self.node.item.getListeValeurs(): + texteValeurs+=str(v)+", " + entete="Valeurs pour "+self.nom + f=ViewText(self,self.editor,entete,texteValeurs[0:-2]) + f.show() + + + def selectInFile(self): + init=str( self.editor.maConfiguration.savedir) + fn = QFileDialog.getOpenFileName(self.node.appliEficas, + tr("Fichier de donnees"), + init, + tr('Tous les Fichiers (*)',)) + fn=fn[0] + if fn == None : return + if fn == "" : return + ulfile = os.path.abspath(fn) + self.editor.maConfiguration.savedir=os.path.split(ulfile)[0] + + from .monSelectVal import MonSelectVal + MonSelectVal(file=fn,parent=self).show() + + def noircirResultatFiltre(self): + filtre=str(self.LEFiltre.text()) + for cb in self.listeCbRouge: + palette = QPalette(Qt.red) + palette.setColor(QPalette.WindowText,Qt.black) + cb.setPalette(palette) + t=cb.text() + cb.setText(t) + self.LEFiltre.setText("") + self.listeCbRouge = [] + - def __init__(self): - self.connecterSignaux() - - def connecterSignaux(self): - self.connect(self.RBHaut,SIGNAL("clicked()"),self.hautPushed) - self.connect(self.RBBas,SIGNAL("clicked()"),self.basPushed) - self.connect(self.RBMoins,SIGNAL("clicked()"),self.moinsPushed) - self.connect(self.RBPlus,SIGNAL("clicked()"),self.plusPushed) - self.connect(self.RBVoisListe,SIGNAL("clicked()"),self.voisListePushed) - - def hautPushed(self): - if self.NumLineEditEnCours == 1 : return - else : numEchange=self.NumLineEditEnCours-1 - self.echange(self.NumLineEditEnCours,numEchange) - self.LineEditEnCours.setFocus(True) - self.scrollArea.ensureWidgetVisible(self.LineEditEnCours) - - - def basPushed(self): - if self.NumLineEditEnCours == self.indexDernierLabel : return - else : numEchange=self.NumLineEditEnCours+1 - self.echange(self.NumLineEditEnCours,numEchange) - self.LineEditEnCours.setFocus(True) - self.scrollArea.ensureWidgetVisible(self.LineEditEnCours) - - def echange(self,num1,num2): - # on donne le focus au a celui ou on a bouge - # par convention le 2 - nomLineEdit=self.nomLine+str(num1) - #print nomLineEdit - courant=getattr(self,nomLineEdit) - valeurAGarder=courant.text() - nomLineEdit2=self.nomLine+str(num2) - #print nomLineEdit2 - courant2=getattr(self,nomLineEdit2) - courant.setText(courant2.text()) - courant2.setText(valeurAGarder) - self.changeValeur(changeDePlace=False) - self.NumLineEditEnCours=num2 - self.LineEditEnCours=courant2 - self.LineEditEnCours.setFocus(True) - - def moinsPushed(self): - # on supprime le dernier - if self.NumLineEditEnCours==self.indexDernierLabel : - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - courant=getattr(self,nomLineEdit) - courant.clean() - else : - for i in range (self.NumLineEditEnCours, self.indexDernierLabel): - aRemonter=i+1 - nomLineEdit=self.nomLine+str(aRemonter) - courant=getattr(self,nomLineEdit) - valeurARemonter=courant.getValeur() - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if valeurARemonter != None : courant.setValeur(valeurARemonter) - else : courant.clean() - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - courant=getattr(self,nomLineEdit) - courant.clean() - self.changeValeur(changeDePlace=False,oblige=True) - self.setValide() - - def plusPushed(self): - if self.indexDernierLabel == self.monSimpDef.max: - self.editor.affiche_infos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red) - return - self.ajoutLineEdit() - self.descendLesLignes() - - def descendLesLignes(self): - if self.NumLineEditEnCours==self.indexDernierLabel : return - nomLineEdit=self.nomLine+str(self.NumLineEditEnCours+1) - courant=getattr(self,nomLineEdit) - valeurADescendre=courant.getValeur() - courant.clean() - for i in range (self.NumLineEditEnCours+1, self.indexDernierLabel): - aDescendre=i+1 - nomLineEdit=self.nomLine+str(aDescendre) - courant=getattr(self,nomLineEdit) - valeurAGarder=courant.getValeur() - courant.setValeur(valeurADescendre) - valeurADescendre=valeurAGarder - self.changeValeur(changeDePlace=False) - self.scrollArea.ensureWidgetVisible(self.LineEditEnCours) - - def voisListePushed(self): - texteValeurs="" - for v in self.node.item.GetListeValeurs(): - texteValeurs+=str(v)+", " - entete="Valeurs pour "+self.nom - f=ViewText(self,self.editor,entete,texteValeurs[0:-2]) - f.show() - - - def selectInFile(self): - init=QString( self.editor.CONFIGURATION.savedir) - fn = QFileDialog.getOpenFileName(self.node.appliEficas, - tr("Fichier de donnees"), - init, - tr('Tous les Fichiers (*)',)) - if fn == None : return - if fn == "" : return - ulfile = os.path.abspath(unicode(fn)) - self.editor.CONFIGURATION.savedir=os.path.split(ulfile)[0] - - from monSelectVal import MonSelectVal - MonSelectVal(file=fn,parent=self).show() - - # ----------- # -class GerePlie: +class GerePlie(object): # ----------- # - def gereIconePlier(self): - repIcon=self.node.editor.appliEficas.repIcon - if not (self.editor.afficheListesPliees): - fichier=os.path.join(repIcon, 'empty.png') - icon = QIcon(fichier) - self.BFermeListe.setIcon(icon) - return - fichier=os.path.join(repIcon, 'minusnode.png') - icon = QIcon(fichier) - self.BFermeListe.setIcon(icon) - self.connect(self.BFermeListe,SIGNAL("clicked()"), self.selectWidgetPlie) - - def selectWidgetPlie(self): - self.editor.listeDesListesOuvertes.remove(self.node.item) - self.reaffichePourDeplier() - - - + def gereIconePlier(self): + if not(hasattr(self,'BFermeListe')) : return + self.editor.listeDesListesOuvertes.add(self.node.item) + repIcon=self.node.editor.appliEficas.repIcon + if not (self.editor.afficheListesPliees): + fichier=os.path.join(repIcon, 'empty.png') + icon = QIcon(fichier) + self.BFermeListe.setIcon(icon) + return + fichier=os.path.join(repIcon, 'minusnode.png') + icon = QIcon(fichier) + self.BFermeListe.setIcon(icon) + self.BFermeListe.clicked.connect( self.selectWidgetPlie) + + def selectWidgetPlie(self): + self.editor.listeDesListesOuvertes.remove(self.node.item) + self.reaffichePourDeplier()