From: pascale.noyret Date: Mon, 18 Dec 2017 13:25:03 +0000 (+0100) Subject: Modifs Bugs Sophie et Yoann X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=330aca55f026ca703f1cd1a55e8e1f9bfc5e7d28;p=tools%2Feficas.git Modifs Bugs Sophie et Yoann --- diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index ef695550..ef4f9f01 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -232,6 +232,13 @@ class MCSIMP(I_OBJECT.OBJECT): if typ == 'TXM' :return 1 return 0 + def wait_tuple(self): + for ss_type in self.definition.type: + if repr(ss_type).find('Tuple') != -1 : + return 1 + return 0 + + def get_liste_valeurs(self): """ """ @@ -315,7 +322,6 @@ class MCSIMP(I_OBJECT.OBJECT): self.parent.update_condition_bloc() def set_valeur(self,new_valeur,evaluation='oui'): - #print "set_valeur",new_valeur self.init_modif() self.valeur = new_valeur self.val = new_valeur diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index 7377e830..d122478d 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -76,7 +76,10 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): if maDefinition.max == 1 : # A verifier - if maDefinition.into != [] and maDefinition.into != None: + if maDefinition.intoSug != [] and maDefinition.intoSug != None: + from .monWidgetCBIntoSug import MonWidgetCBIntoSug + widget=MonWidgetCBIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif maDefinition.into != [] and maDefinition.into != None: if len(monInto) < 4 : from .monWidgetRadioButton import MonWidgetRadioButton widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande) diff --git a/InterfaceQT4/monWidgetCB.py b/InterfaceQT4/monWidgetCB.py index 9f969dd4..6587f1ad 100644 --- a/InterfaceQT4/monWidgetCB.py +++ b/InterfaceQT4/monWidgetCB.py @@ -28,16 +28,16 @@ import types,os # Modules Eficas from Extensions.i18n import tr -from .feuille import Feuille +from InterfaceQT4.feuille import Feuille from desWidgetCB import Ui_WidgetCB -from .politiquesValidation import PolitiqueUnique -from .qtSaisie import SaisieValeur +from InterfaceQT4.politiquesValidation import PolitiqueUnique +from InterfaceQT4.qtSaisie import SaisieValeur from PyQt5.QtWidgets import QComboBox, QCompleter from PyQt5.QtCore import Qt -class MonWidgetCBCommun (Ui_WidgetCB,Feuille): +class MonWidgetCBCommun (Feuille): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) @@ -82,13 +82,13 @@ class MonWidgetCBCommun (Ui_WidgetCB,Feuille): SaisieValeur.LEValeurPressed(self,valeur) self.reaffiche() -class MonWidgetCB (MonWidgetCBCommun): +class MonWidgetCB (Ui_WidgetCB, MonWidgetCBCommun): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.maListeDeValeur=monSimpDef.into MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) -class MonWidgetCBSD (MonWidgetCBCommun): +class MonWidgetCBSD (Ui_WidgetCB, MonWidgetCBCommun): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.maListeDeValeur=node.item.get_sd_avant_du_bon_type() diff --git a/InterfaceQT4/monWidgetCBIntoSug.py b/InterfaceQT4/monWidgetCBIntoSug.py new file mode 100644 index 00000000..cd8b0193 --- /dev/null +++ b/InterfaceQT4/monWidgetCBIntoSug.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 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 +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# Modules Python +from __future__ import absolute_import +try : + from builtins import str +except : pass + +import types,os + +# Modules Eficas +from Extensions.i18n import tr + +from .feuille import Feuille +from .politiquesValidation import PolitiqueUnique +from .qtSaisie import SaisieValeur +from desWidgetCBIntoSug import Ui_WidgetCBIntoSug + +from PyQt5.QtWidgets import QComboBox, QCompleter +from PyQt5.QtCore import Qt + +from monWidgetCB import MonWidgetCBCommun +from monWidgetIntoSug import GereAjoutDsPossible + + +class MonWidgetCBIntoSug (MonWidgetCBCommun, Ui_WidgetCBIntoSug,GereAjoutDsPossible): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + self.maListeDeValeur=monSimpDef.into + if node.item.has_intoSug() : self.maListeDeValeur=node.item.get_liste_possible_avecSug([]) + if hasattr(node.item,'suggestion') : self.maListeDeValeur+= node.item.suggestion + MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) + + def ajouteValeurPossible(self,valeur): + self.CBChoix.addItem(valeur) + # on ne sait pas si on a deja ajouté une valeur + try : self.node.item.suggestion.append(valeur) + except : self.node.item.suggestion=(valeur,) + self.lineEditVal.setText('') + self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)); + + + def choixSaisi(self): + MonWidgetCBCommun.choixSaisi(self) + self.lineEditVal.setText('') + diff --git a/InterfaceQT4/monWidgetCommande.py b/InterfaceQT4/monWidgetCommande.py index 69bafce9..36ae7660 100644 --- a/InterfaceQT4/monWidgetCommande.py +++ b/InterfaceQT4/monWidgetCommande.py @@ -291,16 +291,20 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe): self.node.selectAvant() def setValide(self): + # Possibilite d enlever un isvalid si necessaire + # en utilisant nomIcone 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") - if self.node.item.GetIconName() == "ast-yellow-square" : + self.RBValide.setIcon(icon) + + nomIcone = self.node.item.GetIconName() + if nomIcone == "ast-yellow-square" : icon=QIcon(self.repIcon+"/ast-yel-ball.png") self.LENom.setDisabled(False) - if self.node.item.GetIconName() == "ast-red-square" : self.LENom.setDisabled(True) - self.RBValide.setIcon(icon) + if nomIcone == "ast-red-square" : self.LENom.setDisabled(True) diff --git a/InterfaceQT4/monWidgetIntoSug.py b/InterfaceQT4/monWidgetIntoSug.py index 847055b0..4cb92b58 100644 --- a/InterfaceQT4/monWidgetIntoSug.py +++ b/InterfaceQT4/monWidgetIntoSug.py @@ -38,7 +38,30 @@ from Extensions.i18n import tr from desWidgetIntoSug import Ui_WidgetIntoSug from monWidgetPlusieursInto import MonWidgetPlusieursInto -class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto): +class GereAjoutDsPossible: + def LEValeurAjouteDsPossible(self): + text=str(self.lineEditVal.text()) + if text == "" : return + # il faudrait essauer d en obtenir un reel, un tuple ou ... + # si cela est utilise pour autre chose que Telemac + # tout devrait etre fait ici + if not isinstance(text,str) : + self.lineEditVal.setText("") + return + if self.node.item.has_intoSug() : + self.maListeDeValeur=list(self.node.item.get_liste_possible_avecSug([])) + self.maListeDeValeur.insert(0,text) + else : + try : + self.monSimpDef.intoSug.insert(0,text) + except : + self.monSimpDef.intoSug=list(self.monSimpDef.intoSug) + self.monSimpDef.intoSug.insert(0,text) + # selon si on est une liste ou un combo + try : self.ajouteValeurPossible(text) + except : self.setValeurs() + +class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto,GereAjoutDsPossible): # Attention Attention # cette wdget ne fonctionne actuellement que pour Telemac # on attend du texte . on n essaye pas de transformer @@ -48,14 +71,3 @@ class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto): MonWidgetPlusieursInto.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) - def LEValeurAjouteDsPossible(self): - text=str(self.lineEditVal.text()) - if text == "" : return - # il faudrait essauer d en obtenir un reel, un tuple ou ... - # si cela est utilise pour autre chose que Telemac - if not isinstance(text,str) : - self.lineEditVal.setText("") - print ('jkjkl') - return - self.monSimpDef.intoSug.insert(0,text) - self.setValeurs() diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index dc5bc28e..64e7fafa 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -209,18 +209,17 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) 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 + print ('indexDernierRempli', indexDernierRempli) + + validite, texte =self.politique.recordValeur(listeComplete) + if not validite : + self.editor.affiche_infos(texte,Qt.red) + return - self.politique.recordValeur(listeComplete) - indexDernierRempli=0 while ( indexDernierRempli < len(liste) ) : texte=liste[indexDernierRempli] if indexDernierRempli < self.indexDernierLabel: diff --git a/InterfaceQT4/monWidgetPlusieursTuple.py b/InterfaceQT4/monWidgetPlusieursTuple.py index 92c7ce14..92e36b08 100644 --- a/InterfaceQT4/monWidgetPlusieursTuple.py +++ b/InterfaceQT4/monWidgetPlusieursTuple.py @@ -310,11 +310,9 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): 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 : listeComplete=listeFormatee @@ -325,22 +323,21 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): 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) + else : indexDernierRempli=0 + validite,texte=self.politique.recordValeur(listeComplete) + if not validite : + self.editor.affiche_infos(texte,Qt.red) + return + i=0 while ( i < len(liste) ) : try : - t=tuple(liste[i:i+self.nbValeurs]) + t=list(liste[i:i+self.nbValeurs]) except: - t=tuple(liste[i:len(liste)]) + t=list(liste[i:len(liste)]) i=i+self.nbValeurs if indexDernierRempli < self.indexDernierLabel: nomLineEdit=self.nomLine+str(indexDernierRempli+1) @@ -351,6 +348,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): else : self.ajoutLineEdit(t,False) indexDernierRempli = indexDernierRempli + 1 + self.setValide() def RBListePush(self): diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index 8f093048..4d28afc4 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -268,20 +268,11 @@ class PolitiquePlusieurs(Validation): 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() + ancienneVal = 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: diff --git a/UiQT5/CMakeLists.txt b/UiQT5/CMakeLists.txt index e43a25fa..823e4db3 100644 --- a/UiQT5/CMakeLists.txt +++ b/UiQT5/CMakeLists.txt @@ -66,6 +66,7 @@ eficas_compile_ui ( desPBOptionnelMT.ui ) # eficas_compile_ui ( desWidgetBloc.ui ) eficas_compile_ui ( desWidgetCB.ui ) +eficas_compile_ui ( desWidgetCBIntoSug.ui ) eficas_compile_ui ( desWidgetCommentaire.ui ) eficas_compile_ui ( desWidgetDate.ui ) eficas_compile_ui ( desWidgetFact.ui ) diff --git a/UiQT5/desWidgetCBIntoSug.ui b/UiQT5/desWidgetCBIntoSug.ui new file mode 100644 index 00000000..8c4323e3 --- /dev/null +++ b/UiQT5/desWidgetCBIntoSug.ui @@ -0,0 +1,343 @@ + + + WidgetCBIntoSug + + + + 0 + 0 + 1104 + 102 + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 1493 + 150 + + + + Form + + + QComboBox{combobox-popup:0;}; + + + + 0 + + + 0 + + + 4 + + + 0 + + + 9 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + background:rgb(221, 221, 166) + + + QFrame::Box + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + Valeurs hors liste - la valeur saisie sera ajoutée à la liste + + + + + + + background : white + + + + + + + + + + + 0 + + + + + + 0 + 0 + + + + + 361 + 32 + + + + + + + + + + QComboBox { + background:rgb(235,235,235); + } +/*QComboBox: on { + font : italic + } +background:rgb(235,235,235); +border:0px; + + +QComboBox:!editable:on, QComboBox::drop-down:editable:on { +background: black; + font : italic 14px + } +QComboBox:on { + font : italic 20px; + background: red ; +}/* + + + + 100 + + + false + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 301 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+
+ + +
diff --git a/UiQT5/makefile b/UiQT5/makefile index df82e3e8..74302a96 100644 --- a/UiQT5/makefile +++ b/UiQT5/makefile @@ -8,7 +8,7 @@ PY_FILES = myMain.py desBaseWidget.py desChoixCata.py desChoixCode.py desChoixCo desChoixLangue.py desRecherche.py desRechercheCatalogue.py\ desSelectVal.py desViewTexte.py desViewRegles.py desVisu.py desWidgetCreeParam.py desWidgetCommande.py \ desWidgetOptionnel.py desWidgetOptionnelMC.py Tuple2.py Tuple3.py \ - desWidgetBloc.py desWidgetCB.py desWidgetCommentaire.py desWidgetDate.py \ + desWidgetBloc.py desWidgetCB.py desWidgetCBIntoSug.py desWidgetCommentaire.py desWidgetDate.py \ desWidgetFact.py desWidgetFactPlie.py desWidgetFormule.py desGroupeOptionnel.py \ desWidgetHeure.py desWidgetInformation.py desWidgetIntoSug.py desWidgetInactif.py \ desWidgetMatrice.py desWidgetParam.py desWidgetPlusieursBase.py desWidgetPlusieursInto.py \ diff --git a/Validation/V_MCSIMP.py b/Validation/V_MCSIMP.py index 2bdeeb2d..6194489c 100644 --- a/Validation/V_MCSIMP.py +++ b/Validation/V_MCSIMP.py @@ -114,7 +114,7 @@ class MCSIMP(object): # Pour tenir compte des Tuples if hasattr(self.definition.type[0],'ntuple') : try : - if not (type(lval[0]) is tuple) : lval=(lval,) + if (not (type(lval[0]) is tuple)) and (not (type(lval[0]) is list)) : lval=(lval,) except : pass diff --git a/generator/generator_TELEMAC.py b/generator/generator_TELEMAC.py index 600a1c32..fefee0e3 100644 --- a/generator/generator_TELEMAC.py +++ b/generator/generator_TELEMAC.py @@ -219,10 +219,14 @@ class TELEMACGenerator(PythonGenerator): s3=s2.replace(',',';') else: s3=s2 - if s3 != "" and s3[0]=='(' : + if s3 != "" and s3[0]=='(' : try : s3=s3[1:-1] # cas de liste vide except : s3 = ' ' + # cas des Tuples + if obj.wait_tuple() and s3 != '' and s3 != 'None': + s3=s + if s3[-1] == ',': s3=s3[:-1] # LIQUID_BOUNDARIES #if obj.nom in ('PRESCRIBED_FLOWRATES','PRESCRIBED_VELOCITIES','PRESCRIBED_ELEVATIONS') : @@ -239,6 +243,7 @@ class TELEMACGenerator(PythonGenerator): s3="'"+ s3 +"'" else: s3 = "''" + if s3 == "" or s3 == " " : s3 = " " ligne=nom+ " : " + s3 + "\n" if len(ligne) > 72 : ligne=self.redecoupeLigne(nom,s3)