X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2FmonWidgetPlusieursBase.py;h=a43800ab0e7f70d6f47c04509c1b5efe33514fe1;hb=80eb29926b88137b9f0f19175c0d0c52d7dcc206;hp=05d653e132a98bd1bc5ae4a9ddd1bb1713541919;hpb=2c5a8689b9c6cc46804fd268d416d1de2777059e;p=tools%2Feficas.git diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index 05d653e1..a43800ab 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -32,20 +32,38 @@ from qtSaisie import SaisieValeur from gereListe import GereListe from gereListe import LECustom +dicoLongueur={2:95,3:125,4:154,5:183,6:210} +hauteurMax=253 + class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "MonWidgetPlusieursBase", nom - self.index=1 + self.nomLine="lineEditVal" + self.inInit=True self.indexDernierLabel=0 - Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt) + self.NumLineEditEnCours=0 + self.listeAffichageWidget=[] + Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) GereListe.__init__(self) + self.connect(self.BSelectFichier,SIGNAL("clicked()"), self.selectInFile) + self.listeValeursCourantes=self.node.item.GetListeValeurs() - self.parentQt.commandesLayout.insertWidget(1,self) + if self.monSimpDef.max != "**" and self.monSimpDef.max < 7: + hauteur=dicoLongueur[self.monSimpDef.max] + self.resize(self.width(),hauteur) + self.setMinimumHeight(hauteur) + if self.monSimpDef.max == self.monSimpDef.min : self.setMaximumHeight(hauteur) + else : + self.resize(self.width(),hauteurMax) + self.setMinimumHeight(hauteurMax) + 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 @@ -54,12 +72,12 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): for i in range(1,aConstruire): self.ajoutLineEdit() qApp.processEvents() - self.scrollArea.ensureWidgetVisible(self.labelVal1) + self.scrollArea.ensureWidgetVisible(self.lineEditVal1) self.listeValeursCourantes=self.node.item.GetListeValeurs() index=1 for valeur in self.listeValeursCourantes : val=self.politique.GetValeurTexte(valeur) - nomLineEdit="labelVal"+str(index) + nomLineEdit="lineEditVal"+str(index) if hasattr(self,nomLineEdit) : courant=getattr(self,nomLineEdit) courant.setText(str(val)) @@ -72,9 +90,9 @@ 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="labelVal"+str(self.indexDernierLabel) + nomLineEdit="lineEditVal"+str(self.indexDernierLabel) if hasattr(self,nomLineEdit) : self.indexDernierLabel=self.indexDernierLabel-1 return @@ -85,15 +103,25 @@ 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): + def rendVisibleLigne(self): qApp.processEvents() self.estVisible.setFocus() self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) @@ -134,19 +162,44 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): self.listeValeursCourantes=self.listeValeursCourantes+listeRetour if len(self.listeValeursCourantes) > self.monSimpDef.min : self.node.item.set_valeur(self.listeValeursCourantes) + self.reaffiche() return None else : return(comm2+" "+comm) + 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 == QString("") : + 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): - print 'ds chge valeur' + def changeValeur(self,changeDePlace=True,oblige=False): donneFocus=None derniereValeur=None self.listeValeursCourantes = [] for i in range (1, self.indexDernierLabel+1): - nomLineEdit="labelVal"+str(i) + nomLineEdit="lineEditVal"+str(i) courant=getattr(self,nomLineEdit) valeur=courant.text() if valeur != None and valeur != "" : @@ -155,8 +208,12 @@ 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="labelVal"+str(self.indexDernierLabel) + nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel) dernier=getattr(self,nomDernierLineEdit) derniereValeur=dernier.text() if changeDePlace: @@ -165,15 +222,17 @@ 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.scrollArea.setToolTip('nb max de valeurs atteint') - 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()