From: pascale.noyret Date: Fri, 24 Mar 2017 13:23:58 +0000 (+0100) Subject: double clic et saisie ds les listes pliees X-Git-Tag: Salome_8_3_Hydro_2_0rc1~76 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=38922a3cfdcc76f6983b987de74706c54f562168;p=modules%2Feficas.git double clic et saisie ds les listes pliees --- diff --git a/InterfaceQT4/browser.py b/InterfaceQT4/browser.py index b149fb8c..35d45b08 100644 --- a/InterfaceQT4/browser.py +++ b/InterfaceQT4/browser.py @@ -659,8 +659,9 @@ class JDCNode(QTreeWidgetItem,GereRegles): def update_node_label(self): """ Met a jour le label du noeud """ + pass #print "NODE update_node_label", self.item.GetLabelText() - labeltext,fonte,couleur = self.item.GetLabelText() + #labeltext,fonte,couleur = self.item.GetLabelText() # PNPN a reflechir #self.setText(0, labeltext) diff --git a/InterfaceQT4/compofact.py b/InterfaceQT4/compofact.py index 1a367f60..6dfe3584 100644 --- a/InterfaceQT4/compofact.py +++ b/InterfaceQT4/compofact.py @@ -67,6 +67,7 @@ class FACTTreeItem(Objecttreeitem.ObjectTreeItem): - la couleur du texte """ # None --> fonte et couleur par defaut + if not(hasattr(self.object,'getlabeltext')): return self.object.nom,None,None return self.object.getlabeltext(),None,None def isvalid(self): diff --git a/InterfaceQT4/configuration.py b/InterfaceQT4/configuration.py index 9c6da0df..85e9dd56 100644 --- a/InterfaceQT4/configuration.py +++ b/InterfaceQT4/configuration.py @@ -107,6 +107,8 @@ class CONFIG_BASE(object): self.suiteTelemac=False self.nombreDeBoutonParLigne=0 self.translatorFichier=None + self.dicoImages= {} + self.simpleClic= False #-------------------------------------- diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index 3cd03245..ede146cb 100755 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -106,6 +106,8 @@ class JDCEditor(Ui_baseWidget,QWidget): self.closeArbre=self.appliEficas.CONFIGURATION.closeArbre self.affiche=self.appliEficas.CONFIGURATION.affiche self.nombreDeBoutonParLigne = self.appliEficas.CONFIGURATION.nombreDeBoutonParLigne + self.dicoImages = self.appliEficas.CONFIGURATION.dicoImages + self.simpleClic = self.appliEficas.CONFIGURATION.simpleClic #self.taille = self.appliEficas.taille #if self.code in ['MAP','CARMELCND','PSEN'] : self.afficheCommandesPliees=False @@ -508,11 +510,11 @@ class JDCEditor(Ui_baseWidget,QWidget): def readFromStdErr(self): a=self.monExe.readAllStandardError() - self.w.view.append(str(a.data(),len(a))) + self.w.view.append(str(a.data())) - def readFromStdErr(self) : + def readFromStdOut(self) : a=self.monExe.readAllStandardOutput() - self.w.view.append(str(a.data(),len(a))) + self.w.view.append(str(a.data())) def readFromStdErrQT4(self): a=self.monExe.readAllStandardError() diff --git a/InterfaceQT4/feuille.py b/InterfaceQT4/feuille.py index 33f160e2..29948157 100644 --- a/InterfaceQT4/feuille.py +++ b/InterfaceQT4/feuille.py @@ -133,7 +133,7 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel): 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' + commentaire=tr("Entrez entre ")+"\n"+str(mc.min)+(" et ")+str(mc.max) +" " +tr(d_aides[type])+'\n' aideval=self.node.item.aide() commentaire=commentaire + tr(aideval) self.monCommentaireLabel.setText(str(commentaire)) @@ -151,8 +151,10 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel): self.aide=c if self.objSimp.get_fr() != None and self.objSimp.get_fr() != "": c2 = '

'+c+self.objSimp.get_fr().decode('latin-1','replace')+"

" + #c2 = '

'+c+self.objSimp.get_fr()+"

