X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2FmonWidgetPlusieursBase.py;h=43e416aa965d84ce1a86c1a28b378f47870e7dd0;hb=39b7b166eb606b80c9ac427811651b20db79bde2;hp=e1e6c6ec4ba560724484a7b23e71dffb064320bf;hpb=97c204c49d4c9e2785779957f56d9b13a1e93181;p=tools%2Feficas.git diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index e1e6c6ec..43e416aa 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -18,11 +18,18 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # Modules Python -import string,types,os +import string,types,os,sys + +from determine import monEnvQT5 +if monEnvQT5: + from PyQt5.QtGui import QIcon + from PyQt5.QtWidgets import QApplication + from PyQt5.QtCore import QTimer, QSize, Qt +else : + from PyQt4.QtGui import * + from PyQt4.QtCore import * # Modules Eficas -from PyQt4.QtGui import * -from PyQt4.QtCore import * from Extensions.i18n import tr from feuille import Feuille @@ -30,19 +37,40 @@ from desWidgetPlusieursBase import Ui_WidgetPlusieursBase from politiquesValidation import PolitiquePlusieurs from qtSaisie import SaisieValeur from gereListe import GereListe +from gereListe import GerePlie from gereListe import LECustom dicoLongueur={2:95,3:125,4:154,5:183,6:210} hauteurMax=253 -class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): +class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - #print "MonWidgetPlusieursBase", nom - self.index=1 + print "MonWidgetPlusieursBase", nom + self.nomLine="lineEditVal" + self.inInit=True self.indexDernierLabel=0 + self.NumLineEditEnCours=0 + self.listeAffichageWidget=[] Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) GereListe.__init__(self) + self.gereIconePlier() + self.connect(self.BSelectFichier,SIGNAL("clicked()"), self.selectInFile) + + if sys.platform[0:5]!="linux": + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'arrow_up.png') + icon = QIcon(fichier) + self.RBHaut.setIcon(icon) + self.RBHaut.setIconSize(QSize(32, 32)) + fichier2=os.path.join(repIcon, 'arrow_down.png') + icon2 = QIcon(fichier2) + self.RBBas.setIcon(icon2) + fichier3=os.path.join(repIcon, 'file-explorer.png') + icon3 = QIcon(fichier2) + self.BSelectFichier.setIcon(icon3) + self.BSelectFichier.setIconSize(QSize(32, 32)) + self.listeValeursCourantes=self.node.item.GetListeValeurs() if self.monSimpDef.max != "**" and self.monSimpDef.max < 7: hauteur=dicoLongueur[self.monSimpDef.max] @@ -52,12 +80,14 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): else : self.resize(self.width(),hauteurMax) self.setMinimumHeight(hauteurMax) - self.parentQt.commandesLayout.insertWidget(1,self) + self.finCommentaireListe() + self.parentQt.commandesLayout.insertWidget(-1,self) self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + self.AAfficher=self.lineEditVal1 + self.inInit=False def setValeurs(self): - #print "je passe dans SetValeur" self.vScrollBar = self.scrollArea.verticalScrollBar() self.politique=PolitiquePlusieurs(self.node,self.editor) # construction du min de valeur a entrer @@ -65,7 +95,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): else : aConstruire=self.monSimpDef.max for i in range(1,aConstruire): self.ajoutLineEdit() - qApp.processEvents() + QApplication.processEvents() self.scrollArea.ensureWidgetVisible(self.lineEditVal1) self.listeValeursCourantes=self.node.item.GetListeValeurs() index=1 @@ -84,7 +114,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): #self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum) - def ajoutLineEdit(self,valeur=None): + def ajoutLineEdit(self,valeur=None,): self.indexDernierLabel=self.indexDernierLabel+1 nomLineEdit="lineEditVal"+str(self.indexDernierLabel) if hasattr(self,nomLineEdit) : @@ -97,41 +127,32 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): else : nouveauLE.setStyleSheet("background:rgb(235,235,235)") nouveauLE.setFrame(False) self.connect(nouveauLE,SIGNAL("returnPressed()"),self.changeValeur) - nouveauLE.setFocus() setattr(self,nomLineEdit,nouveauLE) + self.listeAffichageWidget.append(nouveauLE) + self.etablitOrdre() if valeur != None : nouveauLE.setText(str(valeur)) # deux lignes pour que le ensureVisible fonctionne self.estVisible=nouveauLE - QTimer.singleShot(1, self.rendVisible) + if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) + #if donneLeFocus==True : nouveauLE.setFocus() + + def etablitOrdre(self): + i=0 + while(i +1 < len(self.listeAffichageWidget)): + self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus) + self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) + i=i+1 + # si on boucle on perd l'ordre - def rendVisible(self): - qApp.processEvents() + def rendVisibleLigne(self): + QApplication.processEvents() self.estVisible.setFocus() self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) 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 ") - else : - commentaire=tr("Entrez entre ")+str(mc.min)+tr(" et ")+str(mc.max)+tr(" valeurs ") - else : - if mc.min == mc.max: - commentaire=tr("Entrez ")+str(mc.min)+" "+tr(d_aides[type]) - else : - commentaire=tr("Entrez entre ")+str(mc.min)+(" et ")+str(mc.max) +" " +tr(d_aides[type]) - aideval=self.node.item.aide() - commentaire=commentaire + " " + QString.toUtf8(QString(aideval)) - return str(commentaire) + return self.finCommentaireListe() def ajout1Valeur(self,valeur=None): if valeur == None : return @@ -151,10 +172,34 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): else : return(comm2+" "+comm) - - - def changeValeur(self,changeDePlace=True): - print 'ds chge valeur' + def reaffiche(self): + # A priori, on ne fait rien + pass + + def ajoutNValeur(self,liste) : + for val in liste : + i=1 + ajoute=False + while i < self.indexDernierLabel+1: + nomLineEdit="lineEditVal"+str(i) + courant=getattr(self,nomLineEdit) + valeur=courant.text() + if valeur == None or valeur == "" : + ajoute=True + courant.setText(str(val)) + commentaire=self.ajout1Valeur(val) + if (commentaire != None ): + self.editor.affiche_infos(commentaire,Qt.red) + courant.setText("") + break + else : + i=i+1 + if ajoute : continue + self.ajoutLineEdit(valeur=str(val)) + self.changeValeur() + + + def changeValeur(self,changeDePlace=True,oblige=False): donneFocus=None derniereValeur=None self.listeValeursCourantes = [] @@ -168,6 +213,10 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): self.editor.affiche_infos(commentaire,Qt.red) courant.setText("") donneFocus=courant + self.reaffiche() + return + else : + self.editor.affiche_infos("") elif donneFocus==None : donneFocus=courant nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel) dernier=getattr(self,nomDernierLineEdit) @@ -178,13 +227,15 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): self.scrollArea.ensureWidgetVisible(donneFocus) elif self.indexDernierLabel < self.monSimpDef.max : self.ajoutLineEdit() - if self.indexDernierLabel == self.monSimpDef.max : - self.editor.affiche_infos('nb max de valeurs atteint') if self.listeValeursCourantes == [] : return min,max = self.node.item.GetMinMax() + if len(self.listeValeursCourantes) < self.monSimpDef.min : + self.editor.affiche_infos(tr('nb min de valeurs : ')+str( self.monSimpDef.min)) + if len(self.listeValeursCourantes) < min and oblige==True: return if len(self.listeValeursCourantes) > max : return - if len(self.listeValeursCourantes) < min : return self.node.item.set_valeur(self.listeValeursCourantes) + if len(self.listeValeursCourantes) == self.monSimpDef.max : + self.editor.affiche_infos(tr('nb max de valeurs atteint')) self.setValide() self.reaffiche()