From: pascale.noyret
suggestion : ')+str(self.monSimpDef.get_sug())+"
" if hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip(suggere) + return + if self.monSimpDef.defaut != None and hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip('default value : '+str(self.monSimpDef.defaut)) def setCommentaire(self): c = self.debutToolTip @@ -257,21 +265,8 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel): self.editor.affiche_commentaire(aide) def formate(self,t): - if t.find('_')==0 : - newText=t[0:19]+'\n'+t[19:] - else: - listeNom=t.split('_') - newTexte="" - ligne="" - for n in listeNom: - if len(ligne)+len(n) < 25 : - newTexte=newTexte+"_"+n - ligne+="_"+n - else : - newTexte=newTexte+"\n_"+n - ligne="" - #newTexte=t[0:t.rfind('_')]+'\n'+ t[t.rfind('_'):] - newText=newTexte[1:] + l=len(t)//2 + newText=t[0:l]+"_\n"+t[l:] return newText diff --git a/InterfaceQT4/gereIcones.py b/InterfaceQT4/gereIcones.py index 8ba9f3c5..c36a07c2 100644 --- a/InterfaceQT4/gereIcones.py +++ b/InterfaceQT4/gereIcones.py @@ -189,12 +189,10 @@ class FacultatifOuOptionnel(object): def setValide(self): #print " c est le moment de gerer le passage au suivant" if not(hasattr (self,'RBValide')) : return - icon = QIcon() - if self.node.item.object.isvalid() : - icon=QIcon(self.repIcon+"/ast-green-ball.png") - else : - icon=QIcon(self.repIcon+"/ast-red-ball.png") - self.RBValide.setIcon(icon) + couleur=self.node.item.GetIconName() + if not self.editor.configuration.differencieSiDefaut and couleur == 'ast-green-dark-ball' : couleur="ast-green-ball" + monIcone = QIcon(self.repIcon+"/" + couleur + ".png") + self.RBValide.setIcon(monIcone) # il faut chercher la bonne fenetre def rendVisible(self): diff --git a/InterfaceQT4/monBoutonValide.py b/InterfaceQT4/monBoutonValide.py index dee284e4..555f9ccd 100644 --- a/InterfaceQT4/monBoutonValide.py +++ b/InterfaceQT4/monBoutonValide.py @@ -46,6 +46,10 @@ class MonBoutonValide(QToolButton) : #print "dans mousePressEvent" if self.parent.node.item.object.isvalid() : myToolTip=tr("objet valide") + if self.parent.editor.configuration.differencieSiDefaut : + if self.parent.node.item.object.valeur != self.parent.node.item.object.definition.defaut : + myToolTip+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut) + QToolTip.showText(event.globalPos(),myToolTip ) else : t="" diff --git a/InterfaceQT4/monSelectVal.py b/InterfaceQT4/monSelectVal.py index 4db3af09..0b05a85f 100644 --- a/InterfaceQT4/monSelectVal.py +++ b/InterfaceQT4/monSelectVal.py @@ -28,7 +28,7 @@ except : pass from desSelectVal import Ui_DSelVal from Extensions.i18n import tr -from PyQt5.QtWidgets import QDialog, QFileDialog +from PyQt5.QtWidgets import QDialog, QFileDialog ,QMessageBox from PyQt5.QtCore import QTimer, Qt from PyQt5.QtGui import QPalette @@ -84,9 +84,14 @@ class MonSelectVal(DSelVal): def readVal(self): if self.file == "" : return - f = open(self.file, "r") - self.texte = f.read() - f.close() + try : + f = open(self.file, "r") + self.texte = f.read() + f.close() + except : + QMessageBox.warning( self,tr( "Fichier Indisponible"),tr( "Lecture impossible")) + self.texte="" + return def initVal(self): self.TBtext.clear() diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index 67cbf912..dc5bc28e 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -191,28 +191,46 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) # 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) + def ajoutNValeur(self,liste): + #---------------------------- + # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur + # car alors le temps de verification devient prohibitif reconstructu=ion et verification a + # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs + + + listeFormatee=list(liste) + + min,max=self.node.item.GetMinMax() + if self.objSimp.valeur == None : listeComplete=listeFormatee + else : listeComplete =self.objSimp.valeur + listeFormatee + + if len(listeComplete) > max : + texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint") + self.editor.affiche_infos(texte,Qt.red) + return + + validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete) + if not validite : + self.editor.affiche_infos(texte,Qt.red) + return + + # on calcule le dernier lineedit rempli avant de changer la valeur + if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur) + else : indexDernierRempli=0 + + self.politique.recordValeur(listeComplete) + + indexDernierRempli=0 + while ( indexDernierRempli < len(liste) ) : + texte=liste[indexDernierRempli] + if indexDernierRempli < self.indexDernierLabel: + nomLineEdit="lineEditVal"+str(indexDernierRempli+1) 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() - + courant.setText(str(texte)) + else : + self.ajoutLineEdit(texte) + indexDernierRempli = indexDernierRempli + 1 + def changeValeur(self,changeDePlace=True,oblige=False): donneFocus=None diff --git a/InterfaceQT4/monWidgetPlusieursTuple.py b/InterfaceQT4/monWidgetPlusieursTuple.py index defe4c4c..92c7ce14 100644 --- a/InterfaceQT4/monWidgetPlusieursTuple.py +++ b/InterfaceQT4/monWidgetPlusieursTuple.py @@ -44,8 +44,12 @@ from Tuple2 import Ui_Tuple2 from Tuple3 import Ui_Tuple3 +#-------------------------- class TupleCustom(object) : +#-------------------------- + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------------------------------------- QWidget.__init__(self,parent) self.setupUi(self) self.tailleTuple=tailleTuple @@ -67,8 +71,9 @@ class TupleCustom(object) : def valueChange(self): + #---------------------- + listeVal=[] - for i in range(self.tailleTuple): nomLE="lineEditVal_"+str(i+1) courant=getattr(self,nomLE) @@ -77,6 +82,7 @@ class TupleCustom(object) : if str(val)=="" or val==None : if not self.inFocusOutEvent : courant.setFocus() return + try : valeur=eval(val,{}) except : @@ -91,6 +97,8 @@ class TupleCustom(object) : def setValeur(self,value): + #---------------------- + listeVal=[] valeurNulle=True for i in range(self.tailleTuple): @@ -119,15 +127,19 @@ class TupleCustom(object) : else : self.valeur=listeVal def getValeur(self): + #---------------------- return self.valeur def text(self): + #-------------- return self.valeur def setText(self,value): + #----------------------- self.setValeur(value) def clean(self): + #------------------- self.valeur=None for i in range(self.tailleTuple): nomLE="lineEditVal_"+str(i+1) @@ -135,23 +147,35 @@ class TupleCustom(object) : courant.setText("") def finCommentaire(self): + #------------------- return self.finCommentaireListe() +#------------------------------------------------- class TupleCustom2(QWidget,Ui_Tuple2,TupleCustom): +#------------------------------------------------- + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) +#------------------------------------------------- class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom): +#------------------------------------------------- + def __init__(self,tailleTuple,parent,parentQt,index): + #----------------------------------------------------- TupleCustom. __init__(self,tailleTuple,parent,parentQt,index) -# ---------------------------- # +# -------------------------------------------- # class MonWidgetPlusieursTuple(Feuille,GereListe): +# -------------------------------------------- # def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + #----------------------------------------------------- + self.indexDernierLabel=0 self.nomLine="TupleVal" self.listeAffichageWidget=[] @@ -160,6 +184,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): self.finCommentaireListe() self.politique=PolitiquePlusieurs(self.node,self.editor) self.parentQt.commandesLayout.insertWidget(-1,self) + if sys.platform[0:5]!="linux": repIcon=self.node.editor.appliEficas.repIcon fichier=os.path.join(repIcon, 'arrow_up.png') @@ -179,6 +204,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): def ajoutLineEdit(self,valeur=None,inInit=False): + #------------------------------------------------ self.indexDernierLabel=self.indexDernierLabel+1 nomLineEdit=self.nomLine+str(self.indexDernierLabel) if hasattr(self,nomLineEdit) : @@ -195,6 +221,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): self.listeAffichageWidget.append(nouveauLE.lineEditVal_1) self.listeAffichageWidget.append(nouveauLE.lineEditVal_2) if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3) + self.etablitOrdre() # deux lignes pour que le ensureVisible fonctionne @@ -202,6 +229,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): if inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) def etablitOrdre(self): + # --------------------- i=0 while(i +1 < len(self.listeAffichageWidget)): self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus) @@ -210,6 +238,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): def setValeurs(self): + # --------------------- self.RBListePush() valeurs=self.node.item.get_valeur() min,max=self.node.item.GetMinMax() @@ -226,16 +255,18 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): for i in range(len(valeurs),aCreer) : self.ajoutLineEdit(inInit=True) def rendVisibleLigne(self): + # ---------..-------------- QApplication.processEvents() self.estVisible.setFocus(True) self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) def changeValeur(self,changeDePlace=False,oblige=True): + # ----------------------------------------------------- #Pour compatibilite signature + aLeFocus=self.focusWidget() listeComplete=[] - libre=False for i in range(self.indexDernierLabel) : nom=self.nomLine+str(i+1) @@ -269,40 +300,64 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): pass def ajoutNValeur(self,liste): + #---------------------------- + # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur + # car alors le temps de verification devient prohibitif reconstructu=ion et verification a + # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs + if len(liste)%self.nbValeurs != 0 : texte="Nombre incorrect de valeurs" self.editor.affiche_infos(tr(texte),Qt.red) + return + i=0 + longueur=len(liste)//self.nbValeurs + increment=self.nbValeurs + listeFormatee=[liste[k*increment:(k+1)*increment] for k in range(longueur)] + listeFormatee=tuple(listeFormatee) + min,max=self.node.item.GetMinMax() - if self.objSimp.valeur == None : l = len(liste) and self.objSimp.valeur - else : l = len(liste)+len(self.objSimp.valeur) - if l > max : + if self.objSimp.valeur == None : listeComplete=listeFormatee + else : listeComplete =self.objSimp.valeur + listeFormatee + + if len(listeComplete) > max : texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint") self.editor.affiche_infos(texte,Qt.red) return + + validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete) + if not validite : + self.editor.affiche_infos(texte,Qt.red) + return + + # on calcule le dernier lineedit rempli avant de changer la valeur + if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur) + else : indexDernierRempli=0 + + self.politique.recordValeur(listeComplete) + while ( i < len(liste) ) : - if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur) - else : indexDernierRempli=0 try : t=tuple(liste[i:i+self.nbValeurs]) - i=i+self.nbValeurs except: t=tuple(liste[i:len(liste)]) + i=i+self.nbValeurs if indexDernierRempli < self.indexDernierLabel: nomLineEdit=self.nomLine+str(indexDernierRempli+1) LEARemplir=getattr(self,nomLineEdit) LEARemplir.lineEditVal_1.setText(str(t[0])) LEARemplir.lineEditVal_2.setText(str(t[1])) if self.nbValeurs== 3 : LEARemplir.lineEditVal_3.setText(str(t[2])) - LEARemplir.valueChange() else : self.ajoutLineEdit(t,False) - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - LEARemplir=getattr(self,nomLineEdit) - LEARemplir.valueChange() + indexDernierRempli = indexDernierRempli + 1 + def RBListePush(self): + #---------------------- # PN a rendre generique avec un truc tel prerempli + # pour l instant specifique PSEN + if self.editor.code == 'VP' : return if self.objSimp.valeur != None and self.objSimp.valeur != [] : return if not hasattr(self.editor.readercata.cata[0],'sd_ligne') : self.editor.readercata.cata[0].sd_ligne=None diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index a8e5c52c..8f093048 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -267,3 +267,27 @@ class PolitiquePlusieurs(Validation): return valide,commentaire,commentaire2,listeRetour listeRetour.append(valeurTuple) return valide,commentaire,commentaire2,listeRetour + + def ajoutNTuple(self,liste): + listeRetour=[] + commentaire="Nouvelles valeurs acceptee" + commentaire2="" + valide=self.node.item.valide_liste_partielle(None,liste) + if not valide : + commentaire2=self.node.item.info_erreur_liste() + return valide,commentaire,commentaire2,listeRetour + + + def recordValeur(self,liste,dejaValide=True): + ancienne_val = self.node.item.get_valeur() + validite=self.node.item.set_valeur(liste) + if validite : self.node.item.init_modif() + if self.node.item.isvalid(): + commentaire = tr("Valeur du mot-cle enregistree") + else: + cr = self.node.item.get_cr() + commentaire = tr("Valeur du mot-cle non autorisee ")+cr.get_mess_fatal() + self.node.item.set_valeur(ancienneVal) + return validite, commentaire + + diff --git a/UiQT5/desWidgetPlusieursBase.ui b/UiQT5/desWidgetPlusieursBase.ui index fe1cbb7d..8d7d5a9d 100644 --- a/UiQT5/desWidgetPlusieursBase.ui +++ b/UiQT5/desWidgetPlusieursBase.ui @@ -6,8 +6,8 @@