" self.label.setToolTip(c2) self.aide=self.objSimp.get_fr().decode('latin-1','ignore')+" "+c + #self.aide=self.objSimp.get_fr()+" "+c else : c+=self.finCommentaire() if c != "" and c != None : diff --git a/InterfaceQT4/monChoixCommande.py b/InterfaceQT4/monChoixCommande.py index ce11c7d5..09a0913f 100644 --- a/InterfaceQT4/monChoixCommande.py +++ b/InterfaceQT4/monChoixCommande.py @@ -194,8 +194,9 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget): self.dicoCmd[tr(cmd)]=cmd rbcmd=(QRadioButton(tr(cmd))) self.buttonGroup.addButton(rbcmd) - rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick self.commandesLayout.addWidget(rbcmd) + if self.editor.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick + else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick self.buttonGroup.buttonClicked.connect(self.rbClique) elif self.affiche_groupe==1 : listeGroupes,dictGroupes=self.jdc.get_groups() @@ -217,7 +218,8 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget): rbcmd=(QRadioButton(tr(cmd))) self.buttonGroup.addButton(rbcmd) self.commandesLayout.addWidget(rbcmd) - rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + if self.editor.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick + else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick self.buttonGroup.buttonClicked.connect(self.rbClique) label2=QLabel(self) label2.setText(" ") @@ -236,7 +238,8 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget): rbcmd=(QRadioButton(tr(cmd))) self.buttonGroup.addButton(rbcmd) self.commandesLayout.addWidget(rbcmd) - rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + if self.editor.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick + else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick self.buttonGroup.buttonClicked.connect(self.rbClique) @@ -272,16 +275,18 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget): rbcmd=QPushButton(tr(cmd)) rbcmd.setGeometry(QRect(40, 20, 211, 71)) rbcmd.setMaximumSize(QSize(250, 81)) - rbcmd.setStyleSheet("background-color : rgb(168, 227, 142);\n" + rbcmd.setStyleSheet("background-color : rgb(66, 165, 238);\n" "/*border-style : outset;*/\n" "border-radius : 20px;\n" "border-width : 30 px;\n" "border-color : beige;\n" -"text-align : left") - icon = QIcon() - icon.addPixmap(QPixmap("../monCode/images/essaiAster.png"), QIcon.Normal, QIcon.Off) - rbcmd.setIcon(icon) - rbcmd.setIconSize(QSize(48, 48)) +"text-align : center") + if cmd in self.editor.dicoImages : + fichier=self.editor.dicoImages[cmd] + icon = QIcon() + icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off) + rbcmd.setIcon(icon) + rbcmd.setIconSize(QSize(48, 48)) self.buttonGroup.addButton(rbcmd) self.maGrilleBouton.addWidget(rbcmd,ligne,col) @@ -295,7 +300,6 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget): self.insereNoeudApresClick(None) def rbClique(self,id): - #print ('ds rbClique') self.name=self.dicoCmd[str(id.text())] definitionEtape=getattr(self.jdc.cata[0],self.name) commentaire=getattr(definitionEtape,self.jdc.lang) diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index fe2ab640..d66aa6dc 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -43,7 +43,7 @@ from .gereListe import GereListe from .gereListe import GerePlie from .gereListe import LECustom -dicoLongueur={2:95,3:125,4:154,5:183,6:210} +dicoLongueur={2:95,3:125,4:154,5:183,6:210,float('inf'):210} hauteurMax=253 class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie): @@ -75,14 +75,16 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) 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] - 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) + #if self.monSimpDef.max != "**" and self.monSimpDef.max < 7: + # hauteur=dicoLongueur[self.monSimpDef.max] + # hauteur=dicoLongueur[2] + # print ('hauteur', hauteur) + # 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.finCommentaireListe() self.parentQt.commandesLayout.insertWidget(-1,self) self.maCommande.listeAffichageWidget.append(self.lineEditVal1) @@ -94,10 +96,10 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) self.vScrollBar = self.scrollArea.verticalScrollBar() self.politique=PolitiquePlusieurs(self.node,self.editor) # construction du min de valeur a entrer - if self.monSimpDef.max == "**" : aConstruire=7 - else : aConstruire=self.monSimpDef.max - #for i in range(1,aConstruire): - for i in range(1,7): + if self.monSimpDef.max == "**" : aConstruire=7 + elif self.monSimpDef.max == float('inf'): aConstruire=7 + else : aConstruire=self.monSimpDef.max + for i in range(1,aConstruire): self.ajoutLineEdit() QApplication.processEvents() self.scrollArea.ensureWidgetVisible(self.lineEditVal1) @@ -116,6 +118,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) # ajout d'une ligne vide ou affichage commentaire if self.indexDernierLabel < self.monSimpDef.max : self.ajoutLineEdit() else : self.scrollArea.setToolTip('nb max de valeurs atteint') + #self.adjustSize() #self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum) diff --git a/InterfaceQT4/monWidgetPlusieursPlie.py b/InterfaceQT4/monWidgetPlusieursPlie.py index bb5b066f..7da3e7ac 100644 --- a/InterfaceQT4/monWidgetPlusieursPlie.py +++ b/InterfaceQT4/monWidgetPlusieursPlie.py @@ -23,27 +23,41 @@ try : from builtins import str except : pass -import types,os,sys +import types,os,sys,re from PyQt5.QtWidgets import QFrame from PyQt5.QtCore import QTimer, QSize, Qt -from PyQt5.QtGui import QIcon +from PyQt5.QtGui import QIcon, QBrush, QColor from Extensions.i18n import tr from .feuille import Feuille from desWidgetPlusieursPlie import Ui_WidgetPlusieursPlie +from .politiquesValidation import PolitiquePlusieurs +from .qtSaisie import SaisieValeur + +pattern_blanc = re.compile(r"^\s*$") + class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - #print "MonWidgetPlusieursBase", nom + print "MonWidgetPlusieursBase", nom Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.parentQt.commandesLayout.insertWidget(-1,self) self.AAfficher=self.lineEditVal self.maCommande.listeAffichageWidget.append(self.lineEditVal) - + if self.node.item.has_into() : + self.lineEditVal.setReadOnly(True) + self.lineEditVal.setStyleSheet("background:rgb(235,235,235);\n") + self.lineEditVal.setToolTip("Ensemble discret de valeurs possibles, pas de Saisie Manuelle") + #self.lineEditVal.setPen(QtGui.QColor(0,0,200)) + #b=QBrush(Qt.DiagCrossPattern) + #b.setColor(QColor(255,100,0)) + #self.lineEditVal.setBrush(b) + else : + self.lineEditVal.returnPressed.connect(self.valeurEntree) self.BVisuListe.clicked.connect(self.selectWidgetDeplie) @@ -51,11 +65,40 @@ class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille): self.listeValeursCourantes=self.node.item.GetListeValeurs() if self.listeValeursCourantes != [] : self.lineEditVal.setText(str(self.listeValeursCourantes)) else : self.lineEditVal.setText("") - self.lineEditVal.setReadOnly(True) + self.politique=PolitiquePlusieurs(self.node,self.editor) return def selectWidgetDeplie(self): self.editor.listeDesListesOuvertes.add(self.node.item) self.reaffichePourDeplier() + def valeurEntree(self): + valeurTexte=self.lineEditVal.text() + print (valeurTexte[0]) + print (valeurTexte[-1]) + if valeurTexte[0] == '[' or valeurTexte[0] == '(' : valeurTexte = valeurTexte[1:] + if valeurTexte[-1] == ']' or valeurTexte[-1] == ')' : valeurTexte = valeurTexte[:-1] + print (valeurTexte) + listeValeursBrutes=valeurTexte.split(',') + if listeValeursBrutes == [] or listeValeursBrutes == None : + self.lineEditVal.setText(str(self.listeValeursCourantes)) + return + listeValeur=[] + for v in listeValeursBrutes: + if v == None or pattern_blanc.match(v) : + self.editor.affiche_infos(str(listeValeur)+' Valeurs saisies incorrectes',Qt.red) + return + liste,validite=SaisieValeur.TraiteLEValeur(self,str(v)) + if not validite : + self.editor.affiche_infos(str(listeValeur) +' Valeurs saisies incorrectes',Qt.red) + return + listeValeur.append(liste[0]) + validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(listeValeur,-1,[]) + if validite : + self.node.item.set_valeur(listeValeur) + self.node.item.isvalid() + self.setValeurs() + else : + self.editor.affiche_infos(str(listeValeur) + ' ' +comm,Qt.red) + self.lineEditVal.setText('') diff --git a/InterfaceQT4/qtSaisie.py b/InterfaceQT4/qtSaisie.py index 4ea5a099..82390b6f 100644 --- a/InterfaceQT4/qtSaisie.py +++ b/InterfaceQT4/qtSaisie.py @@ -124,7 +124,8 @@ class SaisieValeur(object): elif type(valeur) == bytes: listeValeurs=valeur.split(',') else: - listeValeurs.append(valeurBrute) + #listeValeurs.append(valeurBrute) + listeValeurs.append(valeur) return listeValeurs,1