From: pascale.noyret
suggestion : ')+str(self.monSimpDef.getSug())+"
" - if hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip(suggere) - - def setCommentaire(self): - c = self.debutToolTip - #if self.node.item.definition.validators : c+=self.node.item.definition.validators.aide() - self.aide=c - if self.objSimp.getFr() != None and self.objSimp.getFr() != "": - #c2 = ''+c+self.objSimp.getFr().decode('latin-1','replace')+"
" - c2 = ''+c+self.objSimp.getFr() - #c2 = '
'+c+self.objSimp.getFr()+"
" - self.label.setToolTip(c2) - #self.aide=self.objSimp.getFr().decode('latin-1','ignore')+" "+c - self.aide=self.objSimp.getFr()+" "+c - else : - c+=self.finCommentaire() - if c != "" and c != None : - self.aide=c - #c=str('')+c+"
" - c=str('')+c+"
" - self.label.setToolTip(c) - - if self.editor.maConfiguration.differencieSiDefaut : + def setSuggestion(self): + if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": + suggere=str('suggestion : ')+str(self.monSimpDef.getSug())+"
" + if hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip(suggere) + + def setCommentaire(self): + c = self.debutToolTip + #if self.node.item.definition.validators : c+=self.node.item.definition.validators.aide() + self.aide=c + if self.objSimp.getFr() != None and self.objSimp.getFr() != "": + #c2 = ''+c+self.objSimp.getFr().decode('latin-1','replace')+"
" + c2 = ''+c+self.objSimp.getFr() + #c2 = '
'+c+self.objSimp.getFr()+"
" + self.label.setToolTip(c2) + #self.aide=self.objSimp.getFr().decode('latin-1','ignore')+" "+c + self.aide=self.objSimp.getFr()+" "+c + else : + c+=self.finCommentaire() + if c != "" and c != None : + self.aide=c + #c=str('')+c+"
" + c=str('')+c+"
" + self.label.setToolTip(c) + + if self.editor.maConfiguration.differencieSiDefaut : self.label.setToolTip('defaut : ' + tr(str(self.node.item.object.definition.defaut))) - def showEvent(self, event): - if self.prendLeFocus==1 : - self.activateWindow() - "il faut deriver le showEvent pour" , self.nom - self.prendLeFocus=0 - QWidget.showEvent(self,event) - - def aideALaSaisie(self): - mc = self.node.item.get_definition() - mctype = mc.type[0] - d_aides = { 'TXM' : tr(u"chaine de caracteres"), - 'R' : tr("reel"), - 'I' : tr("entier"), - 'C' : tr("complexe"), - 'Matrice' : tr(u'Matrice'), - 'Fichier' : tr(u'fichier'), - 'FichierNoAbs' : tr(u'fichier existant'), - 'Repertoire' : tr(u'repertoire')} - - if mc.min == mc.max: commentaire=tr("Entrez ")+" "+str(mc.min)+" " - else : commentaire=tr("Entrez entre ")+str(mc.min)+tr(" et ")+str(mc.max) - - try : - if issubclass(mctype,object) : ctype = getattr(mctype, 'help_message', tr("Type de base inconnu")) - else : ctype = d_aides.get(mctype, tr("Type de base inconnu")) - except: - ctype = d_aides.get(mctype, tr("Type de base inconnu")) - if ctype == tr("Type de base inconnu") and "Tuple" in str(mctype): ctype=str(mctype) - - commentaire+=ctype - if mc.max!=1 : commentaire+="s" - return commentaire - - def setZoneInfo(self): - # info=str(self.nom)+' ' - # if self.monSimpDef.getFr() != None and self.monSimpDef.getFr() != "": info+=self.monSimpDef.getSug() +" " - # if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": info+="Valeur suggeree : "self.monSimpDef.getSug() - pass - - def reaffiche(self): - - if self.editor.jdc.aReafficher==True : - self.parentQt.reaffiche() - - #PN PN PN pas satisfaisant - #nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp) - #print nodeAVoir.fenetre - #print "nodeAVoir.fenetre.isVisible()", nodeAVoir.fenetre.isVisible() - #if nodeAVoir.fenetre.isVisible() : return - #self.editor.fenetreCentraleAffichee.rendVisibleNoeud(nodeAVoir) - #nodeAVoir.fenetre.setFocus() - # return # on est bien postionne - - if self.objSimp.isValid() and hasattr(self, 'AAfficher'): - nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp) - try : - index=self.editor.fenetreCentraleAffichee.listeAffichageWidget.index(nodeAVoir.fenetre.AAfficher) - if (index==len(self.editor.fenetreCentraleAffichee.listeAffichageWidget)-1) : - try : - nodeAVoir.fenetre.setValeursApresBouton() - except : - pass - else : - self.editor.fenetreCentraleAffichee.afficheSuivant(nodeAVoir.fenetre.AAfficher) - except : - pass - else : - if self.objSimp.isValid() and hasattr(self, 'AAfficher'): - try : - self.setValeursApresBouton() - except : - pass - self.editor.fenetreCentraleAffichee.afficheSuivant(self.AAfficher) - else : - if hasattr(self, 'AAfficher'): self.AAfficher.setFocus(7) - - def reaffichePourDeplier(self): - self.parentQt.reaffiche() - - def rendVisible(self): - pass - - #def enterEvent(self,event): - # print "je passe dans enterEvent", self.nom - # QWidget.enterEvent(self,event) - - def traiteClicSurLabel(self,texte): - #aide=self.aide.encode('latin-1', 'ignore').decode('latin-1')+"\n"+self.aideALaSaisie().encode('latin-1', 'ignore').decode('latin-1') - try : - aide=self.aide+"\n"+self.aideALaSaisie() - except : - aide=self.aideALaSaisie() - self.editor.afficheCommentaire(aide) - - def formate(self,t): - l=len(t)//2 - newText=t[0:l]+'-\n'+t[l:] - return newText - - - + def showEvent(self, event): + if self.prendLeFocus==1 : + self.activateWindow() + "il faut deriver le showEvent pour" , self.nom + self.prendLeFocus=0 + QWidget.showEvent(self,event) + + def aideALaSaisie(self): + mc = self.node.item.get_definition() + mctype = mc.type[0] + d_aides = { 'TXM' : tr(u"chaine de caracteres"), + 'R' : tr("reel"), + 'I' : tr("entier"), + 'C' : tr("complexe"), + 'Matrice' : tr(u'Matrice'), + 'Fichier' : tr(u'fichier'), + 'FichierNoAbs' : tr(u'fichier existant'), + 'Repertoire' : tr(u'repertoire')} + + if mc.min == mc.max: commentaire=tr("Entrez ")+" "+str(mc.min)+" " + else : commentaire=tr("Entrez entre ")+str(mc.min)+tr(" et ")+str(mc.max) + + try : + if issubclass(mctype,object) : ctype = getattr(mctype, 'help_message', tr("Type de base inconnu")) + else : ctype = d_aides.get(mctype, tr("Type de base inconnu")) + except: + ctype = d_aides.get(mctype, tr("Type de base inconnu")) + if ctype == tr("Type de base inconnu") and "Tuple" in str(mctype): ctype=str(mctype) + + commentaire+=ctype + if mc.max!=1 : commentaire+="s" + return commentaire + + def setZoneInfo(self): + # info=str(self.nom)+' ' + # if self.monSimpDef.getFr() != None and self.monSimpDef.getFr() != "": info+=self.monSimpDef.getSug() +" " + # if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": info+="Valeur suggeree : "self.monSimpDef.getSug() + pass + + def reaffiche(self): + + if self.editor.jdc.aReafficher==True : + self.parentQt.reaffiche() + + #PN PN PN pas satisfaisant + #nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp) + #print nodeAVoir.fenetre + #print "nodeAVoir.fenetre.isVisible()", nodeAVoir.fenetre.isVisible() + #if nodeAVoir.fenetre.isVisible() : return + #self.editor.fenetreCentraleAffichee.rendVisibleNoeud(nodeAVoir) + #nodeAVoir.fenetre.setFocus() + # return # on est bien postionne + + if self.objSimp.isValid() and hasattr(self, 'AAfficher'): + nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp) + try : + index=self.editor.fenetreCentraleAffichee.listeAffichageWidget.index(nodeAVoir.fenetre.AAfficher) + if (index==len(self.editor.fenetreCentraleAffichee.listeAffichageWidget)-1) : + try : + nodeAVoir.fenetre.setValeursApresBouton() + except : + pass + else : + self.editor.fenetreCentraleAffichee.afficheSuivant(nodeAVoir.fenetre.AAfficher) + except : + pass + else : + if self.objSimp.isValid() and hasattr(self, 'AAfficher'): + try : + self.setValeursApresBouton() + except : + pass + self.editor.fenetreCentraleAffichee.afficheSuivant(self.AAfficher) + else : + if hasattr(self, 'AAfficher'): self.AAfficher.setFocus(7) + + def reaffichePourDeplier(self): + self.parentQt.reaffiche() + + def rendVisible(self): + pass + + #def enterEvent(self,event): + # print "je passe dans enterEvent", self.nom + # QWidget.enterEvent(self,event) + + def traiteClicSurLabel(self,texte): + #aide=self.aide.encode('latin-1', 'ignore').decode('latin-1')+"\n"+self.aideALaSaisie().encode('latin-1', 'ignore').decode('latin-1') + try : + aide=self.aide+"\n"+self.aideALaSaisie() + except : + aide=self.aideALaSaisie() + self.editor.afficheCommentaire(aide) + + def formate(self,t): + l=len(t)//2 + newText=t[0:l]+'-\n'+t[l:] + return newText diff --git a/InterfaceQT4/gereIcones.py b/InterfaceQT4/gereIcones.py index 62f2d0c2..d28c498e 100644 --- a/InterfaceQT4/gereIcones.py +++ b/InterfaceQT4/gereIcones.py @@ -21,8 +21,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import types,os,re,sys @@ -40,327 +40,327 @@ listeSuffixe=('bmp','png','jpg' ,'txt','med') class FacultatifOuOptionnel(object): - def setReglesEtAide(self): - listeRegles=() - try : - listeRegles = self.node.item.getRegles() - except : - pass - if hasattr(self,"RBRegle"): - if listeRegles==() : self.RBRegle.close() + def setReglesEtAide(self): + listeRegles=() + try : + listeRegles = self.node.item.getRegles() + except : + pass + if hasattr(self,"RBRegle"): + if listeRegles==() : self.RBRegle.close() + else : + icon3=QIcon(self.repIcon+"/lettreRblanc30.png") + self.RBRegle.setIcon(icon3) + self.RBRegle.clicked.connect(self.viewRegles) + + cle_doc=None + if not hasattr(self,"RBInfo"):return + icon=QIcon(self.repIcon+"/point-interrogation30.png") + self.RBInfo.setIcon(icon) + + from .monWidgetCommande import MonWidgetCommande + if isinstance(self,MonWidgetCommande) and self.editor.code =="MAP": + self.cle_doc = self.chercheDocMAP() else : - icon3=QIcon(self.repIcon+"/lettreRblanc30.png") - self.RBRegle.setIcon(icon3) - self.RBRegle.clicked.connect(self.viewRegles) - - cle_doc=None - if not hasattr(self,"RBInfo"):return - icon=QIcon(self.repIcon+"/point-interrogation30.png") - self.RBInfo.setIcon(icon) - - from .monWidgetCommande import MonWidgetCommande - if isinstance(self,MonWidgetCommande) and self.editor.code =="MAP": - self.cle_doc = self.chercheDocMAP() - else : - self.cle_doc = self.node.item.getDocu() - if self.cle_doc == None : self.RBInfo.close() - else : self.RBInfo.clicked.connect (self.viewDoc) - - - def chercheDocMAP(self): - try : - clef=self.editor.maConfiguration.adresse+"/" - except : - return None - for k in self.editor.readercata.cata.JdC.dict_groupes: - if self.obj.nom in self.editor.readercata.cata.JdC.dict_groupes[k]: - clef+=k - break - clef+="/"+ self.obj.nom[0:-5].lower()+"/spec_"+self.obj.nom[0:-5].lower()+".html" - - return clef - - def viewDoc(self): - try : - if sys.platform[0:5]=="linux" : cmd="xdg-open "+self.cle_doc - else : cmd="start "+self.cle_doc - os.system(cmd) - except: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) - - def viewRegles(self): - self.node.appellebuildLBRegles() - - - def setIconePoubelle(self): - if not(hasattr(self,"RBPoubelle")):return - - if self.node.item.object.isOblig() and not( hasattr(self.node.item.object,'isDeletable') ): - icon=QIcon(self.repIcon+"/deleteRondVide.png") - self.RBPoubelle.setIcon(icon) - return - icon=QIcon(self.repIcon+"/deleteRond.png") - self.RBPoubelle.setIcon(icon) - self.RBPoubelle.clicked.connect(self.aDetruire) - - def setIconesSalome(self): - if not (hasattr(self,"RBSalome")): return - from Accas import SalomeEntry - mc = self.node.item.get_definition() - mctype = mc.type[0] - enable_salome_selection = self.editor.salome and \ - (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \ - (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection)) - - if enable_salome_selection: - icon=QIcon(self.repIcon+"/flecheSalome.png") - self.RBSalome.setIcon(icon) - self.RBSalome.pressed.connect(self.BSalomePressed) + self.cle_doc = self.node.item.getDocu() + if self.cle_doc == None : self.RBInfo.close() + else : self.RBInfo.clicked.connect (self.viewDoc) + + + def chercheDocMAP(self): + try : + clef=self.editor.maConfiguration.adresse+"/" + except : + return None + for k in self.editor.readercata.cata.JdC.dict_groupes: + if self.obj.nom in self.editor.readercata.cata.JdC.dict_groupes[k]: + clef+=k + break + clef+="/"+ self.obj.nom[0:-5].lower()+"/spec_"+self.obj.nom[0:-5].lower()+".html" + + return clef + + def viewDoc(self): + try : + if sys.platform[0:5]=="linux" : cmd="xdg-open "+self.cle_doc + else : cmd="start "+self.cle_doc + os.system(cmd) + except: + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + + def viewRegles(self): + self.node.appellebuildLBRegles() + + + def setIconePoubelle(self): + if not(hasattr(self,"RBPoubelle")):return + + if self.node.item.object.isOblig() and not( hasattr(self.node.item.object,'isDeletable') ): + icon=QIcon(self.repIcon+"/deleteRondVide.png") + self.RBPoubelle.setIcon(icon) + return + icon=QIcon(self.repIcon+"/deleteRond.png") + self.RBPoubelle.setIcon(icon) + self.RBPoubelle.clicked.connect(self.aDetruire) + + def setIconesSalome(self): + if not (hasattr(self,"RBSalome")): return + from Accas import SalomeEntry + mc = self.node.item.get_definition() + mctype = mc.type[0] + enable_salome_selection = self.editor.salome and \ + (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \ + (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection)) + + if enable_salome_selection: + icon=QIcon(self.repIcon+"/flecheSalome.png") + self.RBSalome.setIcon(icon) + self.RBSalome.pressed.connect(self.BSalomePressed) #PNPN --> Telemac A revoir surement # cela ou le catalogue grpma ou salomeEntry - if not(('grma' in repr(mctype)) or ('grno' in repr(mctype))) or not(self.editor.salome): - if hasattr(self,"RBSalomeVue") : self.RBSalomeVue.close() - else : - icon1=QIcon(self.repIcon+"/eye.png") - self.RBSalomeVue.setIcon(icon1) - self.RBSalomeVue.clicked.connect(self.BView2DPressed) - else: - self.RBSalome.close() - self.RBSalomeVue.close() - - - def setIconesFichier(self): - if not ( hasattr(self,"BFichier")): return - mc = self.node.item.get_definition() - mctype = mc.type[0] - if mctype == "FichierOuRepertoire": - self.BFichierOuRepertoire=self.BFichier - self.BFichierOuRepertoire.clicked.connect(self.BFichierOuRepertoirePressed) - self.BVisuFichier.close() - elif mctype == "Repertoire": - self.BRepertoire=self.BFichier - self.BRepertoire.clicked.connect(self.BRepertoirePressed) - self.BVisuFichier.close() - else : - self.BFichier.clicked.connect(self.BFichierPressed) - self.BVisuFichier.clicked.connect(self.BFichierVisu) - - - - def setIconesGenerales(self): - repIcon=self.node.editor.appliEficas.repIcon - if hasattr(self,"BVisuListe") : - fichier=os.path.join(repIcon, 'plusnode.png') - icon = QIcon(fichier) - self.BVisuListe.setIcon(icon) - if hasattr(self,"RBDeplie") : - fichier=os.path.join(repIcon, 'plusnode.png') - icon = QIcon(fichier) - self.RBDeplie.setIcon(icon) - if hasattr(self,"RBPlie") : - fichier=os.path.join(repIcon, 'minusnode.png') - icon = QIcon(fichier) - self.RBPlie.setIcon(icon) - if hasattr(self,"BVisuFichier") : - fichier=os.path.join(repIcon, 'visuFichier.png') - icon = QIcon(fichier) - self.BVisuFichier.setIcon(icon) - - - - def setRun(self): - if hasattr(self.editor.appliEficas, 'mesScripts') : - if self.editor.code in self.editor.appliEficas.mesScripts : - self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes - if self.obj.nom in self.dict_commandes_mesScripts : - self.ajoutScript() - icon=QIcon(self.repIcon+"/roue.png") - if hasattr(self,"RBRun"):self.RBRun.setIcon(icon) - return - if hasattr(self,"RBRun"): self.RBRun.close() - if hasattr(self,"CBScripts"): self.CBScripts.close() - - - def aDetruire(self): - self.node.delete() - - def setValide(self): - if not(hasattr (self,'RBValide')) : return - couleur=self.node.item.getIconName() - monIcone = QIcon(self.repIcon+"/" + couleur + ".png") - self.RBValide.setIcon(monIcone) - - # il faut chercher la bonne fenetre - def rendVisible(self): - #print "je passe par rendVisible de FacultatifOuOptionnel" - #print self - #print self.node.fenetre - #print "return pour etre sure" - return - #PNPN - newNode=self.node.treeParent.chercheNoeudCorrespondant(self.node.item.object) - #print newNode - self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(newNode.fenetre) - #newNode.fenetre.setFocus() - - - def ajoutScript(self): + if not(('grma' in repr(mctype)) or ('grno' in repr(mctype))) or not(self.editor.salome): + if hasattr(self,"RBSalomeVue") : self.RBSalomeVue.close() + else : + icon1=QIcon(self.repIcon+"/eye.png") + self.RBSalomeVue.setIcon(icon1) + self.RBSalomeVue.clicked.connect(self.BView2DPressed) + else: + self.RBSalome.close() + self.RBSalomeVue.close() + + + def setIconesFichier(self): + if not ( hasattr(self,"BFichier")): return + mc = self.node.item.get_definition() + mctype = mc.type[0] + if mctype == "FichierOuRepertoire": + self.BFichierOuRepertoire=self.BFichier + self.BFichierOuRepertoire.clicked.connect(self.BFichierOuRepertoirePressed) + self.BVisuFichier.close() + elif mctype == "Repertoire": + self.BRepertoire=self.BFichier + self.BRepertoire.clicked.connect(self.BRepertoirePressed) + self.BVisuFichier.close() + else : + self.BFichier.clicked.connect(self.BFichierPressed) + self.BVisuFichier.clicked.connect(self.BFichierVisu) + + + + def setIconesGenerales(self): + repIcon=self.node.editor.appliEficas.repIcon + if hasattr(self,"BVisuListe") : + fichier=os.path.join(repIcon, 'plusnode.png') + icon = QIcon(fichier) + self.BVisuListe.setIcon(icon) + if hasattr(self,"RBDeplie") : + fichier=os.path.join(repIcon, 'plusnode.png') + icon = QIcon(fichier) + self.RBDeplie.setIcon(icon) + if hasattr(self,"RBPlie") : + fichier=os.path.join(repIcon, 'minusnode.png') + icon = QIcon(fichier) + self.RBPlie.setIcon(icon) + if hasattr(self,"BVisuFichier") : + fichier=os.path.join(repIcon, 'visuFichier.png') + icon = QIcon(fichier) + self.BVisuFichier.setIcon(icon) + + + + def setRun(self): + if hasattr(self.editor.appliEficas, 'mesScripts') : + if self.editor.code in self.editor.appliEficas.mesScripts : + self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes + if self.obj.nom in self.dict_commandes_mesScripts : + self.ajoutScript() + icon=QIcon(self.repIcon+"/roue.png") + if hasattr(self,"RBRun"):self.RBRun.setIcon(icon) + return + if hasattr(self,"RBRun"): self.RBRun.close() + if hasattr(self,"CBScripts"): self.CBScripts.close() + + + def aDetruire(self): + self.node.delete() + + def setValide(self): + if not(hasattr (self,'RBValide')) : return + couleur=self.node.item.getIconName() + monIcone = QIcon(self.repIcon+"/" + couleur + ".png") + self.RBValide.setIcon(monIcone) + + # il faut chercher la bonne fenetre + def rendVisible(self): + #print "je passe par rendVisible de FacultatifOuOptionnel" + #print self + #print self.node.fenetre + #print "return pour etre sure" + return + #PNPN + newNode=self.node.treeParent.chercheNoeudCorrespondant(self.node.item.object) + #print newNode + self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(newNode.fenetre) + #newNode.fenetre.setFocus() + + + def ajoutScript(self): if not hasattr(self,'CBScripts') : return # Cas des Widgets Plies self.dictCommandes={} listeCommandes=self.dict_commandes_mesScripts[self.obj.nom] if type(listeCommandes) != tuple: listeCommandes=(listeCommandes,) i=0 for commande in listeCommandes : - conditionSalome=commande[3] - if (self.appliEficas.salome == 0 and conditionSalome == True): continue - self.CBScripts.addItem(commande[1]) - self.dictCommandes[commande[1]]=i - i=i+1 + conditionSalome=commande[3] + if (self.appliEficas.salome == 0 and conditionSalome == True): continue + self.CBScripts.addItem(commande[1]) + self.dictCommandes[commande[1]]=i + i=i+1 self.CBScripts.activated.connect(self.choixSaisi) - def choixSaisi(self): - fction=str(self.CBScripts.currentText()) - numero= self.dictCommandes[fction] - self.node.appelleFonction(numero,nodeTraite=self.node) - #self.reaffiche() + def choixSaisi(self): + fction=str(self.CBScripts.currentText()) + numero= self.dictCommandes[fction] + self.node.appelleFonction(numero,nodeTraite=self.node) + #self.reaffiche() class ContientIcones(object): - def BFichierVisu(self): - fichier=self.lineEditVal.text() - if fichier == None or str(fichier)=="" : return - from .monViewTexte import ViewText - try : - if sys.platform[0:5]=="linux" : - #cmd="xdg-open "+ str(fichier) - #changer pour marcher dans l'EDC - #cmd="gedit "+ str(fichier) - from os.path import splitext - fileName,extension = splitext(fichier) - if extension in self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions: - cmd=self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions[extension] + " " + str(fichier) - else: cmd="xdg-open "+ str(fichier) - os.system(cmd) - else : - os.startfile(str(fichier)) - except: - try : - fp=open(fichier) - txt=fp.read() - nomFichier=QFileInfo(fichier).baseName() - maVue=ViewText(self,entete=nomFichier) - maVue.setText(txt) - maVue.show() - fp.close() - except: - QMessageBox.warning( None, - tr("Visualisation Fichier "), - tr("Impossibilite d'afficher le Fichier"),) - - def BFichierPressed(self): - mctype = self.node.item.get_definition().type - if len(mctype) > 1: - filters = mctype[1] - elif hasattr(mctype[0], "filters"): - filters = mctype[0].filters - else: - filters = "" - if len(mctype) > 2 and mctype[2] == "Sauvegarde": - fichier = QFileDialog.getSaveFileName(self.appliEficas, - tr('Use File'), - self.appliEficas.maConfiguration.savedir, - filters) - else: - #print(filters) - fichier = QFileDialog.getOpenFileName(self.appliEficas, - tr('Ouvrir Fichier'), - self.appliEficas.maConfiguration.savedir, - filters) - - fichier=fichier[0] - if not(fichier == ""): - ulfile = os.path.abspath(fichier) - self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] - self.lineEditVal.setText(fichier) - self.editor.afficheCommentaire(tr("Fichier selectionne")) - self.LEvaleurPressed() - if (QFileInfo(fichier).suffix() in listeSuffixe ): - self.image=fichier - if (not hasattr(self,"BSelectInFile")): - try : - self.BSelectInFile = QPushButton(self) - self.BSelectInFile.setMinimumSize(QSize(140,40)) - self.BSelectInFile.setObjectName("BSelectInFile") - self.gridLayout.addWidget(self.BSelectInFile,1,1,1,1) - self.BSelectInFile.setText(tr("Selection")) - self.BSelectInFile.clicked.connect(self.BSelectInFilePressed) - except : - pass - else : - self.BSelectInFile.setVisible(1) - - elif hasattr(self, "BSelectInFile"): - self.BSelectInFile.setVisible(0) - - def BFichierOuRepertoirePressed(self): - self.fileName="" - self.file_dialog=QFileDialog() - self.file_dialog.setFileMode(QFileDialog.Directory); - self.file_dialog.setFileMode(QFileDialog.Directory|QFileDialog.ExistingFiles) - self.file_dialog.setOption(QFileDialog.DontUseNativeDialog,True); - self.file_dialog.setWindowTitle('Choose File or Directory') - self.explore(self.file_dialog) - self.file_dialog.exec_() - if self.fileName == "" : return - self.lineEditVal.setText(self.fileName) - self.LEvaleurPressed() - - - def explore(self,widget): - for c in widget.children() : - if isinstance(c, QTreeView) : - c.clicked.connect (self.changeBoutonOpen) - self.monTreeView=c - try : - if c.text() == "&Open" : self.monBoutonOpen=c - except : pass - self.explore(c) - - - def changeBoutonOpen(self): - self.monBoutonOpen.setEnabled(True) - self.monBoutonOpen.setText("Choose") - self.monBoutonOpen.clicked.connect(self.monBoutonOpenClicked) - index = self.monTreeView.currentIndex(); - self.fileName2 = self.monTreeView.model().data(index) - - def monBoutonOpenClicked(self): - try : - self.fileName=self.file_dialog.selectedFiles()[0] - except : - self.fileName=self.file_dialog.directory().absolutePath() - self.file_dialog.close() - self.file_dialog=None - - def BRepertoirePressed(self): - directory = QFileDialog.getExistingDirectory(self.appliEficas, - directory = self.appliEficas.maConfiguration.savedir, - options = QFileDialog.ShowDirsOnly) - - if not (directory == "") : - absdir = os.path.abspath(directory) - self.appliEficas.maConfiguration.savedir = os.path.dirname(absdir) - self.lineEditVal.setText(directory) - self.LEvaleurPressed() - - def BSelectInFilePressed(self): - from monSelectImage import MonSelectImage - MonSelectImage(file=self.image,parent=self).show() - - - - def BSalomePressed(self): + def BFichierVisu(self): + fichier=self.lineEditVal.text() + if fichier == None or str(fichier)=="" : return + from .monViewTexte import ViewText + try : + if sys.platform[0:5]=="linux" : + #cmd="xdg-open "+ str(fichier) + #changer pour marcher dans l'EDC + #cmd="gedit "+ str(fichier) + from os.path import splitext + fileName,extension = splitext(fichier) + if extension in self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions: + cmd=self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions[extension] + " " + str(fichier) + else: cmd="xdg-open "+ str(fichier) + os.system(cmd) + else : + os.startfile(str(fichier)) + except: + try : + fp=open(fichier) + txt=fp.read() + nomFichier=QFileInfo(fichier).baseName() + maVue=ViewText(self,entete=nomFichier) + maVue.setText(txt) + maVue.show() + fp.close() + except: + QMessageBox.warning( None, + tr("Visualisation Fichier "), + tr("Impossibilite d'afficher le Fichier"),) + + def BFichierPressed(self): + mctype = self.node.item.get_definition().type + if len(mctype) > 1: + filters = mctype[1] + elif hasattr(mctype[0], "filters"): + filters = mctype[0].filters + else: + filters = "" + if len(mctype) > 2 and mctype[2] == "Sauvegarde": + fichier = QFileDialog.getSaveFileName(self.appliEficas, + tr('Use File'), + self.appliEficas.maConfiguration.savedir, + filters) + else: + #print(filters) + fichier = QFileDialog.getOpenFileName(self.appliEficas, + tr('Ouvrir Fichier'), + self.appliEficas.maConfiguration.savedir, + filters) + + fichier=fichier[0] + if not(fichier == ""): + ulfile = os.path.abspath(fichier) + self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] + self.lineEditVal.setText(fichier) + self.editor.afficheCommentaire(tr("Fichier selectionne")) + self.LEvaleurPressed() + if (QFileInfo(fichier).suffix() in listeSuffixe ): + self.image=fichier + if (not hasattr(self,"BSelectInFile")): + try : + self.BSelectInFile = QPushButton(self) + self.BSelectInFile.setMinimumSize(QSize(140,40)) + self.BSelectInFile.setObjectName("BSelectInFile") + self.gridLayout.addWidget(self.BSelectInFile,1,1,1,1) + self.BSelectInFile.setText(tr("Selection")) + self.BSelectInFile.clicked.connect(self.BSelectInFilePressed) + except : + pass + else : + self.BSelectInFile.setVisible(1) + + elif hasattr(self, "BSelectInFile"): + self.BSelectInFile.setVisible(0) + + def BFichierOuRepertoirePressed(self): + self.fileName="" + self.file_dialog=QFileDialog() + self.file_dialog.setFileMode(QFileDialog.Directory); + self.file_dialog.setFileMode(QFileDialog.Directory|QFileDialog.ExistingFiles) + self.file_dialog.setOption(QFileDialog.DontUseNativeDialog,True); + self.file_dialog.setWindowTitle('Choose File or Directory') + self.explore(self.file_dialog) + self.file_dialog.exec_() + if self.fileName == "" : return + self.lineEditVal.setText(self.fileName) + self.LEvaleurPressed() + + + def explore(self,widget): + for c in widget.children() : + if isinstance(c, QTreeView) : + c.clicked.connect (self.changeBoutonOpen) + self.monTreeView=c + try : + if c.text() == "&Open" : self.monBoutonOpen=c + except : pass + self.explore(c) + + + def changeBoutonOpen(self): + self.monBoutonOpen.setEnabled(True) + self.monBoutonOpen.setText("Choose") + self.monBoutonOpen.clicked.connect(self.monBoutonOpenClicked) + index = self.monTreeView.currentIndex(); + self.fileName2 = self.monTreeView.model().data(index) + + def monBoutonOpenClicked(self): + try : + self.fileName=self.file_dialog.selectedFiles()[0] + except : + self.fileName=self.file_dialog.directory().absolutePath() + self.file_dialog.close() + self.file_dialog=None + + def BRepertoirePressed(self): + directory = QFileDialog.getExistingDirectory(self.appliEficas, + directory = self.appliEficas.maConfiguration.savedir, + options = QFileDialog.ShowDirsOnly) + + if not (directory == "") : + absdir = os.path.abspath(directory) + self.appliEficas.maConfiguration.savedir = os.path.dirname(absdir) + self.lineEditVal.setText(directory) + self.LEvaleurPressed() + + def BSelectInFilePressed(self): + from monSelectImage import MonSelectImage + MonSelectImage(file=self.image,parent=self).show() + + + + def BSalomePressed(self): self.editor.afficheCommentaire("") selection=[] commentaire="" @@ -374,34 +374,34 @@ class ContientIcones(object): if 'grma' in repr(kwType): kwType = "GROUP_MA" if kwType in ("GROUP_NO","GROUP_MA"): - selection, commentaire = self.appliEficas.selectGroupFromSalome(kwType,editor=self.editor) + selection, commentaire = self.appliEficas.selectGroupFromSalome(kwType,editor=self.editor) mc = self.node.item.get_definition() if (isinstance(mc.type,tuple) and len(mc.type) > 1 and "(*.med)" in mc.type[1] ): - selection, commentaire = self.appliEficas.selectMeshFile(editor=self.editor) - #print selection, commentaire - if commentaire != "" : - QMessageBox.warning( None, - tr("Export Med vers Fichier "), - tr("Impossibilite d exporter le Fichier"),) - return - else : - self.lineEditVal.setText(str(selection)) - return + selection, commentaire = self.appliEficas.selectMeshFile(editor=self.editor) + #print selection, commentaire + if commentaire != "" : + QMessageBox.warning( None, + tr("Export Med vers Fichier "), + tr("Impossibilite d exporter le Fichier"),) + return + else : + self.lineEditVal.setText(str(selection)) + return from Accas import SalomeEntry if inspect.isclass(kwType) and issubclass(kwType, SalomeEntry): - selection, commentaire = self.appliEficas.selectEntryFromSalome(kwType,editor=self.editor) + selection, commentaire = self.appliEficas.selectEntryFromSalome(kwType,editor=self.editor) if commentaire !="" : self.editor.afficheInfos(tr(str(commentaire))) if selection == [] : return min,max=self.node.item.getMinMax() - if max > 1 : - self.ajoutNValeur(selection) - return + if max > 1 : + self.ajoutNValeur(selection) + return monTexte="" for geomElt in selection: monTexte=geomElt+"," @@ -409,21 +409,20 @@ class ContientIcones(object): self.lineEditVal.setText(str(monTexte)) self.LEvaleurPressed() - def BView2DPressed(self): + def BView2DPressed(self): try : - # cas d un Simp de base - valeur=self.lineEditVal.text() + # cas d un Simp de base + valeur=self.lineEditVal.text() except : - valeur=self.textSelected + valeur=self.textSelected valeur = str(valeur) if valeur == str("") : return if valeur : - ok, msgError = self.appliEficas.displayShape(valeur) - if not ok: - self.editor.afficheInfos(msgError,Qt.red) + ok, msgError = self.appliEficas.displayShape(valeur) + if not ok: + self.editor.afficheInfos(msgError,Qt.red) - def BParametresPressed(self): + def BParametresPressed(self): liste=self.node.item.getListeParamPossible() from monListeParamPanel import MonListeParamPanel MonListeParamPanel(liste=liste,parent=self).show() - diff --git a/InterfaceQT4/gereListe.py b/InterfaceQT4/gereListe.py index 1f405c1f..86d77580 100644 --- a/InterfaceQT4/gereListe.py +++ b/InterfaceQT4/gereListe.py @@ -21,8 +21,8 @@ from __future__ import absolute_import try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import types,os @@ -40,302 +40,302 @@ from InterfaceQT4.monViewTexte import ViewText # ---------------------- # class LECustom(QLineEdit): # ---------------------- # - def __init__(self,parent,parentQt,i): - """ - Constructor - """ - QLineEdit.__init__(self,parent) - - self.parentQt=parentQt - self.num=i - self.dansUnTuple=False - self.numDsLaListe=-1 - self.parentTuple=None - self.valeur=None - self.aEuLeFocus=True - - def focusInEvent(self,event): - #print ("dans focusInEvent de LECustom") - self.parentQt.aEuLeFocus=True - self.aEuLeFocus=True - self.parentQt.lineEditEnCours=self - self.parentQt.numLineEditEnCours=self.num - self.parentQt.textSelected=self.text() - self.setStyleSheet("border: 2px solid gray") - QLineEdit.focusInEvent(self,event) - - def focusOutEvent(self,event): - #print ('focusOutEvent', self.aEuLeFocus) - self.setStyleSheet("border: 0px") - if self.dansUnTuple : self.setStyleSheet("background:rgb(235,235,235); border: 0px;") - elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)") - else : self.setStyleSheet("background:rgb(235,235,235)") - if self.aEuLeFocus: - self.aEuLeFocus=False - self.litValeur() - if self.dansUnTuple : self.parentTuple.getValeur() - QLineEdit.focusOutEvent(self,event) - - - def litValeur(self): - #print ("dans litValeur de LECustom") - self.aEuLeFocus=False - val=str(self.text()) - if str(val)=="" or val==None : + def __init__(self,parent,parentQt,i): + """ + Constructor + """ + QLineEdit.__init__(self,parent) + + self.parentQt=parentQt + self.num=i + self.dansUnTuple=False + self.numDsLaListe=-1 + self.parentTuple=None self.valeur=None - return - try : - valeur=eval(val,{}) - except : + self.aEuLeFocus=True + + def focusInEvent(self,event): + #print ("dans focusInEvent de LECustom") + self.parentQt.aEuLeFocus=True + self.aEuLeFocus=True + self.parentQt.lineEditEnCours=self + self.parentQt.numLineEditEnCours=self.num + self.parentQt.textSelected=self.text() + self.setStyleSheet("border: 2px solid gray") + QLineEdit.focusInEvent(self,event) + + def focusOutEvent(self,event): + #print ('focusOutEvent', self.aEuLeFocus) + self.setStyleSheet("border: 0px") + if self.dansUnTuple : self.setStyleSheet("background:rgb(235,235,235); border: 0px;") + elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)") + else : self.setStyleSheet("background:rgb(235,235,235)") + if self.aEuLeFocus: + self.aEuLeFocus=False + self.litValeur() + if self.dansUnTuple : self.parentTuple.getValeur() + QLineEdit.focusOutEvent(self,event) + + + def litValeur(self): + #print ("dans litValeur de LECustom") + self.aEuLeFocus=False + val=str(self.text()) + if str(val)=="" or val==None : + self.valeur=None + return try : - d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) - valeur=eval(val,d) + valeur=eval(val,{}) except : - valeur=val - self.valeur=valeur - #print ('self.valeur', self.valeur) + try : + d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) + valeur=eval(val,d) + except : + valeur=val + self.valeur=valeur + #print ('self.valeur', self.valeur) - def clean(self): - self.setText("") + def clean(self): + self.setText("") - def getValeur(self): - #return self.text() - self.litValeur() - return self.valeur + def getValeur(self): + #return self.text() + self.litValeur() + return self.valeur - def setValeur(self,valeur): - self.setText(valeur) + def setValeur(self,valeur): + self.setText(valeur) # --------------------------- # class LECustomTuple(LECustom): # --------------------------- # - def __init__(self,parent): - # index sera mis a jour par TupleCustom - parentQt=parent.parent().parent().parent() - LECustom. __init__(self,parent,parentQt,0) - #print (dir(self)) + def __init__(self,parent): + # index sera mis a jour par TupleCustom + parentQt=parent.parent().parent().parent() + LECustom. __init__(self,parent,parentQt,0) + #print (dir(self)) # ---------------------------- # class MonLabelListeClic(QLabel): # ---------------------------- # - def __init__(self,parent): - QLabel.__init__(self,parent) - self.parent=parent + def __init__(self,parent): + QLabel.__init__(self,parent) + self.parent=parent - def event(self,event) : - if event.type() == QEvent.MouseButtonRelease: - self.texte=self.text() - self.parent.traiteClicSurLabelListe(self.texte) - return QLabel.event(self,event) + def event(self,event) : + if event.type() == QEvent.MouseButtonRelease: + self.texte=self.text() + self.parent.traiteClicSurLabelListe(self.texte) + return QLabel.event(self,event) # ------------- # class GereListe(object): # ------------- # - def __init__(self): - self.connecterSignaux() - - def connecterSignaux(self): - if hasattr(self,'RBHaut'): - self.RBHaut.clicked.connect(self.hautPushed) - self.RBBas.clicked.connect(self.basPushed) - self.RBMoins.clicked.connect(self.moinsPushed) - self.RBPlus.clicked.connect(self.plusPushed) - self.RBVoisListe.clicked.connect(self.voisListePushed) - if hasattr(self,'PBAlpha'): - self.PBCata.clicked.connect(self.cataPushed) - self.PBAlpha.clicked.connect(self.alphaPushed) - self.PBFind.clicked.connect(self.findPushed) - self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed) - if hasattr(self, 'PBValideFeuille'): - self.PBValideFeuille.clicked.connect(self.changeValeur) - - def filtreListe(self): - l=[] - if self.filtre != "" : - for i in self.listeAAfficher : - if i.find(self.filtre) == 0 :l.append(i) - self.listeAAfficher=l - if self.alpha : self.listeAAfficher.sort() - - def LEFiltreReturnPressed(self): - self.filtre= self.LEFiltre.text() - self.prepareListeResultatFiltre() - - def findPushed(self): - self.filtre= self.LEFiltre.text() - self.prepareListeResultatFiltre() - - def alphaPushed(self): - #print "alphaPushed" ,self.alpha - if self.alpha == 1 : return - self.alpha=1 - self.prepareListeResultat() - - def cataPushed(self): - if self.alpha == 0 : return - self.alpha=0 - self.prepareListeResultat() - - def hautPushed(self): - #print ('hautPushed') - if self.numLineEditEnCours == 0 : return - if self.numLineEditEnCours == 1 : return - else : numEchange=self.numLineEditEnCours-1 - self.echange(self.numLineEditEnCours,numEchange) - self.lineEditEnCours.setFocus(True) - self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) - - - def basPushed(self): - #print ('hautPushed') - if self.numLineEditEnCours == 0 : return - if self.numLineEditEnCours == self.indexDernierLabel : return - else : numEchange=self.numLineEditEnCours+1 - self.echange(self.numLineEditEnCours,numEchange) - self.lineEditEnCours.setFocus(True) - self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) - - def echange(self,num1,num2): - # on donne le focus au a celui ou on a bouge - # par convention le 2 - #print ('echange') - nomLineEdit=self.nomLine+str(num1) - #print (nomLineEdit) - courant=getattr(self,nomLineEdit) - valeurAGarder=courant.text() - nomLineEdit2=self.nomLine+str(num2) - #print (nomLineEdit2) - courant2=getattr(self,nomLineEdit2) - courant.setText(courant2.text()) - courant2.setText(valeurAGarder) - # pour monWidgetCreeUserAssd - self.num1=num1 - self.num2=num2 - self.changeValeur(changeDePlace=False) - self.numLineEditEnCours=num2 - self.lineEditEnCours=courant2 - self.lineEditEnCours.setFocus(True) - - def moinsPushed(self): - # on supprime le dernier - #print ('moinsPushed') - if self.numLineEditEnCours == 0 : return - if self.indexDernierLabel == 0 : return - if self.numLineEditEnCours==self.indexDernierLabel : - nomLineEdit=self.nomLine+str(self.indexDernierLabel) + def __init__(self): + self.connecterSignaux() + + def connecterSignaux(self): + if hasattr(self,'RBHaut'): + self.RBHaut.clicked.connect(self.hautPushed) + self.RBBas.clicked.connect(self.basPushed) + self.RBMoins.clicked.connect(self.moinsPushed) + self.RBPlus.clicked.connect(self.plusPushed) + self.RBVoisListe.clicked.connect(self.voisListePushed) + if hasattr(self,'PBAlpha'): + self.PBCata.clicked.connect(self.cataPushed) + self.PBAlpha.clicked.connect(self.alphaPushed) + self.PBFind.clicked.connect(self.findPushed) + self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed) + if hasattr(self, 'PBValideFeuille'): + self.PBValideFeuille.clicked.connect(self.changeValeur) + + def filtreListe(self): + l=[] + if self.filtre != "" : + for i in self.listeAAfficher : + if i.find(self.filtre) == 0 :l.append(i) + self.listeAAfficher=l + if self.alpha : self.listeAAfficher.sort() + + def LEFiltreReturnPressed(self): + self.filtre= self.LEFiltre.text() + self.prepareListeResultatFiltre() + + def findPushed(self): + self.filtre= self.LEFiltre.text() + self.prepareListeResultatFiltre() + + def alphaPushed(self): + #print "alphaPushed" ,self.alpha + if self.alpha == 1 : return + self.alpha=1 + self.prepareListeResultat() + + def cataPushed(self): + if self.alpha == 0 : return + self.alpha=0 + self.prepareListeResultat() + + def hautPushed(self): + #print ('hautPushed') + if self.numLineEditEnCours == 0 : return + if self.numLineEditEnCours == 1 : return + else : numEchange=self.numLineEditEnCours-1 + self.echange(self.numLineEditEnCours,numEchange) + self.lineEditEnCours.setFocus(True) + self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + + def basPushed(self): + #print ('hautPushed') + if self.numLineEditEnCours == 0 : return + if self.numLineEditEnCours == self.indexDernierLabel : return + else : numEchange=self.numLineEditEnCours+1 + self.echange(self.numLineEditEnCours,numEchange) + self.lineEditEnCours.setFocus(True) + self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + def echange(self,num1,num2): + # on donne le focus au a celui ou on a bouge + # par convention le 2 + #print ('echange') + nomLineEdit=self.nomLine+str(num1) + #print (nomLineEdit) courant=getattr(self,nomLineEdit) + valeurAGarder=courant.text() + nomLineEdit2=self.nomLine+str(num2) + #print (nomLineEdit2) + courant2=getattr(self,nomLineEdit2) + courant.setText(courant2.text()) + courant2.setText(valeurAGarder) + # pour monWidgetCreeUserAssd + self.num1=num1 + self.num2=num2 + self.changeValeur(changeDePlace=False) + self.numLineEditEnCours=num2 + self.lineEditEnCours=courant2 + self.lineEditEnCours.setFocus(True) + + def moinsPushed(self): + # on supprime le dernier + #print ('moinsPushed') + if self.numLineEditEnCours == 0 : return + if self.indexDernierLabel == 0 : return + if self.numLineEditEnCours==self.indexDernierLabel : + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + courant.clean() + else : + for i in range (self.numLineEditEnCours, self.indexDernierLabel): + aRemonter=i+1 + nomLineEdit=self.nomLine+str(aRemonter) + courant=getattr(self,nomLineEdit) + valeurARemonter=courant.getValeur() + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if valeurARemonter != None : courant.setValeur(valeurARemonter) + else : courant.clean() + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + courant.clean() + self.changeValeur(changeDePlace=False,oblige=True) + self.setValide() + + def plusPushed(self): + #print ('plusPushed gereliste') + if self.indexDernierLabel == self.monSimpDef.max: + if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide() + else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red) + return + self.ajoutLineEdit() + self.descendLesLignes() + self.chercheLigneVide() + QTimer.singleShot(1, self.rendVisibleLigne) + + def chercheLigneVide(self): + #print ('chercheLigneVide') + for i in range(self.indexDernierLabel) : + nomLineEdit=self.nomLine+str(i+1) + courant=getattr(self,nomLineEdit) + valeur=courant.getValeur() + if valeur=="" or valeur == None : + courant.setFocus(True) + self.estVisible=courant + + def descendLesLignes(self): + #print ('descendLesLignes') + if self.numLineEditEnCours==self.indexDernierLabel : return + nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1) + courant=getattr(self,nomLineEdit) + valeurADescendre=courant.getValeur() courant.clean() - else : - for i in range (self.numLineEditEnCours, self.indexDernierLabel): - aRemonter=i+1 - nomLineEdit=self.nomLine+str(aRemonter) - courant=getattr(self,nomLineEdit) - valeurARemonter=courant.getValeur() - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if valeurARemonter != None : courant.setValeur(valeurARemonter) - else : courant.clean() - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - courant=getattr(self,nomLineEdit) - courant.clean() - self.changeValeur(changeDePlace=False,oblige=True) - self.setValide() - - def plusPushed(self): - #print ('plusPushed gereliste') - if self.indexDernierLabel == self.monSimpDef.max: - if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide() - else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red) - return - self.ajoutLineEdit() - self.descendLesLignes() - self.chercheLigneVide() - QTimer.singleShot(1, self.rendVisibleLigne) - - def chercheLigneVide(self): - #print ('chercheLigneVide') - for i in range(self.indexDernierLabel) : - nomLineEdit=self.nomLine+str(i+1) - courant=getattr(self,nomLineEdit) - valeur=courant.getValeur() - if valeur=="" or valeur == None : - courant.setFocus(True) - self.estVisible=courant - - def descendLesLignes(self): - #print ('descendLesLignes') - if self.numLineEditEnCours==self.indexDernierLabel : return - nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1) - courant=getattr(self,nomLineEdit) - valeurADescendre=courant.getValeur() - courant.clean() - for i in range (self.numLineEditEnCours+1, self.indexDernierLabel): - aDescendre=i+1 - nomLineEdit=self.nomLine+str(aDescendre) - courant=getattr(self,nomLineEdit) - valeurAGarder=courant.getValeur() - courant.setValeur(valeurADescendre) - valeurADescendre=valeurAGarder - self.changeValeur(changeDePlace=False) - if hasattr (self, 'lineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) - - def voisListePushed(self): - texteValeurs="" - for v in self.node.item.getListeValeurs(): - texteValeurs+=str(v)+", " - entete="Valeurs pour "+self.nom - f=ViewText(self,self.editor,entete,texteValeurs[0:-2]) - f.show() - - - def selectInFile(self): - init=str( self.editor.maConfiguration.savedir) - fn = QFileDialog.getOpenFileName(self.node.appliEficas, - tr("Fichier de donnees"), - init, - tr('Tous les Fichiers (*)',)) - fn=fn[0] - if fn == None : return - if fn == "" : return - ulfile = os.path.abspath(fn) - self.editor.maConfiguration.savedir=os.path.split(ulfile)[0] - - from .monSelectVal import MonSelectVal - MonSelectVal(file=fn,parent=self).show() - - def noircirResultatFiltre(self): - filtre=str(self.LEFiltre.text()) - for cb in self.listeCbRouge: - palette = QPalette(Qt.red) - palette.setColor(QPalette.WindowText,Qt.black) - cb.setPalette(palette) - t=cb.text() - cb.setText(t) - self.LEFiltre.setText("") - self.listeCbRouge = [] + for i in range (self.numLineEditEnCours+1, self.indexDernierLabel): + aDescendre=i+1 + nomLineEdit=self.nomLine+str(aDescendre) + courant=getattr(self,nomLineEdit) + valeurAGarder=courant.getValeur() + courant.setValeur(valeurADescendre) + valeurADescendre=valeurAGarder + self.changeValeur(changeDePlace=False) + if hasattr (self, 'lineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) + + def voisListePushed(self): + texteValeurs="" + for v in self.node.item.getListeValeurs(): + texteValeurs+=str(v)+", " + entete="Valeurs pour "+self.nom + f=ViewText(self,self.editor,entete,texteValeurs[0:-2]) + f.show() + + + def selectInFile(self): + init=str( self.editor.maConfiguration.savedir) + fn = QFileDialog.getOpenFileName(self.node.appliEficas, + tr("Fichier de donnees"), + init, + tr('Tous les Fichiers (*)',)) + fn=fn[0] + if fn == None : return + if fn == "" : return + ulfile = os.path.abspath(fn) + self.editor.maConfiguration.savedir=os.path.split(ulfile)[0] + + from .monSelectVal import MonSelectVal + MonSelectVal(file=fn,parent=self).show() + + def noircirResultatFiltre(self): + filtre=str(self.LEFiltre.text()) + for cb in self.listeCbRouge: + palette = QPalette(Qt.red) + palette.setColor(QPalette.WindowText,Qt.black) + cb.setPalette(palette) + t=cb.text() + cb.setText(t) + self.LEFiltre.setText("") + self.listeCbRouge = [] # ----------- # class GerePlie(object): # ----------- # - def gereIconePlier(self): - if not(hasattr(self,'BFermeListe')) : return - self.editor.listeDesListesOuvertes.add(self.node.item) - repIcon=self.node.editor.appliEficas.repIcon - if not (self.editor.afficheListesPliees): - fichier=os.path.join(repIcon, 'empty.png') + def gereIconePlier(self): + if not(hasattr(self,'BFermeListe')) : return + self.editor.listeDesListesOuvertes.add(self.node.item) + repIcon=self.node.editor.appliEficas.repIcon + if not (self.editor.afficheListesPliees): + fichier=os.path.join(repIcon, 'empty.png') + icon = QIcon(fichier) + self.BFermeListe.setIcon(icon) + return + fichier=os.path.join(repIcon, 'minusnode.png') icon = QIcon(fichier) self.BFermeListe.setIcon(icon) - return - fichier=os.path.join(repIcon, 'minusnode.png') - icon = QIcon(fichier) - self.BFermeListe.setIcon(icon) - self.BFermeListe.clicked.connect( self.selectWidgetPlie) - - def selectWidgetPlie(self): - self.editor.listeDesListesOuvertes.remove(self.node.item) - self.reaffichePourDeplier() + self.BFermeListe.clicked.connect( self.selectWidgetPlie) + + def selectWidgetPlie(self): + self.editor.listeDesListesOuvertes.remove(self.node.item) + self.reaffichePourDeplier() diff --git a/InterfaceQT4/gereRegles.py b/InterfaceQT4/gereRegles.py index e84486b9..8579a578 100644 --- a/InterfaceQT4/gereRegles.py +++ b/InterfaceQT4/gereRegles.py @@ -20,7 +20,7 @@ from __future__ import absolute_import try : - from builtins import object + from builtins import object except : pass from PyQt5.QtCore import Qt @@ -29,45 +29,42 @@ from Extensions.i18n import tr class GereRegles(object) : - def appellebuildLBRegles(self): - from .browser import JDCTree - if isinstance(self,JDCTree): - self.appellebuildLBReglesForJdC() - else : - self.appellebuildLBReglesForCommand() - self.buildLBRegles(self.listeRegles,self.listeNomsEtapes) - self.afficheRegles() - - def appellebuildLBReglesForCommand(self): - self.listeRegles = self.item.getRegles() - self.listeNomsEtapes = self.item.getMcPresents() + def appellebuildLBRegles(self): + from .browser import JDCTree + if isinstance(self,JDCTree): + self.appellebuildLBReglesForJdC() + else : + self.appellebuildLBReglesForCommand() + self.buildLBRegles(self.listeRegles,self.listeNomsEtapes) + self.afficheRegles() - def appellebuildLBReglesForJdC(self): - self.listeRegles=self.item.getRegles() - self.listeNomsEtapes = self.item.getLNomsEtapes() + def appellebuildLBReglesForCommand(self): + self.listeRegles = self.item.getRegles() + self.listeNomsEtapes = self.item.getMcPresents() + def appellebuildLBReglesForJdC(self): + self.listeRegles=self.item.getRegles() + self.listeNomsEtapes = self.item.getLNomsEtapes() - def buildLBRegles(self,listeRegles,listeNomsEtapes): - self.liste=[] - if len(listeRegles) > 0: - for regle in listeRegles : - texteRegle=regle.getText() - texteMauvais,test = regle.verif(listeNomsEtapes) - for ligne in texteRegle.split("\n") : - if ligne == "" : continue - if ligne[0]=="\t" : ligne=" "+ligne[1:] - if test : - self.liste.append((ligne,Qt.black)) - else : - self.liste.append((ligne,Qt.red)) - self.liste.append(("",Qt.red)) - if self.liste==[] : self.liste.append(("pas de regle de construction pour ce jeu de commandes",Qt.black)) - - def afficheRegles(self): - titre="Regles pour "+self.item.nom - w = ViewRegles( self.editor,self.liste,titre ) - w.exec_() - + def buildLBRegles(self,listeRegles,listeNomsEtapes): + self.liste=[] + if len(listeRegles) > 0: + for regle in listeRegles : + texteRegle=regle.getText() + texteMauvais,test = regle.verif(listeNomsEtapes) + for ligne in texteRegle.split("\n") : + if ligne == "" : continue + if ligne[0]=="\t" : ligne=" "+ligne[1:] + if test : + self.liste.append((ligne,Qt.black)) + else : + self.liste.append((ligne,Qt.red)) + self.liste.append(("",Qt.red)) + if self.liste==[] : self.liste.append(("pas de regle de construction pour ce jeu de commandes",Qt.black)) + def afficheRegles(self): + titre="Regles pour "+self.item.nom + w = ViewRegles( self.editor,self.liste,titre ) + w.exec_() diff --git a/InterfaceQT4/gereTraduction.py b/InterfaceQT4/gereTraduction.py index 9bca1b37..146a19ee 100644 --- a/InterfaceQT4/gereTraduction.py +++ b/InterfaceQT4/gereTraduction.py @@ -18,7 +18,7 @@ # from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from PyQt5.QtWidgets import QFileDialog, QApplication @@ -28,20 +28,20 @@ from Extensions.i18n import tr def traduction(directPath,editor,version): - if version == "V9V10" : - from Traducteur import traduitV9V10 - suffixe="v10.comm" + if version == "V9V10" : + from Traducteur import traduitV9V10 + suffixe="v10.comm" if version == "V10V11" : - from Traducteur import traduitV10V11 - suffixe="v11.comm" + from Traducteur import traduitV10V11 + suffixe="v11.comm" if version == "V11V12" : - from Traducteur import traduitV11V12 - suffixe="v12.comm" + from Traducteur import traduitV11V12 + suffixe="v12.comm" - fn = QFileDialog.getOpenFileName( - editor.appliEficas, + fn = QFileDialog.getOpenFileName( + editor.appliEficas, tr('Traduire Fichier'), - directPath , + directPath , tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)')) @@ -70,13 +70,13 @@ def traduction(directPath,editor,version): texte= f.read() f.close() else : - texte = Entete - commande="diff "+FichieraTraduire+" "+FichierTraduit+" >/dev/null" - try : - if os.system(commande) == 0 : - texte = texte + tr("Pas de difference entre le fichier origine et le fichier traduit") - except : - pass + texte = Entete + commande="diff "+FichieraTraduire+" "+FichierTraduit+" >/dev/null" + try : + if os.system(commande) == 0 : + texte = texte + tr("Pas de difference entre le fichier origine et le fichier traduit") + except : + pass from .monVisu import DVisu titre = "conversion de "+ FichieraTraduire @@ -84,4 +84,3 @@ def traduction(directPath,editor,version): monVisuDialg.setWindowTitle(titre) monVisuDialg.TB.setText(texte) monVisuDialg.show() - diff --git a/InterfaceQT4/groupe.py b/InterfaceQT4/groupe.py index 5a541edb..73c31ac2 100644 --- a/InterfaceQT4/groupe.py +++ b/InterfaceQT4/groupe.py @@ -27,69 +27,69 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .gereIcones import FacultatifOuOptionnel -import Accas +import Accas import traceback - + # Import des panels class Groupe(QWidget,FacultatifOuOptionnel): - """ - """ - def __init__(self,node,editor,parentQt,definition,obj,niveau,commande=None): - #print ("groupe : ",self.node.item.nom," ",self.node.fenetre) - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - self.setupUi(self) - self.editor=editor - self.obj=obj - self.niveau=niveau - self.definition=definition - self.parentQt=parentQt - self.maCommande=commande - self.listeFocus=[] - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - self.jdc=self.node.item.getJdc() - self.setIconePoubelle() - self.setIconesGenerales() - self.setRun() - self.setValide() - self.setReglesEtAide() - self.afficheMots() - self.listeMCAAjouter=[] - self.dictMCVenantDesBlocs={} - if hasattr(self,'RBDeplie') : self.RBDeplie.clicked.connect(self.setDeplie) - if hasattr(self,'RBPlie') : self.RBPlie.clicked.connect( self.setPlie) - - self.setAcceptDrops(True) - #if hasattr (self, 'commandesLayout'): - # print (' j ajoute un spacer dans ', self.node.item.nom) - # spacerItem = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding) - # self.commandesLayout.addItem(spacerItem) - - def donneFocus(self): - for fenetre in self.listeFocus: - if fenetre==None : return - if fenetre.node.item.isValid() == 0 : - fenetre.prendLeFocus=1 - fenetre.hide() - fenetre.show() - - - def afficheMots(self): - #print ("ds afficheMots ",self.node.item.nom,self.node.plie) - for node in self.node.children: - # non return mais continue car il faut tenir compte des blocs - if node.appartientAUnNoeudPlie==True : continue - widget=node.getPanelGroupe(self,self.maCommande) - #print ("widget pour ", node.item.nom, widget) - self.listeFocus.append(node.fenetre) - #print "fin pour " , self.node.item.nom - - - def calculOptionnel(self): + """ + """ + def __init__(self,node,editor,parentQt,definition,obj,niveau,commande=None): + #print ("groupe : ",self.node.item.nom," ",self.node.fenetre) + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + self.setupUi(self) + self.editor=editor + self.obj=obj + self.niveau=niveau + self.definition=definition + self.parentQt=parentQt + self.maCommande=commande + self.listeFocus=[] + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + self.jdc=self.node.item.getJdc() + self.setIconePoubelle() + self.setIconesGenerales() + self.setRun() + self.setValide() + self.setReglesEtAide() + self.afficheMots() + self.listeMCAAjouter=[] + self.dictMCVenantDesBlocs={} + if hasattr(self,'RBDeplie') : self.RBDeplie.clicked.connect(self.setDeplie) + if hasattr(self,'RBPlie') : self.RBPlie.clicked.connect( self.setPlie) + + self.setAcceptDrops(True) + #if hasattr (self, 'commandesLayout'): + # print (' j ajoute un spacer dans ', self.node.item.nom) + # spacerItem = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding) + # self.commandesLayout.addItem(spacerItem) + + def donneFocus(self): + for fenetre in self.listeFocus: + if fenetre==None : return + if fenetre.node.item.isValid() == 0 : + fenetre.prendLeFocus=1 + fenetre.hide() + fenetre.show() + + + def afficheMots(self): + #print ("ds afficheMots ",self.node.item.nom,self.node.plie) + for node in self.node.children: + # non return mais continue car il faut tenir compte des blocs + if node.appartientAUnNoeudPlie==True : continue + widget=node.getPanelGroupe(self,self.maCommande) + #print ("widget pour ", node.item.nom, widget) + self.listeFocus.append(node.fenetre) + #print "fin pour " , self.node.item.nom + + + def calculOptionnel(self): self.listeMc=[] self.listeMcRegle=[] self.dictToolTipMc={} @@ -98,114 +98,113 @@ class Groupe(QWidget,FacultatifOuOptionnel): # n ont pas toutes ces methodes try : #if 1 : - self.listeMc = self.obj.getListeMcOrdonnee(genea,self.jdc.cata_ordonne_dico) - listeNomsPresents=self.obj.dictMcPresents() - for regle in self.obj.getRegles(): - (monToolTip,regleOk)=regle.verif(listeNomsPresents) - if regleOk : continue - for mc in regle.mcs : - self.listeMcRegle.append(mc) - self.dictToolTipMc[mc]=monToolTip + self.listeMc = self.obj.getListeMcOrdonnee(genea,self.jdc.cata_ordonne_dico) + listeNomsPresents=self.obj.dictMcPresents() + for regle in self.obj.getRegles(): + (monToolTip,regleOk)=regle.verif(listeNomsPresents) + if regleOk : continue + for mc in regle.mcs : + self.listeMcRegle.append(mc) + self.dictToolTipMc[mc]=monToolTip except : - #print ('in except') - #print (self) - return - - def afficheOptionnel(self): + #print ('in except') + #print (self) + return + + def afficheOptionnel(self): if self.editor.maConfiguration.closeOptionnel : return liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() self.monOptionnel=self.editor.widgetOptionnel self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) - - - def ajouteMCOptionnelDesBlocs(self): - self.dictMCVenantDesBlocs={} - i=0 - self.calculOptionnel() - liste=self.listeMc - liste_rouge=self.listeMcRegle - for MC in self.listeMc : self.dictMCVenantDesBlocs[MC]=self - # ce cas est le cas machine tournant sr le plie - try : - while i < self.commandesLayout.count(): - from .monWidgetBloc import MonWidgetBloc - widget=self.commandesLayout.itemAt(i).widget() - i=i+1 - if not(isinstance(widget,MonWidgetBloc)) : continue - widget.calculOptionnel() - listeW,listeW_rouge=widget.ajouteMCOptionnelDesBlocs() - for MC in widget.dictMCVenantDesBlocs: - if MC in self.dictMCVenantDesBlocs: print ("Pb Sur les MC" ) - else : self.dictMCVenantDesBlocs[MC]=widget.dictMCVenantDesBlocs[MC] - liste=liste+listeW - liste_rouge=liste_rouge+listeW_rouge - except : - pass - return (liste,liste_rouge) - - - def reaffiche(self,nodeAVoir=None): - #print "dans reaffiche de groupe.py", nodeAVoir - self.parentQt.reaffiche(nodeAVoir) - - def recalculeListeMC(self,listeMC): - #print "pas si peu utile" - #on ajoute et on enleve - listeNode=[] - for name in listeMC : - nodeAEnlever=self.node.appendChild(name) - if nodeAEnlever.item.isMCList(): - nodeAEnlever=nodeAEnlever.children[-1] - listeNode.append(nodeAEnlever) - self.afficheOptionnel() - self.monOptionnel.affiche(self.listeMc) - if len(listeNode) == 0 : return - if len(listeNode) == 1 : - listeNode[0].delete() - self.editor.afficheInfos("") - return - for noeud in listeNode: - noeud.treeParent.item.suppItem(noeud.item) - noeud.treeParent.buildChildren() - self.editor.afficheInfos("") - - def ajoutMC(self,texteListeNom): - listeNom=texteListeNom.split("+")[1:] - firstNode=None - for nom in listeNom: - if nom not in self.dictMCVenantDesBlocs: - #print "bizarre, bizarre" - self.editor.initModif() - nouveau=self.node.appendChild(nom) - else : - self.editor.initModif() - widget=self.dictMCVenantDesBlocs[nom] - nouveau=widget.node.appendChild(nom) - if firstNode==None : firstNode=nouveau - if nouveau == None or nouveau == 0 : - self.editor.afficheInfos(tr('insertion impossible a cet endroit pour '+nom),Qt.red) - try : - self.reaffiche(firstNode) - if firstNode!=None and firstNode !=0 and firstNode.item!=None : firstNode.select() - except : - pass - - - def setPlie(self): - self.node.setPlie() - self.reaffiche(self.node) - - def setDeplie(self): - #print ('je passe ds setDeplie de groupe', self.obj.nom) - self.node.firstDeplie = False - self.node.setDeplie() - self.reaffiche(self.node) - - - def traiteClicSurLabel(self,texte): - if self.editor.code != "CARMELCND" : self.afficheOptionnel() - - - def propageChange(self,leType,donneLefocus): - self.parentQt.propageChange(leType,donneLefocus) + + def ajouteMCOptionnelDesBlocs(self): + self.dictMCVenantDesBlocs={} + i=0 + self.calculOptionnel() + liste=self.listeMc + liste_rouge=self.listeMcRegle + for MC in self.listeMc : self.dictMCVenantDesBlocs[MC]=self + # ce cas est le cas machine tournant sr le plie + try : + while i < self.commandesLayout.count(): + from .monWidgetBloc import MonWidgetBloc + widget=self.commandesLayout.itemAt(i).widget() + i=i+1 + if not(isinstance(widget,MonWidgetBloc)) : continue + widget.calculOptionnel() + listeW,listeW_rouge=widget.ajouteMCOptionnelDesBlocs() + for MC in widget.dictMCVenantDesBlocs: + if MC in self.dictMCVenantDesBlocs: print ("Pb Sur les MC" ) + else : self.dictMCVenantDesBlocs[MC]=widget.dictMCVenantDesBlocs[MC] + liste=liste+listeW + liste_rouge=liste_rouge+listeW_rouge + except : + pass + return (liste,liste_rouge) + + + def reaffiche(self,nodeAVoir=None): + #print "dans reaffiche de groupe.py", nodeAVoir + self.parentQt.reaffiche(nodeAVoir) + + def recalculeListeMC(self,listeMC): + #print "pas si peu utile" + #on ajoute et on enleve + listeNode=[] + for name in listeMC : + nodeAEnlever=self.node.appendChild(name) + if nodeAEnlever.item.isMCList(): + nodeAEnlever=nodeAEnlever.children[-1] + listeNode.append(nodeAEnlever) + self.afficheOptionnel() + self.monOptionnel.affiche(self.listeMc) + if len(listeNode) == 0 : return + if len(listeNode) == 1 : + listeNode[0].delete() + self.editor.afficheInfos("") + return + for noeud in listeNode: + noeud.treeParent.item.suppItem(noeud.item) + noeud.treeParent.buildChildren() + self.editor.afficheInfos("") + + def ajoutMC(self,texteListeNom): + listeNom=texteListeNom.split("+")[1:] + firstNode=None + for nom in listeNom: + if nom not in self.dictMCVenantDesBlocs: + #print "bizarre, bizarre" + self.editor.initModif() + nouveau=self.node.appendChild(nom) + else : + self.editor.initModif() + widget=self.dictMCVenantDesBlocs[nom] + nouveau=widget.node.appendChild(nom) + if firstNode==None : firstNode=nouveau + if nouveau == None or nouveau == 0 : + self.editor.afficheInfos(tr('insertion impossible a cet endroit pour '+nom),Qt.red) + try : + self.reaffiche(firstNode) + if firstNode!=None and firstNode !=0 and firstNode.item!=None : firstNode.select() + except : + pass + + + def setPlie(self): + self.node.setPlie() + self.reaffiche(self.node) + + def setDeplie(self): + #print ('je passe ds setDeplie de groupe', self.obj.nom) + self.node.firstDeplie = False + self.node.setDeplie() + self.reaffiche(self.node) + + + def traiteClicSurLabel(self,texte): + if self.editor.code != "CARMELCND" : self.afficheOptionnel() + + + def propageChange(self,leType,donneLefocus): + self.parentQt.propageChange(leType,donneLefocus) diff --git a/InterfaceQT4/monBoutonValide.py b/InterfaceQT4/monBoutonValide.py index 78864707..2add2cb3 100644 --- a/InterfaceQT4/monBoutonValide.py +++ b/InterfaceQT4/monBoutonValide.py @@ -29,46 +29,44 @@ from Extensions.i18n import tr class MonBoutonValide(QToolButton) : - def __init__(self,parent): + def __init__(self,parent): QToolButton.__init__(self,parent) - while( not(hasattr(parent,'node'))): - parent= parent.parent() + while( not(hasattr(parent,'node'))): + parent= parent.parent() self.parent=parent - def mouseDoubleClickEvent(self, event): + def mouseDoubleClickEvent(self, event): #print "dans mouseDoubleClickEvent" strAide=self.parent.node.item.object.getFr() if hasattr(self.parent.node.item.object.definition, 'defaut') : - strAide+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut) + strAide+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut) strRapport=str(self.parent.node.item.object.report()) self.parent.editor._viewText(strAide+"\n"+strRapport, "JDC_RAPPORT") - def mousePressEvent(self, event): - #print "dans mousePressEvent" - if self.parent.node.item.object.isValid() : - myToolTip=tr("objet valide") - if self.parent.editor.maConfiguration.differencieSiDefaut : - if hasattr(self.parent.node.item.object.definition, 'defaut') : - 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="" - texte=self.parent.node.item.object.report().report() - deb=1 - for l in texte.split('\n')[2:-2]: - if re.match('^[\t !]*$',l) : continue - if re.match('^ *Fin Mot-cl',l) : continue - if re.match('^ *D?but Mot-cl',l) : continue - if re.match('^ *Mot-cl',l) : continue - l=l.replace('!','') - if deb : - deb=0 - t=l - else : - t=t+'\n'+l - myToolTip=tr(t) - QToolTip.showText(event.globalPos(),myToolTip ) - + def mousePressEvent(self, event): + #print "dans mousePressEvent" + if self.parent.node.item.object.isValid() : + myToolTip=tr("objet valide") + if self.parent.editor.maConfiguration.differencieSiDefaut : + if hasattr(self.parent.node.item.object.definition, 'defaut') : + 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="" + texte=self.parent.node.item.object.report().report() + deb=1 + for l in texte.split('\n')[2:-2]: + if re.match('^[\t !]*$',l) : continue + if re.match('^ *Fin Mot-cl',l) : continue + if re.match('^ *D?but Mot-cl',l) : continue + if re.match('^ *Mot-cl',l) : continue + l=l.replace('!','') + if deb : + deb=0 + t=l + else : + t=t+'\n'+l + myToolTip=tr(t) + QToolTip.showText(event.globalPos(),myToolTip ) diff --git a/InterfaceQT4/monChoixCata.py b/InterfaceQT4/monChoixCata.py index 8ecd647d..b63b088d 100644 --- a/InterfaceQT4/monChoixCata.py +++ b/InterfaceQT4/monChoixCata.py @@ -28,23 +28,22 @@ from Extensions.i18n import tr # Import des panels class MonChoixCata(Ui_DChoixCata,QDialog): - """ - """ - def __init__(self, QWparent, listeCata, title = None): - QDialog.__init__(self, QWparent) - self.setModal(True) - self.setupUi(self) - self.CBChoixCata.addItems(listeCata) - self.TLNb.setText(tr("%d versions du catalogue sont disponibles", len(listeCata))) - if title is not None: - self.setWindowTitle(tr(title)) - self.buttonOk.clicked.connect(self.cataChoisi) - self.buttonCancel.clicked.connect(self.sortSansChoix) + """ + """ + def __init__(self, QWparent, listeCata, title = None): + QDialog.__init__(self, QWparent) + self.setModal(True) + self.setupUi(self) + self.CBChoixCata.addItems(listeCata) + self.TLNb.setText(tr("%d versions du catalogue sont disponibles", len(listeCata))) + if title is not None: + self.setWindowTitle(tr(title)) + self.buttonOk.clicked.connect(self.cataChoisi) + self.buttonCancel.clicked.connect(self.sortSansChoix) - def sortSansChoix(self): - QDialog.reject(self) - - def cataChoisi(self): - QDialog.accept(self) + def sortSansChoix(self): + QDialog.reject(self) + def cataChoisi(self): + QDialog.accept(self) diff --git a/InterfaceQT4/monChoixCode.py b/InterfaceQT4/monChoixCode.py index a5a2ddcc..113180b3 100644 --- a/InterfaceQT4/monChoixCode.py +++ b/InterfaceQT4/monChoixCode.py @@ -22,7 +22,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import os,sys,re @@ -31,83 +31,83 @@ from PyQt5.QtWidgets import QDialog, QRadioButton, QGroupBox, QButtonGroup from PyQt5.QtGui import QPalette from PyQt5.QtCore import QProcess, QFileInfo, Qt, QSize - + # Import des panels class MonChoixCode(Ui_ChoixCode,QDialog): - """ - Classe definissant le panel associe aux mots-cles qui demandent - a l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discretes - """ - def __init__(self, appliEficas=None): - QDialog.__init__(self,parent=appliEficas,flags=Qt.Window) - self.setModal(True) - self.setupUi(self) - self.appliEficas=appliEficas - self.verifieInstall() - self.code=None - self.buttonBox.accepted.disconnect(self.accept) - self.buttonBox.accepted.connect(self.choisitCode) - # self.pB_OK.clicked.connect(self.choisitCode) - #self.pB_cancel.clicked.connect(self.sortie) + """ + Classe definissant le panel associe aux mots-cles qui demandent + a l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discretes + """ + def __init__(self, appliEficas=None): + QDialog.__init__(self,parent=appliEficas,flags=Qt.Window) + self.setModal(True) + self.setupUi(self) + self.appliEficas=appliEficas + self.verifieInstall() + self.code=None + self.buttonBox.accepted.disconnect(self.accept) + self.buttonBox.accepted.connect(self.choisitCode) + # self.pB_OK.clicked.connect(self.choisitCode) + #self.pB_cancel.clicked.connect(self.sortie) - def sortie(self): - QDialog.reject(self) + def sortie(self): + QDialog.reject(self) - def verifieInstall(self): - self.groupCodes=QButtonGroup(self.groupBox) - vars=list(os.environ.items()) - listeCode=('Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','PSEN_N1','Telemac','ZCracks',) - for code in listeCode: - dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) - try : - l=os.listdir(dirCode) - bouton=QRadioButton(self.groupBox) - bouton.setText(code) - self.groupCodes.addButton(bouton) - self.vlBouton.addWidget(bouton) - except : - clef="PREFS_CATA_"+code - try : + def verifieInstall(self): + self.groupCodes=QButtonGroup(self.groupBox) + vars=list(os.environ.items()) + listeCode=('Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','PSEN_N1','Telemac','ZCracks',) + for code in listeCode: + dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) + try : + l=os.listdir(dirCode) + bouton=QRadioButton(self.groupBox) + bouton.setText(code) + self.groupCodes.addButton(bouton) + self.vlBouton.addWidget(bouton) + except : + clef="PREFS_CATA_"+code + try : + repIntegrateur=os.path.abspath(os.environ[clef]) + l=os.listdir(repIntegrateur) + bouton=QRadioButton(self.groupBox) + bouton.setText(code) + bouton.show() + self.groupCodes.addButton(bouton) + except : + pass + listeCodesIntegrateur=[] + for k,v in vars: + if re.search('^PREFS_CATA_',k) != None and k[11:] not in listeCode: + listeCodesIntegrateur.append(k[11:]) + for code in listeCodesIntegrateur: + try : + clef="PREFS_CATA_"+code repIntegrateur=os.path.abspath(os.environ[clef]) l=os.listdir(repIntegrateur) - bouton=QRadioButton(self.groupBox) + bouton=QRadioButton(self) bouton.setText(code) bouton.show() self.groupCodes.addButton(bouton) - except : + except : pass - listeCodesIntegrateur=[] - for k,v in vars: - if re.search('^PREFS_CATA_',k) != None and k[11:] not in listeCode: - listeCodesIntegrateur.append(k[11:]) - for code in listeCodesIntegrateur: - try : - clef="PREFS_CATA_"+code - repIntegrateur=os.path.abspath(os.environ[clef]) - l=os.listdir(repIntegrateur) - bouton=QRadioButton(self) - bouton.setText(code) - bouton.show() - self.groupCodes.addButton(bouton) - except : - pass - self.appliEficas.listeCode=self.appliEficas.listeCode+listeCodesIntegrateur + self.appliEficas.listeCode=self.appliEficas.listeCode+listeCodesIntegrateur - def choisitCode(self): - bouton=self.groupCodes.checkedButton() - if bouton==None : return - code=str(bouton.text()) - codeUpper=code.upper() - self.appliEficas.code=codeUpper - try : - dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) - l=os.listdir(dirCode) - sys.path.insert(0,dirCode) - except : - clef="PREFS_CATA_"+code - repIntegrateur=os.path.abspath(os.environ[clef]) - l=os.listdir(repIntegrateur) - sys.path.insert(0,repIntegrateur) - self.close() + def choisitCode(self): + bouton=self.groupCodes.checkedButton() + if bouton==None : return + code=str(bouton.text()) + codeUpper=code.upper() + self.appliEficas.code=codeUpper + try : + dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) + l=os.listdir(dirCode) + sys.path.insert(0,dirCode) + except : + clef="PREFS_CATA_"+code + repIntegrateur=os.path.abspath(os.environ[clef]) + l=os.listdir(repIntegrateur) + sys.path.insert(0,repIntegrateur) + self.close() diff --git a/InterfaceQT4/monChoixCommande.py b/InterfaceQT4/monChoixCommande.py index d7d2d896..367b3523 100644 --- a/InterfaceQT4/monChoixCommande.py +++ b/InterfaceQT4/monChoixCommande.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desChoixCommandes import Ui_ChoixCommandes @@ -32,327 +32,327 @@ from PyQt5.QtCore import QSize, QRect from Extensions.i18n import tr import os - + # Import des panels class MonChoixCommande(Ui_ChoixCommandes,QWidget): - """ - """ - def __init__(self,node, jdc_item, editor): - QWidget.__init__(self,parent=None) - self.setupUi(self) - - self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons') - iconeFile=os.path.join(self.repIcon,'lettreRblanc30.png') - icon = QIcon(iconeFile) - self.RBRegle.setIcon(icon) - self.RBRegle.setIconSize(QSize(21, 31)) - - self.item = jdc_item - self.node = node - self.editor = editor - self.simpleClic=self.editor.maConfiguration.simpleClic - self.jdc = self.item.object.getJdcRoot() - debutTitre=self.editor.titre - self.listeWidget=[] - self.dicoCmd={} - if self.editor.fichier != None : - nouveauTitre=debutTitre+" "+os.path.basename(self.editor.fichier) - else : - nouveauTitre=debutTitre - self.editor.appliEficas.setWindowTitle(nouveauTitre) - - - self.RBalpha.clicked.connect(self.afficheAlpha) - self.RBGroupe.clicked.connect(self.afficheGroupe) - self.RBOrdre.clicked.connect(self.afficheOrdre) - self.RBClear.clicked.connect(self.clearFiltre) - self.RBCasse.toggled.connect(self.ajouteRadioButtons) - self.LEFiltre.returnPressed.connect(self.ajouteRadioButtons) - self.LEFiltre.textChanged.connect(self.ajouteRadioButtons) - - if self.node.tree.item.getRegles() == () : - self.RBRegle.close() - self.labelRegle.close() - else : - self.RBRegle.clicked.connect(self.afficheRegle) - - if self.editor.readercata.Ordre_Des_Commandes == None : self.RBOrdre.close() - - - #self.editor.labelCommentaire.setText("") - if self.editor.widgetOptionnel!= None : - self.editor.fermeOptionnel() - self.editor.widgetOptionnel=None - self.name=None - - self.boolAlpha=0 - self.boolGroupe=0 - self.boolOrdre=0 - if self.editor.maConfiguration.affiche=="alpha" : - self.boolAlpha==1; - self.RBalpha.setChecked(True); - self.afficheAlpha() - elif self.editor.maConfiguration.affiche=="groupe" : - self.boolGroupe==1; - self.RBGroupe.setChecked(True); - self.afficheGroupe() - elif self.editor.maConfiguration.affiche=="ordre" : - self.boolOrdre==1; - self.RBOrdre.setChecked(True); - self.afficheOrdre() - if self.editor.maConfiguration.closeFrameRechercheCommandeSurPageDesCommandes == True : self.frameAffichage.close() - - if self.editor.widgetTree != None : self.editor.restoreSplitterSizes(2) - else: self.editor.restoreSplitterSizes(3) - - def afficheRegle(self): - self.node.tree.appellebuildLBRegles() - - def afficheAlpha(self): - self.boolAlpha=1 - self.boolGroupe=0 - self.boolOrdre=0 - self.ajouteRadioButtons() - - def afficheGroupe(self): - self.boolAlpha=0 - self.boolGroupe=1 - self.boolOrdre=0 - self.ajouteRadioButtons() - - def afficheOrdre(self): - self.boolAlpha=0 - self.boolGroupe=0 - self.boolOrdre=1 - self.ajouteRadioButtons() - - def insereNoeudApresClick(self,event): - #print self.editor.Classement_Commandes_Ds_Arbre - #if self.editor.Classement_Commandes_Ds_Arbre!= () : self.chercheOu() - #print ('dans insereNoeudApresClick') - nodeCourrant=self.node.tree.currentItem() - if nodeCourrant==None: nodeCourrant=self.node.tree.racine - if self.name != None : - plier=self.editor.maConfiguration.afficheCommandesPliees - if nodeCourrant==self.node : nouveau=self.node.appendChild(self.name,'first',plier) - else : nouveau=nodeCourrant.appendBrother(self.name,plier=plier) - else : - nouveau = 0 - if nouveau == 0 : return # on n a pas insere le noeud - nouveau.setDeplie() - #if self.editor.afficheApresInsert==True : nouveau.plieToutEtReaffiche() - if self.editor.afficheApresInsert == True : - #if self.editor.affichePlie==True: nouveau.plieToutEtReaffiche() - if self.editor.maConfiguration.afficheCommandesPliees ==True: nouveau.plieToutEtReaffiche() - else : nouveau.deplieToutEtReaffiche() - nouveau.fenetre.donnePremier() - #nouveau.deplieToutEtReaffiche() - else : - self.node.setSelected(False) - nouveau.setSelected(True) - self.node.tree.setCurrentItem(nouveau) - if event != None : event.accept() - - - - def creeListeCommande(self,filtre): - listeGroupes,dictGroupes=self.jdc.getGroups() - sensibleALaCasse=self.RBCasse.isChecked() - if "CACHE" in dictGroupes: aExclure=list(dictGroupes["CACHE"]) - else: aExclure=[] - listeACreer=[] - listeEtapesDejaPresentes=[] - if self.editor.maConfiguration.rendVisiblesLesCaches : - for e in self.jdc.etapes: - listeEtapesDejaPresentes.append(e.nom) - for c in aExclure : - if c not in listeEtapesDejaPresentes : aExclure.remove(c) - for e in self.jdc.etapes: - print (e.nom) - print (e.definition.repetable) - if e.definition.repetable == 'n' : aExclure.append(e.nom) - print (aExclure) - for l in self.jdc.getListeCmd(): - print (l) - if l not in aExclure : - if sensibleALaCasse and (filtre != None and not filtre in l) : continue - if (not sensibleALaCasse) and filtre != None and (not filtre in l) and (not filtre.upper() in l) : continue - listeACreer.append(l) - return listeACreer - - def ajouteRadioButtons(self): - if self.editor.maConfiguration.nombreDeBoutonParLigne != 0 : - self.ajoutePushButtons() - return - filtre=str(self.LEFiltre.text()) - if filtre==str("") : filtre=None - if hasattr(self,'buttonGroup') : - for b in self.buttonGroup.buttons(): - self.buttonGroup.removeButton(b) - b.setParent(None) - b.close() - else : - self.buttonGroup = QButtonGroup() - for w in self.listeWidget : - w.setParent(None) - w.close() - self.listeWidget=[] - if self.boolAlpha==1 : - liste=self.creeListeCommande(filtre) - for cmd in liste : - self.dicoCmd[tr(cmd)]=cmd - rbcmd=(QRadioButton(tr(cmd))) - self.buttonGroup.addButton(rbcmd) - self.commandesLayout.addWidget(rbcmd) - #if self.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick - #else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick - #self.buttonGroup.buttonClicked.connect(self.rbClique) - if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick - if self.simpleClic : - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - else : - self.buttonGroup.buttonClicked.connect(self.rbClique) - elif self.boolGroupe==1 : - listeGroupes,dictGroupes=self.jdc.getGroups() - for grp in listeGroupes: - if grp == "CACHE" : continue - label=QLabel(self) - text=tr('Groupe : '+tr(grp)+'
') - label.setText(text) - self.listeWidget.append(label) - aAjouter=1 - sensibleALaCasse=self.RBCasse.isChecked() - for cmd in dictGroupes[grp]: - if sensibleALaCasse and (filtre != None and not filtre in cmd) : continue - if (not sensibleALaCasse) and filtre != None and (not filtre in cmd) and (not filtre.upper() in cmd) : continue - if aAjouter == 1 : - self.commandesLayout.addWidget(label) - aAjouter=0 - self.dicoCmd[tr(cmd)]=cmd - rbcmd=(QRadioButton(tr(cmd))) - self.buttonGroup.addButton(rbcmd) - self.commandesLayout.addWidget(rbcmd) - if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick - if self.simpleClic : - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - else : - self.buttonGroup.buttonClicked.connect(self.rbClique) - label2=QLabel(self) - label2.setText(" ") - self.listeWidget.append(label2) - self.commandesLayout.addWidget(label2) - elif self.boolOrdre==1 : - listeFiltre=self.creeListeCommande(filtre) - liste=[] - if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre - else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes - for cmd in Ordre_Des_Commandes : - if cmd in listeFiltre : - liste.append(cmd) - for cmd in liste : - self.dicoCmd[tr(cmd)]=cmd - rbcmd=(QRadioButton(tr(cmd))) - self.buttonGroup.addButton(rbcmd) - self.commandesLayout.addWidget(rbcmd) - if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick - if self.simpleClic : - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - else : - self.buttonGroup.buttonClicked.connect(self.rbClique) - - - - def ajoutePushButtons(self): - if hasattr(self,'buttonGroup') : - for b in self.buttonGroup.buttons(): - self.buttonGroup.removeButton(b) - b.setParent(None) - b.close() - else : - self.buttonGroup = QButtonGroup() - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - for w in self.listeWidget : - w.setParent(None) - w.close() - self.listeWidget=[] - - if not hasattr(self,'maGrilleBouton') : - #self.commandesLayout.close() - self.maGrilleBouton=QGridLayout() - self.maGrilleBouton.setSpacing(20) - self.verticalLayout.addLayout(self.maGrilleBouton) - col=-1 - ligne = 0 - - if self.boolAlpha==1 : - liste=self.creeListeCommande(None) - elif self.boolOrdre: - liste=self.creeListeCommande(None) - listeFiltre=self.creeListeCommande(None) - liste=[] - if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre - else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes - for cmd in Ordre_Des_Commandes : - if cmd in listeFiltre : - liste.append(cmd) - for cmd in liste : - col=col+1 - if col == self.editor.maConfiguration.nombreDeBoutonParLigne : - col=0 - ligne=ligne+1 - self.dicoCmd[tr(cmd)]=cmd - rbcmd=QPushButton(tr(cmd)) - rbcmd.setGeometry(QRect(40, 20, 211, 71)) - rbcmd.setMaximumSize(QSize(250, 81)) - rbcmd.setStyleSheet("background-color : rgb(66, 165, 238);\n" + """ + """ + def __init__(self,node, jdc_item, editor): + QWidget.__init__(self,parent=None) + self.setupUi(self) + + self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons') + iconeFile=os.path.join(self.repIcon,'lettreRblanc30.png') + icon = QIcon(iconeFile) + self.RBRegle.setIcon(icon) + self.RBRegle.setIconSize(QSize(21, 31)) + + self.item = jdc_item + self.node = node + self.editor = editor + self.simpleClic=self.editor.maConfiguration.simpleClic + self.jdc = self.item.object.getJdcRoot() + debutTitre=self.editor.titre + self.listeWidget=[] + self.dicoCmd={} + if self.editor.fichier != None : + nouveauTitre=debutTitre+" "+os.path.basename(self.editor.fichier) + else : + nouveauTitre=debutTitre + self.editor.appliEficas.setWindowTitle(nouveauTitre) + + + self.RBalpha.clicked.connect(self.afficheAlpha) + self.RBGroupe.clicked.connect(self.afficheGroupe) + self.RBOrdre.clicked.connect(self.afficheOrdre) + self.RBClear.clicked.connect(self.clearFiltre) + self.RBCasse.toggled.connect(self.ajouteRadioButtons) + self.LEFiltre.returnPressed.connect(self.ajouteRadioButtons) + self.LEFiltre.textChanged.connect(self.ajouteRadioButtons) + + if self.node.tree.item.getRegles() == () : + self.RBRegle.close() + self.labelRegle.close() + else : + self.RBRegle.clicked.connect(self.afficheRegle) + + if self.editor.readercata.Ordre_Des_Commandes == None : self.RBOrdre.close() + + + #self.editor.labelCommentaire.setText("") + if self.editor.widgetOptionnel!= None : + self.editor.fermeOptionnel() + self.editor.widgetOptionnel=None + self.name=None + + self.boolAlpha=0 + self.boolGroupe=0 + self.boolOrdre=0 + if self.editor.maConfiguration.affiche=="alpha" : + self.boolAlpha==1; + self.RBalpha.setChecked(True); + self.afficheAlpha() + elif self.editor.maConfiguration.affiche=="groupe" : + self.boolGroupe==1; + self.RBGroupe.setChecked(True); + self.afficheGroupe() + elif self.editor.maConfiguration.affiche=="ordre" : + self.boolOrdre==1; + self.RBOrdre.setChecked(True); + self.afficheOrdre() + if self.editor.maConfiguration.closeFrameRechercheCommandeSurPageDesCommandes == True : self.frameAffichage.close() + + if self.editor.widgetTree != None : self.editor.restoreSplitterSizes(2) + else: self.editor.restoreSplitterSizes(3) + + def afficheRegle(self): + self.node.tree.appellebuildLBRegles() + + def afficheAlpha(self): + self.boolAlpha=1 + self.boolGroupe=0 + self.boolOrdre=0 + self.ajouteRadioButtons() + + def afficheGroupe(self): + self.boolAlpha=0 + self.boolGroupe=1 + self.boolOrdre=0 + self.ajouteRadioButtons() + + def afficheOrdre(self): + self.boolAlpha=0 + self.boolGroupe=0 + self.boolOrdre=1 + self.ajouteRadioButtons() + + def insereNoeudApresClick(self,event): + #print self.editor.Classement_Commandes_Ds_Arbre + #if self.editor.Classement_Commandes_Ds_Arbre!= () : self.chercheOu() + #print ('dans insereNoeudApresClick') + nodeCourrant=self.node.tree.currentItem() + if nodeCourrant==None: nodeCourrant=self.node.tree.racine + if self.name != None : + plier=self.editor.maConfiguration.afficheCommandesPliees + if nodeCourrant==self.node : nouveau=self.node.appendChild(self.name,'first',plier) + else : nouveau=nodeCourrant.appendBrother(self.name,plier=plier) + else : + nouveau = 0 + if nouveau == 0 : return # on n a pas insere le noeud + nouveau.setDeplie() + #if self.editor.afficheApresInsert==True : nouveau.plieToutEtReaffiche() + if self.editor.afficheApresInsert == True : + #if self.editor.affichePlie==True: nouveau.plieToutEtReaffiche() + if self.editor.maConfiguration.afficheCommandesPliees ==True: nouveau.plieToutEtReaffiche() + else : nouveau.deplieToutEtReaffiche() + nouveau.fenetre.donnePremier() + #nouveau.deplieToutEtReaffiche() + else : + self.node.setSelected(False) + nouveau.setSelected(True) + self.node.tree.setCurrentItem(nouveau) + if event != None : event.accept() + + + + def creeListeCommande(self,filtre): + listeGroupes,dictGroupes=self.jdc.getGroups() + sensibleALaCasse=self.RBCasse.isChecked() + if "CACHE" in dictGroupes: aExclure=list(dictGroupes["CACHE"]) + else: aExclure=[] + listeACreer=[] + listeEtapesDejaPresentes=[] + if self.editor.maConfiguration.rendVisiblesLesCaches : + for e in self.jdc.etapes: + listeEtapesDejaPresentes.append(e.nom) + for c in aExclure : + if c not in listeEtapesDejaPresentes : aExclure.remove(c) + for e in self.jdc.etapes: + print (e.nom) + print (e.definition.repetable) + if e.definition.repetable == 'n' : aExclure.append(e.nom) + print (aExclure) + for l in self.jdc.getListeCmd(): + print (l) + if l not in aExclure : + if sensibleALaCasse and (filtre != None and not filtre in l) : continue + if (not sensibleALaCasse) and filtre != None and (not filtre in l) and (not filtre.upper() in l) : continue + listeACreer.append(l) + return listeACreer + + def ajouteRadioButtons(self): + if self.editor.maConfiguration.nombreDeBoutonParLigne != 0 : + self.ajoutePushButtons() + return + filtre=str(self.LEFiltre.text()) + if filtre==str("") : filtre=None + if hasattr(self,'buttonGroup') : + for b in self.buttonGroup.buttons(): + self.buttonGroup.removeButton(b) + b.setParent(None) + b.close() + else : + self.buttonGroup = QButtonGroup() + for w in self.listeWidget : + w.setParent(None) + w.close() + self.listeWidget=[] + if self.boolAlpha==1 : + liste=self.creeListeCommande(filtre) + for cmd in liste : + self.dicoCmd[tr(cmd)]=cmd + rbcmd=(QRadioButton(tr(cmd))) + self.buttonGroup.addButton(rbcmd) + self.commandesLayout.addWidget(rbcmd) + #if self.simpleClic : rbcmd.mouseReleaseEvent=self.insereNoeudApresClick + #else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + #self.buttonGroup.buttonClicked.connect(self.rbClique) + if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + if self.simpleClic : + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + else : + self.buttonGroup.buttonClicked.connect(self.rbClique) + elif self.boolGroupe==1 : + listeGroupes,dictGroupes=self.jdc.getGroups() + for grp in listeGroupes: + if grp == "CACHE" : continue + label=QLabel(self) + text=tr('Groupe : '+tr(grp)+'
') + label.setText(text) + self.listeWidget.append(label) + aAjouter=1 + sensibleALaCasse=self.RBCasse.isChecked() + for cmd in dictGroupes[grp]: + if sensibleALaCasse and (filtre != None and not filtre in cmd) : continue + if (not sensibleALaCasse) and filtre != None and (not filtre in cmd) and (not filtre.upper() in cmd) : continue + if aAjouter == 1 : + self.commandesLayout.addWidget(label) + aAjouter=0 + self.dicoCmd[tr(cmd)]=cmd + rbcmd=(QRadioButton(tr(cmd))) + self.buttonGroup.addButton(rbcmd) + self.commandesLayout.addWidget(rbcmd) + if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + if self.simpleClic : + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + else : + self.buttonGroup.buttonClicked.connect(self.rbClique) + label2=QLabel(self) + label2.setText(" ") + self.listeWidget.append(label2) + self.commandesLayout.addWidget(label2) + elif self.boolOrdre==1 : + listeFiltre=self.creeListeCommande(filtre) + liste=[] + if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre + else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes + for cmd in Ordre_Des_Commandes : + if cmd in listeFiltre : + liste.append(cmd) + for cmd in liste : + self.dicoCmd[tr(cmd)]=cmd + rbcmd=(QRadioButton(tr(cmd))) + self.buttonGroup.addButton(rbcmd) + self.commandesLayout.addWidget(rbcmd) + if not(self.simpleClic ): rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick + if self.simpleClic : + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + else : + self.buttonGroup.buttonClicked.connect(self.rbClique) + + + + def ajoutePushButtons(self): + if hasattr(self,'buttonGroup') : + for b in self.buttonGroup.buttons(): + self.buttonGroup.removeButton(b) + b.setParent(None) + b.close() + else : + self.buttonGroup = QButtonGroup() + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + for w in self.listeWidget : + w.setParent(None) + w.close() + self.listeWidget=[] + + if not hasattr(self,'maGrilleBouton') : + #self.commandesLayout.close() + self.maGrilleBouton=QGridLayout() + self.maGrilleBouton.setSpacing(20) + self.verticalLayout.addLayout(self.maGrilleBouton) + col=-1 + ligne = 0 + + if self.boolAlpha==1 : + liste=self.creeListeCommande(None) + elif self.boolOrdre: + liste=self.creeListeCommande(None) + listeFiltre=self.creeListeCommande(None) + liste=[] + if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre + else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes + for cmd in Ordre_Des_Commandes : + if cmd in listeFiltre : + liste.append(cmd) + for cmd in liste : + col=col+1 + if col == self.editor.maConfiguration.nombreDeBoutonParLigne : + col=0 + ligne=ligne+1 + self.dicoCmd[tr(cmd)]=cmd + rbcmd=QPushButton(tr(cmd)) + rbcmd.setGeometry(QRect(40, 20, 211, 71)) + rbcmd.setMaximumSize(QSize(250, 81)) + 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 : center") - #print ('self.editor.maConfiguration.dicoImages', self.editor.maConfiguration.dicoImages) - if cmd in self.editor.maConfiguration.dicoImages : - fichier=self.editor.maConfiguration.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) - - def clearFiltre(self): - self.LEFiltre.setText("") - self.ajouteRadioButtons() - - def rbCliqueEtInsere(self,id): - self.rbClique(id) - self.insereNoeudApresClick(None) - - def rbClique(self,id): - - try : - self.name=self.dicoCmd[id.text()] - except : + #print ('self.editor.maConfiguration.dicoImages', self.editor.maConfiguration.dicoImages) + if cmd in self.editor.maConfiguration.dicoImages : + fichier=self.editor.maConfiguration.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) + + def clearFiltre(self): + self.LEFiltre.setText("") + self.ajouteRadioButtons() + + def rbCliqueEtInsere(self,id): + self.rbClique(id) + self.insereNoeudApresClick(None) + + def rbClique(self,id): + try : - self.name=self.dicoCmd[str(id.text())] + self.name=self.dicoCmd[id.text()] except : - print ('pb d accent : contacter la maintenance') + try : + self.name=self.dicoCmd[str(id.text())] + except : + print ('pb d accent : contacter la maintenance') - definitionEtape=getattr(self.jdc.cata,self.name) - #commentaire=getattr(definitionEtape,self.jdc.lang) - try : - commentaire=getattr(definitionEtape,self.jdc.lang) - except : + definitionEtape=getattr(self.jdc.cata,self.name) + #commentaire=getattr(definitionEtape,self.jdc.lang) try : - commentaire=getattr(definitionEtape,"ang") + commentaire=getattr(definitionEtape,self.jdc.lang) except : - commentaire="" - self.editor.afficheCommentaire(commentaire) + try : + commentaire=getattr(definitionEtape,"ang") + except : + commentaire="" + self.editor.afficheCommentaire(commentaire) - def setValide(self): - #PNPN a priori pas d icone mais peut-etre a faire - pass + def setValide(self): + #PNPN a priori pas d icone mais peut-etre a faire + pass diff --git a/InterfaceQT4/monChoixLangue.py b/InterfaceQT4/monChoixLangue.py index decc00be..f7211aca 100644 --- a/InterfaceQT4/monChoixLangue.py +++ b/InterfaceQT4/monChoixLangue.py @@ -28,31 +28,30 @@ from PyQt5.QtWidgets import QDialog, QRadioButton, QGroupBox, QButtonGroup from PyQt5.QtGui import QPalette from PyQt5.QtCore import QProcess, QFileInfo, Qt, QSize - + # Import des panels class MonChoixLangue(Ui_ChoixLangue,QDialog): - """ - Classe definissant le panel associe aux mots-cles qui demandent - a l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discretes - """ - def __init__(self, appliEficas=None): - QDialog.__init__(self,appliEficas) - self.setModal(True) - self.setupUi(self) - self.appliEficas=appliEficas - self.installLangue() - self.code=None - self.pB_OK.clicked.connect(self.choisitLangue) - - - def installLangue(self): - if self.appliEficas.langue == 'fr' : self.rbFrancais.setChecked(True) - else : self.rbEnglish.setChecked(True) - - def choisitLangue(self): - if self.rbFrancais.isChecked() : self.appliEficas.langue='fr' - else : self.appliEficas.langue ='ang' - self.close() - + """ + Classe definissant le panel associe aux mots-cles qui demandent + a l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discretes + """ + def __init__(self, appliEficas=None): + QDialog.__init__(self,appliEficas) + self.setModal(True) + self.setupUi(self) + self.appliEficas=appliEficas + self.installLangue() + self.code=None + self.pB_OK.clicked.connect(self.choisitLangue) + + + def installLangue(self): + if self.appliEficas.langue == 'fr' : self.rbFrancais.setChecked(True) + else : self.rbEnglish.setChecked(True) + + def choisitLangue(self): + if self.rbFrancais.isChecked() : self.appliEficas.langue='fr' + else : self.appliEficas.langue ='ang' + self.close() diff --git a/InterfaceQT4/monFonctionPanel.py b/InterfaceQT4/monFonctionPanel.py index 93dd4102..dd9ca650 100644 --- a/InterfaceQT4/monFonctionPanel.py +++ b/InterfaceQT4/monFonctionPanel.py @@ -20,8 +20,8 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os @@ -40,28 +40,28 @@ class MonFonctionPanel(MonPlusieursBasePanel): # Classe definissant le panel associee aux mots-cles qui demandent # a l'utilisateur de choisir une seule valeur parmi une liste de valeurs # discretes - def __init__(self,node, parent = None,name = None,fl = 0): + def __init__(self,node, parent = None,name = None,fl = 0): #print "MonFonctionPanel" self.node=node self.setNbValeurs() MonPlusieursBasePanel.__init__(self,node,parent,name,fl) - def setNbValeurs(self): + def setNbValeurs(self): self.nbValeurs = 1 if self.node.item.waitTuple()== 1 : - for a in self.node.item.definition.type : - try : - self.nbValeurs = a.ntuple - break - except : - pass + for a in self.node.item.definition.type : + try : + self.nbValeurs = a.ntuple + break + except : + pass genea=self.node.item.getGenealogie() self.nbValeursASaisir=self.nbValeurs if "VALE" in genea: self.nbValeurs=2 if "VALE_C" in genea: self.nbValeurs=3 - def decoupeListeValeurs(self,liste): + def decoupeListeValeurs(self,liste): #decoupe la liste des valeurs en n ( les x puis les y) l_valeurs=[] if ((len(liste)% self.nbValeursASaisir != 0 and (len(liste)% self.nbValeurs))): @@ -70,114 +70,114 @@ class MonFonctionPanel(MonPlusieursBasePanel): i=0 while ( i < len(liste) ) : try : - t=tuple(liste[i:i+self.nbValeurs]) - i=i+self.nbValeurs + t=tuple(liste[i:i+self.nbValeurs]) + i=i+self.nbValeurs except: - t=tuple(liste[i:len(liste)]) + t=tuple(liste[i:len(liste)]) l_valeurs.append(t) return l_valeurs - def buildLBValeurs(self,listeValeurs=None): + def buildLBValeurs(self,listeValeurs=None): self.LBValeurs.clear() if listeValeurs== None : - listeValeurs=self.node.item.getListeValeurs() + listeValeurs=self.node.item.getListeValeurs() if self.node.item.waitTuple()== 1 : - listeATraiter=listeValeurs - for valeur in listeATraiter: - str_valeur=str(valeur) - self.LBValeurs.addItem(str_valeur) - else : - for valeur in self.decoupeListeValeurs(listeValeurs): - if type(valeur) == tuple: - TupleEnTexte="(" - for val in valeur : - TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", " - TupleEnTexte = TupleEnTexte[0:-2] +")" - self.LBValeurs.addItem(TupleEnTexte) - else : - self.LBValeurs.addItem(str(valeur)) - - - def ajout1Valeur(self,liste=[]): + listeATraiter=listeValeurs + for valeur in listeATraiter: + str_valeur=str(valeur) + self.LBValeurs.addItem(str_valeur) + else : + for valeur in self.decoupeListeValeurs(listeValeurs): + if type(valeur) == tuple: + TupleEnTexte="(" + for val in valeur : + TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", " + TupleEnTexte = TupleEnTexte[0:-2] +")" + self.LBValeurs.addItem(TupleEnTexte) + else : + self.LBValeurs.addItem(str(valeur)) + + + def ajout1Valeur(self,liste=[]): # Pour etre appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur) validite=1 if liste == [] : - if self.node.item.waitTuple()== 1 : - liste=SaisieValeur.TraiteLEValeurTuple(self) - if liste == [''] : return - else : - liste,validite=SaisieValeur.TraiteLEValeur(self) - if validite == 0 : return + if self.node.item.waitTuple()== 1 : + liste=SaisieValeur.TraiteLEValeurTuple(self) + if liste == [''] : return + else : + liste,validite=SaisieValeur.TraiteLEValeur(self) + if validite == 0 : return if liste ==[] : return if (self.node.item.waitTuple()== 1 and len(liste) != self.nbValeurs): - commentaire = str(liste) - commentaire += tr(" n est pas un tuple de ") - commentaire += str(self.nbValeursASaisir) + commentaire = str(liste) + commentaire += tr(" n est pas un tuple de ") + commentaire += str(self.nbValeursASaisir) commentaire += tr(" valeurs") - self.LEValeur.setText(str(liste)) + self.LEValeur.setText(str(liste)) self.editor.afficheInfos(commentaire,Qt.red) return if self.node.item.waitTuple()== 1 : - liste2=tuple(liste) - liste=liste2 + liste2=tuple(liste) + liste=liste2 index=self.LBValeurs.currentRow() if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )): - index=0 + index=0 else : - index=self.LBValeurs.currentRow() + 1 + index=self.LBValeurs.currentRow() + 1 indexListe=index*self.nbValeurs if index == 0 : indexListe=len(self.listeValeursCourantes) listeVal=[] for valeur in self.listeValeursCourantes : - listeVal.append(valeur) + listeVal.append(valeur) if self.node.item.waitTuple()== 1 : - indexListe = index - validite,comm,comm2,listeRetour=self.politique.ajoutTuple(liste,index,listeVal) + indexListe = index + validite,comm,comm2,listeRetour=self.politique.ajoutTuple(liste,index,listeVal) else : - validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,index,listeVal) + validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,index,listeVal) self.Commentaire.setText(tr(comm2)) if not validite : - self.editor.afficheInfos(comm,Qt.red) + self.editor.afficheInfos(comm,Qt.red) else: - self.LEValeur.setText("") - l1=self.listeValeursCourantes[:indexListe] - l3=self.listeValeursCourantes[indexListe:] - if self.node.item.waitTuple()== 1 : - listeATraiter=listeRetour - else : - listeATraiter=self.decoupeListeValeurs(listeRetour) - for valeur in listeATraiter : - if type(valeur) == tuple: - TupleEnTexte="(" - for val in valeur : - TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", " - str_valeur = TupleEnTexte[0:-2] +")" - else : - str_valeur=str(valeur) - self.LBValeurs.insertItem(index,str_valeur) - item=self.LBValeurs.item(index) - item.setSelected(1) - self.LBValeurs.setCurrentItem(item) - index=index+1 - self.listeValeursCourantes=l1+listeRetour+l3 - self.buildLBValeurs(self.listeValeursCourantes) - - - def ajoutNValeur(self,liste) : + self.LEValeur.setText("") + l1=self.listeValeursCourantes[:indexListe] + l3=self.listeValeursCourantes[indexListe:] + if self.node.item.waitTuple()== 1 : + listeATraiter=listeRetour + else : + listeATraiter=self.decoupeListeValeurs(listeRetour) + for valeur in listeATraiter : + if type(valeur) == tuple: + TupleEnTexte="(" + for val in valeur : + TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", " + str_valeur = TupleEnTexte[0:-2] +")" + else : + str_valeur=str(valeur) + self.LBValeurs.insertItem(index,str_valeur) + item=self.LBValeurs.item(index) + item.setSelected(1) + self.LBValeurs.setCurrentItem(item) + index=index+1 + self.listeValeursCourantes=l1+listeRetour+l3 + self.buildLBValeurs(self.listeValeursCourantes) + + + def ajoutNValeur(self,liste) : if len(liste)%self.nbValeurs != 0 : - texte="Nombre de valeur incorrecte" - #self.Commentaire.setText(texte) - self.editor.afficheInfos(texte,Qt.red) - return + texte="Nombre de valeur incorrecte" + #self.Commentaire.setText(texte) + self.editor.afficheInfos(texte,Qt.red) + return listeDecoupee=self.decoupeListeValeurs(liste) for vals in listeDecoupee : self.ajout1Valeur(vals) - - def sup1Valeur(self): + + def sup1Valeur(self): index=self.LBValeurs.currentRow() if index == None : return removed_item = self.LBValeurs.takeItem(index) @@ -189,14 +189,12 @@ class MonFonctionPanel(MonPlusieursBasePanel): indexAOter=index*self.nbValeurs + i indexInterdit.append(indexAOter) if self.node.item.waitTuple()== 1 : - indexInterdit=[index] + indexInterdit=[index] i=0 for valeur in self.listeValeursCourantes : - if not (i in indexInterdit) : + if not (i in indexInterdit) : listeVal.append(valeur) i = i+1 self.listeValeursCourantes=listeVal listeValeurs=self.listeValeursCourantes - - diff --git a/InterfaceQT4/monGroupeOptionnel.py b/InterfaceQT4/monGroupeOptionnel.py index 7b17edba..3bc3f942 100644 --- a/InterfaceQT4/monGroupeOptionnel.py +++ b/InterfaceQT4/monGroupeOptionnel.py @@ -28,161 +28,160 @@ from Extensions.i18n import tr from desGroupeOptionnel import Ui_groupeOptionnel from desPBOptionnelMT import Ui_customPB - + # Import des panels class MonRBButtonCustom(QCheckBox): - def __init__(self,texte,monOptionnel,parent=None,couleur=None): - QCheckBox.__init__(self,tr(texte),parent) - self.mousePressed=True - self.monOptionnel=monOptionnel - self.setToolTip(tr("clicker: affichage aide, double-click: ajout")) - if couleur != None : - mapalette=self.palette() - mapalette.setColor( QPalette.WindowText, couleur ) - mapalette.setColor( QPalette.Base, Qt.green ) - self.setPalette( mapalette ); - self.setText(tr(texte)) - try : - monToolTip=monOptionnel.parentMC.dictToolTipMc[texte] - self.setToolTip(monToolTip) - except : - pass - - - def mouseDoubleClickEvent(self, event): - #print "dans mouseDoubleClickEvent", self - if self not in self.monOptionnel.dicoCb: - event.accept() - return - listeCheckedMC="+"+self.monOptionnel.dicoCb[self] - self.monOptionnel.parentMC.ajoutMC(listeCheckedMC) - event.accept() - - - def mousePressEvent(self, event): - if not( event.button() != Qt.RightButton) : - event.accept() - return - if self.monOptionnel.cbPressed != None : - self.monOptionnel.cbPressed.setChecked(False) - self.monOptionnel.cbPressed=self - if self.mousePressed == False : - self.mousePressed=True - else : - self.mousePressed=False - self.ajoutAideMC() - QCheckBox.mousePressEvent(self, event) - event.accept() - - def ajoutAideMC(self): - try : - maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte] - maLangue = self.monOptionnel.parentMC.jdc.lang - if hasattr(maDefinition,maLangue): - self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang) - else : - self.monAide = "" - except : - self.monAide = "" - self.monOptionnel.parentMC.editor.afficheCommentaire(self.monAide) - + def __init__(self,texte,monOptionnel,parent=None,couleur=None): + QCheckBox.__init__(self,tr(texte),parent) + self.mousePressed=True + self.monOptionnel=monOptionnel + self.setToolTip(tr("clicker: affichage aide, double-click: ajout")) + if couleur != None : + mapalette=self.palette() + mapalette.setColor( QPalette.WindowText, couleur ) + mapalette.setColor( QPalette.Base, Qt.green ) + self.setPalette( mapalette ); + self.setText(tr(texte)) + try : + monToolTip=monOptionnel.parentMC.dictToolTipMc[texte] + self.setToolTip(monToolTip) + except : + pass + + + def mouseDoubleClickEvent(self, event): + #print "dans mouseDoubleClickEvent", self + if self not in self.monOptionnel.dicoCb: + event.accept() + return + listeCheckedMC="+"+self.monOptionnel.dicoCb[self] + self.monOptionnel.parentMC.ajoutMC(listeCheckedMC) + event.accept() + + + def mousePressEvent(self, event): + if not( event.button() != Qt.RightButton) : + event.accept() + return + if self.monOptionnel.cbPressed != None : + self.monOptionnel.cbPressed.setChecked(False) + self.monOptionnel.cbPressed=self + if self.mousePressed == False : + self.mousePressed=True + else : + self.mousePressed=False + self.ajoutAideMC() + QCheckBox.mousePressEvent(self, event) + event.accept() + + def ajoutAideMC(self): + try : + maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte] + maLangue = self.monOptionnel.parentMC.jdc.lang + if hasattr(maDefinition,maLangue): + self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang) + else : + self.monAide = "" + except : + self.monAide = "" + self.monOptionnel.parentMC.editor.afficheCommentaire(self.monAide) + class MonPBButtonCustom(QWidget,Ui_customPB): - def __init__(self,texte,monOptionnel,parent=None,couleur=None): - QWidget.__init__(self) - self.setupUi(self) - if couleur != None : - self.monPb.setText(texte) - self.monPb.setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}') - #mapalette=self.monPb.palette() - #mapalette.setColor( QPalette.ButtonText, Qt.red ) - #self.monPb.setPalette( mapalette ) - self.monPb.update() - #self.update() - try : - monToolTip=monOptionnel.parentMC.dictToolTipMc[texte] - self.monPb.setToolTip(monToolTip) - except : - pass - self.monPb.setText(texte) - self.monPb.clicked.connect(self.ajoutMC) - - self.texte=texte - self.monOptionnel=monOptionnel - self.definitAideMC() - self.setToolTip(self.monAide) - - def ajoutMC (self) : - listeCheckedMC="+"+self.monOptionnel.dicoCb[self] - self.monOptionnel.parentMC.ajoutMC(listeCheckedMC) - - def definitAideMC(self): - try : - maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte] - maLangue = self.monOptionnel.parentMC.jdc.lang - if hasattr(maDefinition,maLangue): - self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang) - except : - self.monAide = "" - -class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel): - """ - """ - def __init__(self,liste,liste_rouge,parentQt,parentMC): - #print ("dans init de monWidgetOptionnel ", parentQt, liste,parentMC) - QWidget.__init__(self,None) - self.setupUi(self) - self.listeChecked=[] - self.dicoCb={} - self.mousePressed=False - self.cbPressed=None - self.cb=None - self.parentQt=parentQt - self.parentMC=parentMC - - - if liste != [] : - self.affiche(liste,liste_rouge) - self.afficheTitre() - elif self.parentQt.parentQt.maConfiguration.afficheOptionnelVide != False : - self.afficheTitre() - self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel'))) - else : - self.frameLabelMC.close() - #print "dans fin de monWidgetOptionnel ", parentQt - - - def afficheTitre(self): - labeltext,fonte,couleur = self.parentMC.node.item.getLabelText() - #print (labeltext) - l=tr(labeltext) - li=[] - while len(l) > 25: - li.append(l[0:24]) - l=l[24:] - li.append(l) - texte="" - for l in li : texte+=l+"\n" - texte=texte[0:-1] - self.MCLabel.setText(texte) - - def affiche(self,liste,liste_rouge): - #print ("dans Optionnel ____ affiche", liste,liste_rouge) - self.dicoCb={} - liste.reverse() - for mot in liste : - #if mot in liste_rouge : print ('je dois afficher en rouge' , mot) - couleur=None - if mot in liste_rouge : couleur=Qt.red - if self.parentQt.parentQt.maConfiguration.simpleClic == False : - cb = MonRBButtonCustom(mot,self,couleur=couleur) - cb.clicked.connect(cb.ajoutAideMC) - else : - cb = MonPBButtonCustom(mot,self,couleur=couleur) - - self.MCOptionnelLayout.insertWidget(0,cb) - self.dicoCb[cb]=mot - self.scrollAreaCommandesOptionnelles.horizontalScrollBar().setSliderPosition(0) + def __init__(self,texte,monOptionnel,parent=None,couleur=None): + QWidget.__init__(self) + self.setupUi(self) + if couleur != None : + self.monPb.setText(texte) + self.monPb.setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}') + #mapalette=self.monPb.palette() + #mapalette.setColor( QPalette.ButtonText, Qt.red ) + #self.monPb.setPalette( mapalette ) + self.monPb.update() + #self.update() + try : + monToolTip=monOptionnel.parentMC.dictToolTipMc[texte] + self.monPb.setToolTip(monToolTip) + except : + pass + self.monPb.setText(texte) + self.monPb.clicked.connect(self.ajoutMC) + + self.texte=texte + self.monOptionnel=monOptionnel + self.definitAideMC() + self.setToolTip(self.monAide) + + def ajoutMC (self) : + listeCheckedMC="+"+self.monOptionnel.dicoCb[self] + self.monOptionnel.parentMC.ajoutMC(listeCheckedMC) + + def definitAideMC(self): + try : + maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte] + maLangue = self.monOptionnel.parentMC.jdc.lang + if hasattr(maDefinition,maLangue): + self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang) + except : + self.monAide = "" +class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel): + """ + """ + def __init__(self,liste,liste_rouge,parentQt,parentMC): + #print ("dans init de monWidgetOptionnel ", parentQt, liste,parentMC) + QWidget.__init__(self,None) + self.setupUi(self) + self.listeChecked=[] + self.dicoCb={} + self.mousePressed=False + self.cbPressed=None + self.cb=None + self.parentQt=parentQt + self.parentMC=parentMC + + + if liste != [] : + self.affiche(liste,liste_rouge) + self.afficheTitre() + elif self.parentQt.parentQt.maConfiguration.afficheOptionnelVide != False : + self.afficheTitre() + self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel'))) + else : + self.frameLabelMC.close() + #print "dans fin de monWidgetOptionnel ", parentQt + + + def afficheTitre(self): + labeltext,fonte,couleur = self.parentMC.node.item.getLabelText() + #print (labeltext) + l=tr(labeltext) + li=[] + while len(l) > 25: + li.append(l[0:24]) + l=l[24:] + li.append(l) + texte="" + for l in li : texte+=l+"\n" + texte=texte[0:-1] + self.MCLabel.setText(texte) + + def affiche(self,liste,liste_rouge): + #print ("dans Optionnel ____ affiche", liste,liste_rouge) + self.dicoCb={} + liste.reverse() + for mot in liste : + #if mot in liste_rouge : print ('je dois afficher en rouge' , mot) + couleur=None + if mot in liste_rouge : couleur=Qt.red + if self.parentQt.parentQt.maConfiguration.simpleClic == False : + cb = MonRBButtonCustom(mot,self,couleur=couleur) + cb.clicked.connect(cb.ajoutAideMC) + else : + cb = MonPBButtonCustom(mot,self,couleur=couleur) + + self.MCOptionnelLayout.insertWidget(0,cb) + self.dicoCb[cb]=mot + self.scrollAreaCommandesOptionnelles.horizontalScrollBar().setSliderPosition(0) diff --git a/InterfaceQT4/monLabelClic.py b/InterfaceQT4/monLabelClic.py index af472949..a5e393cb 100644 --- a/InterfaceQT4/monLabelClic.py +++ b/InterfaceQT4/monLabelClic.py @@ -33,20 +33,19 @@ from Extensions.i18n import tr class MonLabelClic(QLabel) : - def __init__(self,parent): + def __init__(self,parent): QLabel.__init__(self,parent) - # Pas propre mais impossible de faire fonctionner isinstance sur Groupe, MonWidgetCommande + # Pas propre mais impossible de faire fonctionner isinstance sur Groupe, MonWidgetCommande # PNPNPN ? a ameliorer if isinstance (parent,QFrame): parent=parent.parent() while not( hasattr(parent,'traiteClicSurLabel')) : - try : parent=parent.parent() - except : print ("pb avec MonLabelClic"); break + try : parent=parent.parent() + except : print ("pb avec MonLabelClic"); break self.parent=parent - def event(self,event) : - if event.type() == QEvent.MouseButtonRelease: + def event(self,event) : + if event.type() == QEvent.MouseButtonRelease: self.texte=self.text() self.parent.traiteClicSurLabel(self.texte) - return QLabel.event(self,event) - + return QLabel.event(self,event) diff --git a/InterfaceQT4/monLayoutBouton.py b/InterfaceQT4/monLayoutBouton.py index 49a431a4..aa68f39c 100644 --- a/InterfaceQT4/monLayoutBouton.py +++ b/InterfaceQT4/monLayoutBouton.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from PyQt5.QtWidgets import QButtonGroup, QToolButton @@ -34,34 +34,32 @@ class MonLayoutBouton : #---------------------- # ------------------------------- - def __init__(self,appliEficas): + def __init__(self,appliEficas): # ------------------------------- - self.appliEficas = appliEficas - self.buttonGroup = QButtonGroup() - - for etape in self.appliEficas.readercata.cata.JdC.commandes : - nomEtape = etape.nom - toolButton = QToolButton(self.appliEficas.toolBarCommande) - icon = QIcon() - if nomEtape in self.appliEficas.maConfiguration.dicoIcones: - fichier = self.appliEficas.maConfiguration.dicoIcones[nomEtape] - icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off) - toolButton.setIcon(icon) - else : - try : label = nomEtape[0:3] - except : label = nomEtape - toolButton.setText(label) + self.appliEficas = appliEficas + self.buttonGroup = QButtonGroup() - action = self.appliEficas.toolBarCommande.addWidget(toolButton) - action.setVisible(True) - toolButton.setObjectName(nomEtape) - toolButton.setToolTip(tr(nomEtape)) - self.buttonGroup.addButton(toolButton) + for etape in self.appliEficas.readercata.cata.JdC.commandes : + nomEtape = etape.nom + toolButton = QToolButton(self.appliEficas.toolBarCommande) + icon = QIcon() + if nomEtape in self.appliEficas.maConfiguration.dicoIcones: + fichier = self.appliEficas.maConfiguration.dicoIcones[nomEtape] + icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off) + toolButton.setIcon(icon) + else : + try : label = nomEtape[0:3] + except : label = nomEtape + toolButton.setText(label) - self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) - - def rbCliqueEtInsere(self,id): - self.appliEficas.handleAjoutEtape(id.objectName()) + action = self.appliEficas.toolBarCommande.addWidget(toolButton) + action.setVisible(True) + toolButton.setObjectName(nomEtape) + toolButton.setToolTip(tr(nomEtape)) + self.buttonGroup.addButton(toolButton) + self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) + def rbCliqueEtInsere(self,id): + self.appliEficas.handleAjoutEtape(id.objectName()) diff --git a/InterfaceQT4/monRecherche.py b/InterfaceQT4/monRecherche.py index 059456cc..e0f29b11 100644 --- a/InterfaceQT4/monRecherche.py +++ b/InterfaceQT4/monRecherche.py @@ -29,36 +29,35 @@ from PyQt5.QtCore import Qt # Import des panels class DRecherche(Ui_desRecherche ,QDialog): - """ - """ - def __init__(self,parent = None , name = None,fl = 0): - QDialog.__init__(self,parent) - self.parentQT=parent - self.tree=self.parentQT.tree - self.setupUi(self) - self.PBSuivant.setDefault(True) - self.PBSuivant.setAutoDefault(False) - self.PBSuivant.clicked.connect( self.suivantClicked) - self.LERecherche.returnPressed.connect(self.recherche) - self.surLigne=0 - self.listeTrouvee=() - self.nodeSurligne=None + """ + """ + def __init__(self,parent = None , name = None,fl = 0): + QDialog.__init__(self,parent) + self.parentQT=parent + self.tree=self.parentQT.tree + self.setupUi(self) + self.PBSuivant.setDefault(True) + self.PBSuivant.setAutoDefault(False) + self.PBSuivant.clicked.connect( self.suivantClicked) + self.LERecherche.returnPressed.connect(self.recherche) + self.surLigne=0 + self.listeTrouvee=() + self.nodeSurligne=None - def suivantClicked(self): - #if self.motAChercher!=self.LERecherche.text(): self.recherche() - if self.listeTrouvee=={} : return - if self.surLigne > len(self.listeTrouvee) -1 : return - if self.nodeSurligne!=None : self.nodeSurligne.updateNodeTexteInBlack() - #self.listeTrouvee[self.surLigne].updateNodeTexteInBlue() - #self.nodeSurligne=self.listeTrouvee[self.surLigne] - self.listeTrouvee[self.surLigne].select() - self.listeTrouvee[self.surLigne].affichePanneau() - self.surLigne=self.surLigne+1 - self.PBSuivant.setFocus() - if self.surLigne == len(self.listeTrouvee): self.surLigne=0 - - def recherche(self): - self.motAChercher=self.LERecherche.text() - self.listeTrouvee=self.tree.findItems(self.motAChercher,Qt.MatchContains|Qt.MatchRecursive,1) - self.surLigne=0 + def suivantClicked(self): + #if self.motAChercher!=self.LERecherche.text(): self.recherche() + if self.listeTrouvee=={} : return + if self.surLigne > len(self.listeTrouvee) -1 : return + if self.nodeSurligne!=None : self.nodeSurligne.updateNodeTexteInBlack() + #self.listeTrouvee[self.surLigne].updateNodeTexteInBlue() + #self.nodeSurligne=self.listeTrouvee[self.surLigne] + self.listeTrouvee[self.surLigne].select() + self.listeTrouvee[self.surLigne].affichePanneau() + self.surLigne=self.surLigne+1 + self.PBSuivant.setFocus() + if self.surLigne == len(self.listeTrouvee): self.surLigne=0 + def recherche(self): + self.motAChercher=self.LERecherche.text() + self.listeTrouvee=self.tree.findItems(self.motAChercher,Qt.MatchContains|Qt.MatchRecursive,1) + self.surLigne=0 diff --git a/InterfaceQT4/monRechercheCatalogue.py b/InterfaceQT4/monRechercheCatalogue.py index 589964a3..259cad4b 100644 --- a/InterfaceQT4/monRechercheCatalogue.py +++ b/InterfaceQT4/monRechercheCatalogue.py @@ -22,7 +22,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desRechercheCatalogue import Ui_desRechercheCatalogue @@ -34,54 +34,53 @@ from Extensions.i18n import tr # Import des panels class DRechercheCatalogue (Ui_desRechercheCatalogue ,QDialog): - """ - """ - def __init__(self,parent,editor ): - QDialog.__init__(self,parent) - #self.setModal(True) - self.setupUi(self) - self.editor=editor - self.CBRecherche.setEditable(True) - self.CBRecherche.lineEdit().returnPressed.connect(self.rechercheCB) - self.CBRecherche.currentIndexChanged.connect(self.rechercheCB) - self.CBRecherche.currentTextChanged.connect(self.rechercheCB) + """ + """ + def __init__(self,parent,editor ): + QDialog.__init__(self,parent) + #self.setModal(True) + self.setupUi(self) + self.editor=editor + self.CBRecherche.setEditable(True) + self.CBRecherche.lineEdit().returnPressed.connect(self.rechercheCB) + self.CBRecherche.currentIndexChanged.connect(self.rechercheCB) + self.CBRecherche.currentTextChanged.connect(self.rechercheCB) - self.initRecherche() + self.initRecherche() - def initRecherche(self): - listeChoix=list(self.editor.readercata.dicoInverse.keys()) - self.CBRecherche.addItem("") - for choix in listeChoix: - self.CBRecherche.addItem(choix) - monCompleteur=QCompleter(listeChoix,self) - monCompleteur.setCompletionMode(QCompleter.PopupCompletion) - self.CBRecherche.setCompleter(monCompleteur) + def initRecherche(self): + listeChoix=list(self.editor.readercata.dicoInverse.keys()) + self.CBRecherche.addItem("") + for choix in listeChoix: + self.CBRecherche.addItem(choix) + monCompleteur=QCompleter(listeChoix,self) + monCompleteur.setCompletionMode(QCompleter.PopupCompletion) + self.CBRecherche.setCompleter(monCompleteur) - def rechercheCB(self): - motAChercher=self.CBRecherche.lineEdit().text() - self.recherche(motAChercher) + def rechercheCB(self): + motAChercher=self.CBRecherche.lineEdit().text() + self.recherche(motAChercher) - def recherche(self,motAChercher): - if str(motAChercher)=="" or str(motAChercher) == None : return - if str(motAChercher) not in self.editor.readercata.dicoInverse:return - try : - #if 1 : - genea= self.editor.readercata.dicoInverse[str(motAChercher)] - listeGenea=[] - for t in genea : listeGenea.append(t[0]) - listeGenea.reverse() - texte='' - i=0 - for mc in listeGenea : - ligne = i*' '+str(mc) + ' / '+tr(str(mc))+'\n' - i=i+1 - texte += ligne - self.teGenea.setText(texte) - self.teDoc.setText(getattr(genea[0][1],self.editor.appliEficas.langue)) - - - except : - pass + def recherche(self,motAChercher): + if str(motAChercher)=="" or str(motAChercher) == None : return + if str(motAChercher) not in self.editor.readercata.dicoInverse:return + try : + #if 1 : + genea= self.editor.readercata.dicoInverse[str(motAChercher)] + listeGenea=[] + for t in genea : listeGenea.append(t[0]) + listeGenea.reverse() + texte='' + i=0 + for mc in listeGenea : + ligne = i*' '+str(mc) + ' / '+tr(str(mc))+'\n' + i=i+1 + texte += ligne + self.teGenea.setText(texte) + self.teDoc.setText(getattr(genea[0][1],self.editor.appliEficas.langue)) + + except : + pass diff --git a/InterfaceQT4/monSelectVal.py b/InterfaceQT4/monSelectVal.py index 415f5948..dc8498f8 100644 --- a/InterfaceQT4/monSelectVal.py +++ b/InterfaceQT4/monSelectVal.py @@ -22,7 +22,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desSelectVal import Ui_DSelVal @@ -33,17 +33,17 @@ from PyQt5.QtCore import QTimer, Qt from PyQt5.QtGui import QPalette class DSelVal(Ui_DSelVal,QDialog): - def __init__(self,parent ,modal ) : - QDialog.__init__(self,parent) - self.setupUi(self) + def __init__(self,parent ,modal ) : + QDialog.__init__(self,parent) + self.setupUi(self) class MonSelectVal(DSelVal): - """ - Classe definissant le panel associe aux mots-cles qui demandent - a l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discretes - """ - def __init__(self,file,parent,name = None,fl = 0): + """ + Classe definissant le panel associe aux mots-cles qui demandent + a l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discretes + """ + def __init__(self,file,parent,name = None,fl = 0): #print "MonSelectVal" self.parent=parent DSelVal.__init__(self,parent,0) @@ -55,7 +55,7 @@ class MonSelectVal(DSelVal): self.initVal() self.connecterSignaux() - def connecterSignaux(self) : + def connecterSignaux(self) : self.Bespace.clicked.connect(self.selectEsp) self.BpointVirgule.clicked.connect(self.selectPoint) self.Bvirgule.clicked.connect(self.selectVir) @@ -63,7 +63,7 @@ class MonSelectVal(DSelVal): self.BImportTout.clicked.connect(self.BImportToutPressed) self.parent.editor.sb.messageChanged.connect(self.messageAChanger) - def connecterSignauxQT4(self) : + def connecterSignauxQT4(self) : self.connect(self.Bespace,SIGNAL("clicked()"),self.selectEsp) self.connect(self.BpointVirgule,SIGNAL("clicked()"),self.selectPoint) self.connect(self.Bvirgule,SIGNAL("clicked()"),self.selectVir) @@ -71,66 +71,65 @@ class MonSelectVal(DSelVal): self.connect(self.BImportTout,SIGNAL("clicked()"),self.BImportToutPressed) self.connect(self.parent.editor.sb,SIGNAL("messageChanged(QString)"),self.messageAChanger) - def messageAChanger(self): - message=self.parent.editor.sb.currentMessage() - mapalette=self.sb.palette() - mapalette.setColor( QPalette.Text,Qt.red ) - self.sb.setPalette( mapalette ) - self.sb.setText(message) - QTimer.singleShot(3000, self.efface) - - def efface(self): - self.sb.setText("") - - def readVal(self): + def messageAChanger(self): + message=self.parent.editor.sb.currentMessage() + mapalette=self.sb.palette() + mapalette.setColor( QPalette.Text,Qt.red ) + self.sb.setPalette( mapalette ) + self.sb.setText(message) + QTimer.singleShot(3000, self.efface) + + def efface(self): + self.sb.setText("") + + def readVal(self): if self.file == "" : return try : - f = open(self.file, "r") - self.texte = f.read() - f.close() + f = open(self.file, "r") + self.texte = f.read() + f.close() except : - QMessageBox.warning( self,tr( "Fichier Indisponible"),tr( "Lecture impossible")) - self.texte="" - return + QMessageBox.warning( self,tr( "Fichier Indisponible"),tr( "Lecture impossible")) + self.texte="" + return - def initVal(self): + def initVal(self): self.TBtext.clear() self.TBtext.setText(self.texte) - def selectEsp(self): + def selectEsp(self): self.separateur=" " - - def selectVir(self): + + def selectVir(self): self.separateur="," - - def selectPoint(self): + + def selectPoint(self): self.separateur=";" - - def BImportSelPressed(self): + + def BImportSelPressed(self): texte = self.TBtext.textCursor().selectedText() textTraite=texte.replace(u'\u2029',"\n") self.textTraite=str(textTraite) self.traitement() - - def BImportToutPressed(self): + + def BImportToutPressed(self): self.textTraite=self.texte self.traitement() - def traitement(self): + def traitement(self): if self.textTraite == "" : return if self.textTraite[-1]=="\n" : self.textTraite=self.textTraite[0:-1] self.textTraite=self.textTraite.replace("\n",self.separateur) liste1=self.textTraite.split(self.separateur) liste=[] for val in liste1 : - if val != '' and val != ' ' and val != self.separateur : - val=str(val) - try : - #if 1 : - val2=eval(val,{}) - liste.append(val2) - except : - pass - self.parent.ajoutNValeur(liste) - + if val != '' and val != ' ' and val != self.separateur : + val=str(val) + try : + #if 1 : + val2=eval(val,{}) + liste.append(val2) + except : + pass + self.parent.ajoutNValeur(liste) diff --git a/InterfaceQT4/monViewRegles.py b/InterfaceQT4/monViewRegles.py index c096c8f5..8fa30745 100644 --- a/InterfaceQT4/monViewRegles.py +++ b/InterfaceQT4/monViewRegles.py @@ -41,14 +41,11 @@ class ViewRegles(Ui_viewRegles,QDialog): if entete != None : self.setWindowTitle (entete) for ligne in liste : - texte=ligne[0] - couleur=ligne[1] - if couleur==Qt.black : - self.LBRegles.addItem(texte) - else : - monItem=QListWidgetItem(texte) - monItem.setForeground(Qt.red) - self.LBRegles.addItem(monItem) - - - + texte=ligne[0] + couleur=ligne[1] + if couleur==Qt.black : + self.LBRegles.addItem(texte) + else : + monItem=QListWidgetItem(texte) + monItem.setForeground(Qt.red) + self.LBRegles.addItem(monItem) diff --git a/InterfaceQT4/monViewTexte.py b/InterfaceQT4/monViewTexte.py index c57813ab..2262d26c 100644 --- a/InterfaceQT4/monViewTexte.py +++ b/InterfaceQT4/monViewTexte.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -50,16 +50,16 @@ class ViewText(Ui_dView,QDialog): if entete != None : self.setWindowTitle (entete) if entete != None : self.setText (texte) - - def setText(self, txt ): + + def setText(self, txt ): self.view.setText(txt) - + def saveFile(self): #recuperation du nom du fichier if self.editor != None : - dir=self.editor.appliEficas.maConfiguration.savedir + dir=self.editor.appliEficas.maConfiguration.savedir else: - dir='/tmp' + dir='/tmp' fn = QFileDialog.getSaveFileName(None, tr("Sauvegarder le fichier"), dir) @@ -69,15 +69,13 @@ class ViewText(Ui_dView,QDialog): ulfile = os.path.abspath(fn) if self.editor != None : - self.editor.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] + self.editor.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] try: - f = open(fn, 'w') - f.write(str(self.view.toPlainText())) - f.close() - return 1 + f = open(fn, 'w') + f.write(str(self.view.toPlainText())) + f.close() + return 1 except IOError as why: - QMessageBox.critical(self, tr("Sauvegarder le fichier"), - tr('Le fichier')+str(fn) + tr('n a pas pu etre sauvegarde : ') + str(why)) - return - - + QMessageBox.critical(self, tr("Sauvegarder le fichier"), + tr('Le fichier')+str(fn) + tr('n a pas pu etre sauvegarde : ') + str(why)) + return diff --git a/InterfaceQT4/monVisu.py b/InterfaceQT4/monVisu.py index 68257209..2771838f 100644 --- a/InterfaceQT4/monVisu.py +++ b/InterfaceQT4/monVisu.py @@ -28,15 +28,15 @@ from PyQt5.QtWidgets import QDialog # Import des panels class DVisu(Ui_DVisu, QDialog): - """ - """ - def __init__(self,parent = None , name = None,fl = 0): - QDialog.__init__(self,parent) - self.setModal(True) - self.setupUi(self) + """ + """ + def __init__(self,parent = None , name = None,fl = 0): + QDialog.__init__(self,parent) + self.setModal(True) + self.setupUi(self) - def on_buttonCancel_clicked(self): - QDialog.reject(self) + def on_buttonCancel_clicked(self): + QDialog.reject(self) - def on_buttonOk_clicked(self): - QDialog.accept(self) + def on_buttonOk_clicked(self): + QDialog.accept(self) diff --git a/InterfaceQT4/monWidget4a6RadioButton.py b/InterfaceQT4/monWidget4a6RadioButton.py index 3025049b..4055c3a0 100644 --- a/InterfaceQT4/monWidget4a6RadioButton.py +++ b/InterfaceQT4/monWidget4a6RadioButton.py @@ -24,29 +24,28 @@ import types,os # Modules Eficas from Extensions.i18n import tr -from .monWidgetRadioButton import MonWidgetRadioButtonCommun -from desWidget4a6RadioButton import Ui_Widget4a6RadioButton +from .monWidgetRadioButton import MonWidgetRadioButtonCommun +from desWidget4a6RadioButton import Ui_Widget4a6RadioButton class MonWidget4a6RadioButton (Ui_Widget4a6RadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans le init de MonWidget4a6RadioButton",self if type(monSimpDef.into) ==types.FunctionType : self.maListeDeValeur=monSimpDef.into() else : self.maListeDeValeur=monSimpDef.into MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def setMaxI(self): + def setMaxI(self): self.maxI=6 class MonWidget4a6RadioButtonSD (Ui_Widget4a6RadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans le init de MonWidget4a6RadioButton",self self.maListeDeValeur=node.item.getSdAvantDuBonType() MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def setMaxI(self): + def setMaxI(self): self.maxI=6 - diff --git a/InterfaceQT4/monWidget4a6RadioButtonSD.py b/InterfaceQT4/monWidget4a6RadioButtonSD.py index 86f198ed..9cea1a41 100644 --- a/InterfaceQT4/monWidget4a6RadioButtonSD.py +++ b/InterfaceQT4/monWidget4a6RadioButtonSD.py @@ -24,17 +24,16 @@ import types,os # Modules Eficas from Extensions.i18n import tr -from .monWidgetRadioButton import MonWidgetRadioButtonCommun -from desWidget4a6RadioButton import Ui_Widget4a6RadioButton +from .monWidgetRadioButton import MonWidgetRadioButtonCommun +from desWidget4a6RadioButton import Ui_Widget4a6RadioButton class MonWidget4a6RadioButtonSD (Ui_Widget4a6RadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans le init de MonWidget4a6RadioButton",self self.maListeDeValeur=node.item.getSdAvantDuBonType() MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def setMaxI(self): + def setMaxI(self): self.maxI=6 - diff --git a/InterfaceQT4/monWidgetBloc.py b/InterfaceQT4/monWidgetBloc.py index 1f656d4f..bb359528 100644 --- a/InterfaceQT4/monWidgetBloc.py +++ b/InterfaceQT4/monWidgetBloc.py @@ -26,14 +26,14 @@ from Extensions.i18n import tr # Import des panels class MonWidgetBloc(Ui_WidgetBloc,Groupe): - """ - """ - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - #print ("bloc : ",node.item.nom) - Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) - #if self.editor.maConfiguration.afficheCommandesPliees ==True: self.node.plieToutEtReaffiche() - self.parentQt.commandesLayout.insertWidget(-1,self,1) + """ + """ + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + #print ("bloc : ",node.item.nom) + Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + #if self.editor.maConfiguration.afficheCommandesPliees ==True: self.node.plieToutEtReaffiche() + self.parentQt.commandesLayout.insertWidget(-1,self,1) - def afficheOptionnel(self): - return + def afficheOptionnel(self): + return diff --git a/InterfaceQT4/monWidgetCB.py b/InterfaceQT4/monWidgetCB.py index 3e12bb6b..d464661f 100644 --- a/InterfaceQT4/monWidgetCB.py +++ b/InterfaceQT4/monWidgetCB.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -29,7 +29,7 @@ import types,os from Extensions.i18n import tr from InterfaceQT4.feuille import Feuille -from desWidgetCB import Ui_WidgetCB +from desWidgetCB import Ui_WidgetCB from InterfaceQT4.politiquesValidation import PolitiqueUnique from InterfaceQT4.qtSaisie import SaisieValeur @@ -39,7 +39,7 @@ from PyQt5.QtCore import Qt, QEvent class MonWidgetCBCommun (Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) self.determineChoix() @@ -51,51 +51,51 @@ class MonWidgetCBCommun (Feuille): self.AAfficher=self.CBChoix - def setValeursApresBouton(self): - if self.objSimp.getValeur()==None : - self.CBChoix.setCurrentIndex(-1) - self.CBChoix.lineEdit().setText(tr("Select")) - return - valeur=self.objSimp.getValeur() - if not(type(valeur) == str) : valeur=str(valeur) - self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)) - - def determineChoix(self): - listeChoix=[] - if self.maListeDeValeur == None : self.maListeDeValeur=[] - for choix in self.maListeDeValeur: - if not(type(choix) == str) : choix=str(choix) - listeChoix.append(choix) - self.CBChoix.addItem(choix) - self.CBChoix.setEditable(True) - monCompleteur=QCompleter(listeChoix,self) - monCompleteur.setCompletionMode(QCompleter.PopupCompletion) - self.CBChoix.setCompleter(monCompleteur) - - def choixSaisi(self): - self.CBChoix.lineEdit().setStyleSheet(("\n" + def setValeursApresBouton(self): + if self.objSimp.getValeur()==None : + self.CBChoix.setCurrentIndex(-1) + self.CBChoix.lineEdit().setText(tr("Select")) + return + valeur=self.objSimp.getValeur() + if not(type(valeur) == str) : valeur=str(valeur) + self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)) + + def determineChoix(self): + listeChoix=[] + if self.maListeDeValeur == None : self.maListeDeValeur=[] + for choix in self.maListeDeValeur: + if not(type(choix) == str) : choix=str(choix) + listeChoix.append(choix) + self.CBChoix.addItem(choix) + self.CBChoix.setEditable(True) + monCompleteur=QCompleter(listeChoix,self) + monCompleteur.setCompletionMode(QCompleter.PopupCompletion) + self.CBChoix.setCompleter(monCompleteur) + + def choixSaisi(self): + self.CBChoix.lineEdit().setStyleSheet(("\n" "QLineEdit {\n" " font : italic ;\n" " background: rgb(235,235,235);\n" " }")) - valeur=str(self.CBChoix.currentText()) - SaisieValeur.LEvaleurPressed(self,valeur) - self.reaffiche() + valeur=str(self.CBChoix.currentText()) + SaisieValeur.LEvaleurPressed(self,valeur) + self.reaffiche() - def wheelEvent(self, event): - # Sinon poum sur les fenetres trop longues - # lorsque la widget attrape le wheelevent - event.ignore() + def wheelEvent(self, event): + # Sinon poum sur les fenetres trop longues + # lorsque la widget attrape le wheelevent + event.ignore() 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) + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + self.maListeDeValeur = monSimpDef.into + MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) class MonWidgetCBSD (Ui_WidgetCB,MonWidgetCBCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - self.maListeDeValeur = node.item.getSdAvantDuBonType() - MonWidgetCBCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + self.maListeDeValeur = node.item.getSdAvantDuBonType() + MonWidgetCBCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) diff --git a/InterfaceQT4/monWidgetCBIntoSug.py b/InterfaceQT4/monWidgetCBIntoSug.py index 8075451d..d8bcf98a 100644 --- a/InterfaceQT4/monWidgetCBIntoSug.py +++ b/InterfaceQT4/monWidgetCBIntoSug.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -39,21 +39,19 @@ 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.hasIntoSug() : self.maListeDeValeur = node.item.getListePossibleAvecSug([]) - 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)); - +class MonWidgetCBIntoSug (MonWidgetCBCommun, Ui_WidgetCBIntoSug,GereAjoutDsPossible): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + self.maListeDeValeur=monSimpDef.into + if node.item.hasIntoSug() : self.maListeDeValeur = node.item.getListePossibleAvecSug([]) + 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)); diff --git a/InterfaceQT4/monWidgetCBSD.py b/InterfaceQT4/monWidgetCBSD.py index 929e7426..c460851d 100644 --- a/InterfaceQT4/monWidgetCBSD.py +++ b/InterfaceQT4/monWidgetCBSD.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -29,7 +29,7 @@ import types,os from Extensions.i18n import tr from .feuille import Feuille -from desWidgetCB import Ui_WidgetCB +from desWidgetCB import Ui_WidgetCB from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur @@ -39,7 +39,7 @@ from PyQt5.QtWidgets import QComboBox, QCompleter class MonWidgetCB (Ui_WidgetCB,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) self.determineChoix() @@ -51,27 +51,27 @@ class MonWidgetCB (Ui_WidgetCB,Feuille): #print self.objSimp.isOblig() - def setValeursApresBouton(self): - if self.objSimp.getValeur()==None : - self.CBChoix.setCurrentIndex(-1) - return - valeur=self.objSimp.getValeur() - if not(type(valeur) == str) : valeur=str(valeur) - self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)) - - def determineChoix(self): - self.CBChoix.currentIndexChanged.connect(self.choixSaisi) + def setValeursApresBouton(self): + if self.objSimp.getValeur()==None : + self.CBChoix.setCurrentIndex(-1) + return + valeur=self.objSimp.getValeur() + if not(type(valeur) == str) : valeur=str(valeur) + self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur)) - for choix in self.monSimpDef.into: - if not(type(choix) == str) : choix=str(choix) - self.CBChoix.currentIndexChanged.connect(self.choixSaisi) - self.CBChoix.addItem(choix) - self.CBChoix.setEditable(True) - monCompleteur=QCompleter(listeChoix,self) - monCompleteur.setCompletionMode(QCompleter.PopupCompletion) - self.CBChoix.setCompleter(monCompleteur) + def determineChoix(self): + self.CBChoix.currentIndexChanged.connect(self.choixSaisi) + + for choix in self.monSimpDef.into: + if not(type(choix) == str) : choix=str(choix) + self.CBChoix.currentIndexChanged.connect(self.choixSaisi) + self.CBChoix.addItem(choix) + self.CBChoix.setEditable(True) + monCompleteur=QCompleter(listeChoix,self) + monCompleteur.setCompletionMode(QCompleter.PopupCompletion) + self.CBChoix.setCompleter(monCompleteur) - def choixSaisi(self): - valeur=str(self.CBChoix.currentText()) - SaisieValeur.LEvaleurPressed(self,valeur) - self.reaffiche() + def choixSaisi(self): + valeur=str(self.CBChoix.currentText()) + SaisieValeur.LEvaleurPressed(self,valeur) + self.reaffiche() diff --git a/InterfaceQT4/monWidgetCommande.py b/InterfaceQT4/monWidgetCommande.py index 99faa628..a9c0b16f 100644 --- a/InterfaceQT4/monWidgetCommande.py +++ b/InterfaceQT4/monWidgetCommande.py @@ -20,7 +20,7 @@ # Modules Eficas from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types @@ -37,274 +37,272 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr -import Accas +import Accas import os - + # Import des panels class MonWidgetCommande(Ui_WidgetCommande,Groupe): - """ - """ - def __init__(self,node,editor,etape): - - self.listeAffichageWidget=[] - self.inhibe=0 - self.ensure=0 - editor.inhibeSplitter=1 - Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self) - spacerItem = QSpacerItem(21, 500, QSizePolicy.Expanding, QSizePolicy.Expanding) - self.verticalLayoutCommande.addItem(spacerItem) - editor.inhibeSplitter=0 - - # Gestion du nom de L OPER si il est nomme - if not(hasattr(etape.definition,'sd_prod')) or (etape.definition.sd_prod==None): self.LENom.close() - elif (hasattr(etape.definition,'sd_prod') and type(etape.definition.sd_prod)== types.FunctionType):self.LENom.close() - elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None: - self.LENom.setText(etape.sdnom) - else : - self.LENom.setText("") - if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange) - self.racine=self.node.tree.racine - if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True) - - # Gestion de la doc de l objet - if node.item.getFr() != "" : - self.labelDoc.setText(node.item.getFr()) - nouvelleSize=self.frameAffichage.height()+60 - self.frameAffichage.setMinimumHeight(nouvelleSize) - self.frameAffichage.resize(self.frameAffichage.width(),nouvelleSize) - else : self.labelDoc.close() - - - # Gestion du nom de l etape - maPolice= QFont("Times", 10,) - self.setFont(maPolice) - self.labelNomCommande.setText(tr(self.obj.nom)) - - - # Gestion du Frame d affichage des autres commandes - if self.editor.maConfiguration.closeAutreCommande == True : self.closeAutreCommande() - else : - self.bCatalogue.clicked.connect(self.afficheCatalogue) - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - - if self.editor.maConfiguration.closeFrameRechercheCommande==True : - self.frameAffichage.close() - self.closeAutreCommande() - - - self.setAcceptDrops(True) - self.etablitOrdre() - - if self.editor.maConfiguration.enleverPoubellePourCommande : - self.RBPoubelle.close() # JDC Fige - - if self.editor.maConfiguration.pasDeMCOptionnels : - return # Pas de MC Optionnels pour Carmel - - from .monWidgetOptionnel import MonWidgetOptionnel - if self.editor.widgetOptionnel!= None : - self.monOptionnel=self.editor.widgetOptionnel - else : - self.editor.inhibeSplitter=1 - self.monOptionnel=MonWidgetOptionnel(self.editor) - self.editor.widgetOptionnel=self.monOptionnel - self.editor.splitter.addWidget(self.monOptionnel) - self.editor.ajoutOptionnel() - self.editor.inhibeSplitter=0 - self.monOptionnel=self.editor.widgetOptionnel - self.afficheOptionnel() - - #print "fin init de widget Commande" - - - def closeAutreCommande(self): - self.bCatalogue.close() - self.bAvant.close() - self.bApres.close() - - def donnePremier(self): - #print "dans donnePremier" - QApplication.processEvents() - if self.listeAffichageWidget != [] : - self.listeAffichageWidget[0].setFocus(7) - QApplication.processEvents() - #print self.focusWidget() - - - def focusNextPrevChild(self, next): - # on s assure que ce n est pas un chgt de fenetre - #print "je passe dans focusNextPrevChild" - if self.editor.fenetreCentraleAffichee != self : return True - f = self.focusWidget() - if f not in self.listeAffichageWidget : - i=0 - while not hasattr (f,'AAfficher') : - if f==None :i=-1; break - f = f.parentWidget() - if hasattr(f,'AAfficher') : f=f.AAfficher - if i != -1 : i=self.listeAffichageWidget.index(f) - else :i=self.listeAffichageWidget.index(f) - if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: - try : - self.listeAffichageWidget[1].setFocus(7) - w=self.focusWidget() - self.inhibe=1 - w.focusPreviousChild() - self.inhibe=0 - return True - except : - pass - #print self.listeAffichageWidget - #print "souci ds focusNextPrevChild" - if i==0 and next==False and not self.inhibe: - if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'): - self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1]) - self.listeAffichageWidget[-2].setFocus(7) - self.inhibe=1 - w=self.focusWidget() - w.focusNextChild() - self.inhibe=0 - return True - if i==0 and next==True and not self.inhibe: - self.listeAffichageWidget[0].setFocus(7) - self.inhibe=1 - w=self.focusWidget() - w.focusNextChild() - self.inhibe=0 - return True - if i>0 and next==False and not self.inhibe: - if isinstance(self.listeAffichageWidget[i-1],QRadioButton): - self.listeAffichageWidget[i-1].setFocus(7) - return True - return QWidget.focusNextPrevChild(self, next) - - def etablitOrdre(self): - i=0 - while(i +1 < len(self.listeAffichageWidget)): - self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) - i=i+1 - # si on boucle on perd l'ordre - - def afficheSuivant(self,f): - #print ('ds afficheSuivant') - try : - i=self.listeAffichageWidget.index(f) - next=i+1 - except : - next=1 - if (next==len(self.listeAffichageWidget) ): next =0 - #self.f=next - #QTimer.singleShot(1, self.rendVisible) - try : - self.listeAffichageWidget[next].setFocus(7) - except : - pass - - def nomChange(self): - nom = str(self.LENom.text()) - nom = nom.strip() - if nom == '' : return # si pas de nom, on ressort sans rien faire - test,mess = self.node.item.nommeSd(nom) - self.editor.afficheCommentaire(mess) - - #Notation scientifique - if test : - from .politiquesValidation import Validation - validation=Validation(self.node,self.editor) - validation.ajoutDsDictReelEtape() - - def afficheOptionnel(self): - # N a pas de parentQt. doit donc etre redefini - if self.editor.maConfiguration.closeOptionnel : self.editor.fermeOptionnel() - liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() - #print "dans afficheOptionnel", self.monOptionnel - # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple) - #if self.monOptionnel == None : return - self.monOptionnel.parentCommande=self - self.monOptionnel.titre(self.obj.nom) - self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) - - - def focusInEvent(self,event): - #print "je mets a jour dans focusInEvent de monWidget Commande " - self.afficheOptionnel() - - - def reaffiche(self,nodeAVoir=None): - # Attention delicat. les appels de fonctions ne semblent pas pouvoir etre supprimes! - self.avantH=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.horizontalScrollBar().sliderPosition() - self.avantV=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.verticalScrollBar().sliderPosition() - self.inhibeExpand=True - self.node.affichePanneau() - #QTimer.singleShot(1, self.recentre) - if nodeAVoir != None and nodeAVoir!=0: - self.f=nodeAVoir.fenetre - if self.f==None : - newNode=nodeAVoir.treeParent.chercheNoeudCorrespondant(nodeAVoir.item.object) - self.f = newNode.fenetre - if self.f != None and self.f.isVisible() : self.inhibeExpand=False; return - if self.f != None : self.rendVisible() + """ + """ + def __init__(self,node,editor,etape): + + self.listeAffichageWidget=[] + self.inhibe=0 + self.ensure=0 + editor.inhibeSplitter=1 + Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self) + spacerItem = QSpacerItem(21, 500, QSizePolicy.Expanding, QSizePolicy.Expanding) + self.verticalLayoutCommande.addItem(spacerItem) + editor.inhibeSplitter=0 + + # Gestion du nom de L OPER si il est nomme + if not(hasattr(etape.definition,'sd_prod')) or (etape.definition.sd_prod==None): self.LENom.close() + elif (hasattr(etape.definition,'sd_prod') and type(etape.definition.sd_prod)== types.FunctionType):self.LENom.close() + elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None: + self.LENom.setText(etape.sdnom) + else : + self.LENom.setText("") + if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange) + self.racine=self.node.tree.racine + if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True) + + # Gestion de la doc de l objet + if node.item.getFr() != "" : + self.labelDoc.setText(node.item.getFr()) + nouvelleSize=self.frameAffichage.height()+60 + self.frameAffichage.setMinimumHeight(nouvelleSize) + self.frameAffichage.resize(self.frameAffichage.width(),nouvelleSize) + else : self.labelDoc.close() + + + # Gestion du nom de l etape + maPolice= QFont("Times", 10,) + self.setFont(maPolice) + self.labelNomCommande.setText(tr(self.obj.nom)) + + + # Gestion du Frame d affichage des autres commandes + if self.editor.maConfiguration.closeAutreCommande == True : self.closeAutreCommande() + else : + self.bCatalogue.clicked.connect(self.afficheCatalogue) + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + + if self.editor.maConfiguration.closeFrameRechercheCommande==True : + self.frameAffichage.close() + self.closeAutreCommande() + + + self.setAcceptDrops(True) + self.etablitOrdre() + + if self.editor.maConfiguration.enleverPoubellePourCommande : + self.RBPoubelle.close() # JDC Fige + + if self.editor.maConfiguration.pasDeMCOptionnels : + return # Pas de MC Optionnels pour Carmel + + from .monWidgetOptionnel import MonWidgetOptionnel + if self.editor.widgetOptionnel!= None : + self.monOptionnel=self.editor.widgetOptionnel + else : + self.editor.inhibeSplitter=1 + self.monOptionnel=MonWidgetOptionnel(self.editor) + self.editor.widgetOptionnel=self.monOptionnel + self.editor.splitter.addWidget(self.monOptionnel) + self.editor.ajoutOptionnel() + self.editor.inhibeSplitter=0 + self.monOptionnel=self.editor.widgetOptionnel + self.afficheOptionnel() + + #print "fin init de widget Commande" + + + def closeAutreCommande(self): + self.bCatalogue.close() + self.bAvant.close() + self.bApres.close() + + def donnePremier(self): + #print "dans donnePremier" + QApplication.processEvents() + if self.listeAffichageWidget != [] : + self.listeAffichageWidget[0].setFocus(7) + QApplication.processEvents() + #print self.focusWidget() + + + def focusNextPrevChild(self, next): + # on s assure que ce n est pas un chgt de fenetre + #print "je passe dans focusNextPrevChild" + if self.editor.fenetreCentraleAffichee != self : return True + f = self.focusWidget() + if f not in self.listeAffichageWidget : + i=0 + while not hasattr (f,'AAfficher') : + if f==None :i=-1; break + f = f.parentWidget() + if hasattr(f,'AAfficher') : f=f.AAfficher + if i != -1 : i=self.listeAffichageWidget.index(f) + else :i=self.listeAffichageWidget.index(f) + if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: + try : + self.listeAffichageWidget[1].setFocus(7) + w=self.focusWidget() + self.inhibe=1 + w.focusPreviousChild() + self.inhibe=0 + return True + except : + pass + #print self.listeAffichageWidget + #print "souci ds focusNextPrevChild" + if i==0 and next==False and not self.inhibe: + if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'): + self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1]) + self.listeAffichageWidget[-2].setFocus(7) + self.inhibe=1 + w=self.focusWidget() + w.focusNextChild() + self.inhibe=0 + return True + if i==0 and next==True and not self.inhibe: + self.listeAffichageWidget[0].setFocus(7) + self.inhibe=1 + w=self.focusWidget() + w.focusNextChild() + self.inhibe=0 + return True + if i>0 and next==False and not self.inhibe: + if isinstance(self.listeAffichageWidget[i-1],QRadioButton): + self.listeAffichageWidget[i-1].setFocus(7) + return True + return QWidget.focusNextPrevChild(self, next) + + def etablitOrdre(self): + i=0 + while(i +1 < len(self.listeAffichageWidget)): + self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) + i=i+1 + # si on boucle on perd l'ordre + + def afficheSuivant(self,f): + #print ('ds afficheSuivant') + try : + i=self.listeAffichageWidget.index(f) + next=i+1 + except : + next=1 + if (next==len(self.listeAffichageWidget) ): next =0 + #self.f=next + #QTimer.singleShot(1, self.rendVisible) + try : + self.listeAffichageWidget[next].setFocus(7) + except : + pass + + def nomChange(self): + nom = str(self.LENom.text()) + nom = nom.strip() + if nom == '' : return # si pas de nom, on ressort sans rien faire + test,mess = self.node.item.nommeSd(nom) + self.editor.afficheCommentaire(mess) + + #Notation scientifique + if test : + from .politiquesValidation import Validation + validation=Validation(self.node,self.editor) + validation.ajoutDsDictReelEtape() + + def afficheOptionnel(self): + # N a pas de parentQt. doit donc etre redefini + if self.editor.maConfiguration.closeOptionnel : self.editor.fermeOptionnel() + liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() + #print "dans afficheOptionnel", self.monOptionnel + # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple) + #if self.monOptionnel == None : return + self.monOptionnel.parentCommande=self + self.monOptionnel.titre(self.obj.nom) + self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) + + + def focusInEvent(self,event): + #print "je mets a jour dans focusInEvent de monWidget Commande " + self.afficheOptionnel() + + + def reaffiche(self,nodeAVoir=None): + # Attention delicat. les appels de fonctions ne semblent pas pouvoir etre supprimes! + self.avantH=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.horizontalScrollBar().sliderPosition() + self.avantV=self.editor.fenetreCentraleAffichee.scrollAreaCommandes.verticalScrollBar().sliderPosition() + self.inhibeExpand=True + self.node.affichePanneau() + #QTimer.singleShot(1, self.recentre) + if nodeAVoir != None and nodeAVoir!=0: + self.f=nodeAVoir.fenetre + if self.f==None : + newNode=nodeAVoir.treeParent.chercheNoeudCorrespondant(nodeAVoir.item.object) + self.f = newNode.fenetre + if self.f != None and self.f.isVisible() : self.inhibeExpand=False; return + if self.f != None : self.rendVisible() + else : self.recentre() else : self.recentre() - else : self.recentre() - self.inhibeExpand=False - - - - def recentre(self): - QApplication.processEvents() - s=self.editor.fenetreCentraleAffichee.scrollAreaCommandes - s.horizontalScrollBar().setSliderPosition(self.avantH) - s.verticalScrollBar().setSliderPosition(self.avantV) - - def rendVisible(self): - QApplication.processEvents() - self.f.setFocus(7) - self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f) - - def afficheCatalogue(self): - if self.editor.widgetOptionnel != None : self.monOptionnel.hide() - self.racine.affichePanneau() - if self.node : self.node.select() - else : self.racine.select() - - def afficheApres(self): - self.node.selectApres() - - def afficheAvant(self): - self.node.selectAvant() - - def setValide(self): - 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") - nomIcone = self.node.item.getIconName() - if nomIcone == "ast-yellow-square" : icon=QIcon(self.repIcon+"/ast-yel-ball.png") - if nomIcone == "ast-red-square" : self.LENom.setDisabled(True) - - self.LENom.setDisabled(False) - self.RBValide.setIcon(icon) - - - def propageChange(self,typeChange,donneLeFocus): - aReecrire=self.propageChangeEnfant(self.node.item.object,typeChange) - if aReecrire : self.node.affichePanneau() - if hasattr(donneLeFocus.node.fenetre, 'selectionneDernier') : - QApplication.processEvents() - self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(donneLeFocus.node.fenetre) - donneLeFocus.node.fenetre.selectionneDernier() - - def propageChangeEnfant(self,mc, typeChange): - for enfant in mc.mcListe: - if enfant.nature == 'MCSIMP' : - if enfant.waitUserAssd(): - if enfant.definition.type[0] == typeChange: return True - else : - if enfant.nature == 'MCList' : enfant=enfant[0] - if self.propageChangeEnfant(enfant, typeChange) : return True - return False - - + self.inhibeExpand=False + + + + def recentre(self): + QApplication.processEvents() + s=self.editor.fenetreCentraleAffichee.scrollAreaCommandes + s.horizontalScrollBar().setSliderPosition(self.avantH) + s.verticalScrollBar().setSliderPosition(self.avantV) + + def rendVisible(self): + QApplication.processEvents() + self.f.setFocus(7) + self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f) + + def afficheCatalogue(self): + if self.editor.widgetOptionnel != None : self.monOptionnel.hide() + self.racine.affichePanneau() + if self.node : self.node.select() + else : self.racine.select() + + def afficheApres(self): + self.node.selectApres() + + def afficheAvant(self): + self.node.selectAvant() + + def setValide(self): + 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") + nomIcone = self.node.item.getIconName() + if nomIcone == "ast-yellow-square" : icon=QIcon(self.repIcon+"/ast-yel-ball.png") + if nomIcone == "ast-red-square" : self.LENom.setDisabled(True) + + self.LENom.setDisabled(False) + self.RBValide.setIcon(icon) + + + def propageChange(self,typeChange,donneLeFocus): + aReecrire=self.propageChangeEnfant(self.node.item.object,typeChange) + if aReecrire : self.node.affichePanneau() + if hasattr(donneLeFocus.node.fenetre, 'selectionneDernier') : + QApplication.processEvents() + self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(donneLeFocus.node.fenetre) + donneLeFocus.node.fenetre.selectionneDernier() + + def propageChangeEnfant(self,mc, typeChange): + for enfant in mc.mcListe: + if enfant.nature == 'MCSIMP' : + if enfant.waitUserAssd(): + if enfant.definition.type[0] == typeChange: return True + else : + if enfant.nature == 'MCList' : enfant=enfant[0] + if self.propageChangeEnfant(enfant, typeChange) : return True + return False diff --git a/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py b/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py index c03a17c1..da99150c 100644 --- a/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py +++ b/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py @@ -20,7 +20,7 @@ # Modules Eficas from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types, os import traceback @@ -34,117 +34,117 @@ class MonWidgetCommandeDeplie1Niveau(MonWidgetCommande): # il faut donc surcharger un certain nb de fonction ici pour eux - def __init__(self,node,editor,etape): - #print ("debut de ---------------------- init de MonWidgetCommandeDeplie1Niveau ",node.item.nom) - MonWidgetCommande.__init__(self,node,editor,etape) - self.node.plieToutEtReaffiche=self.plieToutEtReaffiche - spacerItem = QSpacerItem(21, 600, QSizePolicy.Expanding, QSizePolicy.Expanding) - self.verticalLayoutCommande.addItem(spacerItem) - - def afficheMots(self): - # Attention - # Attention --> cette methode surcharge les methodes des Nodes Fils - # Attention - #print ("debut de ---------------------- ds afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom) - #traceback.print_stack() - repIcon=self.editor.appliEficas.repIcon - fichier=os.path.join(repIcon, 'deleteRondVide.png') - icon = QIcon(fichier) - for node in self.node.children: - - node.plie=True - node.setPlieChildren() - if node.appartientAUnNoeudPlie==True : continue - - node.plieToutEtReaffiche = self.plieToutEtReaffiche - node.deplieToutEtReaffiche = self.deplieToutEtReaffiche - node.affichePanneau = self.affichePanneau - node.getPanel = self.getPanel - - widget=node.getPanelGroupe(self,self.maCommande) - self.listeFocus.append(node.fenetre) - - try : - node.fenetre.RBDeplie.setCheckable(False) - node.fenetre.RBDeplie.setEnabled(False) - node.fenetre.RBDeplie.setIcon(icon) - except : pass - - if node.item.object.isMCList() : - node.setDeplie = self.setDepliePourMCList - - for c in node.children : - c.setDeplie = self.setDepliePourNode - c.plieToutEtReaffiche = self.plieToutEtReaffiche - c.deplieToutEtReaffiche = self.deplieToutEtReaffiche - c.getPanel = self.getPanel - c.affichePanneau = self.affichePanneau - try : - c.fenetre.RBDeplie.setCheckable(False) - c.fenetre.RBDeplie.setEnabled(False) - c.fenetre.RBDeplie.setIcon(icon) - except : - pass - else : - node.setDeplie=self.setDepliePourNode - - #print ("fin ------------------------ afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom) - - def afficheSuivant(self,aAfficher): - fenetre=self.node.tree.itemCourant.fenetre - fenetre.afficheSuivant(aAfficher) - - def setDepliePourNode(self): - noeudCourant=self.node.tree.itemCourant - noeudCourant.setDeplieChildren() - if self.editor.fenetreCentraleAffichee == noeudCourant.fenetre : return - noeudCourant.afficheCeNiveau() - pass + def __init__(self,node,editor,etape): + #print ("debut de ---------------------- init de MonWidgetCommandeDeplie1Niveau ",node.item.nom) + MonWidgetCommande.__init__(self,node,editor,etape) + self.node.plieToutEtReaffiche=self.plieToutEtReaffiche + spacerItem = QSpacerItem(21, 600, QSizePolicy.Expanding, QSizePolicy.Expanding) + self.verticalLayoutCommande.addItem(spacerItem) + + def afficheMots(self): + # Attention + # Attention --> cette methode surcharge les methodes des Nodes Fils + # Attention + #print ("debut de ---------------------- ds afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom) + #traceback.print_stack() + repIcon=self.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'deleteRondVide.png') + icon = QIcon(fichier) + for node in self.node.children: + + node.plie=True + node.setPlieChildren() + if node.appartientAUnNoeudPlie==True : continue + + node.plieToutEtReaffiche = self.plieToutEtReaffiche + node.deplieToutEtReaffiche = self.deplieToutEtReaffiche + node.affichePanneau = self.affichePanneau + node.getPanel = self.getPanel + + widget=node.getPanelGroupe(self,self.maCommande) + self.listeFocus.append(node.fenetre) + + try : + node.fenetre.RBDeplie.setCheckable(False) + node.fenetre.RBDeplie.setEnabled(False) + node.fenetre.RBDeplie.setIcon(icon) + except : pass + + if node.item.object.isMCList() : + node.setDeplie = self.setDepliePourMCList + + for c in node.children : + c.setDeplie = self.setDepliePourNode + c.plieToutEtReaffiche = self.plieToutEtReaffiche + c.deplieToutEtReaffiche = self.deplieToutEtReaffiche + c.getPanel = self.getPanel + c.affichePanneau = self.affichePanneau + try : + c.fenetre.RBDeplie.setCheckable(False) + c.fenetre.RBDeplie.setEnabled(False) + c.fenetre.RBDeplie.setIcon(icon) + except : + pass + else : + node.setDeplie=self.setDepliePourNode + + #print ("fin ------------------------ afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom) + + def afficheSuivant(self,aAfficher): + fenetre=self.node.tree.itemCourant.fenetre + fenetre.afficheSuivant(aAfficher) + + def setDepliePourNode(self): + noeudCourant=self.node.tree.itemCourant + noeudCourant.setDeplieChildren() + if self.editor.fenetreCentraleAffichee == noeudCourant.fenetre : return + noeudCourant.afficheCeNiveau() + pass # -------------------------------------------- Methodes qui surchargent les noeuds fils - def setDepliePourMCList(self): - #print ('je surcharge setDeplie pour MCList') - pass + def setDepliePourMCList(self): + #print ('je surcharge setDeplie pour MCList') + pass - def setPlieChildren(self): - #print ('je surcharge setPlieChildren') - pass + def setPlieChildren(self): + #print ('je surcharge setPlieChildren') + pass - def setDeplieChildren(self): - #print ('je surcharge setDeplieChildren') - pass + def setDeplieChildren(self): + #print ('je surcharge setDeplieChildren') + pass - def plieToutEtReaffiche(self): - #print ('je surcharge plieToutEtReaffiche', self.node.item.nom) - pass + def plieToutEtReaffiche(self): + #print ('je surcharge plieToutEtReaffiche', self.node.item.nom) + pass - def deplieToutEtReaffiche(self): - #print ('je surcharge deplieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText()) - pass + def deplieToutEtReaffiche(self): + #print ('je surcharge deplieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText()) + pass - def plieToutEtReafficheSaufItem(self): - #print ('je surcharge plieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText()) - pass + def plieToutEtReafficheSaufItem(self): + #print ('je surcharge plieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText()) + pass - def affichePanneau(self): - #print ('je surcharge affichePanneau', self.node.tree.itemCourant.item.getLabelText()) - node=self.node.tree.itemCourant - while ( not (hasattr(node,'fenetreIhm')) or node.treeParent.fenetreIhm != 'deplie1Niveau') : + def affichePanneau(self): + #print ('je surcharge affichePanneau', self.node.tree.itemCourant.item.getLabelText()) + node=self.node.tree.itemCourant + while ( not (hasattr(node,'fenetreIhm')) or node.treeParent.fenetreIhm != 'deplie1Niveau') : node=node.treeParent - self.node.tree.setCurrentItem(node) - - item=node.item - if item.getLabelText()[0] == self.editor.fenetreCentraleAffichee.labelNomCommande.text(): - return - node.setDeplieChildren() - node.afficheCeNiveau() - self.editor.fenetreCentraleAffichee.labelNomCommande.setText(item.getLabelText()[0]) - self.editor.fenetreCentraleAffichee.labelDoc.setText(item.getFr()) + self.node.tree.setCurrentItem(node) + item=node.item + if item.getLabelText()[0] == self.editor.fenetreCentraleAffichee.labelNomCommande.text(): + return + node.setDeplieChildren() + node.afficheCeNiveau() + self.editor.fenetreCentraleAffichee.labelNomCommande.setText(item.getLabelText()[0]) + self.editor.fenetreCentraleAffichee.labelDoc.setText(item.getFr()) - def getPanel (self): - #print ('surcharge ds getPanel') - pass + + def getPanel (self): + #print ('surcharge ds getPanel') + pass diff --git a/InterfaceQT4/monWidgetCommentaire.py b/InterfaceQT4/monWidgetCommentaire.py index 8ff4e317..2ac6f90b 100644 --- a/InterfaceQT4/monWidgetCommentaire.py +++ b/InterfaceQT4/monWidgetCommentaire.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from PyQt5.QtWidgets import QWidget @@ -30,68 +30,67 @@ from PyQt5.QtCore import Qt from desWidgetCommentaire import Ui_WidgetCommentaire from .gereIcones import FacultatifOuOptionnel from Extensions.i18n import tr -import Accas +import Accas import os - + # Import des panels class MonWidgetCommentaire(QWidget,Ui_WidgetCommentaire,FacultatifOuOptionnel): - """ - """ - def __init__(self,node,editor,commentaire): - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - self.setupUi(self) - self.editor=editor - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - self.setIconePoubelle() - self.remplitTexte() - self.monOptionnel=None - - self.commentaireTE.textChanged.connect(self.TexteCommentaireEntre) - if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() - else : self.bCatalogue.clicked.connect(self.afficheCatalogue) - if self.editor.code in ['Adao','MAP','ADAO'] : - self.bAvant.close() - self.bApres.close() - else : - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - self.editor.fermeOptionnel() - - - def afficheApres(self): - self.node.selectApres() - - def afficheAvant(self): - self.node.selectAvant() - - - def afficheCatalogue(self): - self.node.tree.racine.affichePanneau() - if self.node : self.node.select() - else : self.node.tree.racine.select() - - def remplitTexte(self): - texte=self.node.item.getValeur() - self.commentaireTE.setText(texte) - if self.editor.code == "CARMELCND" and texte[0:16]=="Cree - fichier :" : - self.commentaireTE.setReadOnly(True) - self.commentaireTE.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.commentaireTE.setToolTip(tr("Valeur non modifiable")) - else : - self.commentaireTE.setReadOnly(False) - - def donnePremier(self): - self.commentaireTE.setFocus(7) - - - def TexteCommentaireEntre(self): - texte=str(self.commentaireTE.toPlainText()) - self.editor.initModif() - self.node.item.setValeur(texte) - self.node.updateNodeTexte() + """ + """ + def __init__(self,node,editor,commentaire): + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + self.setupUi(self) + self.editor=editor + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + self.setIconePoubelle() + self.remplitTexte() + self.monOptionnel=None + + self.commentaireTE.textChanged.connect(self.TexteCommentaireEntre) + if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() + else : self.bCatalogue.clicked.connect(self.afficheCatalogue) + if self.editor.code in ['Adao','MAP','ADAO'] : + self.bAvant.close() + self.bApres.close() + else : + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + self.editor.fermeOptionnel() + + + def afficheApres(self): + self.node.selectApres() + + def afficheAvant(self): + self.node.selectAvant() + + + def afficheCatalogue(self): + self.node.tree.racine.affichePanneau() + if self.node : self.node.select() + else : self.node.tree.racine.select() + + def remplitTexte(self): + texte=self.node.item.getValeur() + self.commentaireTE.setText(texte) + if self.editor.code == "CARMELCND" and texte[0:16]=="Cree - fichier :" : + self.commentaireTE.setReadOnly(True) + self.commentaireTE.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.commentaireTE.setToolTip(tr("Valeur non modifiable")) + else : + self.commentaireTE.setReadOnly(False) + + def donnePremier(self): + self.commentaireTE.setFocus(7) + + def TexteCommentaireEntre(self): + texte=str(self.commentaireTE.toPlainText()) + self.editor.initModif() + self.node.item.setValeur(texte) + self.node.updateNodeTexte() diff --git a/InterfaceQT4/monWidgetCreeParam.py b/InterfaceQT4/monWidgetCreeParam.py index d53025c1..1e903793 100644 --- a/InterfaceQT4/monWidgetCreeParam.py +++ b/InterfaceQT4/monWidgetCreeParam.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import object + from builtins import object except : pass import types,os,re @@ -35,46 +35,46 @@ from desWidgetCreeParam import Ui_desWidgetCreeParam class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog): - """ - """ - def __init__(self,editor, name = None,fl = 0): - self.editor=editor - self.editor.afficheInfos("") - QDialog.__init__(self,editor) - self.setupUi(self) - self.connecterSignaux() - self.dejaExistant=0 - self.listeTousParam=self.editor.jdc.params - self.dictListe={} - self.initToutesVal() - - def connecterSignauxQT4(self) : + """ + """ + def __init__(self,editor, name = None,fl = 0): + self.editor=editor + self.editor.afficheInfos("") + QDialog.__init__(self,editor) + self.setupUi(self) + self.connecterSignaux() + self.dejaExistant=0 + self.listeTousParam=self.editor.jdc.params + self.dictListe={} + self.initToutesVal() + + def connecterSignauxQT4(self) : self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.lineEditValReturnPressed) self.connect(self.lineEditNom,SIGNAL("returnPressed()"),self.lineEditNomReturnPressed) - def connecterSignaux(self) : + def connecterSignaux(self) : self.lineEditVal.returnPressed.connect(self.lineEditValReturnPressed) self.lineEditNom.returnPressed.connect(self.lineEditNomReturnPressed) self.LBParam.itemDoubleClicked.connect(self.paramClicked) - def paramClicked(self,item): - if self.editor.nodeEnCours == None : + def paramClicked(self,item): + if self.editor.nodeEnCours == None : QMessageBox.warning( self, tr("Pas de Mot-Clef"),tr("Attention! selectionnez un mot-clef")) return param= self.dictListe[item.text()] self.editor.nodeEnCours.lineEditVal.setText(param) self.editor.nodeEnCours.LEvaleurPressed() - - def creeParametre(self): + + def creeParametre(self): nom=str(self.lineEditNom.text()) val=str(self.lineEditVal.text()) if val == "" or None : return if nom == "" or None : return - if len(self.editor.tree.selectedItems()) == 0 : - itemAvant=self.editor.tree.racine - else : - itemAvant=self.editor.tree.selectedItems()[0] + if len(self.editor.tree.selectedItems()) == 0 : + itemAvant=self.editor.tree.racine + else : + itemAvant=self.editor.tree.selectedItems()[0] param=itemAvant.addParameters(True) param.item.setNom(nom) #PN self.val permet d entrer du texte @@ -89,62 +89,62 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog): - def lineEditValReturnPressed(self): + def lineEditValReturnPressed(self): qtVal=self.lineEditVal.text() valString=str(self.lineEditVal.text()) self.val="" contexte={} exec("from math import *", contexte) jdc=self.editor.jdc - if jdc == None : - self.editor.afficheInfos(tr(u"La Creation de parametre n est possible que dans un jeu de donnees"),Qt.red) - return + if jdc == None : + self.editor.afficheInfos(tr(u"La Creation de parametre n est possible que dans un jeu de donnees"),Qt.red) + return for p in jdc.params : - try: - tp=p.nom+'='+str(repr(p.valeur)) - exec(tp, contexte) - except : - pass + try: + tp=p.nom+'='+str(repr(p.valeur)) + exec(tp, contexte) + except : + pass monTexte="monParam="+valString try : - exec(monTexte, contexte) - self.val=valString + exec(monTexte, contexte) + self.val=valString except : - try : - monTexte="monParam='"+valString+"'" - self.val="'"+valString+"'" - except : - self.editor.afficheInfos(tr("Valeur incorrecte"),Qt.red) + try : + monTexte="monParam='"+valString+"'" + self.val="'"+valString+"'" + except : + self.editor.afficheInfos(tr("Valeur incorrecte"),Qt.red) if self.lineEditNom.text()!="" and self.dejaExistant==False : self.creeParametre() - def lineEditNomReturnPressed(self): + def lineEditNomReturnPressed(self): qtNom=self.lineEditNom.text() nom=str(qtNom) if not pattern_name.match(nom) : - self.lineEditNom.setText("") - commentaire=nom + tr(" n est pas un identifiant correct\n ") - self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditNom.setText("") + commentaire=nom + tr(" n est pas un identifiant correct\n ") + self.editor.afficheInfos(commentaire,Qt.red) for p in self.editor.jdc.params : - if p.nom==nom : - commentaire=nom + tr(" existe deja\n ") - self.editor.afficheInfos(commentaire,Qt.red) - return + if p.nom==nom : + commentaire=nom + tr(" existe deja\n ") + self.editor.afficheInfos(commentaire,Qt.red) + return if self.lineEditVal.text()!="" : self.creeParametre() self.lineEditVal.setFocus(Qt.OtherFocusReason) - def initToutesVal(self): + def initToutesVal(self): self.LBParam.clear() for param in self.listeTousParam : self.LBParam.addItem((repr(param))) self.dictListe[repr(param)] = param.nom - - - - def valideParam(self): + + + + def valideParam(self): if self.LBParam.selectedItems()== None : return lParam=[] for indice in range(len(self.LBParam.selectedItems())): @@ -153,9 +153,8 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog): lParam.append(param) try : - self.panel.ajoutNValeur(lParam) + self.panel.ajoutNValeur(lParam) except : - for p in lParam : - self.panel.ajout1Valeur(p) + for p in lParam : + self.panel.ajout1Valeur(p) self.close() - diff --git a/InterfaceQT4/monWidgetCreeUserAssd.py b/InterfaceQT4/monWidgetCreeUserAssd.py index 3e2ab8f6..b26fe3be 100644 --- a/InterfaceQT4/monWidgetCreeUserAssd.py +++ b/InterfaceQT4/monWidgetCreeUserAssd.py @@ -30,33 +30,30 @@ from copy import copy,deepcopy from PyQt5.QtCore import Qt - -class MonWidgetCreeUserAssd ( MonWidgetSimpTxt): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - MonWidgetSimpTxt. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - #self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) - def LEvaleurPressed(self): - try : - if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return - except : pass - valeurEntree = str(self.lineEditVal.text()) - if valeurEntree == self.oldValeurTexte : return - if self.oldValeurTexte == "" : enCreation = True - else : enCreation = False - if enCreation : validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeurEntree) - else : validite,commentaire=self.objSimp.renommeSdCree(valeurEntree) - if not enCreation : self.node.updateNodeTexte() - #PNPNPN -- signal update sur les fils ou ? - if commentaire != "" : - if validite : - self.editor.afficheCommentaire(commentaire) - self.oldValeurTexte = self.lineEditVal.text() - else : - self.editor.afficheInfos(commentaire,Qt.red) - self.lineEditVal.setText("") - self.oldValeurTexte="" - self.parentQt.propageChange(self.objSimp.definition.type[0],self) - - +class MonWidgetCreeUserAssd ( MonWidgetSimpTxt): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + MonWidgetSimpTxt. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + #self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) + def LEvaleurPressed(self): + try : + if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return + except : pass + valeurEntree = str(self.lineEditVal.text()) + if valeurEntree == self.oldValeurTexte : return + if self.oldValeurTexte == "" : enCreation = True + else : enCreation = False + if enCreation : validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeurEntree) + else : validite,commentaire=self.objSimp.renommeSdCree(valeurEntree) + if not enCreation : self.node.updateNodeTexte() + #PNPNPN -- signal update sur les fils ou ? + if commentaire != "" : + if validite : + self.editor.afficheCommentaire(commentaire) + self.oldValeurTexte = self.lineEditVal.text() + else : + self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditVal.setText("") + self.oldValeurTexte="" + self.parentQt.propageChange(self.objSimp.definition.type[0],self) diff --git a/InterfaceQT4/monWidgetDate.py b/InterfaceQT4/monWidgetDate.py index dd5964dd..689be078 100644 --- a/InterfaceQT4/monWidgetDate.py +++ b/InterfaceQT4/monWidgetDate.py @@ -25,27 +25,26 @@ import types,os from Extensions.i18n import tr from .feuille import Feuille -from .monWidgetSimpTuple import MonWidgetSimpTuple -from desWidgetDate import Ui_WidgetDate +from .monWidgetSimpTuple import MonWidgetSimpTuple +from desWidgetDate import Ui_WidgetDate class MonWidgetDate (Ui_WidgetDate,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=3 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if self.objSimp.isImmuable() : - self.lineEditVal1.setDisabled(True) - self.lineEditVal2.setDisabled(True) - self.lineEditVal3.setDisabled(True) - self.lineEditVal1.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) - self.lineEditVal2.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) - self.lineEditVal3.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) - self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal3.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal1.setDisabled(True) + self.lineEditVal2.setDisabled(True) + self.lineEditVal3.setDisabled(True) + self.lineEditVal1.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) + self.lineEditVal2.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) + self.lineEditVal3.setStyleSheet(QString.fromUtf8("background:rgb(244,244,244);\n" "border:0px;\n")) + self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal3.setToolTip(tr("Valeur non modifiable")) else : - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) #self.maCommande.listeAffichageWidget.append(self.lineEditVal2) #self.maCommande.listeAffichageWidget.append(self.lineEditVal3) - diff --git a/InterfaceQT4/monWidgetFact.py b/InterfaceQT4/monWidgetFact.py index c6758b39..7b2ad86a 100644 --- a/InterfaceQT4/monWidgetFact.py +++ b/InterfaceQT4/monWidgetFact.py @@ -32,46 +32,46 @@ from Extensions.i18n import tr # PN 18 mai 2020 : affiche systematique des optionnels class MonWidgetFactCommun(Groupe): - """ - """ - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - #print "fact : ",node.item.nom - Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) - labeltext,fonte,couleur = self.node.item.getLabelText() - self.GroupBox.setText(tr(labeltext)) - self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse) - self.parentQt.commandesLayout.insertWidget(-1,self) - self.doitAfficherOptionnel=True - min,max=obj.getMinMax() - if max < 2 and hasattr(self, 'RBPlus') : self.RBPlus.close() - if max > 1 and hasattr(self, 'RBPlus') : self.RBPlus.clicked.connect(self.ajouteMCParPB) + """ + """ + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + #print "fact : ",node.item.nom + Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + labeltext,fonte,couleur = self.node.item.getLabelText() + self.GroupBox.setText(tr(labeltext)) + self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse) + self.parentQt.commandesLayout.insertWidget(-1,self) + self.doitAfficherOptionnel=True + min,max=obj.getMinMax() + if max < 2 and hasattr(self, 'RBPlus') : self.RBPlus.close() + if max > 1 and hasattr(self, 'RBPlus') : self.RBPlus.clicked.connect(self.ajouteMCParPB) - def enterEvent(self,event): - #print "enterEvent ", self.node.item.getLabelText()[0] - self.doitAfficherOptionnel=True - QWidget.enterEvent(self,event) - QTimer.singleShot(500, self.delayAffiche) + def enterEvent(self,event): + #print "enterEvent ", self.node.item.getLabelText()[0] + self.doitAfficherOptionnel=True + QWidget.enterEvent(self,event) + QTimer.singleShot(500, self.delayAffiche) - def leaveEvent(self,event): - #print "leaveEvent", self.node.item.getLabelText()[0] - #self.doitAfficherOptionnel=False - QWidget.leaveEvent(self,event) + def leaveEvent(self,event): + #print "leaveEvent", self.node.item.getLabelText()[0] + #self.doitAfficherOptionnel=False + QWidget.leaveEvent(self,event) - def delayAffiche(self): - #print "delayAffiche, self.doitAfficherOptionnel = ", self.doitAfficherOptionnel - if self.doitAfficherOptionnel and self.editor.code != "CARMELCND" :self.afficheOptionnel() + def delayAffiche(self): + #print "delayAffiche, self.doitAfficherOptionnel = ", self.doitAfficherOptionnel + if self.doitAfficherOptionnel and self.editor.code != "CARMELCND" :self.afficheOptionnel() - def ajouteMCParPB(self): - texteListeNom="+"+self.obj.nom - parentOuAjouter=self.parentQt - from .monWidgetBloc import MonWidgetBloc - while (parentOuAjouter and isinstance(parentOuAjouter, MonWidgetBloc)) : - parentOuAjouter=parentOuAjouter.parentQt - parentOuAjouter.ajoutMC(texteListeNom) + def ajouteMCParPB(self): + texteListeNom="+"+self.obj.nom + parentOuAjouter=self.parentQt + from .monWidgetBloc import MonWidgetBloc + while (parentOuAjouter and isinstance(parentOuAjouter, MonWidgetBloc)) : + parentOuAjouter=parentOuAjouter.parentQt + parentOuAjouter.ajoutMC(texteListeNom) # def reaffiche(self, nodeAVoir=None): -# print ('ds reaffiche : ', self.obj.nom, self.node.firstDeplie) +# print ('ds reaffiche : ', self.obj.nom, self.node.firstDeplie) # if self.node.editor.maConfiguration.afficheFirstPlies and self.node.firstDeplie: # self.node.firstDeplie =False # self.node.setPlie() @@ -80,14 +80,14 @@ class MonWidgetFactCommun(Groupe): class MonWidgetFact(Ui_WidgetFact,MonWidgetFactCommun): - #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): - # MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn) - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): + # MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn) + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) class MonWidgetFactTableau(Ui_WidgetFact,MonWidgetFactCommun): - #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): - # MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn) - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) - MonWidgetFactTableau.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): + # MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn) + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + MonWidgetFactTableau.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) diff --git a/InterfaceQT4/monWidgetFactPlie.py b/InterfaceQT4/monWidgetFactPlie.py index e479f312..ad383d72 100644 --- a/InterfaceQT4/monWidgetFactPlie.py +++ b/InterfaceQT4/monWidgetFactPlie.py @@ -26,16 +26,15 @@ from Extensions.i18n import tr # Import des panels class MonWidgetFactPlie(Ui_WidgetFactPlie,Groupe): - """ - """ - #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1): - def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): - #print "fact plie : ",node.item.nom - node.fenetreAAfficher=self - Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) - self.groupBox.setText(self.node.item.getLabelText()[0]) - self.parentQt.commandesLayout.insertWidget(-1,self) - - def traiteClicSurLabel(self,texte): - return + """ + """ + #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1): + def __init__(self,node,editor,parentQt,definition, obj, niveau,commande): + #print "fact plie : ",node.item.nom + node.fenetreAAfficher=self + Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande) + self.groupBox.setText(self.node.item.getLabelText()[0]) + self.parentQt.commandesLayout.insertWidget(-1,self) + def traiteClicSurLabel(self,texte): + return diff --git a/InterfaceQT4/monWidgetFormule.py b/InterfaceQT4/monWidgetFormule.py index f1add2f1..d76500e0 100644 --- a/InterfaceQT4/monWidgetFormule.py +++ b/InterfaceQT4/monWidgetFormule.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desWidgetFormule import Ui_WidgetFormule @@ -33,58 +33,58 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr -import Accas +import Accas import os - + # Import des panels class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel): - """ - """ - def __init__(self,node,editor,etape): - #print "MonWidgetFormule ", self - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - self.editor=editor - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - self.setupUi(self) - - - self.setIconePoubelle() - self.setIconesGenerales() - self.setValeurs() - self.setValide() - - - if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() - else : self.bCatalogue.clicked.connect(self.afficheCatalogue) - if self.editor.code in ['Adao','MAP','ADAO'] : - self.bAvant.close() - self.bApres.close() - else : - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - self.LENom.returnPressed.connect(self.nomChange) - self.LENomFormule.returnPressed.connect(self.nomFormuleSaisi) - self.LENomsArgs.returnPressed.connect(self.argsSaisis) - self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie) - - - - self.racine=self.node.tree.racine - self.monOptionnel=None - self.editor.fermeOptionnel() - #print "fin init de widget Commande" - - - def donnePremier(self): - self.listeAffichageWidget[0].setFocus(7) - - - def setValeurs(self): + """ + """ + def __init__(self,node,editor,etape): + #print "MonWidgetFormule ", self + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + self.editor=editor + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + self.setupUi(self) + + + self.setIconePoubelle() + self.setIconesGenerales() + self.setValeurs() + self.setValide() + + + if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() + else : self.bCatalogue.clicked.connect(self.afficheCatalogue) + if self.editor.code in ['Adao','MAP','ADAO'] : + self.bAvant.close() + self.bApres.close() + else : + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + self.LENom.returnPressed.connect(self.nomChange) + self.LENomFormule.returnPressed.connect(self.nomFormuleSaisi) + self.LENomsArgs.returnPressed.connect(self.argsSaisis) + self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie) + + + + self.racine=self.node.tree.racine + self.monOptionnel=None + self.editor.fermeOptionnel() + #print "fin init de widget Commande" + + + def donnePremier(self): + self.listeAffichageWidget[0].setFocus(7) + + + def setValeurs(self): self.LENomFormule.setText(self.node.item.getNom()) self.LECorpsFormule.setText(self.node.item.getCorps()) texte_args="" @@ -95,110 +95,109 @@ class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel): self.LENomsArgs.setText(texte_args) - def nomChange(self): - nom = str(self.LENom.text()) - self.LENomFormule.setText(nom) - self.nomFormuleSaisi() - - - def afficheCatalogue(self): - if self.editor.widgetOptionnel != None : self.monOptionnel.hide() - self.racine.affichePanneau() - if self.node : self.node.select() - else : self.racine.select() - - def afficheApres(self): - self.node.selectApres() - - def afficheAvant(self): - self.node.selectAvant() - - def setValide(self): - 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" : - icon=QIcon(self.repIcon+"/ast-yel-ball.png") - self.RBValide.setIcon(icon) - - - def nomFormuleSaisi(self): - nomFormule = str(self.LENomFormule.text()) - if nomFormule == '' : return - self.LENom.setText(nomFormule) - test,erreur = self.node.item.verifNom(nomFormule) - if test : - commentaire=nomFormule+tr(" est un nom valide pour une FORMULE") - self.editor.afficheInfos(commentaire) - else : - commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE") - self.editor.afficheInfos(commentaire,Qt.red) - return - if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule() - self.LENomsArgs.setFocus(7) - - def argsSaisis(self): - arguments = str(self.LENomsArgs.text()) - if arguments == '' : return - test,erreur = self.node.item.verifArguments(arguments) - if test: - commentaire=tr("Argument(s) valide(s) pour une FORMULE") - self.editor.afficheInfos(commentaire) - else: - commentaire=tr("Argument(s) invalide(s) pour une FORMULE") - self.editor.afficheInfos(commentaire,Qt.red) - if str(self.LECorpsFormule.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule() - self.LECorpsFormule.setFocus(7) - - def FormuleSaisie(self): - nomFormule = str(self.LENomFormule.text()) - arguments = str(self.LENomsArgs.text()) - expression = str(self.LECorpsFormule.text()) - if expression == '' : return - test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression)) - - if test: - commentaire=tr("Corps de FORMULE valide") - self.editor.afficheInfos(commentaire) - else: - commentaire=tr("Corps de FORMULE invalide") - self.editor.afficheInfos(commentaire,Qt.red) - if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule() - - def BOkPressedFormule(self): - #print dir(self) - #if self.parent.modified == 'n' : self.parent.initModif() - - nomFormule = str(self.LENomFormule.text()) - test,erreur = self.node.item.verifNom(nomFormule) - if not test : - self.editor.afficheInfos(erreur,Qt.red) - return - - arguments = str(self.LENomsArgs.text()) - test,erreur = self.node.item.verifArguments(arguments) - if not test : - self.editor.afficheInfos(erreur,Qt.red) - return - - expression = str(self.LECorpsFormule.text()) - test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression)) - if not test : - self.editor.afficheInfos(erreur,Qt.red) - return - - test=self.node.item.object.updateFormulePython(formule=(nomFormule,"REEL",arguments,expression)) - test,erreur = self.node.item.saveFormule(nomFormule,"REEL",arguments,expression) - if test : - self.node.onValid() - self.node.update_valid() - commentaire = "Formule saisie" - self.editor.afficheInfos(commentaire) - else: - commentaire ="Formule incorrecte : " + erreur - self.editor.afficheInfos(commentaire,Qt.red) - self.editor.initModif() - + def nomChange(self): + nom = str(self.LENom.text()) + self.LENomFormule.setText(nom) + self.nomFormuleSaisi() + + + def afficheCatalogue(self): + if self.editor.widgetOptionnel != None : self.monOptionnel.hide() + self.racine.affichePanneau() + if self.node : self.node.select() + else : self.racine.select() + + def afficheApres(self): + self.node.selectApres() + + def afficheAvant(self): + self.node.selectAvant() + + def setValide(self): + 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" : + icon=QIcon(self.repIcon+"/ast-yel-ball.png") + self.RBValide.setIcon(icon) + + + def nomFormuleSaisi(self): + nomFormule = str(self.LENomFormule.text()) + if nomFormule == '' : return + self.LENom.setText(nomFormule) + test,erreur = self.node.item.verifNom(nomFormule) + if test : + commentaire=nomFormule+tr(" est un nom valide pour une FORMULE") + self.editor.afficheInfos(commentaire) + else : + commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE") + self.editor.afficheInfos(commentaire,Qt.red) + return + if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule() + self.LENomsArgs.setFocus(7) + + def argsSaisis(self): + arguments = str(self.LENomsArgs.text()) + if arguments == '' : return + test,erreur = self.node.item.verifArguments(arguments) + if test: + commentaire=tr("Argument(s) valide(s) pour une FORMULE") + self.editor.afficheInfos(commentaire) + else: + commentaire=tr("Argument(s) invalide(s) pour une FORMULE") + self.editor.afficheInfos(commentaire,Qt.red) + if str(self.LECorpsFormule.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule() + self.LECorpsFormule.setFocus(7) + + def FormuleSaisie(self): + nomFormule = str(self.LENomFormule.text()) + arguments = str(self.LENomsArgs.text()) + expression = str(self.LECorpsFormule.text()) + if expression == '' : return + test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression)) + + if test: + commentaire=tr("Corps de FORMULE valide") + self.editor.afficheInfos(commentaire) + else: + commentaire=tr("Corps de FORMULE invalide") + self.editor.afficheInfos(commentaire,Qt.red) + if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text())!= "" : self.BOkPressedFormule() + + def BOkPressedFormule(self): + #print dir(self) + #if self.parent.modified == 'n' : self.parent.initModif() + + nomFormule = str(self.LENomFormule.text()) + test,erreur = self.node.item.verifNom(nomFormule) + if not test : + self.editor.afficheInfos(erreur,Qt.red) + return + + arguments = str(self.LENomsArgs.text()) + test,erreur = self.node.item.verifArguments(arguments) + if not test : + self.editor.afficheInfos(erreur,Qt.red) + return + + expression = str(self.LECorpsFormule.text()) + test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression)) + if not test : + self.editor.afficheInfos(erreur,Qt.red) + return + + test=self.node.item.object.updateFormulePython(formule=(nomFormule,"REEL",arguments,expression)) + test,erreur = self.node.item.saveFormule(nomFormule,"REEL",arguments,expression) + if test : + self.node.onValid() + self.node.update_valid() + commentaire = "Formule saisie" + self.editor.afficheInfos(commentaire) + else: + commentaire ="Formule incorrecte : " + erreur + self.editor.afficheInfos(commentaire,Qt.red) + self.editor.initModif() diff --git a/InterfaceQT4/monWidgetHeure.py b/InterfaceQT4/monWidgetHeure.py index 8587fb12..62811aa6 100644 --- a/InterfaceQT4/monWidgetHeure.py +++ b/InterfaceQT4/monWidgetHeure.py @@ -26,10 +26,10 @@ from Extensions.i18n import tr from .feuille import Feuille from .monWidgetSimpBase import MonWidgetSimpBase -from desWidgetHeure import Ui_WidgetHeure +from desWidgetHeure import Ui_WidgetHeure class MonWidgetHeure (Ui_WidgetHeure,MonWidgetSimpBase): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetSimpBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) diff --git a/InterfaceQT4/monWidgetInactif.py b/InterfaceQT4/monWidgetInactif.py index db3657af..33d25e1f 100644 --- a/InterfaceQT4/monWidgetInactif.py +++ b/InterfaceQT4/monWidgetInactif.py @@ -24,64 +24,62 @@ from PyQt5.QtWidgets import QWidget from Extensions.i18n import tr from desWidgetInactif import Ui_WidgetInactif -import Accas +import Accas import os - + # Import des panels class MonWidgetInactif(QWidget,Ui_WidgetInactif): - """ - """ - def __init__(self,node,editor): - QWidget.__init__(self,None) - self.node=node - self.editor=editor - self.setupUi(self) - from .monWidgetOptionnel import MonWidgetOptionnel - if self.editor.widgetOptionnel!= None : - self.monOptionnel=self.editor.widgetOptionnel - else : - self.monOptionnel=MonWidgetOptionnel(self) - self.editor.widgetOptionnel=self.monOptionnel - self.editor.splitter.addWidget(self.monOptionnel) - self.editor.restoreSplitterSizes() - self.afficheOptionnel() - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - self.bCatalogue.clicked.connect(self.afficheCatalogue) - self.labelNomCommande.setText(tr(self.node.item.nom)) - self.labelNomCommande.setEnabled(False) - - def traiteClicSurLabel(self): - pass - - def donnePremier(self): - pass + """ + """ + def __init__(self,node,editor): + QWidget.__init__(self,None) + self.node=node + self.editor=editor + self.setupUi(self) + from .monWidgetOptionnel import MonWidgetOptionnel + if self.editor.widgetOptionnel!= None : + self.monOptionnel=self.editor.widgetOptionnel + else : + self.monOptionnel=MonWidgetOptionnel(self) + self.editor.widgetOptionnel=self.monOptionnel + self.editor.splitter.addWidget(self.monOptionnel) + self.editor.restoreSplitterSizes() + self.afficheOptionnel() + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + self.bCatalogue.clicked.connect(self.afficheCatalogue) + self.labelNomCommande.setText(tr(self.node.item.nom)) + self.labelNomCommande.setEnabled(False) - def setValide(self): - pass + def traiteClicSurLabel(self): + pass - def afficheOptionnel(self): - # N a pas de parentQt. doit donc etre redefini - if self.editor.maConfiguration.closeOptionnel : return - liste=[] - #print "dans afficheOptionnel", self.monOptionnel - # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple) - #if self.monOptionnel == None : return - self.monOptionnel.parentMC=self - self.monOptionnel.afficheOptionnelVide() + def donnePremier(self): + pass + def setValide(self): + pass - def afficheCatalogue(self): - if self.editor.widgetOptionnel != None : self.monOptionnel.hide() - self.node.tree.racine.affichePanneau() - self.node.tree.racine.select() + def afficheOptionnel(self): + # N a pas de parentQt. doit donc etre redefini + if self.editor.maConfiguration.closeOptionnel : return + liste=[] + #print "dans afficheOptionnel", self.monOptionnel + # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple) + #if self.monOptionnel == None : return + self.monOptionnel.parentMC=self + self.monOptionnel.afficheOptionnelVide() - def afficheApres(self): - self.node.selectApres() - def afficheAvant(self): - self.node.selectAvant() + def afficheCatalogue(self): + if self.editor.widgetOptionnel != None : self.monOptionnel.hide() + self.node.tree.racine.affichePanneau() + self.node.tree.racine.select() + def afficheApres(self): + self.node.selectApres() + def afficheAvant(self): + self.node.selectAvant() diff --git a/InterfaceQT4/monWidgetInfo.py b/InterfaceQT4/monWidgetInfo.py index 0bfc2dd5..c48357f2 100644 --- a/InterfaceQT4/monWidgetInfo.py +++ b/InterfaceQT4/monWidgetInfo.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -29,13 +29,13 @@ import types,os from PyQt5.QtWidgets import QWidget from Extensions.i18n import tr -from desWidgetInformation import Ui_WidgetInformative +from desWidgetInformation import Ui_WidgetInformative class MonWidgetInfo (Ui_WidgetInformative,QWidget): # c est juste la taille des differents widgets de base qui change - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): QWidget.__init__(self,None) self.setupUi(self) valeur=node.item.getValeur() diff --git a/InterfaceQT4/monWidgetIntoSug.py b/InterfaceQT4/monWidgetIntoSug.py index 42c72358..4a08d57a 100644 --- a/InterfaceQT4/monWidgetIntoSug.py +++ b/InterfaceQT4/monWidgetIntoSug.py @@ -20,8 +20,8 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os @@ -34,39 +34,38 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr -from desWidgetIntoSug import Ui_WidgetIntoSug -from monWidgetPlusieursInto import MonWidgetPlusieursInto +from desWidgetIntoSug import Ui_WidgetIntoSug +from monWidgetPlusieursInto import 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.hasIntoSug() : - self.maListeDeValeur=list(self.node.item.getListePossibleAvecSug([])) - 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() + 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.hasIntoSug() : + self.maListeDeValeur=list(self.node.item.getListePossibleAvecSug([])) + 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 +# on attend du texte . on n essaye pas de transformer - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetPlusieursInto.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible) - diff --git a/InterfaceQT4/monWidgetMatrice.py b/InterfaceQT4/monWidgetMatrice.py index 9a9a1d83..bb3dc1e6 100644 --- a/InterfaceQT4/monWidgetMatrice.py +++ b/InterfaceQT4/monWidgetMatrice.py @@ -21,8 +21,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os,sys @@ -32,7 +32,7 @@ from Extensions.i18n import tr from .feuille import Feuille -from desWidgetMatrice import Ui_desWidgetMatrice +from desWidgetMatrice import Ui_desWidgetMatrice from PyQt5.QtCore import QSize, Qt from PyQt5.QtWidgets import QTableWidgetItem, QTableWidget @@ -43,7 +43,7 @@ from PyQt5.QtWidgets import QMessageBox class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille): # c est juste la taille des differents widgets de base qui change - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.monType = self.node.item.object.definition.type[0] parentQt.commandesLayout.insertWidget(-1,self) @@ -54,210 +54,209 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille): self.initialValeur() - def connecterSignaux(self) : - self.TBMatrice.itemChanged.connect(self.itemChanged) - self.PBrefresh.clicked.connect( self.acceptVal) - self.TBMatrice.focusOutEvent=self.monFocusOutEvent - - - def monFocusOutEvent(self,event): - self.acceptVal() - QTableWidget.focusInEvent(self.TBMatrice,event) - - - def itemChanged(self): - monItem=self.TBMatrice.currentItem() - if monItem==None : return - texte=monItem.text() - if texte=="" : return - if self.monType.typElt == 'R' : - try : val=float(str(texte)); ok=True - except : ok=False - if ok == False : - self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red) - monItem.setText("") - return - if self.monType.valSup != None : - if val > self.monType.valSup : - self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) - monItem.setText("") - return - if self.monType.valMin != None : - if val < self.monType.valMin : - self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) - monItem.setText("") - return - self.editor.afficheInfos("") - if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) - if self.monType.typElt == 'TXM' : - if self.monType.typEltInto != None and texte not in self.monType.typEltInto : - self.editor.afficheInfos(tr("Entrer une valeur qui est ") + str(self.monType.typEltInto),Qt.red) - monItem.setText("") - return - - - def creeColonnes(self): - if self.monType.methodeCalculTaille != None : - try: - MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,)) - except : - QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) - return - else : - self.nbLigs=self.monType.nbLigs - self.nbCols=self.monType.nbCols - self.TBMatrice.setColumnCount(self.nbLigs) - self.TBMatrice.setRowCount(self.nbCols) - if self.monType.listeHeaders != None : - self.TBMatrice.setVerticalHeaderLabels(self.monType.listeHeaders[0]) - self.TBMatrice.setHorizontalHeaderLabels(self.monType.listeHeaders[1]) - else : - self.TBMatrice.verticalHeader().hide() - self.TBMatrice.horizontalHeader().hide() - - - def initialValeur(self): - liste=self.node.item.getValeur() - if liste == None : return - dejaAffiche=0 - if (len(liste)) != self.nbLigs : - QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) - for i in range(self.nbLigs): - inter=liste[i] - if (len(inter)) != self.nbCols : - QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) - raise EficasException('dimension') - for j in range(self.nbCols): - self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i][j]))) - - def acceptVal(self): - liste=[] - for i in range(self.nbLigs): - listeCol=[] - for j in range(self.nbCols): - monItem=self.TBMatrice.item(i,j) - if monItem : texte=monItem.text() - else : texte = '' - if self.monType.typElt == 'R' : - try : val=float(str(texte)) - except : val=None - val=texte - listeCol.append(val) - liste.append(listeCol) - self.node.item.setValeur(liste) + def connecterSignaux(self) : + self.TBMatrice.itemChanged.connect(self.itemChanged) + self.PBrefresh.clicked.connect( self.acceptVal) + self.TBMatrice.focusOutEvent=self.monFocusOutEvent + + + def monFocusOutEvent(self,event): + self.acceptVal() + QTableWidget.focusInEvent(self.TBMatrice,event) + + + def itemChanged(self): + monItem=self.TBMatrice.currentItem() + if monItem==None : return + texte=monItem.text() + if texte=="" : return + if self.monType.typElt == 'R' : + try : val=float(str(texte)); ok=True + except : ok=False + if ok == False : + self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red) + monItem.setText("") + return + if self.monType.valSup != None : + if val > self.monType.valSup : + self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) + monItem.setText("") + return + if self.monType.valMin != None : + if val < self.monType.valMin : + self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) + monItem.setText("") + return + self.editor.afficheInfos("") + if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) + if self.monType.typElt == 'TXM' : + if self.monType.typEltInto != None and texte not in self.monType.typEltInto : + self.editor.afficheInfos(tr("Entrer une valeur qui est ") + str(self.monType.typEltInto),Qt.red) + monItem.setText("") + return + + + def creeColonnes(self): + if self.monType.methodeCalculTaille != None : + try: + MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,)) + except : + QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) + return + else : + self.nbLigs=self.monType.nbLigs + self.nbCols=self.monType.nbCols + self.TBMatrice.setColumnCount(self.nbLigs) + self.TBMatrice.setRowCount(self.nbCols) + if self.monType.listeHeaders != None : + self.TBMatrice.setVerticalHeaderLabels(self.monType.listeHeaders[0]) + self.TBMatrice.setHorizontalHeaderLabels(self.monType.listeHeaders[1]) + else : + self.TBMatrice.verticalHeader().hide() + self.TBMatrice.horizontalHeader().hide() + + + def initialValeur(self): + liste=self.node.item.getValeur() + if liste == None : return + dejaAffiche=0 + if (len(liste)) != self.nbLigs : + QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) + for i in range(self.nbLigs): + inter=liste[i] + if (len(inter)) != self.nbCols : + QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) + raise EficasException('dimension') + for j in range(self.nbCols): + self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i][j]))) + + def acceptVal(self): + liste=[] + for i in range(self.nbLigs): + listeCol=[] + for j in range(self.nbCols): + monItem=self.TBMatrice.item(i,j) + if monItem : texte=monItem.text() + else : texte = '' + if self.monType.typElt == 'R' : + try : val=float(str(texte)) + except : val=None + val=texte + listeCol.append(val) + liste.append(listeCol) + self.node.item.setValeur(liste) class MonWidgetMatriceOT (MonWidgetMatrice): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): monWidgetMatrice.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def connecterSignaux(self) : - self.TBMatrice.itemChanged.connect(self.itemChanged) - self.PBrefresh.clicked.connect( self.afficheEntete) - - - def afficheEntete(self): - self.objSimp.changeEnteteMatrice() - self.TBMatrice.clear() - if self.node.item.getValeur()== None: self.initialSsValeur() - else : - try : self.initialValeur() - except : self.initialSsValeur() - self.node.item.object.state='changed' - self.node.item.object.parent.state='changed' - self.setValide() - self.parentQt.setValide() - self.node.item.jdc.isValid() - - - def itemChanged(self): - monItem=self.TBMatrice.currentItem() - if monItem==None : return - texte=monItem.text() - if texte=="" : return - try : - val=float(str(texte)) - ok=True - except : - ok=False - if ok == False : - self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red) - monItem.setText("") - return - if self.monType.valSup != None : - if val > self.monType.valSup : - self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) + def connecterSignaux(self) : + self.TBMatrice.itemChanged.connect(self.itemChanged) + self.PBrefresh.clicked.connect( self.afficheEntete) + + + def afficheEntete(self): + self.objSimp.changeEnteteMatrice() + self.TBMatrice.clear() + if self.node.item.getValeur()== None: self.initialSsValeur() + else : + try : self.initialValeur() + except : self.initialSsValeur() + self.node.item.object.state='changed' + self.node.item.object.parent.state='changed' + self.setValide() + self.parentQt.setValide() + self.node.item.jdc.isValid() + + + def itemChanged(self): + monItem=self.TBMatrice.currentItem() + if monItem==None : return + texte=monItem.text() + if texte=="" : return + try : + val=float(str(texte)) + ok=True + except : + ok=False + if ok == False : + self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red) monItem.setText("") return - if self.monType.valMin != None : - if val < self.monType.valMin : - self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) - monItem.setText("") + if self.monType.valSup != None : + if val > self.monType.valSup : + self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) + monItem.setText("") + return + if self.monType.valMin != None : + if val < self.monType.valMin : + self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) + monItem.setText("") + return + self.editor.afficheInfos("") + if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) + self.acceptVal() + + + + def creeColonnes(self): + if self.monType.methodeCalculTaille != None : + try: + MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,)) + except : + QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) + return + else : + self.nbLigs=self.monType.nbLigs + self.nbCols=self.monType.nbCols + + + def nbDeVariables(self): + # uniquement pour OT + jdc=self.node.item.object.jdc + etape=self.node.item.object.etape + self.listeVariables=jdc.getVariables(etape) + if self.listeVariables == [] : + QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue")) return - self.editor.afficheInfos("") - if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) - self.acceptVal() - - - - def creeColonnes(self): - if self.monType.methodeCalculTaille != None : - try: - MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,)) - except : - QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) - return - else : - self.nbLigs=self.monType.nbLigs - self.nbCols=self.monType.nbCols - - - def nbDeVariables(self): - # uniquement pour OT - jdc=self.node.item.object.jdc - etape=self.node.item.object.etape - self.listeVariables=jdc.getVariables(etape) - if self.listeVariables == [] : - QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue")) - return - self.TBMatrice.setColumnCount(len(self.listeVariables)) - self.TBMatrice.setRowCount(len(self.listeVariables)) - self.nbLigs=len(self.listeVariables) - self.nbCols=len(self.listeVariables) - - - def initialSsValeur(self): - # uniquement pour OT - self.listeVariables=[] - for row in range(self.nbLigs): - for column in range(self.nbCols): - if row == column : - initialFloat=1 - else : - initialFloat=0 - self.TBMatrice.setItem(row,column,QTableWidgetItem(str(initialFloat))) - header =[] - for var in liste[0]: header .append(str(var)) - self.TBMatrice.setVerticalHeaderLabels(header) - self.TBMatrice.setHorizontalHeaderLabels(header) - - def initialValeur(self): - # uniquement pour OT - liste=self.node.item.getValeur() - dejaAffiche=0 - if (len(liste)) != self.nbLigs +1 : - QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) - raise EficasException('dimension') - for i in range(self.nbLigs): - inter=liste[i+1] - if (len(inter)) != self.nbCols : - QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) - raise EficasException('dimension') - for j in range(self.nbCols): - self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i][j]))) - header =[] - for var in liste[0]: header .append(str(var)) - self.TBMatrice.setVerticalHeaderLabels(header) - self.TBMatrice.setHorizontalHeaderLabels(header) - + self.TBMatrice.setColumnCount(len(self.listeVariables)) + self.TBMatrice.setRowCount(len(self.listeVariables)) + self.nbLigs=len(self.listeVariables) + self.nbCols=len(self.listeVariables) + + + def initialSsValeur(self): + # uniquement pour OT + self.listeVariables=[] + for row in range(self.nbLigs): + for column in range(self.nbCols): + if row == column : + initialFloat=1 + else : + initialFloat=0 + self.TBMatrice.setItem(row,column,QTableWidgetItem(str(initialFloat))) + header =[] + for var in liste[0]: header .append(str(var)) + self.TBMatrice.setVerticalHeaderLabels(header) + self.TBMatrice.setHorizontalHeaderLabels(header) + + def initialValeur(self): + # uniquement pour OT + liste=self.node.item.getValeur() + dejaAffiche=0 + if (len(liste)) != self.nbLigs +1 : + QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) + raise EficasException('dimension') + for i in range(self.nbLigs): + inter=liste[i+1] + if (len(inter)) != self.nbCols : + QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) + raise EficasException('dimension') + for j in range(self.nbCols): + self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i][j]))) + header =[] + for var in liste[0]: header .append(str(var)) + self.TBMatrice.setVerticalHeaderLabels(header) + self.TBMatrice.setHorizontalHeaderLabels(header) diff --git a/InterfaceQT4/monWidgetNiveauFact.py b/InterfaceQT4/monWidgetNiveauFact.py index b3a7f27f..27cc76b3 100644 --- a/InterfaceQT4/monWidgetNiveauFact.py +++ b/InterfaceQT4/monWidgetNiveauFact.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types @@ -35,147 +35,145 @@ from PyQt5.QtGui import QIcon from Extensions.i18n import tr -import Accas +import Accas import os - + # Import des panels class MonWidgetNiveauFact(Ui_WidgetNiveauFact,Groupe): - """ - """ - def __init__(self,node,editor,definition,obj): - self.listeAffichageWidget=[] - self.listeBoutonAChanger=[] - Groupe.__init__(self,node,editor,None,definition,obj,1,self) - from InterfaceQT4 import composimp - if isinstance(self.node ,composimp.Node): - widget=self.node.getPanelGroupe(self,self.maCommande) - self.listeBoutonAChanger.append(widget.RBValide) - self.afficheOptionnel() - self.inhibe=False - self.labelDoc.setText(self.node.item.getFr()) - self.labelNomCommande.setText(self.node.item.getLabelText()[0]) - - def reaffiche(self,nodeAVoir=None): - self.node.setDeplieChildren() - self.node.afficheCeNiveau() - self.editor.fenetreCentraleAffichee.labelDoc.setText(self.node.item.getFr()) - self.editor.fenetreCentraleAffichee.labelNomCommande.setText(self.node.item.getLabelText()[0]) - - def getPanel(self): - # necessaire pour handleOnItem de browser.py - # non appele - pass - - def donnePremier(self): - #print "dans donnePremier" - QApplication.processEvents() - if self.listeAffichageWidget != [] : - self.listeAffichageWidget[0].setFocus(7) - QApplication.processEvents() - #print self.focusWidget() - - - def focusNextPrevChild(self, next): - # on s assure que ce n est pas un chgt de fenetre - #print "je passe dans focusNextPrevChild" - if self.editor.fenetreCentraleAffichee != self : return True - f=self.focusWidget() - - if f not in self.listeAffichageWidget : - i=0 - while not hasattr (f,'AAfficher') : - if f==None :i=-1; break - f=f.parentWidget() - if hasattr(f,'AAfficher') : f=f.AAfficher - if i != -1 : i=self.listeAffichageWidget.index(f) - else :i=self.listeAffichageWidget.index(f) - if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: - try : - self.listeAffichageWidget[1].setFocus(7) - w=self.focusWidget() - self.inhibe=1 - w.focusPreviousChild() - self.inhibe=0 - return True - except : pass - - if i==0 and next==False and not self.inhibe: - if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'): - self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1]) - self.listeAffichageWidget[-2].setFocus(7) - self.inhibe=1 - w=self.focusWidget() - w.focusNextChild() - self.inhibe=0 - return True - - if i==0 and next==True and not self.inhibe: - self.listeAffichageWidget[0].setFocus(7) - self.inhibe=1 - w=self.focusWidget() - w.focusNextChild() - self.inhibe=0 - return True - - if i>0 and next==False and not self.inhibe: - if isinstance(self.listeAffichageWidget[i-1],QRadioButton): - self.listeAffichageWidget[i-1].setFocus(7) - return True - return QWidget.focusNextPrevChild(self, next) - - def etablitOrdre(self): - # si on boucle on perd l'ordre - i=0 - while(i +1 < len(self.listeAffichageWidget)): - self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) - i=i+1 - - def afficheSuivant(self,f): - #print ('ds afficheSuivant') - try : - i=self.listeAffichageWidget.index(f) - next=i+1 - except : - next=1 - if (next==len(self.listeAffichageWidget) ): next =0 - try : - self.listeAffichageWidget[next].setFocus(7) - except : + """ + """ + def __init__(self,node,editor,definition,obj): + self.listeAffichageWidget=[] + self.listeBoutonAChanger=[] + Groupe.__init__(self,node,editor,None,definition,obj,1,self) + from InterfaceQT4 import composimp + if isinstance(self.node ,composimp.Node): + widget=self.node.getPanelGroupe(self,self.maCommande) + self.listeBoutonAChanger.append(widget.RBValide) + self.afficheOptionnel() + self.inhibe=False + self.labelDoc.setText(self.node.item.getFr()) + self.labelNomCommande.setText(self.node.item.getLabelText()[0]) + + def reaffiche(self,nodeAVoir=None): + self.node.setDeplieChildren() + self.node.afficheCeNiveau() + self.editor.fenetreCentraleAffichee.labelDoc.setText(self.node.item.getFr()) + self.editor.fenetreCentraleAffichee.labelNomCommande.setText(self.node.item.getLabelText()[0]) + + def getPanel(self): + # necessaire pour handleOnItem de browser.py + # non appele pass - - def afficheOptionnel(self): - # N a pas de parentQt. doit donc etre redefini - #print ('ds afficheOptionnel') - if self.editor.maConfiguration.closeOptionnel : return - if self.editor.widgetOptionnel!= None : - self.monOptionnel=self.editor.widgetOptionnel - else : - self.editor.inhibeSplitter=1 - self.monOptionnel=MonWidgetOptionnel(self.editor) - self.editor.widgetOptionnel=self.monOptionnel - self.editor.splitter.addWidget(self.monOptionnel) - self.editor.ajoutOptionnel() - self.editor.inhibeSplitter=0 - self.monOptionnel.vireTous() - - - liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() - self.monOptionnel.parentCommande=self - self.monOptionnel.titre(self.obj.nom) - self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) - - def setValide(self): - Groupe.setValide(self) - for bouton in self.listeBoutonAChanger: - couleur=self.node.item.getIconName() - monIcone = QIcon(self.repIcon+"/" + couleur + ".png") - bouton.setIcon(monIcone) + def donnePremier(self): + #print "dans donnePremier" + QApplication.processEvents() + if self.listeAffichageWidget != [] : + self.listeAffichageWidget[0].setFocus(7) + QApplication.processEvents() + #print self.focusWidget() + + + def focusNextPrevChild(self, next): + # on s assure que ce n est pas un chgt de fenetre + #print "je passe dans focusNextPrevChild" + if self.editor.fenetreCentraleAffichee != self : return True + f=self.focusWidget() + + if f not in self.listeAffichageWidget : + i=0 + while not hasattr (f,'AAfficher') : + if f==None :i=-1; break + f=f.parentWidget() + if hasattr(f,'AAfficher') : f=f.AAfficher + if i != -1 : i=self.listeAffichageWidget.index(f) + else :i=self.listeAffichageWidget.index(f) + if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: + try : + self.listeAffichageWidget[1].setFocus(7) + w=self.focusWidget() + self.inhibe=1 + w.focusPreviousChild() + self.inhibe=0 + return True + except : pass + + if i==0 and next==False and not self.inhibe: + if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'): + self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1]) + self.listeAffichageWidget[-2].setFocus(7) + self.inhibe=1 + w=self.focusWidget() + w.focusNextChild() + self.inhibe=0 + return True + + if i==0 and next==True and not self.inhibe: + self.listeAffichageWidget[0].setFocus(7) + self.inhibe=1 + w=self.focusWidget() + w.focusNextChild() + self.inhibe=0 + return True + + if i>0 and next==False and not self.inhibe: + if isinstance(self.listeAffichageWidget[i-1],QRadioButton): + self.listeAffichageWidget[i-1].setFocus(7) + return True + return QWidget.focusNextPrevChild(self, next) + + def etablitOrdre(self): + # si on boucle on perd l'ordre + i=0 + while(i +1 < len(self.listeAffichageWidget)): + self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) + i=i+1 + + def afficheSuivant(self,f): + #print ('ds afficheSuivant') + try : + i=self.listeAffichageWidget.index(f) + next=i+1 + except : + next=1 + if (next==len(self.listeAffichageWidget) ): next =0 + try : + self.listeAffichageWidget[next].setFocus(7) + except : + pass + + + def afficheOptionnel(self): + # N a pas de parentQt. doit donc etre redefini + #print ('ds afficheOptionnel') + if self.editor.maConfiguration.closeOptionnel : return + if self.editor.widgetOptionnel!= None : + self.monOptionnel=self.editor.widgetOptionnel + else : + self.editor.inhibeSplitter=1 + self.monOptionnel=MonWidgetOptionnel(self.editor) + self.editor.widgetOptionnel=self.monOptionnel + self.editor.splitter.addWidget(self.monOptionnel) + self.editor.ajoutOptionnel() + self.editor.inhibeSplitter=0 + self.monOptionnel.vireTous() + + + liste,liste_rouge=self.ajouteMCOptionnelDesBlocs() + self.monOptionnel.parentCommande=self + self.monOptionnel.titre(self.obj.nom) + self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self) + + def setValide(self): + Groupe.setValide(self) + for bouton in self.listeBoutonAChanger: + couleur=self.node.item.getIconName() + monIcone = QIcon(self.repIcon+"/" + couleur + ".png") + bouton.setIcon(monIcone) class MonWidgetNiveauFactTableau(MonWidgetNiveauFact): - def __init__(self,node,editor,definition,obj): - MonWidgetNiveauFact.__init__(self,node,editor,definition,obj) - - + def __init__(self,node,editor,definition,obj): + MonWidgetNiveauFact.__init__(self,node,editor,definition,obj) diff --git a/InterfaceQT4/monWidgetOptionnel.py b/InterfaceQT4/monWidgetOptionnel.py index c698206a..c3088b72 100644 --- a/InterfaceQT4/monWidgetOptionnel.py +++ b/InterfaceQT4/monWidgetOptionnel.py @@ -27,67 +27,67 @@ from Extensions.i18n import tr from desWidgetOptionnel import Ui_WidgetOptionnel from .monGroupeOptionnel import MonGroupeOptionnel - + # Import des panels class MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel): - def __init__(self,parentQt): - #print ("dans init de monWidgetOptionnel ", parentQt ) - QWidget.__init__(self,None) - self.setupUi(self) - self.dicoMCWidgetOptionnel={} - self.parentQt=parentQt + def __init__(self,parentQt): + #print ("dans init de monWidgetOptionnel ", parentQt ) + QWidget.__init__(self,None) + self.setupUi(self) + self.dicoMCWidgetOptionnel={} + self.parentQt=parentQt + + def afficheOptionnel(self,liste,liste_rouge,MC): + #print ('afficheOptionnel MonWidgetOptionnel',self, liste,MC.node.item.nom) + self.vireLesAutres(MC) + + if MC.node.item.nom in self.dicoMCWidgetOptionnel : + #print (MC.node.item.nom) + self.dicoMCWidgetOptionnel[MC.node.item.nom].close() + self.dicoMCWidgetOptionnel[MC.node.item.nom].setParent(None) + self.dicoMCWidgetOptionnel[MC.node.item.nom].deleteLater() + del self.dicoMCWidgetOptionnel[MC.node.item.nom] + if liste==[] : return + groupe = MonGroupeOptionnel(liste,liste_rouge,self,MC) + self.groupesOptionnelsLayout.insertWidget(0,groupe) + self.dicoMCWidgetOptionnel[MC.node.item.nom]=groupe + return groupe - def afficheOptionnel(self,liste,liste_rouge,MC): - #print ('afficheOptionnel MonWidgetOptionnel',self, liste,MC.node.item.nom) - self.vireLesAutres(MC) - - if MC.node.item.nom in self.dicoMCWidgetOptionnel : - #print (MC.node.item.nom) - self.dicoMCWidgetOptionnel[MC.node.item.nom].close() - self.dicoMCWidgetOptionnel[MC.node.item.nom].setParent(None) - self.dicoMCWidgetOptionnel[MC.node.item.nom].deleteLater() - del self.dicoMCWidgetOptionnel[MC.node.item.nom] - if liste==[] : return - groupe = MonGroupeOptionnel(liste,liste_rouge,self,MC) - self.groupesOptionnelsLayout.insertWidget(0,groupe) - self.dicoMCWidgetOptionnel[MC.node.item.nom]=groupe - return groupe + def vireLesAutres(self,MC): + #print( "je passe dans vireLesAutres") + genea =MC.obj.getGenealogie() + #print (genea) + for k in list(self.dicoMCWidgetOptionnel.keys()): + #print (k) + #if k not in genea : print ( k) + if k not in genea : + self.dicoMCWidgetOptionnel[k].close() + del self.dicoMCWidgetOptionnel[k] + #print( "fin vireLesAutres") - def vireLesAutres(self,MC): - #print( "je passe dans vireLesAutres") - genea =MC.obj.getGenealogie() - #print (genea) - for k in list(self.dicoMCWidgetOptionnel.keys()): - #print (k) - #if k not in genea : print ( k) - if k not in genea : - self.dicoMCWidgetOptionnel[k].close() - del self.dicoMCWidgetOptionnel[k] - #print( "fin vireLesAutres") - - def vireTous(self): - for k in list(self.dicoMCWidgetOptionnel.keys()): - self.dicoMCWidgetOptionnel[k].close() - del self.dicoMCWidgetOptionnel[k] + def vireTous(self): + for k in list(self.dicoMCWidgetOptionnel.keys()): + self.dicoMCWidgetOptionnel[k].close() + del self.dicoMCWidgetOptionnel[k] - def afficheOptionnelVide(self): - self.GeneaLabel.setText("") - for k in list(self.dicoMCWidgetOptionnel.keys()): + def afficheOptionnelVide(self): + self.GeneaLabel.setText("") + for k in list(self.dicoMCWidgetOptionnel.keys()): self.dicoMCWidgetOptionnel[k].close() del self.dicoMCWidgetOptionnel[k] - def titre(self,MC): - if self.parentCommande.node.editor.maConfiguration.closeFrameRechercheCommande==True : - self.frameLabelCommande.close() - return - labeltext,fonte,couleur = self.parentCommande.node.item.getLabelText() - l=tr(labeltext) - li=[] - while len(l) > 25: - li.append(l[0:24]) - l=l[24:] - li.append(l) - texte="" - for l in li : texte+=l+"\n" - texte=texte[0:-2] - self.GeneaLabel.setText(tr("Options pour \n") +texte) + def titre(self,MC): + if self.parentCommande.node.editor.maConfiguration.closeFrameRechercheCommande==True : + self.frameLabelCommande.close() + return + labeltext,fonte,couleur = self.parentCommande.node.item.getLabelText() + l=tr(labeltext) + li=[] + while len(l) > 25: + li.append(l[0:24]) + l=l[24:] + li.append(l) + texte="" + for l in li : texte+=l+"\n" + texte=texte[0:-2] + self.GeneaLabel.setText(tr("Options pour \n") +texte) diff --git a/InterfaceQT4/monWidgetParam.py b/InterfaceQT4/monWidgetParam.py index cb799fe5..d3bcac80 100644 --- a/InterfaceQT4/monWidgetParam.py +++ b/InterfaceQT4/monWidgetParam.py @@ -21,7 +21,7 @@ from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass from desWidgetParam import Ui_WidgetParam @@ -31,88 +31,88 @@ from PyQt5.QtGui import QIcon from Extensions.i18n import tr from Extensions.eficas_exception import EficasException -import Accas +import Accas import os, re import types pattern_name = re.compile(r'^[^\d\W]\w*\Z') - + # Import des panels class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel): - """ - """ - def __init__(self,node,editor,commentaire): - QWidget.__init__(self,None) - self.node=node - self.node.fenetre=self - self.setupUi(self) - self.editor=editor - self.appliEficas=self.editor.appliEficas - self.repIcon=self.appliEficas.repIcon - - self.setIconePoubelle() - if not(self.node.item.object.isValid()) : - icon=QIcon(self.repIcon+"/ast-red-ball.png") - self.RBValide.setIcon(icon) - - self.remplit() - #if self.editor.code in ['MAP','CARMELCND','CF'] : self.bCatalogue.close() - if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() - else : self.bCatalogue.clicked.connect(self.afficheCatalogue) - - self.lineEditVal.returnPressed.connect(self.LEvaleurPressed) - self.lineEditNom.returnPressed.connect(self.LENomPressed) - self.bAvant.clicked.connect(self.afficheAvant) - self.bApres.clicked.connect(self.afficheApres) - self.bVerifie.clicked.connect(self.verifiePressed) - - self.editor.fermeOptionnel() - - - def afficheCatalogue(self): - self.node.tree.racine.affichePanneau() - if self.node : self.node.select() - else : self.node.tree.racine.select() - - def remplit(self): - nom=self.node.item.getNom() - self.lineEditNom.setText(nom) - - valeur=self.node.item.getValeur() - if valeur == None : - self.lineEditVal.clear() - elif type(valeur) == list : - texte="[" - for l in valeur : - texte=texte+str(l) +"," - texte=texte[0:-1]+"]" - self.lineEditVal.setText(texte) - else : - self.lineEditVal.setText(str(valeur)) - - - def donnePremier(self): - self.lineEditVal.setFocus(7) - - def LEvaleurPressed(self): - if self.verifiePressed() == False : - QMessageBox.warning( self,tr( "Modification Impossible"),tr( "le parametre n'est pas valide")) - nom=str(self.lineEditNom.text()) - val=str(self.lineEditVal.text()) - self.node.item.setNom(nom) - self.node.item.setValeur(val) - self.node.updateTexte() - - def LENomPressed(self): - self.LEvaleurPressed() - - def verifiePressed(self): + """ + """ + def __init__(self,node,editor,commentaire): + QWidget.__init__(self,None) + self.node=node + self.node.fenetre=self + self.setupUi(self) + self.editor=editor + self.appliEficas=self.editor.appliEficas + self.repIcon=self.appliEficas.repIcon + + self.setIconePoubelle() + if not(self.node.item.object.isValid()) : + icon=QIcon(self.repIcon+"/ast-red-ball.png") + self.RBValide.setIcon(icon) + + self.remplit() + #if self.editor.code in ['MAP','CARMELCND','CF'] : self.bCatalogue.close() + if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close() + else : self.bCatalogue.clicked.connect(self.afficheCatalogue) + + self.lineEditVal.returnPressed.connect(self.LEvaleurPressed) + self.lineEditNom.returnPressed.connect(self.LENomPressed) + self.bAvant.clicked.connect(self.afficheAvant) + self.bApres.clicked.connect(self.afficheApres) + self.bVerifie.clicked.connect(self.verifiePressed) + + self.editor.fermeOptionnel() + + + def afficheCatalogue(self): + self.node.tree.racine.affichePanneau() + if self.node : self.node.select() + else : self.node.tree.racine.select() + + def remplit(self): + nom=self.node.item.getNom() + self.lineEditNom.setText(nom) + + valeur=self.node.item.getValeur() + if valeur == None : + self.lineEditVal.clear() + elif type(valeur) == list : + texte="[" + for l in valeur : + texte=texte+str(l) +"," + texte=texte[0:-1]+"]" + self.lineEditVal.setText(texte) + else : + self.lineEditVal.setText(str(valeur)) + + + def donnePremier(self): + self.lineEditVal.setFocus(7) + + def LEvaleurPressed(self): + if self.verifiePressed() == False : + QMessageBox.warning( self,tr( "Modification Impossible"),tr( "le parametre n'est pas valide")) + nom=str(self.lineEditNom.text()) + val=str(self.lineEditVal.text()) + self.node.item.setNom(nom) + self.node.item.setValeur(val) + self.node.updateTexte() + + def LENomPressed(self): + self.LEvaleurPressed() + + def verifiePressed(self): nomString=str(self.lineEditNom.text()) - if not pattern_name.match(nomString) : - self.LECommentaire.setText(nomString + tr(" n est pas un identifiant correct")) - return False + if not pattern_name.match(nomString) : + self.LECommentaire.setText(nomString + tr(" n est pas un identifiant correct")) + return False valString=str(self.lineEditVal.text()) @@ -120,29 +120,27 @@ class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel): exec("from math import *", contexte) jdc=self.node.item.getJdc() for p in jdc.params : - try: - tp=p.nom+'='+str(repr(p.valeur)) - exec(tp, contexte) - except exc : - pass + try: + tp=p.nom+'='+str(repr(p.valeur)) + exec(tp, contexte) + except exc : + pass monTexte=nomString+"="+valString try : - exec(monTexte, contexte) + exec(monTexte, contexte) except (ValueError,TypeError, NameError,RuntimeError,ZeroDivisionError) as exc: - self.LECommentaire.setText(tr("Valeur incorrecte: ")+str(exc)) - return False + self.LECommentaire.setText(tr("Valeur incorrecte: ")+str(exc)) + return False except : - self.LECommentaire.setText(tr("Valeur incorrecte ")) - return False + self.LECommentaire.setText(tr("Valeur incorrecte ")) + return False self.LECommentaire.setText(tr("Valeur correcte ")) return True - def afficheApres(self): - self.node.selectApres() - - def afficheAvant(self): - self.node.selectAvant() - + def afficheApres(self): + self.node.selectApres() + def afficheAvant(self): + self.node.selectAvant() diff --git a/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py b/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py index f3157329..8992990c 100644 --- a/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py +++ b/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py @@ -20,14 +20,14 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os,sys # Modules Eficas from Extensions.i18n import tr -from .monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne +from .monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne from .politiquesValidation import PolitiquePlusieurs from six.moves import range @@ -37,31 +37,29 @@ from PyQt5.QtWidgets import QScrollBar class MonWidgetPlusieursASSDIntoOrdonne (MonWidgetPlusieursIntoOrdonne): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.numLineEditEnCours=0 MonWidgetPlusieursIntoOrdonne.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - - - def prepareListeResultat(self): - for i in self.listeLE: i.close() - self.listeLE=[] - self.vScrollBar = self.scrollArea.verticalScrollBar() - self.listeAAfficher = self.node.item.getSdAvantDuBonType() - if len(self.listeAAfficher) == 0 : - self.ajoutLE(0) - return - - - if len(self.listeAAfficher)*30 > 400 : self.resize(self.width(),200) - else : self.resize(self.width(),len(self.listeAAfficher)*30) - self.politique=PolitiquePlusieurs(self.node,self.editor) - for i in range(1,len(self.listeAAfficher)+1): self.ajoutLE(i) - for i in range(len(self.listeAAfficher)): - nomLE="lineEditVal"+str(i+1) - courant=getattr(self,nomLE) - courant.setText(str(self.listeAAfficher[i])) - self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum) - - + + def prepareListeResultat(self): + for i in self.listeLE: i.close() + self.listeLE=[] + self.vScrollBar = self.scrollArea.verticalScrollBar() + self.listeAAfficher = self.node.item.getSdAvantDuBonType() + + if len(self.listeAAfficher) == 0 : + self.ajoutLE(0) + return + + + if len(self.listeAAfficher)*30 > 400 : self.resize(self.width(),200) + else : self.resize(self.width(),len(self.listeAAfficher)*30) + self.politique=PolitiquePlusieurs(self.node,self.editor) + for i in range(1,len(self.listeAAfficher)+1): self.ajoutLE(i) + for i in range(len(self.listeAAfficher)): + nomLE="lineEditVal"+str(i+1) + courant=getattr(self,nomLE) + courant.setText(str(self.listeAAfficher[i])) + self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum) diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index be44a11a..eb3081bd 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -20,14 +20,14 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import types,os,sys from six.moves import range -from PyQt5.QtGui import QIcon +from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QApplication, QMessageBox, QScrollArea from PyQt5.QtCore import QTimer, QSize, Qt @@ -35,7 +35,7 @@ from PyQt5.QtCore import QTimer, QSize, Qt from Extensions.i18n import tr from InterfaceQT4.feuille import Feuille -from desWidgetPlusieursBase import Ui_WidgetPlusieursBase +from desWidgetPlusieursBase import Ui_WidgetPlusieursBase from InterfaceQT4.politiquesValidation import PolitiquePlusieurs from InterfaceQT4.qtSaisie import SaisieValeur from InterfaceQT4.gereListe import GereListe @@ -47,268 +47,268 @@ hauteurMax=253 class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - #print "MonWidgetPlusieursBase", nom - self.inFocusOutEvent=False - self.nomLine="lineEditVal" - self.inInit=True - self.indexDernierLabel=0 - self.numLineEditEnCours=0 - self.listeAffichageWidget=[] - self.dictLE={} - Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - GereListe.__init__(self) - self.gereIconePlier() - self.BSelectFichier.clicked.connect(self.selectInFile) - - 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)) - icon=QIcon(self.repIcon+"/MoinsBleu.png") - self.RBMoins.setIcon(icon) - icon=QIcon(self.repIcon+"/PlusBleu.png") - self.RBPlus.setIcon(icon) - icon=QIcon(self.repIcon+"/verre-loupe-icone-6087-64.png") - self.RBVoisListe.setIcon(icon) - - - self.listeValeursCourantes=self.node.item.getListeValeurs() - if self.monSimpDef.max != "**" and self.monSimpDef.max < 7: - hauteurMax=dicoLongueur[self.monSimpDef.max] - else : - hauteurMax=220 - # if self.monSimpDef.max == self.monSimpDef.min : self.setMaximumHeight(hauteur) - self.resize(self.width(),hauteurMax) - self.setMinimumHeight(hauteurMax) - self.finCommentaireListe() - self.parentQt.commandesLayout.insertWidget(-1,self) - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) - self.AAfficher=self.lineEditVal1 - self.inInit=False - # PNPN a completer __ si tuple le type des tuples sinon le tuple - self.monCommentaireLabel.setText(self.finCommentaireListe()) - self.scrollArea.leaveEvent = self.leaveEventScrollArea - - - def setValeurs(self): - 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 - 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) - self.listeValeursCourantes=self.node.item.getListeValeurs() - index=1 - for valeur in self.listeValeursCourantes : - val=self.politique.getValeurTexte(valeur) - nomLineEdit="lineEditVal"+str(index) - if hasattr(self,nomLineEdit) : - courant=getattr(self,nomLineEdit) - if 'R' in self.objSimp.definition.type and str(val) != repr(val) : courant.setText(repr(val)) - else : courant.setText(str(val)) - self.dictLE[index]=val - else : - self.ajoutLineEdit(val) - index=index+1 - # 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) - - - def ajoutLineEdit(self,valeur=None,): - #print ('ajoutLineEdit plusieursBase') - #print ('self.indexDernierLabel', self.indexDernierLabel) - self.indexDernierLabel=self.indexDernierLabel+1 - nomLineEdit="lineEditVal"+str(self.indexDernierLabel) - if hasattr(self,nomLineEdit) : - self.indexDernierLabel=self.indexDernierLabel-1 - return - nouveauLE = LECustom(self.scrollArea,self,self.indexDernierLabel) - self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) - nouveauLE.setText("") - if self.indexDernierLabel % 2 == 1 : nouveauLE.setStyleSheet("background:rgb(210,210,210)") - else : nouveauLE.setStyleSheet("background:rgb(235,235,235)") - nouveauLE.setFrame(False) - nouveauLE.returnPressed.connect(self.changeValeur) - - setattr(self,nomLineEdit,nouveauLE) - self.listeAffichageWidget.append(nouveauLE) - self.etablitOrdre() - if valeur != None : - nouveauLE.setText(str(valeur)) - self.dictLE[self.indexDernierLabel] = valeur - else : - self.dictLE[self.indexDernierLabel] = None - # deux lignes pour que le ensureVisible fonctionne - self.estVisible=nouveauLE - if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) - - 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 rendVisibleLigne(self): - QApplication.processEvents() - self.estVisible.setFocus() - self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) - - - def finCommentaire(self): - return self.finCommentaireListe() - - def ajout1Valeur(self,valeur=None): - #print ('ajout1Valeur plusieursBase') - if valeur == None : return - liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur)) - if validite == 0 : return - if liste ==[] : return - listeVal=[] - for valeur in self.listeValeursCourantes : listeVal.append(valeur) - validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal) - if (comm2 != "" and comm != None) : return comm2 - if validite : - self.listeValeursCourantes=self.listeValeursCourantes+listeRetour - if len(self.listeValeursCourantes) > self.monSimpDef.min : - self.node.item.setValeur(self.listeValeursCourantes) - self.reaffiche() - return None - else : - return(comm2+" "+comm) - - def reaffiche(self): - # A priori, on ne fait rien - pass - - - def ajoutNValeur(self,liste): - #print ('ajoutNValeur plusieursBase') - #---------------------------- - # 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.afficheInfos(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) + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + #print "MonWidgetPlusieursBase", nom + self.inFocusOutEvent=False + self.nomLine="lineEditVal" + self.inInit=True + self.indexDernierLabel=0 + self.numLineEditEnCours=0 + self.listeAffichageWidget=[] + self.dictLE={} + Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + GereListe.__init__(self) + self.gereIconePlier() + self.BSelectFichier.clicked.connect(self.selectInFile) + + 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)) + icon=QIcon(self.repIcon+"/MoinsBleu.png") + self.RBMoins.setIcon(icon) + icon=QIcon(self.repIcon+"/PlusBleu.png") + self.RBPlus.setIcon(icon) + icon=QIcon(self.repIcon+"/verre-loupe-icone-6087-64.png") + self.RBVoisListe.setIcon(icon) + + + self.listeValeursCourantes=self.node.item.getListeValeurs() + if self.monSimpDef.max != "**" and self.monSimpDef.max < 7: + hauteurMax=dicoLongueur[self.monSimpDef.max] + else : + hauteurMax=220 + # if self.monSimpDef.max == self.monSimpDef.min : self.setMaximumHeight(hauteur) + self.resize(self.width(),hauteurMax) + self.setMinimumHeight(hauteurMax) + self.finCommentaireListe() + self.parentQt.commandesLayout.insertWidget(-1,self) + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + self.AAfficher=self.lineEditVal1 + self.inInit=False + # PNPN a completer __ si tuple le type des tuples sinon le tuple + self.monCommentaireLabel.setText(self.finCommentaireListe()) + self.scrollArea.leaveEvent = self.leaveEventScrollArea + + + def setValeurs(self): + 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 + 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) + self.listeValeursCourantes=self.node.item.getListeValeurs() + index=1 + for valeur in self.listeValeursCourantes : + val=self.politique.getValeurTexte(valeur) + nomLineEdit="lineEditVal"+str(index) + if hasattr(self,nomLineEdit) : + courant=getattr(self,nomLineEdit) + if 'R' in self.objSimp.definition.type and str(val) != repr(val) : courant.setText(repr(val)) + else : courant.setText(str(val)) + self.dictLE[index]=val + else : + self.ajoutLineEdit(val) + index=index+1 + # 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) + + + def ajoutLineEdit(self,valeur=None,): + #print ('ajoutLineEdit plusieursBase') + #print ('self.indexDernierLabel', self.indexDernierLabel) + self.indexDernierLabel=self.indexDernierLabel+1 + nomLineEdit="lineEditVal"+str(self.indexDernierLabel) + if hasattr(self,nomLineEdit) : + self.indexDernierLabel=self.indexDernierLabel-1 + return + nouveauLE = LECustom(self.scrollArea,self,self.indexDernierLabel) + self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) + nouveauLE.setText("") + if self.indexDernierLabel % 2 == 1 : nouveauLE.setStyleSheet("background:rgb(210,210,210)") + else : nouveauLE.setStyleSheet("background:rgb(235,235,235)") + nouveauLE.setFrame(False) + nouveauLE.returnPressed.connect(self.changeValeur) + + setattr(self,nomLineEdit,nouveauLE) + self.listeAffichageWidget.append(nouveauLE) + self.etablitOrdre() + if valeur != None : + nouveauLE.setText(str(valeur)) + self.dictLE[self.indexDernierLabel] = valeur + else : + self.dictLE[self.indexDernierLabel] = None + # deux lignes pour que le ensureVisible fonctionne + self.estVisible=nouveauLE + if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) + + 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 rendVisibleLigne(self): + QApplication.processEvents() + self.estVisible.setFocus() + self.scrollArea.ensureWidgetVisible(self.estVisible,0,0) + + + def finCommentaire(self): + return self.finCommentaireListe() + + def ajout1Valeur(self,valeur=None): + #print ('ajout1Valeur plusieursBase') + if valeur == None : return + liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur)) + if validite == 0 : return + if liste ==[] : return + listeVal=[] + for valeur in self.listeValeursCourantes : listeVal.append(valeur) + validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal) + if (comm2 != "" and comm != None) : return comm2 + if validite : + self.listeValeursCourantes=self.listeValeursCourantes+listeRetour + if len(self.listeValeursCourantes) > self.monSimpDef.min : + self.node.item.setValeur(self.listeValeursCourantes) + self.reaffiche() + return None + else : + return(comm2+" "+comm) + + def reaffiche(self): + # A priori, on ne fait rien + pass + + + def ajoutNValeur(self,liste): + #print ('ajoutNValeur plusieursBase') + #---------------------------- + # 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.afficheInfos(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) + courant.setText(str(texte)) + else : + self.ajoutLineEdit(texte) + indexDernierRempli = indexDernierRempli + 1 + + + def changeValeur(self,changeDePlace=True,oblige=False): + #print ('achangeValeur plusieursBase') + donneFocus=None + derniereValeur=None + self.listeValeursCourantes = [] + fin=self.indexDernierLabel + for i in range (1, fin): + nomLineEdit="lineEditVal"+str(i) courant=getattr(self,nomLineEdit) - courant.setText(str(texte)) - else : - self.ajoutLineEdit(texte) - indexDernierRempli = indexDernierRempli + 1 - - - def changeValeur(self,changeDePlace=True,oblige=False): - #print ('achangeValeur plusieursBase') - donneFocus=None - derniereValeur=None - self.listeValeursCourantes = [] - fin=self.indexDernierLabel - for i in range (1, fin): - nomLineEdit="lineEditVal"+str(i) - courant=getattr(self,nomLineEdit) - valeur=courant.text() - lval=valeur.split(',') - if len (lval) > 1 : - msgBox=QMessageBox() - msgBox.setText("separator ',' ") - msgBox.setInformativeText("Do you want to enter " + str (lval) + "?") - msgBox.setStandardButtons( QMessageBox.Ok | QMessageBox.Cancel) - msgBox.setDefaultButton(QMessageBox.Ok) - ret = msgBox.exec_() - if ret != 1024 : - courant.setText("") - return - courant.setText(lval[0]) - self.ajoutNValeur(lval[1:]) - self.listeValeursCourantes = [] - - - for i in range (1, self.indexDernierLabel+1): - nomLineEdit="lineEditVal"+str(i) - courant=getattr(self,nomLineEdit) - valeur=courant.text() - if valeur != None and valeur != "" : - commentaire=self.ajout1Valeur(valeur) - if (commentaire != None ): - self.editor.afficheInfos(commentaire,Qt.red) - courant.setText("") - donneFocus=courant - self.reaffiche() - return - else : - self.editor.afficheInfos("") - elif donneFocus==None : donneFocus=courant - - nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel) - dernier=getattr(self,nomDernierLineEdit) - derniereValeur=dernier.text() - if changeDePlace: - if donneFocus != None : - donneFocus.setFocus() - self.scrollArea.ensureWidgetVisible(donneFocus) - elif self.indexDernierLabel < self.monSimpDef.max : - self.ajoutLineEdit() - if self.listeValeursCourantes == [] : return - min,max = self.node.item.getMinMax() - if len(self.listeValeursCourantes) < self.monSimpDef.min : - self.editor.afficheInfos(tr('nb min de valeurs : ')+str( self.monSimpDef.min)) - if len(self.listeValeursCourantes) < min and oblige==True: return - if len(self.listeValeursCourantes) > max : return - retour=self.node.item.setValeur(self.listeValeursCourantes) - if len(self.listeValeursCourantes) == self.monSimpDef.max : - self.editor.afficheInfos(tr('nb max de valeurs atteint')) - self.setValide() - self.reaffiche() - - def leaveEventScrollArea(self,event): - #print ('achangeValeur plusieursBase') - self.changeValeur(changeDePlace=False) - QScrollArea.leaveEvent(self.scrollArea,event) + valeur=courant.text() + lval=valeur.split(',') + if len (lval) > 1 : + msgBox=QMessageBox() + msgBox.setText("separator ',' ") + msgBox.setInformativeText("Do you want to enter " + str (lval) + "?") + msgBox.setStandardButtons( QMessageBox.Ok | QMessageBox.Cancel) + msgBox.setDefaultButton(QMessageBox.Ok) + ret = msgBox.exec_() + if ret != 1024 : + courant.setText("") + return + courant.setText(lval[0]) + self.ajoutNValeur(lval[1:]) + self.listeValeursCourantes = [] + + + for i in range (1, self.indexDernierLabel+1): + nomLineEdit="lineEditVal"+str(i) + courant=getattr(self,nomLineEdit) + valeur=courant.text() + if valeur != None and valeur != "" : + commentaire=self.ajout1Valeur(valeur) + if (commentaire != None ): + self.editor.afficheInfos(commentaire,Qt.red) + courant.setText("") + donneFocus=courant + self.reaffiche() + return + else : + self.editor.afficheInfos("") + elif donneFocus==None : donneFocus=courant + + nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel) + dernier=getattr(self,nomDernierLineEdit) + derniereValeur=dernier.text() + if changeDePlace: + if donneFocus != None : + donneFocus.setFocus() + self.scrollArea.ensureWidgetVisible(donneFocus) + elif self.indexDernierLabel < self.monSimpDef.max : + self.ajoutLineEdit() + if self.listeValeursCourantes == [] : return + min,max = self.node.item.getMinMax() + if len(self.listeValeursCourantes) < self.monSimpDef.min : + self.editor.afficheInfos(tr('nb min de valeurs : ')+str( self.monSimpDef.min)) + if len(self.listeValeursCourantes) < min and oblige==True: return + if len(self.listeValeursCourantes) > max : return + retour=self.node.item.setValeur(self.listeValeursCourantes) + if len(self.listeValeursCourantes) == self.monSimpDef.max : + self.editor.afficheInfos(tr('nb max de valeurs atteint')) + self.setValide() + self.reaffiche() + + def leaveEventScrollArea(self,event): + #print ('achangeValeur plusieursBase') + self.changeValeur(changeDePlace=False) + QScrollArea.leaveEvent(self.scrollArea,event) # Avertissement quand on quitte le widget diff --git a/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py b/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py index fb6bc2bb..056cf3e5 100644 --- a/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py +++ b/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py @@ -30,103 +30,103 @@ from copy import copy,deepcopy from PyQt5.QtCore import Qt - + class MonWidgetPlusieursCreeUserAssd ( MonWidgetPlusieursBase): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - self.etablitOrdre() - self.scrollArea.leaveEvent = self.leaveEventScrollArea - self.RBHaut.close() - self.RBBas.close() - - def ajout1Valeur(self,valeur=None): - if not valeur in list(self.dictValeurs.keys()): - validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeur) - MonWidgetPlusieursBase.ajout1Valeur(self,valeur) - - def changeValeur(self,changeDePlace=False,oblige=False ): - #print ('dans changeValeur du CreeUserAssd', changeDePlace, self.numLineEditEnCours) - #import traceback - #traceback.print_stack() - self.changeUnLineEdit=False - valeur = self.lineEditEnCours.text() - if self.numLineEditEnCours in list(self.dictLE.keys()) : - oldValeurUserAssd = self.dictLE[self.numLineEditEnCours] - if oldValeurUserAssd == None or oldValeurUserAssd == "" : - enCreation = True - oldValeurUserAssd == True - else : enCreation = False - else : - enCreation = True - oldValeurUserAssd = None - - if oldValeurUserAssd and oldValeurUserAssd.nom == valeur : - self.selectionneNext() - return - - if valeur != "" : - if not enCreation : - validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur) - if commentaire != "" and not validite: - self.editor.afficheInfos(commentaire,Qt.red) - self.lineEditEnCours.setText(oldValeurUserAssd.nom) - nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) - dernier=getattr(self,nomDernierLineEdit) - dernier.setFocus() - return - - validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur) - if commentaire != "" and not validite: - self.editor.afficheInfos(commentaire,Qt.red) - self.lineEditEnCours.setText("") - if objASSD : objASSD.supprime(self.objSimp) - return - else: - validite = 1 - objASSD=None - commentaire = "" - - # on relit tout pour tenir compte des lignes blanches - oldValeur=self.objSimp.valeur - liste=[] - for i in range (1, self.indexDernierLabel+1): - if i == self.numLineEditEnCours and objASSD : liste.append(objASSD) - elif self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) - validite=self.node.item.setValeur(liste) - if not validite : - self.objSimp.valeur=oldValeur - self.objSimp.state='changed' - self.setValide() - if objASSD : objASSD.supprime(self.objSimp) - self.lineEditEnCours.setText(oldValeurUserASSD.nom) - return - - validite=self.node.item.isValid() - if validite : - self.dictLE[self.numLineEditEnCours] = objASSD - self.node.item.rattacheUserASSD(objASSD) - if self.indexDernierLabel < len(liste) : self.ajoutLineEdit() - nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) - self.listeValeursCourantes=liste - dernier=getattr(self,nomDernierLineEdit) - dernier.setFocus() - else : - self.editor.afficheInfos('ajout impossible' ,Qt.red) - if objASSD : objASSD.supprime(self.objSimp) - self.lineEditEnCours.setText("") - self.parentQt.propageChange(self.objSimp.definition.type[0],self) - - def selectionneDernier(self): - index=len(self.listeValeursCourantes) - self.listeAffichageWidget[index].setFocus() - - def leaveEventScrollArea(self,event): - pass + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + self.etablitOrdre() + self.scrollArea.leaveEvent = self.leaveEventScrollArea + self.RBHaut.close() + self.RBBas.close() + + def ajout1Valeur(self,valeur=None): + if not valeur in list(self.dictValeurs.keys()): + validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeur) + MonWidgetPlusieursBase.ajout1Valeur(self,valeur) + + def changeValeur(self,changeDePlace=False,oblige=False ): + #print ('dans changeValeur du CreeUserAssd', changeDePlace, self.numLineEditEnCours) + #import traceback + #traceback.print_stack() + self.changeUnLineEdit=False + valeur = self.lineEditEnCours.text() + if self.numLineEditEnCours in list(self.dictLE.keys()) : + oldValeurUserAssd = self.dictLE[self.numLineEditEnCours] + if oldValeurUserAssd == None or oldValeurUserAssd == "" : + enCreation = True + oldValeurUserAssd == True + else : enCreation = False + else : + enCreation = True + oldValeurUserAssd = None + + if oldValeurUserAssd and oldValeurUserAssd.nom == valeur : + self.selectionneNext() + return + + if valeur != "" : + if not enCreation : + validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur) + if commentaire != "" and not validite: + self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditEnCours.setText(oldValeurUserAssd.nom) + nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) + dernier=getattr(self,nomDernierLineEdit) + dernier.setFocus() + return + + validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur) + if commentaire != "" and not validite: + self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditEnCours.setText("") + if objASSD : objASSD.supprime(self.objSimp) + return + else: + validite = 1 + objASSD=None + commentaire = "" + + # on relit tout pour tenir compte des lignes blanches + oldValeur=self.objSimp.valeur + liste=[] + for i in range (1, self.indexDernierLabel+1): + if i == self.numLineEditEnCours and objASSD : liste.append(objASSD) + elif self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) + validite=self.node.item.setValeur(liste) + if not validite : + self.objSimp.valeur=oldValeur + self.objSimp.state='changed' + self.setValide() + if objASSD : objASSD.supprime(self.objSimp) + self.lineEditEnCours.setText(oldValeurUserASSD.nom) + return + + validite=self.node.item.isValid() + if validite : + self.dictLE[self.numLineEditEnCours] = objASSD + self.node.item.rattacheUserASSD(objASSD) + if self.indexDernierLabel < len(liste) : self.ajoutLineEdit() + nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) + self.listeValeursCourantes=liste + dernier=getattr(self,nomDernierLineEdit) + dernier.setFocus() + else : + self.editor.afficheInfos('ajout impossible' ,Qt.red) + if objASSD : objASSD.supprime(self.objSimp) + self.lineEditEnCours.setText("") + self.parentQt.propageChange(self.objSimp.definition.type[0],self) + + def selectionneDernier(self): + index=len(self.listeValeursCourantes) + self.listeAffichageWidget[index].setFocus() + + def leaveEventScrollArea(self,event): + pass # def echangeDeuxValeurs(self): # self.changeUnLineEdit=False -# obj1=self.dictLE[self.num1] -# obj2=self.dictLE[self.num2] +# obj1=self.dictLE[self.num1] +# obj2=self.dictLE[self.num2] # self.dictLE[self.num1]=obj2 # self.dictLE[self.num2]=obj1 # nomLineEdit=self.nomLine+str(self.num1) @@ -138,48 +138,47 @@ class MonWidgetPlusieursCreeUserAssd ( MonWidgetPlusieursBase): # if self.dictLE[self.num2] != None : courant.setText(self.dictLE[self.num2].nom) # else : courant.setText("") # liste=[] -# for i in list(self.dictLE.keys()): +# for i in list(self.dictLE.keys()): # if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) # validite=self.node.item.setValeur(liste) # self.listeValeursCourantes=liste # courant.setFocus(True) - def descendLesLignes(self): - self.changeUnLineEdit=False - if self.numLineEditEnCours==self.indexDernierLabel : return - nouvelleValeur=None - for i in range (self.numLineEditEnCours+1, self.indexDernierLabel): - valeurAGarder=self.dictLE[i] - self.dictLE[i]=nouvelleValeur - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if nouvelleValeur != None : courant.setText(nouvelleValeur.nom) - else : courant.setText("") - nouvelleValeur=valeurAGarder - - - def moinsPushed(self): - if self.numLineEditEnCours == 0 : return - if self.indexDernierLabel == 0 : return - objASSD=self.dictLE[self.numLineEditEnCours] - if objASSD : objASSD.supprime(self.objSimp) - self.lineEditEnCours.setText("") - self.dictLE[self.numLineEditEnCours]=None - - for i in range (self.numLineEditEnCours, self.indexDernierLabel-1): - self.dictLE[i]= self.dictLE[i+1] - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if self.dictLE[i] != None : courant.setText(self.dictLE[i].nom) - else : courant.setText("") - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - courant=getattr(self,nomLineEdit) - courant.setText("") - self.dictLE[self.indexDernierLabel]=None - liste=[] - for i in list(self.dictLE.keys()): - if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) - print (liste) - validite=self.node.item.setValeur(liste) - self.listeValeursCourantes=liste - + def descendLesLignes(self): + self.changeUnLineEdit=False + if self.numLineEditEnCours==self.indexDernierLabel : return + nouvelleValeur=None + for i in range (self.numLineEditEnCours+1, self.indexDernierLabel): + valeurAGarder=self.dictLE[i] + self.dictLE[i]=nouvelleValeur + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if nouvelleValeur != None : courant.setText(nouvelleValeur.nom) + else : courant.setText("") + nouvelleValeur=valeurAGarder + + + def moinsPushed(self): + if self.numLineEditEnCours == 0 : return + if self.indexDernierLabel == 0 : return + objASSD=self.dictLE[self.numLineEditEnCours] + if objASSD : objASSD.supprime(self.objSimp) + self.lineEditEnCours.setText("") + self.dictLE[self.numLineEditEnCours]=None + + for i in range (self.numLineEditEnCours, self.indexDernierLabel-1): + self.dictLE[i]= self.dictLE[i+1] + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if self.dictLE[i] != None : courant.setText(self.dictLE[i].nom) + else : courant.setText("") + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + courant.setText("") + self.dictLE[self.indexDernierLabel]=None + liste=[] + for i in list(self.dictLE.keys()): + if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) + print (liste) + validite=self.node.item.setValeur(liste) + self.listeValeursCourantes=liste diff --git a/InterfaceQT4/monWidgetPlusieursPlie.py b/InterfaceQT4/monWidgetPlusieursPlie.py index 389e5111..ed14566c 100644 --- a/InterfaceQT4/monWidgetPlusieursPlie.py +++ b/InterfaceQT4/monWidgetPlusieursPlie.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os,sys,re @@ -32,7 +32,7 @@ from PyQt5.QtGui import QIcon, QBrush, QColor from Extensions.i18n import tr from .feuille import Feuille -from desWidgetPlusieursPlie import Ui_WidgetPlusieursPlie +from desWidgetPlusieursPlie import Ui_WidgetPlusieursPlie from .politiquesValidation import PolitiquePlusieurs from .qtSaisie import SaisieValeur @@ -42,81 +42,81 @@ pattern_blanc = re.compile(r"^\s*$") class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #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.hasInto() : - 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) + if self.node.item.hasInto() : + 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.lineEditVal.returnPressed.connect(self.valeurEntree) self.BVisuListe.clicked.connect(self.selectWidgetDeplie) - def setValeurs(self): - self.listeValeursCourantes=self.node.item.getListeValeurs() - if self.listeValeursCourantes != [] : self.lineEditVal.setText(str(self.listeValeursCourantes)) - else : self.lineEditVal.setText("") - 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.afficheInfos(str(listeValeur)+' Valeurs saisies incorrectes',Qt.red) - return - liste,validite=SaisieValeur.TraiteLEValeur(self,str(v)) - if not validite : - self.editor.afficheInfos(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.setValeur(listeValeur) - self.node.item.isValid() - self.setValeurs() - else : - self.editor.afficheInfos(str(listeValeur) + ' ' +comm,Qt.red) - self.lineEditVal.setText('') - + def setValeurs(self): + self.listeValeursCourantes=self.node.item.getListeValeurs() + if self.listeValeursCourantes != [] : self.lineEditVal.setText(str(self.listeValeursCourantes)) + else : self.lineEditVal.setText("") + 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.afficheInfos(str(listeValeur)+' Valeurs saisies incorrectes',Qt.red) + return + liste,validite=SaisieValeur.TraiteLEValeur(self,str(v)) + if not validite : + self.editor.afficheInfos(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.setValeur(listeValeur) + self.node.item.isValid() + self.setValeurs() + else : + self.editor.afficheInfos(str(listeValeur) + ' ' +comm,Qt.red) + self.lineEditVal.setText('') + class MonWidgetPlusieursPlieASSD (MonWidgetPlusieursPlie): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetPlusieursPlie.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.lineEditVal.setReadOnly(True) - def setValeurs(self): - self.listeValeursCourantes=self.node.item.getListeValeurs() - self.politique=PolitiquePlusieurs(self.node,self.editor) - if self.listeValeursCourantes == [] : self.lineEditVal.setText(""); return - txt="[" - for elt in self.listeValeursCourantes : + def setValeurs(self): + self.listeValeursCourantes=self.node.item.getListeValeurs() + self.politique=PolitiquePlusieurs(self.node,self.editor) + if self.listeValeursCourantes == [] : self.lineEditVal.setText(""); return + txt="[" + for elt in self.listeValeursCourantes : txt= txt+ (str(elt)) + "," - txt= txt + "]" - self.lineEditVal.setText(txt) + txt= txt + "]" + self.lineEditVal.setText(txt) - def valeurEntree(self): - pass + def valeurEntree(self): + pass diff --git a/InterfaceQT4/monWidgetPlusieursTuple.py b/InterfaceQT4/monWidgetPlusieursTuple.py index 3d1b7889..4b9ce64e 100644 --- a/InterfaceQT4/monWidgetPlusieursTuple.py +++ b/InterfaceQT4/monWidgetPlusieursTuple.py @@ -20,9 +20,9 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range - from builtins import object + from builtins import str + from builtins import range + from builtins import object except : pass import types,os,sys @@ -55,193 +55,193 @@ from Tuple10 import Ui_Tuple10 class TupleCustom(object) : #-------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------------------------------------- - QWidget.__init__(self,parent) - self.setupUi(self) - self.tailleTuple=tailleTuple - self.parent=parent - self.parentQt=parentQt - self.valeur=[] - self.index=index - self.inFocusOutEvent=False - - - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - courant.num=index - courant.dansUnTuple=True - courant.returnPressed.connect(self.valueChange) - courant.numDsLaListe = i+1 - courant.tupleCustomParent=self - courant.parentTuple = self - - - def valueChange(self): - #---------------------- - - listeVal=[] - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - val=str(courant.text()) - - if str(val)=="" or val==None : - if not self.inFocusOutEvent : courant.setFocus() - return + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------------------------------------- + QWidget.__init__(self,parent) + self.setupUi(self) + self.tailleTuple=tailleTuple + self.parent=parent + self.parentQt=parentQt + self.valeur=[] + self.index=index + self.inFocusOutEvent=False + + + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + courant.num=index + courant.dansUnTuple=True + courant.returnPressed.connect(self.valueChange) + courant.numDsLaListe = i+1 + courant.tupleCustomParent=self + courant.parentTuple = self + + + def valueChange(self): + #---------------------- + + listeVal=[] + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + val=str(courant.text()) + + if str(val)=="" or val==None : + if not self.inFocusOutEvent : courant.setFocus() + return + + try : + valeur=eval(val,{}) + except : + try : + d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) + valeur=eval(val,d) + except : + valeur=val + listeVal.append(valeur) + self.valeur=listeVal + self.parentQt.changeValeur() + + + def setValeur(self,value): + #---------------------- + + listeVal=[] + valeurNulle=True + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + try : + if str(value[i]) != "" : valeurNulle=False + except : + pass - try : - valeur=eval(val,{}) - except : - try : - d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) - valeur=eval(val,d) - except : - valeur=val - listeVal.append(valeur) - self.valeur=listeVal - self.parentQt.changeValeur() - - - def setValeur(self,value): - #---------------------- - - listeVal=[] - valeurNulle=True - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - try : - if str(value[i]) != "" : valeurNulle=False - except : - pass - - try : - courant.setText(str(value[i])) - except : - courant.setText("") - val=str(courant.text()) - try : - valeur=eval(val,{}) - except : - try : - d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) - valeur=eval(val,d) - except : - valeur=val - listeVal.append(valeur) - if valeurNulle == True : self.valeur=None - else : self.valeur=listeVal - - def getValeurbad(self): - #---------------------- - self.valeur=[] - vide=True - print (self.tailleTuple) - for i in range(self.tailleTuple): - nomLE="lineEditVal_"+str(i+1) - courant=getattr(self,nomLE) - self.valeur.append(courant.valeur) - if courant.valeur!= None : vide = False - if vide : self.valeur=[] - return self.valeur - - 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) - courant=getattr(self,nomLE) - courant.setText("") - - def finCommentaire(self): - #------------------- + try : + courant.setText(str(value[i])) + except : + courant.setText("") + val=str(courant.text()) + try : + valeur=eval(val,{}) + except : + try : + d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape) + valeur=eval(val,d) + except : + valeur=val + listeVal.append(valeur) + if valeurNulle == True : self.valeur=None + else : self.valeur=listeVal + + def getValeurbad(self): + #---------------------- + self.valeur=[] + vide=True + print (self.tailleTuple) + for i in range(self.tailleTuple): + nomLE="lineEditVal_"+str(i+1) + courant=getattr(self,nomLE) + self.valeur.append(courant.valeur) + if courant.valeur!= None : vide = False + if vide : self.valeur=[] + return self.valeur + + 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) + courant=getattr(self,nomLE) + 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) - if self.parentQt.editor.maConfiguration.closeParenthese : - self.label_5.close() - self.label_7.close() + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + if self.parentQt.editor.maConfiguration.closeParenthese : + self.label_5.close() + self.label_7.close() #------------------------------------------------- class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom4(QWidget,Ui_Tuple4,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom5(QWidget,Ui_Tuple5,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom6(QWidget,Ui_Tuple6,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom7(QWidget,Ui_Tuple7,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom8(QWidget,Ui_Tuple8,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom9(QWidget,Ui_Tuple9,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) #------------------------------------------------- class TupleCustom10(QWidget,Ui_Tuple10,TupleCustom): #------------------------------------------------- - def __init__(self,tailleTuple,parent,parentQt,index): - #------------------- - TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) - if self.parentQt.editor.maConfiguration.closeParenthese : - self.label_5.close() - self.label_7.close() + def __init__(self,tailleTuple,parent,parentQt,index): + #------------------- + TupleCustom.__init__(self,tailleTuple,parent,parentQt,index) + if self.parentQt.editor.maConfiguration.closeParenthese : + self.label_5.close() + self.label_7.close() @@ -251,8 +251,8 @@ class TupleCustom10(QWidget,Ui_Tuple10,TupleCustom): class MonWidgetPlusieursTuple(Feuille,GereListe): # -------------------------------------------- # - def __init__(self, node, monSimpDef, nom, objSimp, parentQt, commande): - #----------------------------------------------------- + def __init__(self, node, monSimpDef, nom, objSimp, parentQt, commande): + #----------------------------------------------------- self.indexDernierLabel=0 self.numLineEditEnCours=0 @@ -265,158 +265,158 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): self.parentQt.commandesLayout.insertWidget(-1,self) #if sys.platform[0:5]!="linux": - if 1 : + if 1 : #Pour MT - 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(fichier3) - self.BSelectFichier.setIcon(icon3) - self.BSelectFichier.setIconSize(QSize(32, 32)) + 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(fichier3) + self.BSelectFichier.setIcon(icon3) + self.BSelectFichier.setIconSize(QSize(32, 32)) self.BSelectFichier.clicked.connect(self.selectInFile) - - - - - def ajoutLineEdit(self,valeur=None,inInit=False): - #------------------------------------------------ - self.indexDernierLabel=self.indexDernierLabel+1 - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - if hasattr(self,nomLineEdit) : - self.indexDernierLabel=self.indexDernierLabel-1 - return - - nomCustomTuple='TupleCustom'+str(self.nbValeurs) - laClasseDuTuple=globals()[nomCustomTuple] - nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) - - #if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) - #else : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) - - self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) - setattr(self,nomLineEdit,nouveauLE) - if valeur != None : nouveauLE.setValeur(valeur) - - for i in range(self.nbValeurs) : - num=i+1 - nomLineEdit='lineEditVal_'+str(num) - lineEditVal=getattr(nouveauLE,nomLineEdit) - self.listeAffichageWidget.append(lineEditVal) - #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 - self.estVisible=nouveauLE.lineEditVal_1 - 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) - self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) - i=i+1 - - - def setValeurs(self): - # --------------------- - if self.editor.code == 'PSEN' : self.RBListePush() - valeurs=self.node.item.getValeur() - min,max=self.node.item.getMinMax() - if max == "**" or max > 8 : aCreer= 8 - else : aCreer=max - - if valeurs == () or valeurs == None : - for i in range(aCreer): self.ajoutLineEdit(inInit=True) - return - - for v in valeurs: - self.ajoutLineEdit(v,inInit=True) - - 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 - #print ('dschangeValeur', self.indexDernierLabel) - - aLeFocus=self.focusWidget() - listeComplete=[] - libre=False - #print (self.indexDernierLabel) - for i in range(self.indexDernierLabel) : - nom=self.nomLine+str(i+1) - courant=getattr(self,nom) - valeurTuple=courant.valeur - if valeurTuple == None or valeurTuple== "" or valeurTuple==[]: - libre=True - continue - validite,comm,comm2,listeRetour= self.politique.ajoutTuple(valeurTuple,listeComplete) - if not validite: - if comm2 != '' : comm += " " + comm2 - self.editor.afficheInfos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red) - return - listeComplete.append(tuple(courant.valeur)) - #print ('listeComplete', listeComplete) - if listeComplete == [] : listeComplete=None - self.node.item.setValeur(listeComplete) - - if changeDePlace : return - min,max=self.node.item.getMinMax() - if self.indexDernierLabel == max : self.editor.afficheInfos(tr('Nb maximum de valeurs atteint')) - if self.indexDernierLabel < max and libre==False : - self.ajoutLineEdit() - self.listeAffichageWidget[-2].setFocus(True) - else : - try : - QApplication.processEvents() - w=self.listeAffichageWidget[self.listeAffichageWidget.index(aLeFocus)+1] - w.setFocus(True) - self.scrollArea.ensureWidgetVisible(w,0,0) - except : - pass - - def echange(self,num1,num2): - # on donne le focus au a celui ou on a bouge - # par convention le 2 - nomLineEdit=self.nomLine+str(num1) - courant=getattr(self,nomLineEdit) - valeurAGarder=courant.getValeur() - nomLineEdit2=self.nomLine+str(num2) - courant2=getattr(self,nomLineEdit2) - courant.setText(courant2.text()) - courant2.setText(valeurAGarder) - self.changeValeur(changeDePlace=True) - self.numLineEditEnCours=num2 - self.lineEditEnCours=courant2 - courant2.lineEditVal_1.setFocus(True) - - 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 + + + + + def ajoutLineEdit(self,valeur=None,inInit=False): + #------------------------------------------------ + self.indexDernierLabel=self.indexDernierLabel+1 + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + if hasattr(self,nomLineEdit) : + self.indexDernierLabel=self.indexDernierLabel-1 + return + + nomCustomTuple='TupleCustom'+str(self.nbValeurs) + laClasseDuTuple=globals()[nomCustomTuple] + nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) + + #if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) + #else : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) + + self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) + setattr(self,nomLineEdit,nouveauLE) + if valeur != None : nouveauLE.setValeur(valeur) + + for i in range(self.nbValeurs) : + num=i+1 + nomLineEdit='lineEditVal_'+str(num) + lineEditVal=getattr(nouveauLE,nomLineEdit) + self.listeAffichageWidget.append(lineEditVal) + #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 + self.estVisible=nouveauLE.lineEditVal_1 + 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) + self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1]) + i=i+1 + + + def setValeurs(self): + # --------------------- + if self.editor.code == 'PSEN' : self.RBListePush() + valeurs=self.node.item.getValeur() + min,max=self.node.item.getMinMax() + if max == "**" or max > 8 : aCreer= 8 + else : aCreer=max + + if valeurs == () or valeurs == None : + for i in range(aCreer): self.ajoutLineEdit(inInit=True) + return + + for v in valeurs: + self.ajoutLineEdit(v,inInit=True) + + 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 + #print ('dschangeValeur', self.indexDernierLabel) + + aLeFocus=self.focusWidget() + listeComplete=[] + libre=False + #print (self.indexDernierLabel) + for i in range(self.indexDernierLabel) : + nom=self.nomLine+str(i+1) + courant=getattr(self,nom) + valeurTuple=courant.valeur + if valeurTuple == None or valeurTuple== "" or valeurTuple==[]: + libre=True + continue + validite,comm,comm2,listeRetour= self.politique.ajoutTuple(valeurTuple,listeComplete) + if not validite: + if comm2 != '' : comm += " " + comm2 + self.editor.afficheInfos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red) + return + listeComplete.append(tuple(courant.valeur)) + #print ('listeComplete', listeComplete) + if listeComplete == [] : listeComplete=None + self.node.item.setValeur(listeComplete) + + if changeDePlace : return + min,max=self.node.item.getMinMax() + if self.indexDernierLabel == max : self.editor.afficheInfos(tr('Nb maximum de valeurs atteint')) + if self.indexDernierLabel < max and libre==False : + self.ajoutLineEdit() + self.listeAffichageWidget[-2].setFocus(True) + else : + try : + QApplication.processEvents() + w=self.listeAffichageWidget[self.listeAffichageWidget.index(aLeFocus)+1] + w.setFocus(True) + self.scrollArea.ensureWidgetVisible(w,0,0) + except : + pass + + def echange(self,num1,num2): + # on donne le focus au a celui ou on a bouge + # par convention le 2 + nomLineEdit=self.nomLine+str(num1) + courant=getattr(self,nomLineEdit) + valeurAGarder=courant.getValeur() + nomLineEdit2=self.nomLine+str(num2) + courant2=getattr(self,nomLineEdit2) + courant.setText(courant2.text()) + courant2.setText(valeurAGarder) + self.changeValeur(changeDePlace=True) + self.numLineEditEnCours=num2 + self.lineEditEnCours=courant2 + courant2.lineEditVal_1.setFocus(True) + + 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.afficheInfos(tr(texte),Qt.red) - return + texte="Nombre incorrect de valeurs" + self.editor.afficheInfos(tr(texte),Qt.red) + return i=0 longueur=len(liste)//self.nbValeurs @@ -428,15 +428,15 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): 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.afficheInfos(texte,Qt.red) - return + if len(listeComplete) > max : + texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint") + self.editor.afficheInfos(texte,Qt.red) + return validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete) - if not validite : - self.editor.afficheInfos(comm+comm2,Qt.red) - return + if not validite : + self.editor.afficheInfos(comm+comm2,Qt.red) + return # on calcule le dernier lineedit rempli avant de changer la valeur if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur) @@ -446,101 +446,100 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): while ( i < len(liste) ) : try : - t=tuple(liste[i:i+self.nbValeurs]) + t=tuple(liste[i:i+self.nbValeurs]) except: - t=tuple(liste[i:len(liste)]) + t=tuple(liste[i:len(liste)]) i=i+self.nbValeurs if indexDernierRempli < self.indexDernierLabel: - nomLEARemplir=self.nomLine+str(indexDernierRempli+1) - LEARemplir=getattr(self,nomLEARemplir) - for n in range(self.nbValeurs) : - nomLineEdit='lineEditVal_'+str(n+1) - lineEditVal=getattr(LEARemplir,nomLineEdit) - lineEditVal.setText(str(t[n])) - else : - # ne pas appeler ajoutLineEdit(t,False ) pb de boucle pb du a etablitOrdre et a listeWidgetAffichage qui bouge - self.indexDernierLabel=self.indexDernierLabel+1 - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - - nomCustomTuple='TupleCustom'+str(self.nbValeurs) - laClasseDuTuple=globals()[nomCustomTuple] - nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) - - self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) - setattr(self,nomLineEdit,nouveauLE) - nouveauLE.setValeur(t) - - for n in range(self.nbValeurs) : - nomLineEdit='lineEditVal_'+str(n+1) - lineEditVal=getattr(nouveauLE,nomLineEdit) - self.listeAffichageWidget.append(lineEditVal) + nomLEARemplir=self.nomLine+str(indexDernierRempli+1) + LEARemplir=getattr(self,nomLEARemplir) + for n in range(self.nbValeurs) : + nomLineEdit='lineEditVal_'+str(n+1) + lineEditVal=getattr(LEARemplir,nomLineEdit) + lineEditVal.setText(str(t[n])) + else : + # ne pas appeler ajoutLineEdit(t,False ) pb de boucle pb du a etablitOrdre et a listeWidgetAffichage qui bouge + self.indexDernierLabel=self.indexDernierLabel+1 + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + + nomCustomTuple='TupleCustom'+str(self.nbValeurs) + laClasseDuTuple=globals()[nomCustomTuple] + nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel) + + self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE) + setattr(self,nomLineEdit,nouveauLE) + nouveauLE.setValeur(t) + + for n in range(self.nbValeurs) : + nomLineEdit='lineEditVal_'+str(n+1) + lineEditVal=getattr(nouveauLE,nomLineEdit) + self.listeAffichageWidget.append(lineEditVal) indexDernierRempli = indexDernierRempli+1 self.etablitOrdre() - - - 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,'sd_ligne') : self.editor.readercata.cata.sd_ligne=None - if not hasattr(self.editor.readercata.cata,'sd_generateur') : self.editor.readercata.cata.sd_generateur=None - if not hasattr(self.editor.readercata.cata,'sd_transfo') : self.editor.readercata.cata.sd_transfo=None - if not hasattr(self.editor.readercata.cata,'sd_charge') : self.editor.readercata.cata.sd_charge=None - if not hasattr(self.editor.readercata.cata,'sd_moteur') : self.editor.readercata.cata.sd_moteur=None - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_ligne : - val=[] - if hasattr(self.objSimp.jdc,'LineDico'): - for k in self.objSimp.jdc.LineDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_generateur : - val=[] - if hasattr(self.objSimp.jdc,'MachineDico'): - for k in self.objSimp.jdc.MachineDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_transfo : - val=[] - if hasattr(self.objSimp.jdc,'TransfoDico'): - for k in self.objSimp.jdc.TransfoDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_charge : - val=[] - if hasattr(self.objSimp.jdc,'LoadDico'): - for k in self.objSimp.jdc.LoadDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) - if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_moteur : - val=[] - if hasattr(self.objSimp.jdc,'MotorDico'): - for k in self.objSimp.jdc.MotorDico : - try : - valeur=self.objSimp.jdc.getConcept(k) - val.append((valeur,0)) - except : - pass - self.node.item.setValeur(val) + + 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,'sd_ligne') : self.editor.readercata.cata.sd_ligne=None + if not hasattr(self.editor.readercata.cata,'sd_generateur') : self.editor.readercata.cata.sd_generateur=None + if not hasattr(self.editor.readercata.cata,'sd_transfo') : self.editor.readercata.cata.sd_transfo=None + if not hasattr(self.editor.readercata.cata,'sd_charge') : self.editor.readercata.cata.sd_charge=None + if not hasattr(self.editor.readercata.cata,'sd_moteur') : self.editor.readercata.cata.sd_moteur=None + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_ligne : + val=[] + if hasattr(self.objSimp.jdc,'LineDico'): + for k in self.objSimp.jdc.LineDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_generateur : + val=[] + if hasattr(self.objSimp.jdc,'MachineDico'): + for k in self.objSimp.jdc.MachineDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_transfo : + val=[] + if hasattr(self.objSimp.jdc,'TransfoDico'): + for k in self.objSimp.jdc.TransfoDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_charge : + val=[] + if hasattr(self.objSimp.jdc,'LoadDico'): + for k in self.objSimp.jdc.LoadDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_moteur : + val=[] + if hasattr(self.objSimp.jdc,'MotorDico'): + for k in self.objSimp.jdc.MotorDico : + try : + valeur=self.objSimp.jdc.getConcept(k) + val.append((valeur,0)) + except : + pass + self.node.item.setValeur(val) diff --git a/InterfaceQT4/monWidgetPlusieursTupleN.py b/InterfaceQT4/monWidgetPlusieursTupleN.py index 36dfee9f..aad22ac9 100644 --- a/InterfaceQT4/monWidgetPlusieursTupleN.py +++ b/InterfaceQT4/monWidgetPlusieursTupleN.py @@ -24,52 +24,51 @@ import types,os # Modules Eficas from .feuille import Feuille -from .monWidgetPlusieursTuple import MonWidgetPlusieursTuple -from desWidgetPlusieursTuple import Ui_WidgetPlusieursTuple +from .monWidgetPlusieursTuple import MonWidgetPlusieursTuple +from desWidgetPlusieursTuple import Ui_WidgetPlusieursTuple class MonWidgetPlusieursTuple2 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=2 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple3 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=3 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) class MonWidgetPlusieursTuple4 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=4 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) class MonWidgetPlusieursTuple5 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=5 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple6 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=6 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple7 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=7 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple8 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=8 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple9 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=9 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetPlusieursTuple10 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=10 MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - diff --git a/InterfaceQT4/monWidgetRadioButton.py b/InterfaceQT4/monWidgetRadioButton.py index 569e56be..ed89bebd 100644 --- a/InterfaceQT4/monWidgetRadioButton.py +++ b/InterfaceQT4/monWidgetRadioButton.py @@ -21,7 +21,7 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str + from builtins import str except : pass import types,os @@ -34,13 +34,13 @@ from PyQt5.QtWidgets import QWidget from Extensions.i18n import tr from .feuille import Feuille -from desWidgetRadioButton import Ui_WidgetRadioButton +from desWidgetRadioButton import Ui_WidgetRadioButton from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetRadioButtonCommun (Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.setMaxI() Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) @@ -52,101 +52,101 @@ class MonWidgetRadioButtonCommun (Feuille): self.maCommande.listeAffichageWidget.append(self.radioButton_1) - def setValeursApresBouton(self): - if self.objSimp.getValeur()==None : return - valeur=self.objSimp.getValeur() - if not(isinstance(valeur, str)) : valeur = str(valeur) - try : - self.dict_bouton[valeur].setChecked(True) - self.dict_bouton[valeur].setFocus(True) - except : - pass - - def determineChoix(self): - self.horizontalLayout.setAlignment(Qt.AlignLeft) - i=1 - j=len(self.maListeDeValeur) - if j > self.maxI : - print ("poumbadaboum") - return - while i < j+1 : - nomBouton="radioButton_"+str(i) - bouton=getattr(self,nomBouton) - valeur=self.maListeDeValeur[i-1] - if not(isinstance(valeur, str)) : valeur = str(valeur) - bouton.setText(tr(valeur)) - self.dict_bouton[valeur]=bouton - bouton.clicked.connect(self.boutonclic) - bouton.keyPressEvent=self.keyPressEvent - setattr(self,nomBouton,bouton) - i=i+1 - while i < self.maxI +1 : - nomBouton="radioButton_"+str(i) - bouton=getattr(self,nomBouton) - bouton.close() - i=i+1 - - def boutonclic(self): - for valeur in self.dict_bouton: - if self.dict_bouton[valeur].isChecked(): - SaisieValeur.LEvaleurPressed(self,valeur) - self.reaffiche() - - - def keyPressEvent(self, event): - if event.key() == Qt.Key_Right : self.selectSuivant(); return - if event.key() == Qt.Key_Left : self.selectPrecedent(); return - if event.key() == Qt.Key_Return or event.key() == Qt.Key_Space : self.checkFocused(); return - QWidget.keyPressEvent(self,event) - - def selectSuivant(self): - aLeFocus=self.focusWidget() - nom=aLeFocus.objectName()[12:] - i=int(nom)+1 - if i == len(self.maListeDeValeur) +1 : i=1 - nomBouton="radioButton_"+str(i) - courant=getattr(self,nomBouton) - courant.setFocus(True) - - def selectPrecedent(self): - aLeFocus=self.focusWidget() - nom=aLeFocus.objectName()[12:] - i=int(nom)-1 - if i == 0 : i= len(self.maListeDeValeur) - nomBouton="radioButton_"+str(i) - courant=getattr(self,nomBouton) - courant.setFocus(True) - - def checkFocused(self): - aLeFocus=self.focusWidget() - nom=aLeFocus.objectName()[12:] - i=int(nom) - if i > 0 and i <= len(self.maListeDeValeur): + def setValeursApresBouton(self): + if self.objSimp.getValeur()==None : return + valeur=self.objSimp.getValeur() + if not(isinstance(valeur, str)) : valeur = str(valeur) + try : + self.dict_bouton[valeur].setChecked(True) + self.dict_bouton[valeur].setFocus(True) + except : + pass + + def determineChoix(self): + self.horizontalLayout.setAlignment(Qt.AlignLeft) + i=1 + j=len(self.maListeDeValeur) + if j > self.maxI : + print ("poumbadaboum") + return + while i < j+1 : + nomBouton="radioButton_"+str(i) + bouton=getattr(self,nomBouton) + valeur=self.maListeDeValeur[i-1] + if not(isinstance(valeur, str)) : valeur = str(valeur) + bouton.setText(tr(valeur)) + self.dict_bouton[valeur]=bouton + bouton.clicked.connect(self.boutonclic) + bouton.keyPressEvent=self.keyPressEvent + setattr(self,nomBouton,bouton) + i=i+1 + while i < self.maxI +1 : + nomBouton="radioButton_"+str(i) + bouton=getattr(self,nomBouton) + bouton.close() + i=i+1 + + def boutonclic(self): + for valeur in self.dict_bouton: + if self.dict_bouton[valeur].isChecked(): + SaisieValeur.LEvaleurPressed(self,valeur) + self.reaffiche() + + + def keyPressEvent(self, event): + if event.key() == Qt.Key_Right : self.selectSuivant(); return + if event.key() == Qt.Key_Left : self.selectPrecedent(); return + if event.key() == Qt.Key_Return or event.key() == Qt.Key_Space : self.checkFocused(); return + QWidget.keyPressEvent(self,event) + + def selectSuivant(self): + aLeFocus=self.focusWidget() + nom=aLeFocus.objectName()[12:] + i=int(nom)+1 + if i == len(self.maListeDeValeur) +1 : i=1 nomBouton="radioButton_"+str(i) courant=getattr(self,nomBouton) - if not courant.isChecked(): - courant.setChecked(True) - self.boutonclic() + courant.setFocus(True) + + def selectPrecedent(self): + aLeFocus=self.focusWidget() + nom=aLeFocus.objectName()[12:] + i=int(nom)-1 + if i == 0 : i= len(self.maListeDeValeur) + nomBouton="radioButton_"+str(i) + courant=getattr(self,nomBouton) + courant.setFocus(True) + + def checkFocused(self): + aLeFocus=self.focusWidget() + nom=aLeFocus.objectName()[12:] + i=int(nom) + if i > 0 and i <= len(self.maListeDeValeur): + nomBouton="radioButton_"+str(i) + courant=getattr(self,nomBouton) + if not courant.isChecked(): + courant.setChecked(True) + self.boutonclic() class MonWidgetRadioButton (Ui_WidgetRadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - #print "MonWidgetRadioButton ", self + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + #print "MonWidgetRadioButton ", self if type(monSimpDef.into) ==types.FunctionType : self.maListeDeValeur=monSimpDef.into() else : self.maListeDeValeur=monSimpDef.into MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - - def setMaxI(self): + + def setMaxI(self): self.maxI=3 class MonWidgetRadioButtonSD (Ui_WidgetRadioButton,MonWidgetRadioButtonCommun): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans le init de MonWidgetRadioButtonSD",self self.maListeDeValeur=node.item.getSdAvantDuBonType() MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - def setMaxI(self): + def setMaxI(self): self.maxI=3 diff --git a/InterfaceQT4/monWidgetSDCOInto.py b/InterfaceQT4/monWidgetSDCOInto.py index e5c6de93..dcccefdb 100644 --- a/InterfaceQT4/monWidgetSDCOInto.py +++ b/InterfaceQT4/monWidgetSDCOInto.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -31,7 +31,7 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSDCOInto import Ui_WidgetSDCOInto +from desWidgetSDCOInto import Ui_WidgetSDCOInto from .qtSaisie import SaisieSDCO from .politiquesValidation import PolitiqueUnique @@ -39,7 +39,7 @@ from .politiquesValidation import PolitiqueUnique class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "MonWidgetSDCOInto init" Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) @@ -47,25 +47,25 @@ class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO): self.maCommande.listeAffichageWidget.append(self.LESDCO) self.AAficher=self.LESDCO self.initLBSDCO() - + self.LESDCO.returnPressed.connect(self.LESDCOReturnPressed) self.LBSDCO.itemDoubleClicked.connect(self.LBSDCODoubleClicked ) - def LESDCOReturnPressed(self) : + def LESDCOReturnPressed(self) : self.LBSDCO.clearSelection() SaisieSDCO.LESDCOReturnPressed(self) - def initLBSDCO(self): + def initLBSDCO(self): listeNomsSDCO = self.node.item.getSdAvantDuBonType() for aSDCO in listeNomsSDCO: self.LBSDCO.insertItem( 1,aSDCO) valeur = self.node.item.getValeur() if valeur != "" and valeur != None : - self.LESDCO.setText(str(valeur.nom)) + self.LESDCO.setText(str(valeur.nom)) - def LBSDCODoubleClicked(self): + def LBSDCODoubleClicked(self): """ Teste si la valeur fournie par l'utilisateur est une valeur permise : - si oui, l'enregistre @@ -80,19 +80,17 @@ class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO): valeur,validite=self.node.item.evalValeur(nomConcept) test = self.node.item.setValeur(valeur) if not test : - commentaire = tr("impossible d'evaluer : ") + valeur + commentaire = tr("impossible d'evaluer : ") + valeur elif validite: - commentaire = tr("Valeur du mot-clef enregistree") - if test_CO: - # il faut egalement propager la destruction de l'ancien concept - self.node.item.deleteValeurCo(valeur=anc_val) - self.node.item.object.etape.getType_produit(force=1) - self.node.item.object.etape.parent.resetContext() - self.LESDCO.setText(nomConcept) + commentaire = tr("Valeur du mot-clef enregistree") + if test_CO: + # il faut egalement propager la destruction de l'ancien concept + self.node.item.deleteValeurCo(valeur=anc_val) + self.node.item.object.etape.getType_produit(force=1) + self.node.item.object.etape.parent.resetContext() + self.LESDCO.setText(nomConcept) else : - commentaire = self.node.item.getCr() - self.reset_old_valeur(anc_val,mess=mess) - self.editor.afficheInfos(commentaire,Qt.red) + commentaire = self.node.item.getCr() + self.reset_old_valeur(anc_val,mess=mess) + self.editor.afficheInfos(commentaire,Qt.red) self.Commentaire.setText(tr(commentaire)) - - diff --git a/InterfaceQT4/monWidgetSimpBase.py b/InterfaceQT4/monWidgetSimpBase.py index 8a61db01..db0a9686 100644 --- a/InterfaceQT4/monWidgetSimpBase.py +++ b/InterfaceQT4/monWidgetSimpBase.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -31,14 +31,14 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSimpBase import Ui_WidgetSimpBase +from desWidgetSimpBase import Ui_WidgetSimpBase from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.parentQt.commandesLayout.insertWidget(-1,self,1) self.setFocusPolicy(Qt.StrongFocus) @@ -51,66 +51,64 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille): self.lineEditVal.focusOutEvent=self.monFocusOutEvent - def monFocusInEvent(self,event): - self.editor.nodeEnCours = self - QLineEdit.focusInEvent(self.lineEditVal,event) - - def monFocusOutEvent(self,event): - if self.oldValeurTexte != self.lineEditVal.text(): - self.oldValeurTexte= self.lineEditVal.text() - self.LEvaleurPressed() - QLineEdit.focusOutEvent(self.lineEditVal,event) - - - def setValeurs(self): - #print ("dans setValeurs") - self.politique=PolitiqueUnique(self.node,self.editor) - valeur=self.node.item.getValeur() - valeurTexte=self.politique.getValeurTexte(valeur) - chaine="" - - if valeurTexte != None : - from decimal import Decimal - if isinstance(valeurTexte,Decimal): - chaine=str(valeurTexte) - elif repr(valeurTexte.__class__).find("PARAMETRE") > 0: - chaine = repr(valeur) - else : - #PN ???? - #try : - # chaine=QString("").setNum(valeurTexte) - #except : - chaine=str(valeurTexte) - self.oldValeurTexte=chaine - self.lineEditVal.setText(chaine) - - - def finCommentaire(self): - mc = self.objSimp.definition - d_aides = { 'TXM' : tr(u"Une chaine de caracteres est attendue. "), - 'R' : tr(u"Un reel est attendu. "), - 'I' : tr(u"Un entier est attendu. "), - 'Matrice' : tr(u'Une Matrice est attendue. '), - 'Fichier' : tr(u'Un fichier est attendu. '), - 'FichierNoAbs' : tr(u'Un fichier est attendu. '), - 'Repertoire' : tr(u'Un repertoire est attendu. '), - 'FichierOuRepertoire' : tr(u'Un repertoire ou un fichier est attendu. '), - 'Heure' : tr(u'Heure sous la forme HH:MM'), - 'Date' : tr(u'Date sous la forme JJ/MM/AA')} - if mc.type[0] != type: - commentaire = d_aides.get(mc.type[0], tr("Type de base inconnu")) - else : commentaire="" - return commentaire - - - def LEvaleurPressed(self): - # pour les soucis d encoding - try : - if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return - except : pass - SaisieValeur.LEvaleurPressed(self) - #self.parentQt.donneFocus() - self.setValeurs() - self.reaffiche() - - + def monFocusInEvent(self,event): + self.editor.nodeEnCours = self + QLineEdit.focusInEvent(self.lineEditVal,event) + + def monFocusOutEvent(self,event): + if self.oldValeurTexte != self.lineEditVal.text(): + self.oldValeurTexte= self.lineEditVal.text() + self.LEvaleurPressed() + QLineEdit.focusOutEvent(self.lineEditVal,event) + + + def setValeurs(self): + #print ("dans setValeurs") + self.politique=PolitiqueUnique(self.node,self.editor) + valeur=self.node.item.getValeur() + valeurTexte=self.politique.getValeurTexte(valeur) + chaine="" + + if valeurTexte != None : + from decimal import Decimal + if isinstance(valeurTexte,Decimal): + chaine=str(valeurTexte) + elif repr(valeurTexte.__class__).find("PARAMETRE") > 0: + chaine = repr(valeur) + else : + #PN ???? + #try : + # chaine=QString("").setNum(valeurTexte) + #except : + chaine=str(valeurTexte) + self.oldValeurTexte=chaine + self.lineEditVal.setText(chaine) + + + def finCommentaire(self): + mc = self.objSimp.definition + d_aides = { 'TXM' : tr(u"Une chaine de caracteres est attendue. "), + 'R' : tr(u"Un reel est attendu. "), + 'I' : tr(u"Un entier est attendu. "), + 'Matrice' : tr(u'Une Matrice est attendue. '), + 'Fichier' : tr(u'Un fichier est attendu. '), + 'FichierNoAbs' : tr(u'Un fichier est attendu. '), + 'Repertoire' : tr(u'Un repertoire est attendu. '), + 'FichierOuRepertoire' : tr(u'Un repertoire ou un fichier est attendu. '), + 'Heure' : tr(u'Heure sous la forme HH:MM'), + 'Date' : tr(u'Date sous la forme JJ/MM/AA')} + if mc.type[0] != type: + commentaire = d_aides.get(mc.type[0], tr("Type de base inconnu")) + else : commentaire="" + return commentaire + + + def LEvaleurPressed(self): + # pour les soucis d encoding + try : + if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return + except : pass + SaisieValeur.LEvaleurPressed(self) + #self.parentQt.donneFocus() + self.setValeurs() + self.reaffiche() diff --git a/InterfaceQT4/monWidgetSimpBool.py b/InterfaceQT4/monWidgetSimpBool.py index 53a60983..601c0c42 100644 --- a/InterfaceQT4/monWidgetSimpBool.py +++ b/InterfaceQT4/monWidgetSimpBool.py @@ -26,14 +26,14 @@ from PyQt5.QtWidgets import QRadioButton from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSimpBool import Ui_WidgetSimpBool +from desWidgetSimpBool import Ui_WidgetSimpBool from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetSimpBool (Ui_WidgetSimpBool,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) self.RBTrue.clicked.connect(self.boutonTrueClic) @@ -42,20 +42,19 @@ class MonWidgetSimpBool (Ui_WidgetSimpBool,Feuille): self.maCommande.listeAffichageWidget.append(self.RBTrue) self.AAfficher=self.RBTrue - def setValeurs(self): - valeur=self.node.item.getValeur() - if valeur == None : return - if valeur == True : self.RBTrue.setChecked(True) - if valeur == False : self.RBFalse.setChecked(True) - if self.monSimpDef.homo == 'constant' : - if valeur == True : self.RBFalse.setDisabled(True) - else : self.RBTrue.setDisabled(True) - - def boutonTrueClic(self): - SaisieValeur.LEvaleurPressed(self,True) - self.reaffiche() - - def boutonFalseClic(self): - SaisieValeur.LEvaleurPressed(self,False) - self.reaffiche() - + def setValeurs(self): + valeur=self.node.item.getValeur() + if valeur == None : return + if valeur == True : self.RBTrue.setChecked(True) + if valeur == False : self.RBFalse.setChecked(True) + if self.monSimpDef.homo == 'constant' : + if valeur == True : self.RBFalse.setDisabled(True) + else : self.RBTrue.setDisabled(True) + + def boutonTrueClic(self): + SaisieValeur.LEvaleurPressed(self,True) + self.reaffiche() + + def boutonFalseClic(self): + SaisieValeur.LEvaleurPressed(self,False) + self.reaffiche() diff --git a/InterfaceQT4/monWidgetSimpComplexe.py b/InterfaceQT4/monWidgetSimpComplexe.py index 5239a2d6..39ae5b76 100644 --- a/InterfaceQT4/monWidgetSimpComplexe.py +++ b/InterfaceQT4/monWidgetSimpComplexe.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os, locale @@ -33,14 +33,14 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSimpComplexe import Ui_WidgetSimpComplexe +from desWidgetSimpComplexe import Ui_WidgetSimpComplexe from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.parentQt.commandesLayout.insertWidget(-1,self) self.setFocusPolicy(Qt.StrongFocus) @@ -56,120 +56,118 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille): #self.maCommande.listeAffichageWidget.append(self.LEImag) - def setValeurs(self): - self.politique=PolitiqueUnique(self.node,self.editor) - valeur=self.node.item.getValeur() - if valeur == None or valeur == '' : return - if type(valeur) not in (list,tuple) : - self.LEComp.setText(str(valeur)) - else : - typ_cplx,x1,x2=valeur - self.LEReel.setText(str(x1)) - self.LEImag.setText(str(x2)) - if typ_cplx == "RI" : - self.RBRI.setChecked(1) - else : - self.RBMP.setChecked(1) - - def LECompRPressed(self) : + def setValeurs(self): + self.politique=PolitiqueUnique(self.node,self.editor) + valeur=self.node.item.getValeur() + if valeur == None or valeur == '' : return + if type(valeur) not in (list,tuple) : + self.LEComp.setText(str(valeur)) + else : + typ_cplx,x1,x2=valeur + self.LEReel.setText(str(x1)) + self.LEImag.setText(str(x2)) + if typ_cplx == "RI" : + self.RBRI.setChecked(1) + else : + self.RBMP.setChecked(1) + + def LECompRPressed(self) : self.LEReel.clear() self.LEImag.clear() commentaire=tr("expression valide") valeur = str(self.LEComp.text()) d={} try : - v=eval(valeur,d) + v=eval(valeur,d) except : - commentaire=tr("expression invalide") - self.editor.afficheInfos(commentaire,Qt.red) - return + commentaire=tr("expression invalide") + self.editor.afficheInfos(commentaire,Qt.red) + return try : - i=v.imag - self.editor.afficheInfos(commentaire) - self.valeurPressed() + i=v.imag + self.editor.afficheInfos(commentaire) + self.valeurPressed() except : - commentaire=tr("l expression n est pas de la forme a+bj") - self.editor.afficheInfos(commentaire,Qt.red) + commentaire=tr("l expression n est pas de la forme a+bj") + self.editor.afficheInfos(commentaire,Qt.red) - def LEReelRPressed(self): + def LEReelRPressed(self): self.LEComp.clear() commentaire=tr("expression valide") valeur = str(self.LEReel.text()) try : - a=locale.atof(valeur) - self.editor.afficheInfos(commentaire) + a=locale.atof(valeur) + self.editor.afficheInfos(commentaire) except : - commentaire=tr("expression invalide") - self.editor.afficheInfos(commentaire,Qt.red) + commentaire=tr("expression invalide") + self.editor.afficheInfos(commentaire,Qt.red) if self.LEImag.text()!="" : self.valeurPressed() - def LEImagRPressed(self): + def LEImagRPressed(self): self.LEComp.clear() commentaire=tr("expression valide") valeur = str(self.LEImag.text()) try : - a=locale.atof(valeur) - self.editor.afficheInfos(commentaire) + a=locale.atof(valeur) + self.editor.afficheInfos(commentaire) except : - commentaire=tr("expression invalide") - self.editor.afficheInfos(commentaire,Qt.red) + commentaire=tr("expression invalide") + self.editor.afficheInfos(commentaire,Qt.red) if self.LEReel.text()!="" : self.valeurPressed() - def finCommentaire(self): - commentaire="valeur de type complexe" - return commentaire + def finCommentaire(self): + commentaire="valeur de type complexe" + return commentaire - def getValeurComp(self): + def getValeurComp(self): commentaire=tr("expression valide") valeur = str(self.LEComp.text()) d={} try : - v=eval(valeur,d) + v=eval(valeur,d) except : - commentaire=tr("expression invalide") - self.editor.afficheInfos(commentaire,Qt.red) - return None + commentaire=tr("expression invalide") + self.editor.afficheInfos(commentaire,Qt.red) + return None try : - i=v.imag + i=v.imag except : - commentaire=tr("expression n est pas de la forme a+bj") - self.editor.afficheInfos(commentaire,Qt.red) - return None + commentaire=tr("expression n est pas de la forme a+bj") + self.editor.afficheInfos(commentaire,Qt.red) + return None return v - def valeurPressed(self): - if self.LEComp.text()== "" and (self.LEReel.text()=="" or self.LEImag.text()=="") : - return - if self.LEComp.text()== "" : valeur = self.getValeurRI() - else : - if self.LEReel.text() != "" or self.LEImag.text() != "" : - commentaire=tr("entrer une seule valeur SVP") - self.editor.afficheInfos(commentaire,Qt.red) - return - valeur= self.getValeurComp() - self.politique.recordValeur(valeur) - self.reaffiche() - self.parentQt.donneFocus() - - def getValeurRI(self): - """ - Retourne le complexe saisi par l'utilisateur - """ - l=[] - if (self.RBMP.isChecked() == 1 ) : - l.append("MP") - elif (self.RBRI.isChecked() == 1) : - l.append("RI") - else : - commentaire=tr("saisir le type de complexe") - self.editor.afficheInfos(commentaire,Qt.red) - return None - try : - l.append(locale.atof(str(self.LEReel.text()))) - l.append(locale.atof(str(self.LEImag.text()))) - except : - return None - return repr(tuple(l)) - - + def valeurPressed(self): + if self.LEComp.text()== "" and (self.LEReel.text()=="" or self.LEImag.text()=="") : + return + if self.LEComp.text()== "" : valeur = self.getValeurRI() + else : + if self.LEReel.text() != "" or self.LEImag.text() != "" : + commentaire=tr("entrer une seule valeur SVP") + self.editor.afficheInfos(commentaire,Qt.red) + return + valeur= self.getValeurComp() + self.politique.recordValeur(valeur) + self.reaffiche() + self.parentQt.donneFocus() + + def getValeurRI(self): + """ + Retourne le complexe saisi par l'utilisateur + """ + l=[] + if (self.RBMP.isChecked() == 1 ) : + l.append("MP") + elif (self.RBRI.isChecked() == 1) : + l.append("RI") + else : + commentaire=tr("saisir le type de complexe") + self.editor.afficheInfos(commentaire,Qt.red) + return None + try : + l.append(locale.atof(str(self.LEReel.text()))) + l.append(locale.atof(str(self.LEImag.text()))) + except : + return None + return repr(tuple(l)) diff --git a/InterfaceQT4/monWidgetSimpFichier.py b/InterfaceQT4/monWidgetSimpFichier.py index 80970e1c..fe93c4f2 100644 --- a/InterfaceQT4/monWidgetSimpFichier.py +++ b/InterfaceQT4/monWidgetSimpFichier.py @@ -26,19 +26,18 @@ from PyQt5.QtGui import QIcon from PyQt5.QtCore import QSize from Extensions.i18n import tr -from desWidgetSimpFichier import Ui_WidgetSimpFichier +from desWidgetSimpFichier import Ui_WidgetSimpFichier from .monWidgetSimpBase import MonWidgetSimpBase class MonWidgetSimpFichier (Ui_WidgetSimpFichier,MonWidgetSimpBase): # c est juste la taille des differents widgets de base qui change - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetSimpBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if sys.platform[0:5]!="linux" : - repIcon=self.node.editor.appliEficas.repIcon - fichier=os.path.join(repIcon, 'file-explorer.png') - icon = QIcon(fichier) - self.BFichier.setIcon(icon) - self.BFichier.setIconSize(QSize(32, 32)) - + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'file-explorer.png') + icon = QIcon(fichier) + self.BFichier.setIcon(icon) + self.BFichier.setIconSize(QSize(32, 32)) diff --git a/InterfaceQT4/monWidgetSimpSalome.py b/InterfaceQT4/monWidgetSimpSalome.py index af575fd9..f05a764c 100644 --- a/InterfaceQT4/monWidgetSimpSalome.py +++ b/InterfaceQT4/monWidgetSimpSalome.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str + from builtins import str except : pass import types,os @@ -33,14 +33,14 @@ from PyQt5.QtCore import Qt from Extensions.i18n import tr from .feuille import Feuille -from desWidgetSimpSalome import Ui_WidgetSimpSalome +from desWidgetSimpSalome import Ui_WidgetSimpSalome from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieValeur class MonWidgetSimpSalome (Ui_WidgetSimpSalome,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.parentQt.commandesLayout.insertWidget(-1,self,1) self.setFocusPolicy(Qt.StrongFocus) @@ -50,14 +50,14 @@ class MonWidgetSimpSalome (Ui_WidgetSimpSalome,Feuille): self.maCommande.listeAffichageWidget.append(self.lineEditVal) - def LEvaleurPressed(self): - if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return - SaisieValeur.LEvaleurPressed(self) - self.parentQt.donneFocus() - self.setValeurs() - self.reaffiche() + def LEvaleurPressed(self): + if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return + SaisieValeur.LEvaleurPressed(self) + self.parentQt.donneFocus() + self.setValeurs() + self.reaffiche() - def setValeurs(self): - valeur=self.node.item.getValeur() - if valeur != None : self.lineEditVal.setText(str(valeur)) + def setValeurs(self): + valeur=self.node.item.getValeur() + if valeur != None : self.lineEditVal.setText(str(valeur)) diff --git a/InterfaceQT4/monWidgetSimpTuple.py b/InterfaceQT4/monWidgetSimpTuple.py index 792df7d9..931ced8f 100644 --- a/InterfaceQT4/monWidgetSimpTuple.py +++ b/InterfaceQT4/monWidgetSimpTuple.py @@ -20,8 +20,8 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os @@ -38,63 +38,61 @@ from InterfaceQT4.qtSaisie import SaisieValeur class MonWidgetSimpTuple(Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) self.parentQt.commandesLayout.insertWidget(-1,self) self.setFocusPolicy(Qt.StrongFocus) - def setValeurs(self): - valeur=self.node.item.getValeur() - for i in range(self.nbValeurs) : - nomLineEdit="lineEditVal"+str(i+1) - courant=getattr(self,nomLineEdit) - if valeur !=None: courant.setText(str(valeur[i])) - setattr(self,nomLineEdit,courant) - courant.returnPressed.connect(self.valeursPressed) + def setValeurs(self): + valeur=self.node.item.getValeur() + for i in range(self.nbValeurs) : + nomLineEdit="lineEditVal"+str(i+1) + courant=getattr(self,nomLineEdit) + if valeur !=None: courant.setText(str(valeur[i])) + setattr(self,nomLineEdit,courant) + courant.returnPressed.connect(self.valeursPressed) - def valeursPressed(self): - aLeFocus=self.focusWidget() - self.editor.afficheInfos("") - texteValeur="" - for i in range(self.nbValeurs) : - nomLineEdit="lineEditVal"+str(i+1) - courant=getattr(self,nomLineEdit) - if courant.text()=="" or courant.text()==None : - courant.setFocus(True) - return - s=str(courant.text()) - if hasattr(self.objSimp.definition.validators, 'typeDesTuples'): - if self.objSimp.definition.validators.typeDesTuples[i] == "R" : - if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : - s=s+'.0' - courant.setText(s) - if self.objSimp.definition.validators.typeDesTuples[i] == "TXM" : - if s[0]!='"' and s[0] != "'": - if s[-1]=="'": s="'"+s - else : s='"'+s - if s[-1]!='"' and s[-1] != "'": - if s[0]=="'": s=s+"'" - else : s=s+'"' - courant.setText(s) - texteValeur+=str(courant.text()) - #print (texteValeur) - if i+1 != self.nbValeurs : texteValeur+=',' - validite,commentaire=self.politique.recordValeur(texteValeur) - if not validite:self.editor.afficheInfos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red) + def valeursPressed(self): + aLeFocus=self.focusWidget() + self.editor.afficheInfos("") + texteValeur="" + for i in range(self.nbValeurs) : + nomLineEdit="lineEditVal"+str(i+1) + courant=getattr(self,nomLineEdit) + if courant.text()=="" or courant.text()==None : + courant.setFocus(True) + return + s=str(courant.text()) + if hasattr(self.objSimp.definition.validators, 'typeDesTuples'): + if self.objSimp.definition.validators.typeDesTuples[i] == "R" : + if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : + s=s+'.0' + courant.setText(s) + if self.objSimp.definition.validators.typeDesTuples[i] == "TXM" : + if s[0]!='"' and s[0] != "'": + if s[-1]=="'": s="'"+s + else : s='"'+s + if s[-1]!='"' and s[-1] != "'": + if s[0]=="'": s=s+"'" + else : s=s+'"' + courant.setText(s) + texteValeur+=str(courant.text()) + #print (texteValeur) + if i+1 != self.nbValeurs : texteValeur+=',' + validite,commentaire=self.politique.recordValeur(texteValeur) + if not validite:self.editor.afficheInfos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red) - # Passage au champ suivant - nom=aLeFocus.objectName()[11:] - try : - i=int(nom)+1 - except : + # Passage au champ suivant + nom=aLeFocus.objectName()[11:] try : - i=i+1 + i=int(nom)+1 except : - return - if i == self.nbValeurs +1 : i=1 - nomLineEdit="lineEditVal"+str(i) - courant=getattr(self,nomLineEdit) - courant.setFocus(True) - - + try : + i=i+1 + except : + return + if i == self.nbValeurs +1 : i=1 + nomLineEdit="lineEditVal"+str(i) + courant=getattr(self,nomLineEdit) + courant.setFocus(True) diff --git a/InterfaceQT4/monWidgetSimpTuple3.py b/InterfaceQT4/monWidgetSimpTuple3.py index e805c2b0..cc05928e 100644 --- a/InterfaceQT4/monWidgetSimpTuple3.py +++ b/InterfaceQT4/monWidgetSimpTuple3.py @@ -27,27 +27,26 @@ import types,os from Extensions.i18n import tr from .feuille import Feuille -from .monWidgetSimpTuple import MonWidgetSimpTuple -from desWidgetTuple3 import Ui_WidgetTuple3 +from .monWidgetSimpTuple import MonWidgetSimpTuple +from desWidgetTuple3 import Ui_WidgetTuple3 class MonWidgetSimpTuple3 (Ui_WidgetTuple3,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=3 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if self.objSimp.isImmuable() : - self.lineEditVal1.setDisabled(True) - self.lineEditVal2.setDisabled(True) - self.lineEditVal3.setDisabled(True) - self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal3.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal3.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal1.setDisabled(True) + self.lineEditVal2.setDisabled(True) + self.lineEditVal3.setDisabled(True) + self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal3.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal3.setToolTip(tr("Valeur non modifiable")) else : - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) #self.maCommande.listeAffichageWidget.append(self.lineEditVal2) #self.maCommande.listeAffichageWidget.append(self.lineEditVal3) - diff --git a/InterfaceQT4/monWidgetSimpTupleN.py b/InterfaceQT4/monWidgetSimpTupleN.py index 10eb8092..b6385fab 100644 --- a/InterfaceQT4/monWidgetSimpTupleN.py +++ b/InterfaceQT4/monWidgetSimpTupleN.py @@ -27,77 +27,77 @@ import types,os from Extensions.i18n import tr from InterfaceQT4.feuille import Feuille -from InterfaceQT4.monWidgetSimpTuple import MonWidgetSimpTuple -from desWidgetTuple2 import Ui_WidgetTuple2 -from desWidgetTuple3 import Ui_WidgetTuple3 -from desWidgetTuple4 import Ui_WidgetTuple4 -from desWidgetTuple5 import Ui_WidgetTuple5 -from desWidgetTuple6 import Ui_WidgetTuple6 -from desWidgetTuple7 import Ui_WidgetTuple7 -from desWidgetTuple8 import Ui_WidgetTuple8 -from desWidgetTuple9 import Ui_WidgetTuple9 +from InterfaceQT4.monWidgetSimpTuple import MonWidgetSimpTuple +from desWidgetTuple2 import Ui_WidgetTuple2 +from desWidgetTuple3 import Ui_WidgetTuple3 +from desWidgetTuple4 import Ui_WidgetTuple4 +from desWidgetTuple5 import Ui_WidgetTuple5 +from desWidgetTuple6 import Ui_WidgetTuple6 +from desWidgetTuple7 import Ui_WidgetTuple7 +from desWidgetTuple8 import Ui_WidgetTuple8 +from desWidgetTuple9 import Ui_WidgetTuple9 from desWidgetTuple10 import Ui_WidgetTuple10 class MonWidgetSimpTuple2 (Ui_WidgetTuple2,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=2 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if self.objSimp.isImmuable() : - self.lineEditVal1.setDisabled(True) - self.lineEditVal2.setDisabled(True) - self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal1.setDisabled(True) + self.lineEditVal2.setDisabled(True) + self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) else : - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) - + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + class MonWidgetSimpTuple3 (Ui_WidgetTuple3,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=3 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) if self.objSimp.isImmuable() : - self.lineEditVal1.setDisabled(True) - self.lineEditVal2.setDisabled(True) - self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") - self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) - self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal1.setDisabled(True) + self.lineEditVal2.setDisabled(True) + self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n") + self.lineEditVal1.setToolTip(tr("Valeur non modifiable")) + self.lineEditVal2.setToolTip(tr("Valeur non modifiable")) else : - self.maCommande.listeAffichageWidget.append(self.lineEditVal1) - + self.maCommande.listeAffichageWidget.append(self.lineEditVal1) + class MonWidgetSimpTuple4 (Ui_WidgetTuple4,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=4 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple5 (Ui_WidgetTuple5,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=5 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple6 (Ui_WidgetTuple6,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=6 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple7 (Ui_WidgetTuple7,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=7 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple8 (Ui_WidgetTuple8,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=8 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple9 (Ui_WidgetTuple9,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=9 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - + class MonWidgetSimpTuple10 (Ui_WidgetTuple10,MonWidgetSimpTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=10 MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) diff --git a/InterfaceQT4/monWidgetSimpTxt.py b/InterfaceQT4/monWidgetSimpTxt.py index ca0cb7fe..8a7aa7fe 100644 --- a/InterfaceQT4/monWidgetSimpTxt.py +++ b/InterfaceQT4/monWidgetSimpTxt.py @@ -24,14 +24,12 @@ import types,os # Modules Eficas from Extensions.i18n import tr -from desWidgetSimpTxt import Ui_WidgetSimpTxt +from desWidgetSimpTxt import Ui_WidgetSimpTxt from .monWidgetSimpBase import MonWidgetSimpBase class MonWidgetSimpTxt (Ui_WidgetSimpTxt,MonWidgetSimpBase): # c est juste la taille des differents widgets de base qui change - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetSimpBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - - diff --git a/InterfaceQT4/monWidgetTableau.py b/InterfaceQT4/monWidgetTableau.py index 5a0bc061..60a99b02 100644 --- a/InterfaceQT4/monWidgetTableau.py +++ b/InterfaceQT4/monWidgetTableau.py @@ -27,7 +27,7 @@ from PyQt5.QtWidgets import QLabel, QSizePolicy, QSpacerItem from PyQt5.QtCore import QSize from InterfaceQT4.feuille import Feuille -from InterfaceQT4.monWidgetPlusieursTuple import MonWidgetPlusieursTuple +from InterfaceQT4.monWidgetPlusieursTuple import MonWidgetPlusieursTuple from desWidgetPlusieursTuple import Ui_WidgetPlusieursTuple from desWidgetTableau import Ui_WidgetTableau @@ -35,7 +35,7 @@ maxLen=3 class MonWidgetTableau (Ui_WidgetTableau,MonWidgetPlusieursTuple): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): self.nbValeurs=len(monSimpDef.homo) MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) @@ -43,7 +43,7 @@ class MonWidgetTableau (Ui_WidgetTableau,MonWidgetPlusieursTuple): sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - + for i in range(len(monSimpDef.homo)): nomCol='LECol'+str(i+1) objCol=QLabel(self) @@ -58,16 +58,15 @@ class MonWidgetTableau (Ui_WidgetTableau,MonWidgetPlusieursTuple): # monObjTitreCol=getattr(self,nomCol) # monObjTitreCol.setText(monSimpDef.homo[i]) - + # for i in range(maxLen-len(monSimpDef.homo)): # index=i+len(monSimpDef.homo)+1 # nomCol='LECol'+str(index) # monObjTitreCol=getattr(self,nomCol) # monObjTitreCol.close() - - self.resize(self.width(),1800) - def ajoutLineEdit(self,valeur=None,inInit=False): - hauteurAvant=(self.frame.height()) - MonWidgetPlusieursTuple.ajoutLineEdit(self,valeur,inInit) + self.resize(self.width(),1800) + def ajoutLineEdit(self,valeur=None,inInit=False): + hauteurAvant=(self.frame.height()) + MonWidgetPlusieursTuple.ajoutLineEdit(self,valeur,inInit) diff --git a/InterfaceQT4/monWidgetUniqueSDCO.py b/InterfaceQT4/monWidgetUniqueSDCO.py index 3d733331..d49a5400 100644 --- a/InterfaceQT4/monWidgetUniqueSDCO.py +++ b/InterfaceQT4/monWidgetUniqueSDCO.py @@ -27,7 +27,7 @@ from PyQt4.QtCore import * from Extensions.i18n import tr from .feuille import Feuille -from desWidgetUniqueSDCO import Ui_WidgetUniqueSDCO +from desWidgetUniqueSDCO import Ui_WidgetUniqueSDCO from .politiquesValidation import PolitiqueUnique from .qtSaisie import SaisieSDCO @@ -36,7 +36,7 @@ from .qtSaisie import SaisieSDCO class MonWidgetUniqueSDCO (Ui_WidgetUniqueSDCO,Feuille,SaisieSDCO): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): #print "dans MonWidgetSDCO" Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) @@ -47,4 +47,3 @@ class MonWidgetUniqueSDCO (Ui_WidgetUniqueSDCO,Feuille,SaisieSDCO): valeur = self.node.item.getValeur() if valeur != "" and valeur != None : self.LESDCO.setText(valeur.nom) self.connect(self.LESDCO,SIGNAL("returnPressed()"),self.LESDCOReturnPressed) - diff --git a/InterfaceQT4/monWidgetVide.py b/InterfaceQT4/monWidgetVide.py index 1fb2e720..9957d0eb 100644 --- a/InterfaceQT4/monWidgetVide.py +++ b/InterfaceQT4/monWidgetVide.py @@ -25,13 +25,13 @@ import types,os from Extensions.i18n import tr from .feuille import Feuille -from desWidgetVide import Ui_WidgetVide +from desWidgetVide import Ui_WidgetVide from InterfaceQT4.politiquesValidation import PolitiqueUnique class MonWidgetVide (Ui_WidgetVide,Feuille): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) self.politique=PolitiqueUnique(self.node,self.editor) t=self.node.item.object.definition.type[0].__name__ diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index 83c2dab7..1d0dac57 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -20,7 +20,7 @@ # Modules Python from __future__ import absolute_import try : - from builtins import range + from builtins import range except : pass import types @@ -31,266 +31,264 @@ from Extensions.i18n import tr #------------------ class Validation(object) : #------------------ - def __init__(self,node,parent) : - self.node=node - self.parent=parent - + def __init__(self,node,parent) : + self.node=node + self.parent=parent - def testeUneValeur(self,valeurentree): - commentaire = None - #import traceback - #traceback.print_stack() - valeur,validite=self.node.item.evalValeur(valeurentree) - if not validite : - commentaire = "impossible d'evaluer : %s " %repr(valeurentree) - return valeur,validite,commentaire - if self.node.item.waitTxm() and not( type(valeur) == str) : valeur=str(valeur) - testtype,commentaire = self.node.item.object.verifType(valeur) - if not testtype : - return valeur,0,commentaire + def testeUneValeur(self,valeurentree): + commentaire = None + #import traceback + #traceback.print_stack() + valeur,validite=self.node.item.evalValeur(valeurentree) + if not validite : + commentaire = "impossible d'evaluer : %s " %repr(valeurentree) + return valeur,validite,commentaire + if self.node.item.waitTxm() and not( type(valeur) == str) : valeur=str(valeur) - valide=self.node.item.valideItem(valeur) - if type(valide) == tuple: - validite,commentaire=valide - else : - validite=valide - commentaire=" " + testtype,commentaire = self.node.item.object.verifType(valeur) + if not testtype : + return valeur,0,commentaire - if not validite and commentaire is None: - commentaire = "impossible d'evaluer : %s " %repr(valeurentree) - #print ('ds testeUneValeur', valeur, validite, commentaire) - return valeur, validite, commentaire + valide=self.node.item.valideItem(valeur) + if type(valide) == tuple: + validite,commentaire=valide + else : + validite=valide + commentaire=" " + + if not validite and commentaire is None: + commentaire = "impossible d'evaluer : %s " %repr(valeurentree) + #print ('ds testeUneValeur', valeur, validite, commentaire) + return valeur, validite, commentaire # ---------------------------------------------------------------------------------------- # Methodes utilisees pour la manipulation des items en notation scientifique # a mettre au point # ---------------------------------------------------------------------------------------- - def setValeurTexte(self,texteValeur) : - try : - if "R" in self.node.item.object.definition.type: - if texteValeur[0] != "'": - clef=eval(texteValeur) - if str(clef) != str(texteValeur) : - self.node.item.object.initModif() - clefobj=self.node.item.object.getNomConcept() - if not clefobj in self.parent.appliEficas.dict_reels: - self.parent.appliEficas.dict_reels[clefobj] = {} - self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur - self.parent.appliEficas.dict_reels[clefobj] - if clefobj=="" : - if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : - self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} - self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur - self.node.item.object.finModif() - except: + def setValeurTexte(self,texteValeur) : + try : + if "R" in self.node.item.object.definition.type: + if texteValeur[0] != "'": + clef=eval(texteValeur) + if str(clef) != str(texteValeur) : + self.node.item.object.initModif() + clefobj=self.node.item.object.getNomConcept() + if not clefobj in self.parent.appliEficas.dict_reels: + self.parent.appliEficas.dict_reels[clefobj] = {} + self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur + self.parent.appliEficas.dict_reels[clefobj] + if clefobj=="" : + if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : + self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} + self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur + self.node.item.object.finModif() + except: pass - def getValeurTexte(self,valeur) : - valeurTexte=valeur - if valeur == None : return valeur - from decimal import Decimal - if isinstance(valeur,Decimal) : - if self.node.waitTxm() and not self.isParam(valeur) : return "'"+str(valeur)+"'" - else : return(valeur) - if "R" in self.node.item.object.definition.type: - clefobj=self.node.item.object.getNomConcept() - if clefobj in self.parent.appliEficas.dict_reels: - if valeur in self.parent.appliEficas.dict_reels[clefobj] : - valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur] - else : - if str(valeur).find('.') == -1 and str(valeur).find('e') == -1 and str(valeur).find('E'): - # aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin - if (self.isParam(valeur)): - return valeur - else: - try : + def getValeurTexte(self,valeur) : + valeurTexte=valeur + if valeur == None : return valeur + from decimal import Decimal + if isinstance(valeur,Decimal) : + if self.node.waitTxm() and not self.isParam(valeur) : return "'"+str(valeur)+"'" + else : return(valeur) + if "R" in self.node.item.object.definition.type: + clefobj=self.node.item.object.getNomConcept() + if clefobj in self.parent.appliEficas.dict_reels: + if valeur in self.parent.appliEficas.dict_reels[clefobj] : + valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur] + else : + if str(valeur).find('.') == -1 and str(valeur).find('e') == -1 and str(valeur).find('E'): + # aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin + if (self.isParam(valeur)): + return valeur + else: + try : val2=eval(str(valeur)+'.') - except : + except : pass - return valeurTexte + return valeurTexte - def isParam(self,valeur) : - for param in self.node.item.jdc.params: - if ((repr(param) == repr(valeur)) or (str(param)==str(valeur))): - return 1 - return 0 + def isParam(self,valeur) : + for param in self.node.item.jdc.params: + if ((repr(param) == repr(valeur)) or (str(param)==str(valeur))): + return 1 + return 0 - def ajoutDsDictReel(self,texteValeur): - # le try except est necessaire pour saisir les parametres - # on enleve l erreur de saisie 00 pour 0 - if str(texteValeur)== '00' : return - try : + def ajoutDsDictReel(self,texteValeur): + # le try except est necessaire pour saisir les parametres + # on enleve l erreur de saisie 00 pour 0 + if str(texteValeur)== '00' : return + try : if "R" in self.node.item.object.definition.type: if str(texteValeur)[0] != "'": - clef=eval(texteValeur) - if str(clef) != str(texteValeur) : - clefobj=self.node.item.object.getNomConcept() - if not clefobj in self.parent.appliEficas : - self.parent.appliEficas.dict_reels[clefobj] = {} - self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur - if clefobj=="" : - if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : - self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} - self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur - - except: - pass + clef=eval(texteValeur) + if str(clef) != str(texteValeur) : + clefobj=self.node.item.object.getNomConcept() + if not clefobj in self.parent.appliEficas : + self.parent.appliEficas.dict_reels[clefobj] = {} + self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur + if clefobj=="" : + if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : + self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} + self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur - def ajoutDsDictReelEtape(self): - try: - if self.node.item.object in self.parent.appliEficas.dict_reels: - self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object] - del self.parent.appliEficas.dict_reels[self.node.item.object] - except : - pass + except: + pass + + def ajoutDsDictReelEtape(self): + try: + if self.node.item.object in self.parent.appliEficas.dict_reels: + self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object] + del self.parent.appliEficas.dict_reels[self.node.item.object] + except : + pass #------------------------------------ class PolitiqueUnique(Validation) : #------------------------------------ - """ - classe servant pour les entrees ne demandant qu un mot clef - """ - def __init__(self,node,parent): + """ + classe servant pour les entrees ne demandant qu un mot clef + """ + def __init__(self,node,parent): Validation.__init__(self,node,parent) - def recordValeur(self,valeurentree): - if self.parent.modified == 'n' : self.parent.initModif() - ancienneVal = self.node.item.getValeur() - valeur,validite,commentaire =self.testeUneValeur(valeurentree) - if validite and ('R' in self.node.item.object.definition.type) and not(isinstance(valeur,PARAMETRE)) : + def recordValeur(self,valeurentree): + if self.parent.modified == 'n' : self.parent.initModif() + ancienneVal = self.node.item.getValeur() + valeur,validite,commentaire =self.testeUneValeur(valeurentree) + if validite and ('R' in self.node.item.object.definition.type) and not(isinstance(valeur,PARAMETRE)) : s=valeurentree if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : s=s+'.' valeur,validite,commentaire =self.testeUneValeur(s) - if validite : + if validite : validite=self.node.item.setValeur(valeur) if self.node.item.isValid(): - commentaire = tr("Valeur du mot-cle enregistree") - #commentaire = "Valeur du mot-cle enregistree" - self.setValeurTexte(str(valeurentree)) + commentaire = tr("Valeur du mot-cle enregistree") + #commentaire = "Valeur du mot-cle enregistree" + self.setValeurTexte(str(valeurentree)) else: - cr = self.node.item.getCr() - commentaire = tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal() - self.node.item.setValeur(ancienneVal) - return validite, commentaire + cr = self.node.item.getCr() + commentaire = tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal() + self.node.item.setValeur(ancienneVal) + return validite, commentaire + - #-------------------------------------- class PolitiquePlusieurs(Validation): #-------------------------------------- - """ - classe servant pour les entrees ne demandant qu un mot clef - """ - def __init__(self,node,parent) : - #print "ds PolitiquePlusieurs" - self.node=node - self.parent=parent - #print self.node - #print self.parent + """ + classe servant pour les entrees ne demandant qu un mot clef + """ + def __init__(self,node,parent) : + #print "ds PolitiquePlusieurs" + self.node=node + self.parent=parent + #print self.node + #print self.parent - def ajoutValeurs(self,listevaleur,index,listecourante): - listeRetour=[] - commentaire="Nouvelle valeur acceptee" - commentaire2="" - valide=1 - if listevaleur==None: return - if listevaleur=="": return - if not( type(listevaleur) in (list,tuple)) : + def ajoutValeurs(self,listevaleur,index,listecourante): + listeRetour=[] + commentaire="Nouvelle valeur acceptee" + commentaire2="" + valide=1 + if listevaleur==None: return + if listevaleur=="": return + if not( type(listevaleur) in (list,tuple)) : listevaleur=tuple(listevaleur) - # on verifie que la cardinalite max n a pas ete atteinte - min,max = self.node.item.getMinMax() - if len(listecourante) + len(listevaleur) > max : + # on verifie que la cardinalite max n a pas ete atteinte + min,max = self.node.item.getMinMax() + if len(listecourante) + len(listevaleur) > max : commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse" return False,commentaire,commentaire2,listeRetour - for valeur in listevaleur : - # On teste le type de la valeur - valeurScientifique=valeur - valide=self.node.item.valideItem(valeur) - if not valide : + for valeur in listevaleur : + # On teste le type de la valeur + valeurScientifique=valeur + valide=self.node.item.valideItem(valeur) + if not valide : try : - valeur,valide=self.node.item.evalValeur(valeur) - valide,commentaire2 = self.node.item.object.verifType(valeur) + valeur,valide=self.node.item.evalValeur(valeur) + valide,commentaire2 = self.node.item.object.verifType(valeur) except : - #return testtype,commentaire,"",listeRetour - pass - if not valide: + #return testtype,commentaire,"",listeRetour + pass + if not valide: if commentaire.find("On attend un chaine") > 1 : - commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse: On attend une chaine de caracteres < 8" + commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse: On attend une chaine de caracteres < 8" else : - commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse" + commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse" if commentaire2== "" :commentaire2=self.node.item.infoErreurItem() return valide,commentaire,commentaire2,listeRetour - # On valide la liste obtenue - encorevalide=self.node.item.valideListePartielle(valeur,listecourante) - if not encorevalide : + # On valide la liste obtenue + encorevalide=self.node.item.valideListePartielle(valeur,listecourante) + if not encorevalide : commentaire2=self.node.item.infoErreurListe() # On traite le cas ou la liste n est pas valide pour un pb de cardinalite min,max = self.node.item.getMinMax() if len(listecourante) + 1 >= max : - commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse" - return valide,commentaire,commentaire2,listeRetour + commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse" + return valide,commentaire,commentaire2,listeRetour if len(listecourante) + 1 > min : - commentaire="" - return valide,commentaire,commentaire2,listeRetour - # On ajoute la valeur testee a la liste courante et a la liste acceptee - self.ajoutDsDictReel(valeurScientifique) - listecourante.insert(index,valeur) - index=index+1 - listeRetour.append(valeur) + commentaire="" + return valide,commentaire,commentaire2,listeRetour + # On ajoute la valeur testee a la liste courante et a la liste acceptee + self.ajoutDsDictReel(valeurScientifique) + listecourante.insert(index,valeur) + index=index+1 + listeRetour.append(valeur) - return valide,commentaire,commentaire2,listeRetour + return valide,commentaire,commentaire2,listeRetour - def ajoutTuple(self,valeurTuple,listecourante): - listeRetour=[] - commentaire="Nouvelle valeur acceptee" - commentaire2="" - valide=1 - if valeurTuple==None: return - if valeurTuple==['']: return - # On teste le type de la valeur - valide=self.node.item.valideItem(valeurTuple) - if not valide : + def ajoutTuple(self,valeurTuple,listecourante): + listeRetour=[] + commentaire="Nouvelle valeur acceptee" + commentaire2="" + valide=1 + if valeurTuple==None: return + if valeurTuple==['']: return + # On teste le type de la valeur + valide=self.node.item.valideItem(valeurTuple) + if not valide : try : valeur,valide=self.node.item.evalValeur(valeurTuple) valide = self.node.item.valideItem(valeur) except : pass - if not valide: + if not valide: commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout a la liste refuse" commentaire2=self.node.item.infoErreurItem() return valide,commentaire,commentaire2,listeRetour - # On valide la liste obtenue - encorevalide=self.node.item.valideListePartielle(valeurTuple,listecourante) - if not encorevalide : + # On valide la liste obtenue + encorevalide=self.node.item.valideListePartielle(valeurTuple,listecourante) + if not encorevalide : commentaire2=self.node.item.infoErreurListe() return valide,commentaire,commentaire2,listeRetour - listeRetour.append(valeurTuple) - return valide,commentaire,commentaire2,listeRetour + listeRetour.append(valeurTuple) + return valide,commentaire,commentaire2,listeRetour - def ajoutNTuple(self,liste): - commentaire="Nouvelles valeurs acceptee" - commentaire2="" - valide=self.node.item.valideListePartielle(None,liste) - print ('uuuuuuuuuuu',valide) - if not valide : + def ajoutNTuple(self,liste): + commentaire="Nouvelles valeurs acceptee" + commentaire2="" + valide=self.node.item.valideListePartielle(None,liste) + print ('uuuuuuuuuuu',valide) + if not valide : commentaire2=self.node.item.infoErreurListe() - return valide,commentaire,commentaire2 + return valide,commentaire,commentaire2 - def recordValeur(self,liste,dejaValide=True): - ancienneVal = self.node.item.getValeur() - validite=self.node.item.setValeur(liste) - if validite : self.node.item.initModif() - if self.node.item.isValid(): + def recordValeur(self,liste,dejaValide=True): + ancienneVal = self.node.item.getValeur() + validite=self.node.item.setValeur(liste) + if validite : self.node.item.initModif() + if self.node.item.isValid(): commentaire = tr("Valeur du mot-cle enregistree") - else: + else: cr = self.node.item.getCr() commentaire = tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal() self.node.item.setValeur(ancienneVal) - return validite, commentaire - - + return validite, commentaire diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index 3347475e..53fd5355 100755 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -22,7 +22,7 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str + from builtins import str except : pass import os, sys @@ -51,9 +51,9 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): """ Constructor """ - if ssIhm == True : - print ('mauvaise utilisation de la classe Appli. Utiliser AppliSsIm SVP') - exit() + if ssIhm == True : + print ('mauvaise utilisation de la classe Appli. Utiliser AppliSsIm SVP') + exit() AppliSsIhm.__init__(self,code,salome,parent,multi=multi,langue=langue,ssIhm=True, labelCode=labelCode) QMainWindow.__init__(self,parent) @@ -65,21 +65,21 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): if self.multi == False : - self.definitCode(code,None) - if code==None: return + self.definitCode(code,None) + if code==None: return else : - self.definitCode(code,None) - if code==None: return - print ('il faut trouver le chemin du code') - return + self.definitCode(code,None) + if code==None: return + print ('il faut trouver le chemin du code') + return self.suiteTelemac=False if hasattr (self, 'maConfiguration') : - if self.maConfiguration.demandeLangue : - from InterfaceQT4.monChoixLangue import MonChoixLangue - widgetLangue = MonChoixLangue(self) - ret=widgetLangue.exec_() - self.suiteTelemac=self.maConfiguration.suiteTelemac + if self.maConfiguration.demandeLangue : + from InterfaceQT4.monChoixLangue import MonChoixLangue + widgetLangue = MonChoixLangue(self) + ret=widgetLangue.exec_() + self.suiteTelemac=self.maConfiguration.suiteTelemac if not self.salome and hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'lang') : self.langue=self.maConfiguration.lang @@ -92,22 +92,22 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): #else : self.parentCentralWidget = None if not self.salome : - if hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'taille') : self.taille=self.maConfiguration.taille - else : self.taille=1700 + if hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'taille') : self.taille=self.maConfiguration.taille + else : self.taille=1700 - self.resize(self.taille,self.height()) + self.resize(self.taille,self.height()) icon = QIcon(self.repIcon+"/parametres.png") self.actionParametres.setIcon(icon) - if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar : - self.frameEntete.setMaximumSize(QSize(16777215,100)) - self.frameEntete.setMinimumSize(QSize(0,100)) - if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverActionStructures : + if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar : + self.frameEntete.setMaximumSize(QSize(16777215,100)) + self.frameEntete.setMinimumSize(QSize(0,100)) + if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverActionStructures : self.enleverActionsStructures() - if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverParametres : + if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverParametres : self.enleverParametres() - if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverSupprimer : + if hasattr (self, 'maConfiguration') and self.maConfiguration.enleverSupprimer : self.enleverSupprimer() @@ -122,15 +122,15 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.blEnteteGlob.insertLayout(0,self.blEntete) - - if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar : + + if hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar : self.blEnteteCommmande = QBoxLayout(0) self.blEnteteCommmande.insertWidget(0,self.toolBarCommande) self.toolBarCommande.setIconSize(QSize(96,96)) self.blEnteteGlob.insertLayout(-1,self.blEnteteCommmande) else : self.toolBarCommande.close() - + if hasattr (self, 'maConfiguration') and self.maConfiguration.closeEntete==True and self.salome: self.closeEntete() @@ -153,11 +153,11 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): try : #if 1 : #print ('attention try devient if 1') - self.ouvreFichiers() + self.ouvreFichiers() except EficasException as exc: #except: - print ("je suis dans le except") - if self.salome == 0 : exit() + print ("je suis dans le except") + if self.salome == 0 : exit() #self.adjustSize() @@ -170,11 +170,11 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.code=code self.ssCode=ssCode if self.code==None : - self.cleanPath() - from InterfaceQT4.monChoixCode import MonChoixCode - widgetChoix = MonChoixCode(self) - ret=widgetChoix.exec_() - #widgetChoix.show() + self.cleanPath() + from InterfaceQT4.monChoixCode import MonChoixCode + widgetChoix = MonChoixCode(self) + ret=widgetChoix.exec_() + #widgetChoix.show() if self.code == None:return # pour le cancel de la fenetre choix code AppliSsIhm.definitCode(self,self.code,ssCode) @@ -191,20 +191,20 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.initRecents() self.initAides() for intituleMenu in ("menuTraduction","menuOptions","menuMesh","menuExecution","menuN1"): - if hasattr(self,intituleMenu): - menu=getattr(self,intituleMenu) - menu.setAttribute(Qt.WA_DeleteOnClose) - menu.close() - delattr(self,intituleMenu) + if hasattr(self,intituleMenu): + menu=getattr(self,intituleMenu) + menu.setAttribute(Qt.WA_DeleteOnClose) + menu.close() + delattr(self,intituleMenu) for intituleAction in ("actionExecution","actionSaveRun"): if hasattr(self,intituleAction): - action=getattr(self,intituleAction) - self.toolBar.removeAction(action) + action=getattr(self,intituleAction) + self.toolBar.removeAction(action) if self.code.upper() in Appli.__dict__: - Appli.__dict__[self.code.upper()](self,) + Appli.__dict__[self.code.upper()](self,) if self.suiteTelemac : self.lookSuiteTelemac() self.metMenuAJourUtilisateurs() - if hasattr (self, 'maConfiguration') and self.maConfiguration.ajoutExecution : + if hasattr (self, 'maConfiguration') and self.maConfiguration.ajoutExecution : self.ajoutExecution() def initAides(self): @@ -217,10 +217,10 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.fileDoc=os.path.join(self.docPath,fileName) self.actionCode.setText(tr("Aide specifique ")+str(self.code)) if not os.path.isfile(self.fileDoc) : - self.fileDoc="" - self.docPath="" - self.actionCode.setEnabled(False) - return + self.fileDoc="" + self.docPath="" + self.actionCode.setEnabled(False) + return self.actionCode.setEnabled(True) self.menuAide.addAction(self.actionCode) @@ -270,14 +270,14 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.menuExecution = self.menubar.addMenu(tr("&Run")) self.actionExecution = QAction(self) if sys.platform[0:5]=="linux": - icon6 = QIcon(self.repIcon+"/roue.png") - self.actionExecution.setIcon(icon6) + icon6 = QIcon(self.repIcon+"/roue.png") + self.actionExecution.setIcon(icon6) else : - self.actionExecution.setText(tr("Run")) + self.actionExecution.setText(tr("Run")) self.actionExecution.setObjectName("actionExecution") self.menuExecution.addAction(self.actionExecution) if not(self.actionExecution in self.toolBar.actions()): - self.toolBar.addAction(self.actionExecution) + self.toolBar.addAction(self.actionExecution) self.actionExecution.setText(tr("Run")) self.actionExecution.triggered.connect(self.run) @@ -288,7 +288,7 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.actionSaveRun.setObjectName("actionSaveRun") self.menuExecution.addAction(self.actionSaveRun) if not(self.actionSaveRun in self.toolBar.actions()): - self.toolBar.addAction(self.actionSaveRun) + self.toolBar.addAction(self.actionSaveRun) self.actionSaveRun.setText(tr("Save Run")) self.actionSaveRun.triggered.connect(self.saveRun) @@ -446,9 +446,9 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): def ChercheGrpMesh(self): Msg,listeGroup=self.ChercheGrpMeshInSalome() if Msg == None : - self.viewmanager.handleAjoutGroup(listeGroup) + self.viewmanager.handleAjoutGroup(listeGroup) else : - print ("il faut gerer les erreurs") + print ("il faut gerer les erreurs") def ChercheGrpMaille(self): # Normalement la variable self.salome permet de savoir si on est ou non dans Salome @@ -458,9 +458,9 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): except: raise ValueError('Salome non ouvert') if Msg == None : - self.viewmanager.handleAjoutGroup(listeGroup) + self.viewmanager.handleAjoutGroup(listeGroup) else : - print ("il faut gerer les erreurs") + print ("il faut gerer les erreurs") def ChercheGrp(self): @@ -650,57 +650,57 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): # Mise a jour du menu des fichiers recemment ouverts from Editeur import listePatrons if not(self.code in listePatrons.sous_menus) : - if hasattr(self,"menuPatrons"): - self.menuPatrons.setAttribute(Qt.WA_DeleteOnClose) - self.menuPatrons.close() - delattr(self,"menuPatrons") - return + if hasattr(self,"menuPatrons"): + self.menuPatrons.setAttribute(Qt.WA_DeleteOnClose) + self.menuPatrons.close() + delattr(self,"menuPatrons") + return if (not hasattr(self,"menuPatrons")): - self.menuPatrons = QMenu(self.menubar) - self.menuPatrons.setObjectName("menuPatrons") - self.menubar.addAction(self.menuPatrons.menuAction()) - self.menuPatrons.setTitle(tr("Patrons")) + self.menuPatrons = QMenu(self.menubar) + self.menuPatrons.setObjectName("menuPatrons") + self.menubar.addAction(self.menuPatrons.menuAction()) + self.menuPatrons.setTitle(tr("Patrons")) else : - self.menuPatrons.clear() + self.menuPatrons.clear() self.listePatrons = listePatrons.listePatrons(self.code) idx = 0 for nomSsMenu in self.listePatrons.liste: ssmenu=self.menuPatrons.addMenu(nomSsMenu) for fichier in self.listePatrons.liste[nomSsMenu]: - id = ssmenu.addAction(fichier) - self.ficPatrons[id]=fichier - self.id.triggered.connect(self.handleOpenPatrons) + id = ssmenu.addAction(fichier) + self.ficPatrons[id]=fichier + self.id.triggered.connect(self.handleOpenPatrons) # self.Patrons.setItemParameter(id,idx) - idx=idx+1 + idx=idx+1 def initRecents(self): - self.recent = [] - try : - #if sys.platform[0:5]=="linux" : - #rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) - rep=os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code) - #else : - # rep=os.path.join('C:/','.config/Eficas',self.code) - monFichier=rep+"/listefichiers_"+self.code - index=0 - f=open(monFichier) - while ( index < 9) : - ligne=f.readline() - if ligne != "" : - l=(ligne.split("\n"))[0] - self.recent.append(l) - index=index+1 - except : - pass - - try : f.close() - except : pass + self.recent = [] + try : + #if sys.platform[0:5]=="linux" : + #rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) + rep=os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code) + #else : + # rep=os.path.join('C:/','.config/Eficas',self.code) + monFichier=rep+"/listefichiers_"+self.code + index=0 + f=open(monFichier) + while ( index < 9) : + ligne=f.readline() + if ligne != "" : + l=(ligne.split("\n"))[0] + self.recent.append(l) + index=index+1 + except : + pass + + try : f.close() + except : pass def addToRecentList(self, fn): - while fn in self.recent: self.recent.remove(fn) - self.recent.insert(0,fn) - if len(self.recent) > 9: - self.recent = self.recent[:9] + while fn in self.recent: self.recent.remove(fn) + self.recent.insert(0,fn) + if len(self.recent) > 9: + self.recent = self.recent[:9] def addToRecentListQT4(self, fn): @@ -717,24 +717,24 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.sauveRecents() def sauveRecents(self) : - try : - rep=self.maConfiguration.rep_user - monFichier=rep+"/listefichiers_"+self.code - except : - return - try : + try : + rep=self.maConfiguration.rep_user + monFichier=rep+"/listefichiers_"+self.code + except : + return + try : f=open(monFichier,'w') if len(self.recent) == 0 : return index=0 while ( index < len(self.recent)): - ligne=str(self.recent[index])+"\n" - f.write(ligne) - index=index+1 - except : + ligne=str(self.recent[index])+"\n" + f.write(ligne) + index=index+1 + except : pass - try : + try : f.close() - except : + except : pass @@ -765,49 +765,49 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): repAide=os.path.dirname(os.path.abspath(__file__)) maD=os.path.join( repAide,'..','Doc') try : - indexAide=os.path.join(maD,'index.html') - if sys.platform[0:5]=="linux" : cmd="xdg-open "+indexAide - else : cmd="start "+indexAide - os.system(cmd) + indexAide=os.path.join(maD,'index.html') + if sys.platform[0:5]=="linux" : cmd="xdg-open "+indexAide + else : cmd="start "+indexAide + os.system(cmd) except: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def aidePSEN(self) : repAide=os.path.dirname(os.path.abspath(__file__)) maD=os.path.join( repAide,'..','Doc') try : - indexAide=os.path.join(maD,'index.html') - if sys.platform[0:5]=="linux" : cmd="xdg-open "+indexAide - else : cmd="start "+indexAide - os.system(cmd) + indexAide=os.path.join(maD,'index.html') + if sys.platform[0:5]=="linux" : cmd="xdg-open "+indexAide + else : cmd="start "+indexAide + os.system(cmd) except: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def aideCode(self) : if self.code==None : return try : #if 1 : - if sys.platform[0:5]=="linux" : cmd="xdg-open "+self.fileDoc - else : cmd="start "+self.fileDoc - os.system(cmd) + if sys.platform[0:5]=="linux" : cmd="xdg-open "+self.fileDoc + else : cmd="start "+self.fileDoc + os.system(cmd) except: #else: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def optionEditeur(self) : try : - name='monOptions_'+self.code + name='monOptions_'+self.code except : - QMessageBox.critical( self,tr( "Parametrage"),tr( "Veuillez d abord choisir un code")) - return + QMessageBox.critical( self,tr( "Parametrage"),tr( "Veuillez d abord choisir un code")) + return try : #if 1: - optionCode=__import__(name) + optionCode=__import__(name) except : #else : - QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration ")) - return + QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration ")) + return monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.maConfiguration) monOption.show() @@ -843,7 +843,7 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.viewmanager.handleOpen(fichier=fichier, patron =0 ) def handleClearRecent(self): - self.recent = [] + self.recent = [] self.sauveRecents() def handleRechercherDsCatalogue(self): @@ -950,32 +950,32 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): def cleanPath(self): for pathCode in self.ListePathCode: try: - aEnlever=os.path.abspath(os.path.join(os.path.dirname(__file__),'..',pathCode)) - sys.path.remove(aEnlever) + aEnlever=os.path.abspath(os.path.join(os.path.dirname(__file__),'..',pathCode)) + sys.path.remove(aEnlever) except : - pass + pass for pathCode in self.listeAEnlever: try: - sys.path.remove(aEnlever) + sys.path.remove(aEnlever) except : - pass + pass def closeEvent(self,event): - res=self.fileExit() - if res==2 : event.ignore() + res=self.fileExit() + if res==2 : event.ignore() + - def remplitIconesCommandes(self): if self.maConfiguration.boutonDsMenuBar == False : return if not hasattr(self, 'readercata') : return from monLayoutBouton import MonLayoutBouton if hasattr(self,'monLayoutBoutonRempli') : return self.monLayoutBoutonRempli=MonLayoutBouton(self) - + def handleAjoutEtape(self,nomEtape): self.viewmanager.handleAjoutEtape(nomEtape) - + def metMenuAJourUtilisateurs(self): self.lesFonctionsUtilisateurs={} if self.code not in self.mesScripts : return @@ -985,12 +985,12 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow): self.menuOptions = self.menubar.addMenu("menuOptions") self.menuOptions.setTitle(tr(titre)) for elt in lesFonctions : - laFonctionUtilisateur, label, lesArguments = elt - action = QAction(self) - action.setText(label) + laFonctionUtilisateur, label, lesArguments = elt + action = QAction(self) + action.setText(label) #action.triggered.connect(self.appelleFonctionUtilisateur) - self.menuOptions.addAction(action) - self.lesFonctionsUtilisateurs[action]=(laFonctionUtilisateur, lesArguments) + self.menuOptions.addAction(action) + self.lesFonctionsUtilisateurs[action]=(laFonctionUtilisateur, lesArguments) self.menuOptions.triggered.connect(self.handleFonctionUtilisateur) diff --git a/InterfaceQT4/qtEficasSsIhm.py b/InterfaceQT4/qtEficasSsIhm.py index f01e6604..2f5dcedf 100755 --- a/InterfaceQT4/qtEficasSsIhm.py +++ b/InterfaceQT4/qtEficasSsIhm.py @@ -22,7 +22,7 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str + from builtins import str except : pass import os, sys @@ -70,24 +70,24 @@ class AppliSsIhm: self.withXSD=session.d_env.withXSD if self.salome: - import Accas - try : - import eficasSalome - Accas.SalomeEntry = eficasSalome.SalomeEntry - except : - print ('eficas hors salome') + import Accas + try : + import eficasSalome + Accas.SalomeEntry = eficasSalome.SalomeEntry + except : + print ('eficas hors salome') self.multi=multi - if self.multi : - print ('pas de multi sans ihm') + if self.multi : + print ('pas de multi sans ihm') if langue=='fr': self.langue=langue else : self.langue="ang" if self.multi == False : - self.definitCode(code,None) - if code==None: return + self.definitCode(code,None) + if code==None: return self.suiteTelemac=False self.viewmanager=MyViewManagerSsIhm(self) @@ -98,33 +98,33 @@ class AppliSsIhm: self.ssCode=ssCode if self.code == None:return # pour le cancel de la fenetre choix code - try : - name='prefs_'+self.code - prefsCode=__import__(name) - self.repIni=prefsCode.repIni - except : - self.repIni=os.path.dirname(os.path.abspath(__file__)) - + try : + name='prefs_'+self.code + prefsCode=__import__(name) + self.repIni=prefsCode.repIni + except : + self.repIni=os.path.dirname(os.path.abspath(__file__)) + if ssCode != None : - self.formatFichierOut = ssCode #par defaut - prefsCode.NAME_SCHEME = ssCode + self.formatFichierOut = ssCode #par defaut + prefsCode.NAME_SCHEME = ssCode else : - self.formatFichierIn = "python" #par defaut - self.formatFichierOut = "python" #par defaut + self.formatFichierIn = "python" #par defaut + self.formatFichierOut = "python" #par defaut nameConf='configuration_'+self.code try : - configuration=__import__(nameConf) - self.maConfiguration = configuration.make_config(self,self.repIni) + configuration=__import__(nameConf) + self.maConfiguration = configuration.make_config(self,self.repIni) except : - from InterfaceQT4.configuration import makeConfig - #self.maConfiguration = configuration.makeConfig(self,prefsCode.repIni) - self.maConfiguration = makeConfig(self,self.repIni) + from InterfaceQT4.configuration import makeConfig + #self.maConfiguration = configuration.makeConfig(self,prefsCode.repIni) + self.maConfiguration = makeConfig(self,self.repIni) if hasattr (self,'maConfiguration') and self.maConfiguration.translatorFichier : - from Extensions import localisation - localisation.localise(None,self.langue,translatorFichier=self.maConfiguration.translatorFichier) + from Extensions import localisation + localisation.localise(None,self.langue,translatorFichier=self.maConfiguration.translatorFichier) if self.withXSD : self.maConfiguration.withXSD=True @@ -138,18 +138,18 @@ class AppliSsIhm: def initEditor(self,fichier = None,jdc = None, units = None,include=0): - if (hasattr(self, 'editor')) and self.editor != None : - print ('un seul editeur par application') - sys.exit() + if (hasattr(self, 'editor')) and self.editor != None : + print ('un seul editeur par application') + sys.exit() self.editor = self.viewmanager.getNewEditorNormal() - + def initEditorNormal(self,fichier = None,jdc = None, units = None,include=0): - if (hasattr(self, 'editor')) and self.editor != None : - print ('un seul editeur par application') - sys.Exit() + if (hasattr(self, 'editor')) and self.editor != None : + print ('un seul editeur par application') + sys.Exit() #self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include) self.editor = self.viewmanager.getNewEditorNormal() - + def fileNew(self): self.editor=self.initEditor() @@ -193,7 +193,7 @@ class AppliSsIhm: #,self.jdcRegles #,self.jdcFichierSource #,self.visuJdcPy - + if __name__=='__main__': diff --git a/InterfaceQT4/qtEficas_with_log.py b/InterfaceQT4/qtEficas_with_log.py index 2eb78021..ef581987 100644 --- a/InterfaceQT4/qtEficas_with_log.py +++ b/InterfaceQT4/qtEficas_with_log.py @@ -31,7 +31,7 @@ from Extensions.i18n import tr from Extensions.eficas_exception import EficasException from Editeur import session -import Accas +import Accas class Appli(Ui_Eficas,QMainWindow): @@ -68,8 +68,8 @@ class Appli(Ui_Eficas,QMainWindow): if langue=='fr': self.langue=langue else : self.langue="ang" if self.multi == False : - self.definitCode(code,ssCode) - if code==None: return + self.definitCode(code,ssCode) + if code==None: return eficas_root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) self.ajoutIcones() @@ -92,10 +92,10 @@ class Appli(Ui_Eficas,QMainWindow): self.code=code self.ssCode=ssCode if self.code==None : - self.cleanPath() - from monChoixCode import MonChoixCode - widgetChoix = MonChoixCode(self) - ret=widgetChoix.exec_() + self.cleanPath() + from monChoixCode import MonChoixCode + widgetChoix = MonChoixCode(self) + ret=widgetChoix.exec_() import sys if self.code == None:return # pour le cancel de la fenetre choix code name='prefs_'+self.code @@ -103,38 +103,38 @@ class Appli(Ui_Eficas,QMainWindow): self.repIni=prefsCode.repIni if ssCode != None : - self.format_fichier= ssCode #par defaut - prefsCode.NAME_SCHEME=ssCode + self.format_fichier= ssCode #par defaut + prefsCode.NAME_SCHEME=ssCode else : - self.format_fichier="python" #par defaut + self.format_fichier="python" #par defaut nameConf='configuration_'+self.code configuration=__import__(nameConf) self.CONFIGURATION = configuration.make_config(self,prefsCode.repIni) self.CONFIGStyle = None if hasattr(configuration,'make_config_style'): - self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni) + self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni) if hasattr(prefsCode,'encoding'): - import sys - reload(sys) - sys.setdefaultencoding(prefsCode.encoding) + import sys + reload(sys) + sys.setdefaultencoding(prefsCode.encoding) def construitMenu(self): self.initPatrons() self.initRecents() self.initAides() for intituleMenu in ("menuTraduction","menuOptions","menuMesh","menuExecution"): - if hasattr(self,intituleMenu): - menu=getattr(self,intituleMenu) - menu.setAttribute(Qt.WA_DeleteOnClose) - menu.close() - delattr(self,intituleMenu) + if hasattr(self,intituleMenu): + menu=getattr(self,intituleMenu) + menu.setAttribute(Qt.WA_DeleteOnClose) + menu.close() + delattr(self,intituleMenu) for intituleAction in ("actionExecution","actionSaveRun",): if hasattr(self,intituleAction): - action=getattr(self,intituleAction) - self.toolBar.removeAction(action) + action=getattr(self,intituleAction) + self.toolBar.removeAction(action) if self.code in Appli.__dict__.keys(): - listeTexte=apply(Appli.__dict__[self.code],(self,)) + listeTexte=apply(Appli.__dict__[self.code],(self,)) def initAides(self): #print "je passe la" @@ -146,10 +146,10 @@ class Appli(Ui_Eficas,QMainWindow): self.fileDoc=os.path.join(self.docPath,fileName) self.actionCode.setText(tr("Aide specifique ")+str(self.code)) if not os.path.isfile(self.fileDoc) : - self.fileDoc="" - self.docPath="" - self.actionCode.setEnabled(False) - return + self.fileDoc="" + self.docPath="" + self.actionCode.setEnabled(False) + return self.actionCode.setEnabled(True) self.menuAide.addAction(self.actionCode) @@ -162,7 +162,7 @@ class Appli(Ui_Eficas,QMainWindow): self.actionExecution.setObjectName("actionExecution") self.menuExecution.addAction(self.actionExecution) if not(self.actionExecution in self.toolBar.actions()): - self.toolBar.addAction(self.actionExecution) + self.toolBar.addAction(self.actionExecution) self.actionExecution.setText(QApplication.translate("Eficas", "Execution ", None, QApplication.UnicodeUTF8)) self.connect(self.actionExecution,SIGNAL("activated()"),self.run) @@ -172,7 +172,7 @@ class Appli(Ui_Eficas,QMainWindow): self.actionSaveRun.setObjectName("actionSaveRun") self.menuExecution.addAction(self.actionSaveRun) if not(self.actionSaveRun in self.toolBar.actions()): - self.toolBar.addAction(self.actionSaveRun) + self.toolBar.addAction(self.actionSaveRun) self.actionSaveRun.setText(QApplication.translate("Eficas", "Save Run", None, QApplication.UnicodeUTF8)) self.connect(self.actionSaveRun,SIGNAL("activated()"),self.saveRun) @@ -202,16 +202,16 @@ class Appli(Ui_Eficas,QMainWindow): def ChercheGrpMesh(self): Msg,listeGroup=self.ChercheGrpMeshInSalome() if Msg == None : - self.viewmanager.handleAjoutGroup(listeGroup) + self.viewmanager.handleAjoutGroup(listeGroup) else : - print "il faut gerer les erreurs" + print "il faut gerer les erreurs" def ChercheGrpMaille(self): Msg,listeGroup=self.ChercheGrpMailleInSalome() if Msg == None : - self.viewmanager.handleAjoutGroup(listeGroup) + self.viewmanager.handleAjoutGroup(listeGroup) else : - print "il faut gerer les erreurs" + print "il faut gerer les erreurs" def ajoutIcones(self) : @@ -314,49 +314,49 @@ class Appli(Ui_Eficas,QMainWindow): # Mise a jour du menu des fichiers recemment ouverts from Editeur import listePatrons if not(self.code in listePatrons.sous_menus.keys()) : - if hasattr(self,"menuPatrons"): - self.menuPatrons.setAttribute(Qt.WA_DeleteOnClose) - self.menuPatrons.close() - delattr(self,"menuPatrons") - return + if hasattr(self,"menuPatrons"): + self.menuPatrons.setAttribute(Qt.WA_DeleteOnClose) + self.menuPatrons.close() + delattr(self,"menuPatrons") + return if (not hasattr(self,"menuPatrons")): - self.menuPatrons = QMenu(self.menubar) - self.menuPatrons.setObjectName("menuPatrons") - self.menubar.addAction(self.menuPatrons.menuAction()) - self.menuPatrons.setTitle(QApplication.translate("Eficas", "Patrons", None, QApplication.UnicodeUTF8)) + self.menuPatrons = QMenu(self.menubar) + self.menuPatrons.setObjectName("menuPatrons") + self.menubar.addAction(self.menuPatrons.menuAction()) + self.menuPatrons.setTitle(QApplication.translate("Eficas", "Patrons", None, QApplication.UnicodeUTF8)) else : - self.menuPatrons.clear() + self.menuPatrons.clear() self.listePatrons = listePatrons.listePatrons(self.code) idx = 0 for nomSsMenu in self.listePatrons.liste.keys(): ssmenu=self.menuPatrons.addMenu(nomSsMenu) for fichier in self.listePatrons.liste[nomSsMenu]: - id = ssmenu.addAction(fichier) - self.ficPatrons[id]=fichier - self.connect(id, SIGNAL('triggered()'),self.handleOpenPatrons) + id = ssmenu.addAction(fichier) + self.ficPatrons[id]=fichier + self.connect(id, SIGNAL('triggered()'),self.handleOpenPatrons) # self.Patrons.setItemParameter(id,idx) - idx=idx+1 + idx=idx+1 def initRecents(self): - self.recent = QStringList() - try : - #if 1 : - rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) - monFichier=rep+"/listefichiers_"+self.code - index=0 - f=open(monFichier) - while ( index < 9) : - ligne=f.readline() - if ligne != "" : - l=(ligne.split("\n"))[0] - self.recent.append(l) - index=index+1 - except : - #else : - pass - - try : f.close() - except : pass + self.recent = QStringList() + try : + #if 1 : + rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code) + monFichier=rep+"/listefichiers_"+self.code + index=0 + f=open(monFichier) + while ( index < 9) : + ligne=f.readline() + if ligne != "" : + l=(ligne.split("\n"))[0] + self.recent.append(l) + index=index+1 + except : + #else : + pass + + try : f.close() + except : pass def addToRecentList(self, fn): """ @@ -370,24 +370,24 @@ class Appli(Ui_Eficas,QMainWindow): self.recent = self.recent[:9] def sauveRecents(self) : - try : - rep=self.CONFIGURATION.rep_user - monFichier=rep+"/listefichiers_"+self.code - except : - return - try : + try : + rep=self.CONFIGURATION.rep_user + monFichier=rep+"/listefichiers_"+self.code + except : + return + try : f=open(monFichier,'w') if len(self.recent) == 0 : return index=0 while ( index < len(self.recent)): - ligne=str(self.recent[index])+"\n" - f.write(ligne) - index=index+1 - except : + ligne=str(self.recent[index])+"\n" + f.write(ligne) + index=index+1 + except : pass - try : + try : f.close() - except : + except : pass @@ -418,37 +418,37 @@ class Appli(Ui_Eficas,QMainWindow): repAide=os.path.dirname(os.path.abspath(__file__)) maD=repAide+"/../Aide" try : - indexAide=maD+"/fichiers_EFICAS/index.html" - cmd="xdg-open "+indexAide - os.system(cmd) + indexAide=maD+"/fichiers_EFICAS/index.html" + cmd="xdg-open "+indexAide + os.system(cmd) except: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def aideCode(self) : if self.code==None : return try : #if 1 : - cmd="xdg-open "+self.fileDoc - os.system(cmd) + cmd="xdg-open "+self.fileDoc + os.system(cmd) except: #else: - QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) + QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def optionEditeur(self) : try : - name='monOptions_'+self.code + name='monOptions_'+self.code except : - QMessageBox.critical( self,tr( "Parametrage"),tr( "Veuillez d abord choisir un code")) - return + QMessageBox.critical( self,tr( "Parametrage"),tr( "Veuillez d abord choisir un code")) + return try : #if 1: - optionCode=__import__(name) + optionCode=__import__(name) except : #else : - QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration ")) - return + QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration ")) + return monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.CONFIGURATION) monOption.show() @@ -562,20 +562,20 @@ class Appli(Ui_Eficas,QMainWindow): def cleanPath(self): for pathCode in self.ListeCode: try: - aEnlever=os.path.abspath(os.path.join(os.path.dirname(__file__),'..',pathCode)) - sys.path.remove(aEnlever) + aEnlever=os.path.abspath(os.path.join(os.path.dirname(__file__),'..',pathCode)) + sys.path.remove(aEnlever) except : - pass + pass for pathCode in self.listeAEnlever: try: - sys.path.remove(aEnlever) + sys.path.remove(aEnlever) except : - pass + pass def closeEvent(self,event): - res=self.fileExit() - if res==2 : event.ignore() + res=self.fileExit() + if res==2 : event.ignore() if __name__=='__main__': @@ -584,12 +584,12 @@ if __name__=='__main__': sys.path.append(rep) from Aster import prefsCode if hasattr(prefsCode,'encoding'): - # Hack pour changer le codage par defaut des strings - import sys - reload(sys) - sys.setdefaultencoding(prefsCode.encoding) - del sys.setdefaultencoding - # Fin hack + # Hack pour changer le codage par defaut des strings + import sys + reload(sys) + sys.setdefaultencoding(prefsCode.encoding) + del sys.setdefaultencoding + # Fin hack from Editeur import import_code from Editeur import session diff --git a/InterfaceQT4/qtSaisie.py b/InterfaceQT4/qtSaisie.py index f6f227a7..09f71537 100644 --- a/InterfaceQT4/qtSaisie.py +++ b/InterfaceQT4/qtSaisie.py @@ -20,8 +20,8 @@ # Modules Python from __future__ import absolute_import try : - from builtins import str - from builtins import range + from builtins import str + from builtins import range except : pass import types,os @@ -33,115 +33,115 @@ from PyQt5.QtCore import Qt # Import des panels class SaisieValeur(object): - """ - Classe contenant les methodes communes aux panels - permettant de choisir des valeurs - """ - def __init__(self): - pass + """ + Classe contenant les methodes communes aux panels + permettant de choisir des valeurs + """ + def __init__(self): + pass - def LEvaleurPressed(self,valeur=None): - #print('LEvaleurPressed', valeur, type(valeur)) - if not hasattr(self, 'inSaisieValeur' ) : self.inSaisieValeur=False - if self.inSaisieValeur : return - self.inSaisieValeur=True + def LEvaleurPressed(self,valeur=None): + #print('LEvaleurPressed', valeur, type(valeur)) + if not hasattr(self, 'inSaisieValeur' ) : self.inSaisieValeur=False + if self.inSaisieValeur : return + self.inSaisieValeur=True - if valeur == None : + if valeur == None : try : - nouvelleValeur=str(self.lineEditVal.text()) + nouvelleValeur=str(self.lineEditVal.text()) except UnicodeEncodeError as e : - self.editor.afficheInfos("pb d encoding", Qt.red) - validite,commentaire=self.politique.recordValeur(None) - self.lineEditVal.setText('') - self.setValide() - self.inSaisieValeur=False - return - else : - try : - # la 1 ligne est tres bizarre. remplacee par le 3nd le 01 10 19 - #if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom)) - if hasattr(self,"lineEditVal") : self.lineEditVal.setText(tr(valeur)) - except : - if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur) + self.editor.afficheInfos("pb d encoding", Qt.red) + validite,commentaire=self.politique.recordValeur(None) + self.lineEditVal.setText('') + self.setValide() + self.inSaisieValeur=False + return + else : + try : + # la 1 ligne est tres bizarre. remplacee par le 3nd le 01 10 19 + #if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom)) + if hasattr(self,"lineEditVal") : self.lineEditVal.setText(tr(valeur)) + except : + if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur) nouvelleValeur=valeur - if self.node.item.definition.validators != None : + if self.node.item.definition.validators != None : if self.node.item.definition.validators.verifItem(nouvelleValeur) !=1 : commentaire=self.node.item.definition.validators.infoErreurItem() self.editor.afficheInfos(commentaire,Qt.red) self.inSaisieValeur=False return - nouvelleValeurFormat=self.politique.getValeurTexte(nouvelleValeur) - validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat) - if commentaire != "" : + nouvelleValeurFormat=self.politique.getValeurTexte(nouvelleValeur) + validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat) + if commentaire != "" : if validite : self.editor.afficheCommentaire(commentaire) else : self.editor.afficheInfos(commentaire,Qt.red) - self.inSaisieValeur=False - self.setValide() + self.inSaisieValeur=False + self.setValide() - def TraiteLEValeur(self,valeurTraitee=None) : + def TraiteLEValeur(self,valeurTraitee=None) : # lit la chaine entree dans le line edit # et la tranforme en chaine de valeurs # a traiter. renvoie eventuellement des complexes listeValeurs=[] if valeurTraitee == None : - valeurBrute=str(self.LEValeur.text()) + valeurBrute=str(self.LEValeur.text()) else : - valeurBrute=valeurTraitee + valeurBrute=valeurTraitee if valeurBrute == str("") : return listeValeurs,1 try : - valeur=eval(valeurBrute,{}) + valeur=eval(valeurBrute,{}) except : valeur=valeurBrute # pour traiter 11.0 - 30.0 pour le CIST #if (valeurTraitee and (type(valeurTraitee) in types.StringTypes) and (self.node.item.waitTxm())) : if (valeurTraitee and isinstance(valeurTraitee, str) and (self.node.item.waitTxm())) : - valeur=str(valeurTraitee) + valeur=str(valeurTraitee) if type(valeur) in (list,tuple) : - if self.node.item.waitComplex() : - indice = 0 - while (indice < len(valeur)): - v=valeur[indice] - - if (v== 'RI' or v == 'MP'): - try : - t=tuple([v,valeur[indice+1],valeur[indice+2]]) - listeValeurs.append(t) - indice=indice+3 - except : - commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python") - self.editor.afficheInfos(commentaire) - return listeValeurs,0 - - - else : # ce n'est pas un tuple a la mode aster - listeValeurs.append(v) - indice = indice + 1 - - else: # on n'attend pas un complexe - listeValeurs=valeurBrute.split(',') + if self.node.item.waitComplex() : + indice = 0 + while (indice < len(valeur)): + v=valeur[indice] + + if (v== 'RI' or v == 'MP'): + try : + t=tuple([v,valeur[indice+1],valeur[indice+2]]) + listeValeurs.append(t) + indice=indice+3 + except : + commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python") + self.editor.afficheInfos(commentaire) + return listeValeurs,0 + + + else : # ce n'est pas un tuple a la mode aster + listeValeurs.append(v) + indice = indice + 1 + + else: # on n'attend pas un complexe + listeValeurs=valeurBrute.split(',') elif type(valeur) == bytes: - listeValeurs=valeur.split(',') + listeValeurs=valeur.split(',') else: - #listeValeurs.append(valeurBrute) - listeValeurs.append(valeur) + #listeValeurs.append(valeurBrute) + listeValeurs.append(valeur) return listeValeurs,1 class SaisieSDCO(object) : - def LESDCOReturnPressed(self): + def LESDCOReturnPressed(self): """ Lit le nom donne par l'utilisateur au concept de type CO qui doit être la valeur du MCS courant et stocke cette valeur @@ -149,20 +149,19 @@ class SaisieSDCO(object) : self.editor.initModif() anc_val = self.node.item.getValeur() if anc_val != None: - # il faut egalement propager la destruction de l'ancien concept - self.node.item.deleteValeurCo(valeur=anc_val) - # et on force le recalcul des concepts de sortie de l'etape - self.node.item.object.etape.getType_produit(force=1) - # et le recalcul du contexte - self.node.item.object.etape.parent.resetContext() + # il faut egalement propager la destruction de l'ancien concept + self.node.item.deleteValeurCo(valeur=anc_val) + # et on force le recalcul des concepts de sortie de l'etape + self.node.item.object.etape.getType_produit(force=1) + # et le recalcul du contexte + self.node.item.object.etape.parent.resetContext() nomConcept = str(self.LESDCO.text()) if nomConcept == "" : return test,commentaire=self.node.item.setValeurCo(nomConcept) if test: - commentaire=tr("Valeur du mot-clef enregistree") - self.node.updateNodeValid() + commentaire=tr("Valeur du mot-clef enregistree") + self.node.updateNodeValid() else : - cr = self.node.item.getCr() - commentaire = tr("Valeur du mot-clef non autorisee :")+cr.getMessFatal() - + cr = self.node.item.getCr() + commentaire = tr("Valeur du mot-clef non autorisee :")+cr.getMessFatal() diff --git a/InterfaceQT4/readercata.py b/InterfaceQT4/readercata.py index 3937d81b..7543b2b6 100644 --- a/InterfaceQT4/readercata.py +++ b/InterfaceQT4/readercata.py @@ -26,8 +26,8 @@ from __future__ import absolute_import from __future__ import print_function try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import os, sys @@ -48,349 +48,349 @@ from Extensions.eficas_exception import EficasException class ReaderCataCommun(object): #------------------------------- - def askChoixCatalogue(self, cataListeChoix): - # ____________________________________________ - """ - Ouvre une fenetre de selection du catalogue dans le cas où plusieurs - ont ete definis dans Accas/editeur.ini - """ - try : - from PyQt5.QtWidgets import QDialog - except : - print ('Pas de choix interactif sans qt') - return - - code = getattr(self.appliEficas.maConfiguration, "code", None) - if code != None : - title=tr("Choix d une version du code ")+str(code) - else : - title=tr("Choix d une version ") - - from InterfaceQT4.monChoixCata import MonChoixCata - widgetChoix = MonChoixCata(self.appliEficas, [cata.labelCode for cata in cataListeChoix], title) - ret=widgetChoix.exec_() - - - lab=str(self.VERSION_EFICAS)+" " - lab+=tr(" pour ") - lab+=str(self.code) - lab+=tr(" avec le catalogue ") - if ret == QDialog.Accepted: - cata = cataListeChoix[widgetChoix.CBChoixCata.currentIndex()] - self.fichierCata = cata.fichierCata - self.labelCode = cata.labelCode - self.appliEficas.formatFichierOut = cata.formatFichierOut - self.appliEficas.formatFichierIn = cata.formatFichierIn - lab+=self.labelCode - self.appliEficas.setWindowTitle(lab) - widgetChoix.close() - else: - widgetChoix.close() - raise EficasException() - - def choisitCata(self): - # ____________________ - - - listeCataPossibles=[] - self.Commandes_Ordre_Catalogue=[] - - - listeTousLesCatas = [] - for catalogue in self.appliEficas.maConfiguration.catalogues: - if isinstance(catalogue, CatalogDescription): listeTousLesCatas.append(catalogue) - elif isinstance(catalogue, tuple) : listeTousLesCatas.append(CatalogDescription.createFromTuple(catalogue)) - else: print(("Catalog description cannot be interpreted: ", catalogue)) - - # This filter is only useful for codes that have subcodes (like MAP). - # Otherwise, the "code" attribute of the catalog description can (should) be None. - if self.ssCode is None: listeCataPossibles = listeTousLesCatas - else: - for catalogue in listeTousLesCatas: - if catalogue.code == self.code and catalogue.ssCode == self.ssCode: listeCataPossibles.append(catalogue) - - # le catalogue est fixe dans la ligne de commande - if self.appliEficas.fichierCata != None : - trouve=False - for catalogue in listeTousLesCatas: - if os.path.abspath(catalogue.fichierCata) == (os.path.abspath(self.appliEficas.fichierCata)) : - listeCataPossibles=(catalogue,) - trouve=True - break - if not trouve: + def askChoixCatalogue(self, cataListeChoix): + # ____________________________________________ + """ + Ouvre une fenetre de selection du catalogue dans le cas où plusieurs + ont ete definis dans Accas/editeur.ini + """ + try : + from PyQt5.QtWidgets import QDialog + except : + print ('Pas de choix interactif sans qt') + return + + code = getattr(self.appliEficas.maConfiguration, "code", None) + if code != None : + title=tr("Choix d une version du code ")+str(code) + else : + title=tr("Choix d une version ") + + from InterfaceQT4.monChoixCata import MonChoixCata + widgetChoix = MonChoixCata(self.appliEficas, [cata.labelCode for cata in cataListeChoix], title) + ret=widgetChoix.exec_() + + + lab=str(self.VERSION_EFICAS)+" " + lab+=tr(" pour ") + lab+=str(self.code) + lab+=tr(" avec le catalogue ") + if ret == QDialog.Accepted: + cata = cataListeChoix[widgetChoix.CBChoixCata.currentIndex()] + self.fichierCata = cata.fichierCata + self.labelCode = cata.labelCode + self.appliEficas.formatFichierOut = cata.formatFichierOut + self.appliEficas.formatFichierIn = cata.formatFichierIn + lab+=self.labelCode + self.appliEficas.setWindowTitle(lab) + widgetChoix.close() + else: + widgetChoix.close() + raise EficasException() + + def choisitCata(self): + # ____________________ + + + listeCataPossibles=[] + self.Commandes_Ordre_Catalogue=[] + + + listeTousLesCatas = [] + for catalogue in self.appliEficas.maConfiguration.catalogues: + if isinstance(catalogue, CatalogDescription): listeTousLesCatas.append(catalogue) + elif isinstance(catalogue, tuple) : listeTousLesCatas.append(CatalogDescription.createFromTuple(catalogue)) + else: print(("Catalog description cannot be interpreted: ", catalogue)) + + # This filter is only useful for codes that have subcodes (like MAP). + # Otherwise, the "code" attribute of the catalog description can (should) be None. + if self.ssCode is None: listeCataPossibles = listeTousLesCatas + else: + for catalogue in listeTousLesCatas: + if catalogue.code == self.code and catalogue.ssCode == self.ssCode: listeCataPossibles.append(catalogue) + + # le catalogue est fixe dans la ligne de commande + if self.appliEficas.fichierCata != None : + trouve=False + for catalogue in listeTousLesCatas: + if os.path.abspath(catalogue.fichierCata) == (os.path.abspath(self.appliEficas.fichierCata)) : + listeCataPossibles=(catalogue,) + trouve=True + break + if not trouve: catalogue=CatalogDescription.createFromTuple((self.code ,self.code,self.appliEficas.fichierCata,'python','python')) listeCataPossibles=(catalogue,) - - - if len(listeCataPossibles)==0: - try : - from PyQt5.QtWidgets import QMessageBox, QDialog - QMessageBox.critical(self.QWParent, tr("Import du catalogue"), - tr("Pas de catalogue defini pour le code ") + self.code) - except : - print ("Pas de catalogue defini pour le code " + self.code) - self.appliEficas.close() - if self.appliEficas.salome == 0 : sys.exit(1) - return - - - # le label est fixe dans la ligne de commande - if self.labelCode is not None: - # La version a ete fixee - for cata in listeCataPossibles: - if self.labelCode == cata.labelCode: - self.fichierCata = cata.fichierCata - self.appliEficas.formatFichierIn = cata.formatFichierIn - self.appliEficas.formatFichierOut = cata.formatFichierOut - else: - cataListeChoix = [] - for cata in listeCataPossibles: - if cata.default : cataListeChoix.insert(0, cata) - else : cataListeChoix.append(cata) - - if len(cataListeChoix) == 0: - try : - from PyQt5.QtWidgets import QMessageBox + + + if len(listeCataPossibles)==0: + try : + from PyQt5.QtWidgets import QMessageBox, QDialog QMessageBox.critical(self.QWParent, tr("Import du catalogue"), - tr("Aucun catalogue trouve")) - except : + tr("Pas de catalogue defini pour le code ") + self.code) + except : print ("Pas de catalogue defini pour le code " + self.code) - self.appliEficas.close() - if self.appliEficas.salome == 0 : sys.exit(1) - - elif len(cataListeChoix) == 1: - self.fichierCata = cataListeChoix[0].fichierCata - self.labelCode = cataListeChoix[0].labelCode - self.appliEficas.formatFichierOut = cataListeChoix[0].formatFichierOut - self.appliEficas.formatFichierIn = cataListeChoix[0].formatFichierIn - - else: - # plusieurs catalogues sont disponibles : il faut demander a l'utilisateur - # lequel il veut utiliser ... - if self.appliEficas.ssIhm : - print ('Unable to know which catafile is choosen') - exit() - self.askChoixCatalogue(cataListeChoix) - self.demandeCatalogue=True - - if self.fichierCata == None : - if self.appliEficas.salome == 0 : - print(("Pas de catalogue pour code %s, version %s" %(self.code,self.labelCode))) - sys.exit(1) - else : - self.appliEficas.close() - return + self.appliEficas.close() + if self.appliEficas.salome == 0 : sys.exit(1) + return + + + # le label est fixe dans la ligne de commande + if self.labelCode is not None: + # La version a ete fixee + for cata in listeCataPossibles: + if self.labelCode == cata.labelCode: + self.fichierCata = cata.fichierCata + self.appliEficas.formatFichierIn = cata.formatFichierIn + self.appliEficas.formatFichierOut = cata.formatFichierOut + else: + cataListeChoix = [] + for cata in listeCataPossibles: + if cata.default : cataListeChoix.insert(0, cata) + else : cataListeChoix.append(cata) + + if len(cataListeChoix) == 0: + try : + from PyQt5.QtWidgets import QMessageBox + QMessageBox.critical(self.QWParent, tr("Import du catalogue"), + tr("Aucun catalogue trouve")) + except : + print ("Pas de catalogue defini pour le code " + self.code) + self.appliEficas.close() + if self.appliEficas.salome == 0 : sys.exit(1) + + elif len(cataListeChoix) == 1: + self.fichierCata = cataListeChoix[0].fichierCata + self.labelCode = cataListeChoix[0].labelCode + self.appliEficas.formatFichierOut = cataListeChoix[0].formatFichierOut + self.appliEficas.formatFichierIn = cataListeChoix[0].formatFichierIn + + else: + # plusieurs catalogues sont disponibles : il faut demander a l'utilisateur + # lequel il veut utiliser ... + if self.appliEficas.ssIhm : + print ('Unable to know which catafile is choosen') + exit() + self.askChoixCatalogue(cataListeChoix) + self.demandeCatalogue=True + + if self.fichierCata == None : + if self.appliEficas.salome == 0 : + print(("Pas de catalogue pour code %s, version %s" %(self.code,self.labelCode))) + sys.exit(1) + else : + self.appliEficas.close() + return #------------------------------------ class ReaderCata (ReaderCataCommun): #------------------------------------ - def __init__(self,QWParent, appliEficas): - # _______________________________________ - - - self.QWParent=QWParent - self.appliEficas=self.QWParent.appliEficas - self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS - self.demandeCatalogue=False - self.code=self.appliEficas.code - self.ssCode=self.appliEficas.ssCode - # on positionne par defaut mais est-ce vraiment necessaire - self.appliEficas.formatFichierIn='python' - self.appliEficas.formatFichierOut='python' - self.labelCode=self.appliEficas.labelCode - self.fichierCata=self.appliEficas.fichierCata - self.openCata() - self.traiteIcones() - self.cataitem=None - self.creeDicoInverse() - if self.code=="TELEMAC": self.creeDicoCasToCata() - - - def openCata(self): - """ - Ouvre le catalogue standard du code courant, cad le catalogue present - dans le repertoire Cata - """ - # import du catalogue - self.choisitCata() - - self.cata = self.importCata(self.fichierCata) - if self.code == 'NonConnu' : self.code = self.cata.JdC.code - modeleMetier = None - dicoEltDif = {} - if not (self.appliEficas.genereXSD) : - if (self.appliEficas.maConfiguration.withXSD or self.appliEficas.withXSD) : - try : - import pyxb - except : - self.QWParent.informe('environnement', 'please source pyxb environment') - exit() - try : - #if 1 : - nomCataXsd = os.path.splitext(os.path.basename(self.fichierCata))[0] - fichierCataTrunc=os.path.splitext(os.path.basename(self.fichierCata))[0] - nomCataXsd = fichierCataTrunc+'_driver' - pathCata = os.path.dirname(self.fichierCata)+'/raw/'+nomCataXsd+'.py' - import imp - modeleMetier= imp.load_source(nomCataXsd,pathCata) - #print ('nomCataXsd , pathCata ',nomCataXsd,pathCata) - try : - monObjetAnnotation = getattr(modeleMetier,'PNEFdico_'+self.code) - texte=monObjetAnnotation.__doc__ - except : - texte=None - if texte != None and texte != "": - l={} - texte='dicoEltDif = '+ texte - exec (texte, globals(),l) - dicoEltDif=l['dicoEltDif'] - #print ('dans readerCata _________', dicoEltDif) - - except : - #else : - if self.appliEficas.ssIhm == False :print ('______________ poum import cata_genere ') - self.QWParent.informe('XSD driver', 'unable to load xsd driver',critique=False) - modeleMetier = None - - self.cata.DicoNomTypeDifferentNomElt=dicoEltDif - - if hasattr(self.cata, 'implement'): self.cata.JdC.implement = self.cata.implement - else : self.cata.JdC.implement = "" - if hasattr(self.cata, 'importedBy'): self.cata.JdC.importedBy = self.cata.importedBy - else : self.cata.JdC.importedBy = [] - self.cata.JdC.labelCode = self.labelCode - if not(hasattr(self.cata, 'dict_condition')): self.cata.dict_condition = {} - - # pointeur pour le dumpXSD - self.cata.JdC.cata=self.cata - - self.cata.modeleMetier = modeleMetier - if not self.cata : - #try: - #from PyQt5.QtWidgets import QMessageBox, QDialog - #QMessageBox.critical( self.QWParent, tr("Import du catalogue"),tr("Impossible d'importer le catalogue ")+ self.fichierCata) - #except : - # print ("Impossible d'importer le catalogue "+ self.fichierCata) - self.QWParent.informe("Catalogue","Impossible d'importer le catalogue "+ self.fichierCata) - self.appliEficas.close() - if self.appliEficas.salome == 0 : - sys.exit(1) - # - # analyse du catalogue (ordre des mots-cles) - # - # retrouveOrdreCataStandard fait une analyse textuelle du catalogue - # remplace par retrouveOrdreCataStandardAutre qui utilise une numerotation - # des mots cles a la creation - #print (dir(self.cata)) - self.retrouveOrdreCataStandardAutre() - if self.appliEficas.maConfiguration.modeNouvCommande == "initial" : self.retrouveOrdreCataStandard() - if hasattr(self.cata, 'Ordre_Des_Commandes') : self.Ordre_Des_Commandes=self.cata.Ordre_Des_Commandes - else : self.Ordre_Des_Commandes=None - - if hasattr(self.cata, 'Classement_Commandes_Ds_Arbre') : - self.Classement_Commandes_Ds_Arbre=self.cata.Classement_Commandes_Ds_Arbre - else : self.Classement_Commandes_Ds_Arbre=() - if hasattr(self.cata,'enum'): - try : - _temp= __import__(self.cata.enum,globals(), locals(), ['DicoEnumCasFrToEnumCasEn', 'TelemacdicoEn'], 0) - self.DicoEnumCasFrToEnumCasEn = _temp.DicoEnumCasFrToEnumCasEn - self.TelemacdicoEn = _temp.TelemacdicoEn - except : pass - - #print self.cata.Ordre_Des_Commandes - - # - # analyse des donnees liees l'IHM : UIinfo - # - uiinfo.traite_UIinfo(self.cata) - - # - # traitement des clefs documentaires - # - - self.titre=self.VERSION_EFICAS+" "+tr( " avec le catalogue ") + os.path.basename(self.fichierCata) - if self.appliEficas.ssIhm == False : self.appliEficas.setWindowTitle(self.titre) - self.appliEficas.titre=self.titre - self.QWParent.titre=self.titre - - - def importCata(self,cata): - """ - Realise l'import du catalogue dont le chemin d'acces est donne par cata - """ - nom_cata = os.path.splitext(os.path.basename(cata))[0] - rep_cata = os.path.dirname(cata) - sys.path[:0] = [rep_cata] - self.appliEficas.listeAEnlever.append(rep_cata) - - # PNPNPN pas propre __ A reflechir - if 'cata_Vimmp' in list(sys.modules.keys()) : - del sys.modules['cata_Vimmp'] - - if nom_cata in list(sys.modules.keys()) : - del sys.modules[nom_cata] - - for k in sys.modules: - if k[0:len(nom_cata)+1] == nom_cata+'.': - del sys.modules[k] - - mesScriptsNomFichier='mesScripts_'+self.code.upper() - try : - self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier) - except: - pass - - #if 1 : - try : - o=__import__(nom_cata) - return o - except Exception as e: - self.QWParent.informe('catalog', 'unable to load catalog file') - import traceback - traceback.print_exc() - return 0 - - - - def retrouveOrdreCataStandardAutre(self): - """ - Construit une structure de donnees dans le catalogue qui permet - a EFICAS de retrouver l'ordre des mots-cles dans le texte du catalogue. - Pour chaque entite du catlogue on cree une liste de nom ordre_mc qui - contient le nom des mots cles dans le bon ordre - """ - self.cata_ordonne_dico, self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata) - #print ('_________________________________________', self) - #print (self.cata_ordonne_dico) - #self.appliEficas.liste_simp_reel = () - #self.cata_ordonne_dico = {} - - def retrouveOrdreCataStandard(self): - """ - Retrouve l'ordre des mots-cles dans le catalogue, cad : - Attention s appuie sur les commentaires - """ - nom_cata = os.path.splitext(os.path.basename(self.fichierCata))[0] - rep_cata = os.path.dirname(self.fichierCata) - self.Commandes_Ordre_Catalogue = analyse_catalogue_initial.analyseCatalogue(self.fichierCata) - #print self.Commandes_Ordre_Catalogue - - def traiteIcones(self): - if self.appliEficas.maConfiguration.ficIcones==None : return - try: - ficIcones=self.appliEficas.maConfiguration.ficIcones - fichierIcones = __import__(ficIcones, globals(), locals(), [], 0) - self.appliEficas.maConfiguration.dicoIcones=fichierIcones.dicoDesIcones.dicoIcones - self.appliEficas.maConfiguration.dicoImages=fichierIcones.dicoDesIcones.dicoImages - except: - print ("Pas de fichier associe contenant des liens sur les icones ") - self.appliEficas.maConfiguration.dicoIcones={} - - - - def creeDicoInverse(self): + def __init__(self,QWParent, appliEficas): + # _______________________________________ + + + self.QWParent=QWParent + self.appliEficas=self.QWParent.appliEficas + self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS + self.demandeCatalogue=False + self.code=self.appliEficas.code + self.ssCode=self.appliEficas.ssCode + # on positionne par defaut mais est-ce vraiment necessaire + self.appliEficas.formatFichierIn='python' + self.appliEficas.formatFichierOut='python' + self.labelCode=self.appliEficas.labelCode + self.fichierCata=self.appliEficas.fichierCata + self.openCata() + self.traiteIcones() + self.cataitem=None + self.creeDicoInverse() + if self.code=="TELEMAC": self.creeDicoCasToCata() + + + def openCata(self): + """ + Ouvre le catalogue standard du code courant, cad le catalogue present + dans le repertoire Cata + """ + # import du catalogue + self.choisitCata() + + self.cata = self.importCata(self.fichierCata) + if self.code == 'NonConnu' : self.code = self.cata.JdC.code + modeleMetier = None + dicoEltDif = {} + if not (self.appliEficas.genereXSD) : + if (self.appliEficas.maConfiguration.withXSD or self.appliEficas.withXSD) : + try : + import pyxb + except : + self.QWParent.informe('environnement', 'please source pyxb environment') + exit() + try : + #if 1 : + nomCataXsd = os.path.splitext(os.path.basename(self.fichierCata))[0] + fichierCataTrunc=os.path.splitext(os.path.basename(self.fichierCata))[0] + nomCataXsd = fichierCataTrunc+'_driver' + pathCata = os.path.dirname(self.fichierCata)+'/raw/'+nomCataXsd+'.py' + import imp + modeleMetier= imp.load_source(nomCataXsd,pathCata) + #print ('nomCataXsd , pathCata ',nomCataXsd,pathCata) + try : + monObjetAnnotation = getattr(modeleMetier,'PNEFdico_'+self.code) + texte=monObjetAnnotation.__doc__ + except : + texte=None + if texte != None and texte != "": + l={} + texte='dicoEltDif = '+ texte + exec (texte, globals(),l) + dicoEltDif=l['dicoEltDif'] + #print ('dans readerCata _________', dicoEltDif) + + except : + #else : + if self.appliEficas.ssIhm == False :print ('______________ poum import cata_genere ') + self.QWParent.informe('XSD driver', 'unable to load xsd driver',critique=False) + modeleMetier = None + + self.cata.DicoNomTypeDifferentNomElt=dicoEltDif + + if hasattr(self.cata, 'implement'): self.cata.JdC.implement = self.cata.implement + else : self.cata.JdC.implement = "" + if hasattr(self.cata, 'importedBy'): self.cata.JdC.importedBy = self.cata.importedBy + else : self.cata.JdC.importedBy = [] + self.cata.JdC.labelCode = self.labelCode + if not(hasattr(self.cata, 'dict_condition')): self.cata.dict_condition = {} + + # pointeur pour le dumpXSD + self.cata.JdC.cata=self.cata + + self.cata.modeleMetier = modeleMetier + if not self.cata : + #try: + #from PyQt5.QtWidgets import QMessageBox, QDialog + #QMessageBox.critical( self.QWParent, tr("Import du catalogue"),tr("Impossible d'importer le catalogue ")+ self.fichierCata) + #except : + # print ("Impossible d'importer le catalogue "+ self.fichierCata) + self.QWParent.informe("Catalogue","Impossible d'importer le catalogue "+ self.fichierCata) + self.appliEficas.close() + if self.appliEficas.salome == 0 : + sys.exit(1) + # + # analyse du catalogue (ordre des mots-cles) + # + # retrouveOrdreCataStandard fait une analyse textuelle du catalogue + # remplace par retrouveOrdreCataStandardAutre qui utilise une numerotation + # des mots cles a la creation + #print (dir(self.cata)) + self.retrouveOrdreCataStandardAutre() + if self.appliEficas.maConfiguration.modeNouvCommande == "initial" : self.retrouveOrdreCataStandard() + if hasattr(self.cata, 'Ordre_Des_Commandes') : self.Ordre_Des_Commandes=self.cata.Ordre_Des_Commandes + else : self.Ordre_Des_Commandes=None + + if hasattr(self.cata, 'Classement_Commandes_Ds_Arbre') : + self.Classement_Commandes_Ds_Arbre=self.cata.Classement_Commandes_Ds_Arbre + else : self.Classement_Commandes_Ds_Arbre=() + if hasattr(self.cata,'enum'): + try : + _temp= __import__(self.cata.enum,globals(), locals(), ['DicoEnumCasFrToEnumCasEn', 'TelemacdicoEn'], 0) + self.DicoEnumCasFrToEnumCasEn = _temp.DicoEnumCasFrToEnumCasEn + self.TelemacdicoEn = _temp.TelemacdicoEn + except : pass + + #print self.cata.Ordre_Des_Commandes + + # + # analyse des donnees liees l'IHM : UIinfo + # + uiinfo.traite_UIinfo(self.cata) + + # + # traitement des clefs documentaires + # + + self.titre=self.VERSION_EFICAS+" "+tr( " avec le catalogue ") + os.path.basename(self.fichierCata) + if self.appliEficas.ssIhm == False : self.appliEficas.setWindowTitle(self.titre) + self.appliEficas.titre=self.titre + self.QWParent.titre=self.titre + + + def importCata(self,cata): + """ + Realise l'import du catalogue dont le chemin d'acces est donne par cata + """ + nom_cata = os.path.splitext(os.path.basename(cata))[0] + rep_cata = os.path.dirname(cata) + sys.path[:0] = [rep_cata] + self.appliEficas.listeAEnlever.append(rep_cata) + + # PNPNPN pas propre __ A reflechir + if 'cata_Vimmp' in list(sys.modules.keys()) : + del sys.modules['cata_Vimmp'] + + if nom_cata in list(sys.modules.keys()) : + del sys.modules[nom_cata] + + for k in sys.modules: + if k[0:len(nom_cata)+1] == nom_cata+'.': + del sys.modules[k] + + mesScriptsNomFichier='mesScripts_'+self.code.upper() + try : + self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier) + except: + pass + + #if 1 : + try : + o=__import__(nom_cata) + return o + except Exception as e: + self.QWParent.informe('catalog', 'unable to load catalog file') + import traceback + traceback.print_exc() + return 0 + + + + def retrouveOrdreCataStandardAutre(self): + """ + Construit une structure de donnees dans le catalogue qui permet + a EFICAS de retrouver l'ordre des mots-cles dans le texte du catalogue. + Pour chaque entite du catlogue on cree une liste de nom ordre_mc qui + contient le nom des mots cles dans le bon ordre + """ + self.cata_ordonne_dico, self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata) + #print ('_________________________________________', self) + #print (self.cata_ordonne_dico) + #self.appliEficas.liste_simp_reel = () + #self.cata_ordonne_dico = {} + + def retrouveOrdreCataStandard(self): + """ + Retrouve l'ordre des mots-cles dans le catalogue, cad : + Attention s appuie sur les commentaires + """ + nom_cata = os.path.splitext(os.path.basename(self.fichierCata))[0] + rep_cata = os.path.dirname(self.fichierCata) + self.Commandes_Ordre_Catalogue = analyse_catalogue_initial.analyseCatalogue(self.fichierCata) + #print self.Commandes_Ordre_Catalogue + + def traiteIcones(self): + if self.appliEficas.maConfiguration.ficIcones==None : return + try: + ficIcones=self.appliEficas.maConfiguration.ficIcones + fichierIcones = __import__(ficIcones, globals(), locals(), [], 0) + self.appliEficas.maConfiguration.dicoIcones=fichierIcones.dicoDesIcones.dicoIcones + self.appliEficas.maConfiguration.dicoImages=fichierIcones.dicoDesIcones.dicoImages + except: + print ("Pas de fichier associe contenant des liens sur les icones ") + self.appliEficas.maConfiguration.dicoIcones={} + + + + def creeDicoInverse(self): self.dicoInverse={} self.dicoMC={} listeEtapes=self.cata.JdC.commandes @@ -398,48 +398,47 @@ class ReaderCata (ReaderCataCommun): self.traiteEntite(e) - def creeDicoCasToCata(self): - if hasattr(self.cata,'dicoCasEn'): - _temp= __import__(self.cata.dicoCasEn,globals(), locals(), ['DicoCasEnToCata'], 0) - if self.appliEficas.langue=="ang" : - self.dicoCasToCata=_temp.dicoCasEnToCata - else : - self.dicoCasToCata=_temp.dicoCasFrToCata + def creeDicoCasToCata(self): + if hasattr(self.cata,'dicoCasEn'): + _temp= __import__(self.cata.dicoCasEn,globals(), locals(), ['DicoCasEnToCata'], 0) + if self.appliEficas.langue=="ang" : + self.dicoCasToCata=_temp.dicoCasEnToCata + else : + self.dicoCasToCata=_temp.dicoCasFrToCata - def traiteEntite(self,e): - boolIn=0 - for (nomFils, fils) in list(e.entites.items()) : - self.dicoMC[nomFils]=fils - self.traiteEntite(fils) - boolIn=1 - if boolIn==0 : - liste=[] - moi=e - while hasattr(moi,'pere') : + def traiteEntite(self,e): + boolIn=0 + for (nomFils, fils) in list(e.entites.items()) : + self.dicoMC[nomFils]=fils + self.traiteEntite(fils) + boolIn=1 + if boolIn==0 : + liste=[] + moi=e + while hasattr(moi,'pere') : liste.append((moi.nom,moi)) moi=moi.pere - liste.append((moi.nom,moi)) - self.dicoInverse[e.nom]=liste - self.dicoInverse[tr(e.nom)]=liste - - def creeRubrique(self,e,dico, niveau): - from Accas import A_BLOC - decale=niveau*" " - #if niveau != 0 : - # if isinstance(e,A_BLOC.BLOC): print decale, e.condition - # else : print decale, e. nom - for (nom, fils) in list(e.entites.items()) : - if list(fils.entites.items()) != [] : self.creeRubrique(fils,dico,niveau+1) - #else : print (niveau+1)*" ", nom - - - def dumpToXsdEficas(self): - # Pas sur qu on ait jamais besoin de cela - pass - #from Efi2Xsd import readerEfficas - #newSchema= xml = open('Cata_MED_FAM.xml').read() - #SchemaMed = efficas.CreateFromDocument(xml) - #SchemaMed.alimenteCata(self.cata) - + liste.append((moi.nom,moi)) + self.dicoInverse[e.nom]=liste + self.dicoInverse[tr(e.nom)]=liste + + def creeRubrique(self,e,dico, niveau): + from Accas import A_BLOC + decale=niveau*" " + #if niveau != 0 : + # if isinstance(e,A_BLOC.BLOC): print decale, e.condition + # else : print decale, e. nom + for (nom, fils) in list(e.entites.items()) : + if list(fils.entites.items()) != [] : self.creeRubrique(fils,dico,niveau+1) + #else : print (niveau+1)*" ", nom + + + def dumpToXsdEficas(self): + # Pas sur qu on ait jamais besoin de cela + pass + #from Efi2Xsd import readerEfficas + #newSchema= xml = open('Cata_MED_FAM.xml').read() + #SchemaMed = efficas.CreateFromDocument(xml) + #SchemaMed.alimenteCata(self.cata) diff --git a/InterfaceQT4/readercataXML.py b/InterfaceQT4/readercataXML.py index 9282b622..98cd309f 100644 --- a/InterfaceQT4/readercataXML.py +++ b/InterfaceQT4/readercataXML.py @@ -40,45 +40,45 @@ from readercata import ReaderCataCommun class ReaderCata (ReaderCataCommun): - def __init__(self,QWParent, appliEficas): - self.QWParent=QWParent - self.appliEficas=appliEficas - self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS - self.code=self.appliEficas.code - self.ssCode=self.appliEficas.ssCode - # PN ?? bizarre le 22/04/20 - self.appliEficas.formatfichierOut='python' - self.appliEficas.formatfichierIn ='xml' - self.modeNouvCommande=self.appliEficas.maConfiguration.modeNouvCommande - self.labelCode=self.appliEficas.labelCode - self.version_cata=None - self.ficCata=None - self.OpenCata() - self.cataitem=None - self.titre='Eficas XML' - self.Ordre_Des_Commandes=None - self.Classement_Commandes_Ds_Arbre=() - self.demandeCatalogue=False + def __init__(self,QWParent, appliEficas): + self.QWParent=QWParent + self.appliEficas=appliEficas + self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS + self.code=self.appliEficas.code + self.ssCode=self.appliEficas.ssCode + # PN ?? bizarre le 22/04/20 + self.appliEficas.formatfichierOut='python' + self.appliEficas.formatfichierIn ='xml' + self.modeNouvCommande=self.appliEficas.maConfiguration.modeNouvCommande + self.labelCode=self.appliEficas.labelCode + self.version_cata=None + self.ficCata=None + self.OpenCata() + self.cataitem=None + self.titre='Eficas XML' + self.Ordre_Des_Commandes=None + self.Classement_Commandes_Ds_Arbre=() + self.demandeCatalogue=False - #self.traiteIcones() - #self.creeDicoInverse() + #self.traiteIcones() + #self.creeDicoInverse() - def OpenCata(self): + def OpenCata(self): - #self.ficCata = 'Cata_MED_FAM.xml' - #xml = open('/home/A96028/QT5GitEficasTravail/eficas/Med/Cata_MED_FAM.xml').read() - #xml = open('/home/A96028/QT5GitEficasTravail/eficas/CataTestXSD/cata_test1.xml').read() - self.choisitCata() - xml=open(self.ficCata).read() - SchemaMed = readerEfiXsd.efficas.CreateFromDocument(xml) - SchemaMed.exploreCata() - self.cata=SchemaMed - uiinfo.traite_UIinfo(self.cata) - self.Commandes_Ordre_Catalogue=[] - self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata) - self.liste_groupes=None + #self.ficCata = 'Cata_MED_FAM.xml' + #xml = open('/home/A96028/QT5GitEficasTravail/eficas/Med/Cata_MED_FAM.xml').read() + #xml = open('/home/A96028/QT5GitEficasTravail/eficas/CataTestXSD/cata_test1.xml').read() + self.choisitCata() + xml=open(self.ficCata).read() + SchemaMed = readerEfiXsd.efficas.CreateFromDocument(xml) + SchemaMed.exploreCata() + self.cata=SchemaMed + uiinfo.traite_UIinfo(self.cata) + self.Commandes_Ordre_Catalogue=[] + self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata) + self.liste_groupes=None - def dumpToXml(self): - # pour compatibilite - pass + def dumpToXml(self): + # pour compatibilite + pass diff --git a/InterfaceQT4/typeNode.py b/InterfaceQT4/typeNode.py index f9e2e944..387ca360 100644 --- a/InterfaceQT4/typeNode.py +++ b/InterfaceQT4/typeNode.py @@ -19,7 +19,7 @@ # from __future__ import absolute_import try : - from builtins import object + from builtins import object except : pass from PyQt5.QtWidgets import QAction, QMenu, QMessageBox @@ -61,16 +61,16 @@ class PopUpMenuNodeMinimal(object) : self.menu.addAction(self.Supprime) if hasattr(self.appliEficas, 'mesScripts'): if self.editor.code in self.editor.appliEficas.mesScripts : - self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes - if self.tree.currentItem().item.getNom() in self.dict_commandes_mesScripts : - self.ajoutScript() - + self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes + if self.tree.currentItem().item.getNom() in self.dict_commandes_mesScripts : + self.ajoutScript() + def ajoutScript(self): # cochon mais je n arrive pas a faire mieux avec le mecanisme de plugin # a revoir avec un menu et un connect sur le triggered sur le menu ? if hasattr(self.appliEficas, 'mesScripts'): if self.editor.code in self.editor.appliEficas.mesScripts : - self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes + self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes else : return from Extensions import jdc_include @@ -80,18 +80,18 @@ class PopUpMenuNodeMinimal(object) : if type(listeCommandes) != tuple: listeCommandes=(listeCommandes,) numero=0 for commande in listeCommandes : - conditionSalome=commande[3] - if (self.appliEficas.salome == 0 and conditionSalome == True): return - label=commande[1] - tip=commande[5] - self.action=QAction(label,self.tree) - self.action.setStatusTip(tip) - if numero==4: self.action.triggered.connect(self.appelleFonction4) - if numero==3: self.action.triggered.connect(self.appelleFonction3); numero=4 - if numero==2: self.action.triggered.connect(self.appelleFonction2); numero=3 - if numero==1: self.action.triggered.connect(self.appelleFonction1); numero=2 - if numero==0: self.action.triggered.connect(self.appelleFonction0); numero=1 - self.menu.addAction(self.action) + conditionSalome=commande[3] + if (self.appliEficas.salome == 0 and conditionSalome == True): return + label=commande[1] + tip=commande[5] + self.action=QAction(label,self.tree) + self.action.setStatusTip(tip) + if numero==4: self.action.triggered.connect(self.appelleFonction4) + if numero==3: self.action.triggered.connect(self.appelleFonction3); numero=4 + if numero==2: self.action.triggered.connect(self.appelleFonction2); numero=3 + if numero==1: self.action.triggered.connect(self.appelleFonction1); numero=2 + if numero==0: self.action.triggered.connect(self.appelleFonction0); numero=1 + self.menu.addAction(self.action) def appelleFonction0(self): @@ -114,7 +114,7 @@ class PopUpMenuNodeMinimal(object) : nomCmd=nodeTraite.item.getNom() if hasattr(self.appliEficas, 'mesScripts'): if self.editor.code in self.editor.appliEficas.mesScripts : - self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes + self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes else : return listeCommandes=self.dict_commandes_mesScripts[nomCmd] commande=listeCommandes[numero] @@ -122,28 +122,28 @@ class PopUpMenuNodeMinimal(object) : if (nodeTraite.item.isValid() == 0 and conditionValid == True): - QMessageBox.warning( None, - tr("item invalide"), - tr("l item doit etre valide"),) - return + QMessageBox.warning( None, + tr("item invalide"), + tr("l item doit etre valide"),) + return fonction=commande[0] listenomparam=commande[2] listeparam=[] for p in listenomparam: if hasattr(nodeTraite,p): - listeparam.append(getattr(nodeTraite,p)) + listeparam.append(getattr(nodeTraite,p)) if p=="self" : listeparam.append(self) - + try : - res, commentaire= fonction(listeparam) - if not res : - QMessageBox.warning( None, - tr("echec de la fonction"), - tr(commentaire),) - return + res, commentaire= fonction(listeparam) + if not res : + QMessageBox.warning( None, + tr("echec de la fonction"), + tr(commentaire),) + return except : - pass - + pass + @@ -184,25 +184,25 @@ class PopUpMenuNodeMinimal(object) : try : f=open(commande,"rb") except : - texte=tr("impossible de trouver la commande ") + commande - QMessageBox.information( self.editor, tr("Lecteur PDF"), texte) - return + texte=tr("impossible de trouver la commande ") + commande + QMessageBox.information( self.editor, tr("Lecteur PDF"), texte) + return import os if cle_doc.startswith('http:'): - fichier = cle_doc + fichier = cle_doc else : fichier = os.path.abspath(os.path.join(self.editor.maConfiguration.path_doc, cle_doc)) try : - f=open(fichier,"rb") + f=open(fichier,"rb") except : - texte=tr("impossible d'ouvrir ") + fichier - QMessageBox.information( self.editor, tr("Documentation Vide"), texte) - return + texte=tr("impossible d'ouvrir ") + fichier + QMessageBox.information( self.editor, tr("Documentation Vide"), texte) + return + - if os.name == 'nt': - os.spawnv(os.P_NOWAIT,commande,(commande,fichier,)) + os.spawnv(os.P_NOWAIT,commande,(commande,fichier,)) elif os.name == 'posix': script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier) pid = os.system(script) @@ -237,7 +237,7 @@ class PopUpMenuNodePartiel (PopUpMenuNodeMinimal): self.commentMenu.addAction(self.CommApres) self.commentMenu.addAction(self.CommAvant) #ss-menu Parameters: - self.paramMenu =self.menu.addMenu(tr('Parametre')) + self.paramMenu =self.menu.addMenu(tr('Parametre')) self.paramMenu.addAction(self.ParamApres) self.paramMenu.addAction(self.ParamAvant) self.menu.addAction(self.Documentation) diff --git a/InterfaceQT4/viewManager.py b/InterfaceQT4/viewManager.py index 62656df3..3d5975cc 100644 --- a/InterfaceQT4/viewManager.py +++ b/InterfaceQT4/viewManager.py @@ -20,8 +20,8 @@ from __future__ import absolute_import try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import os @@ -32,263 +32,263 @@ from PyQt5.QtCore import QFileInfo DictExtensions= {"MAP" : ".map"} class MyViewManager(object): - def __init__(self,appliEficas): - self.appliEficas=appliEficas - self.tabWidgets = [] - self.mesIndexes = {} - self.appliEficas=appliEficas - self.editors = [] - self.dictEditors={} - self.untitledCount = 0 - self.doubles = {} - - self.myQtab = self.appliEficas.myQtab - self.myQtab.currentChanged.connect(self.indexChanged) - self.myQtab.tabCloseRequested.connect(self.closeTab) - - def indexChanged(self): - index=self.myQtab.currentIndex() - if index in self.dictEditors: - editor=self.dictEditors[index] - if editor.jdc !=None : - CONTEXT.unsetCurrentJdC() - CONTEXT.setCurrentJdC(editor.jdc) - self.appliEficas.maConfiguration=editor.maConfiguration - self.appliEficas.code=editor.maConfiguration.code - self.appliEficas.setWindowTitle(editor.titre) - self.appliEficas.construitMenu() - - def handleOpen(self,fichier=None,patron=0,units=None): - result = None - if fichier is None: - if self.appliEficas.demande==True : - self.appliEficas.definitCode(None,None) - if self.appliEficas.code == None:return - + def __init__(self,appliEficas): + self.appliEficas=appliEficas + self.tabWidgets = [] + self.mesIndexes = {} + self.appliEficas=appliEficas + self.editors = [] + self.dictEditors={} + self.untitledCount = 0 + self.doubles = {} + + self.myQtab = self.appliEficas.myQtab + self.myQtab.currentChanged.connect(self.indexChanged) + self.myQtab.tabCloseRequested.connect(self.closeTab) + + def indexChanged(self): + index=self.myQtab.currentIndex() + if index in self.dictEditors: + editor=self.dictEditors[index] + if editor.jdc !=None : + CONTEXT.unsetCurrentJdC() + CONTEXT.setCurrentJdC(editor.jdc) + self.appliEficas.maConfiguration=editor.maConfiguration + self.appliEficas.code=editor.maConfiguration.code + self.appliEficas.setWindowTitle(editor.titre) + self.appliEficas.construitMenu() + + def handleOpen(self,fichier=None,patron=0,units=None): + result = None + if fichier is None: + if self.appliEficas.demande==True : + self.appliEficas.definitCode(None,None) + if self.appliEficas.code == None:return + if self.appliEficas.code in DictExtensions: - chaine="JDC (*"+DictExtensions[self.appliEficas.code]+");;" - extensions=tr(chaine+ "All Files (*)") + chaine="JDC (*"+DictExtensions[self.appliEficas.code]+");;" + extensions=tr(chaine+ "All Files (*)") elif self.appliEficas.code== "TELEMAC" : extensions=tr('CAS (*.cas);;All Files (*)') else : - extensions=tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)') + extensions=tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)') fichier = QFileDialog.getOpenFileName(self.appliEficas, tr('Ouvrir Fichier'), self.appliEficas.maConfiguration.savedir, extensions) fichier=fichier[0] - fichier = os.path.abspath(fichier) - ulfile = os.path.abspath(fichier) - self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] - self.appliEficas.addToRecentList(fichier) - maPage = self.getEditor( fichier,units=units) - if maPage : result = maPage - if maPage : self.myQtab.setTabText(self.myQtab.indexOf(maPage),os.path.basename(fichier)) - return result - - def closeTab(self,indexAFermer): - self.handleClose(indexAFermer = indexAFermer) - - def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter'),indexAFermer=None): - if doitSauverRecent : self.appliEficas.sauveRecents() - if indexAFermer == None : index=self.myQtab.currentIndex() - else : index = indexAFermer - if index < 0 : return - res=self.checkDirty(self.dictEditors[index],texte) - if res == 2 : return 2 # l utilisateur a annule - idx=index - while idx < len(self.dictEditors) -1 : - self.dictEditors[idx]=self.dictEditors[idx+1] - idx = idx + 1 - del self.dictEditors[len (self.dictEditors) -1] - try : - del self.doubles[self.dictEditors[index]] - except : - pass - self.myQtab.removeTab(index) - return res - - - def run(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.run() - - def saveRun(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.saveRun() - - def handleCloseAll(self,texte=tr('Quitter')): - res=0 - self.appliEficas.sauveRecents() - while len(self.dictEditors) > 0 : - self.myQtab.setCurrentIndex(0) - res=self.handleClose(0,texte) - if res==2 : return res # l utilsateur a annule - return res - - def handleRechercher(self): - #print "passage dans handleRechercher" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleRechercher() - - def handleRechercherDsCatalogue(self): - #print "passage dans handleRechercher" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleRechercherDsCatalogue() - - def handleDeplier(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleDeplier() - - def handleEditCopy(self): - #print "passage dans handleEditCopy" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleEditCopy() - - def handleEditCut(self): - #print "passage dans handleEditCut" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleEditCut() - - def handleEditPaste(self): - #print "passage dans handleEditPaste" - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleEditPaste() - - def handleSupprimer(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleSupprimer() - - def handleAjoutEtape(self,nomEtape): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleAjoutEtape(nomEtape) - - - def newEditor(self,include=0): - if self.appliEficas.demande==True : - self.appliEficas.definitCode(None,None) - if self.appliEficas.code == None:return - maPage=self.getEditor(include=include) - - def newIncludeEditor(self): - self.newEditor(include=1) - - def handleViewJdcFichierSource(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].viewJdcSource() - - def ouvreArbre(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].ouvreArbre() - - def fermeArbre(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].fermeArbre() - - def ajoutCommentaire(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.ajoutCommentaire() - - def handleViewJdcRegles(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].viewJdcRegles() - - def handleGestionParam(self): - index=self.myQtab.currentIndex() - if index < 0 : - QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees")) - return - self.dictEditors[index].gestionParam() - - def handleViewJdcRapport(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].viewJdcRapport() - - def handleViewJdcPy(self): - index=self.myQtab.currentIndex() - if index < 0 : return - self.dictEditors[index].viewJdcPy() - - def saveCurrentEditor(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - if editor in self.doubles : - QMessageBox.warning( - None, - tr("Fichier Duplique"), - tr("Le fichier ne sera pas sauvegarde."),) - return - ok, newName = editor.saveFile() - if ok : - fileName=os.path.basename(newName) - self.myQtab.setTabText(index,fileName) - return ok - - def saveCompleteCurrentEditor(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - ok, newName = editor.saveCompleteFile() - return ok - - def sauveLigneCurrentEditor(self): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - if editor in self.doubles : - QMessageBox.warning( - None, - tr("Fichier Duplique"), - tr("Le fichier ne sera pas sauvegarde."),) - return - ok, newName = editor.sauveLigneFile() - if ok : - fileName=os.path.basename(newName) - self.myQtab.setTabText(index,fileName) - return ok - - def saveAsCurrentEditor(self): - index=self.myQtab.currentIndex() - editor=self.dictEditors[index] - oldName=editor.fichier - ok,newName = editor.saveFileAs() - if ok : - fileName=os.path.basename(newName) - self.myQtab.setTabText(index,fileName) - if editor in self.doubles : - if oldName != newName : - del self.doubles[editor] - return ok - - def displayJDC(self,jdc,fn=None): + fichier = os.path.abspath(fichier) + ulfile = os.path.abspath(fichier) + self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] + self.appliEficas.addToRecentList(fichier) + maPage = self.getEditor( fichier,units=units) + if maPage : result = maPage + if maPage : self.myQtab.setTabText(self.myQtab.indexOf(maPage),os.path.basename(fichier)) + return result + + def closeTab(self,indexAFermer): + self.handleClose(indexAFermer = indexAFermer) + + def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter'),indexAFermer=None): + if doitSauverRecent : self.appliEficas.sauveRecents() + if indexAFermer == None : index=self.myQtab.currentIndex() + else : index = indexAFermer + if index < 0 : return + res=self.checkDirty(self.dictEditors[index],texte) + if res == 2 : return 2 # l utilisateur a annule + idx=index + while idx < len(self.dictEditors) -1 : + self.dictEditors[idx]=self.dictEditors[idx+1] + idx = idx + 1 + del self.dictEditors[len (self.dictEditors) -1] + try : + del self.doubles[self.dictEditors[index]] + except : + pass + self.myQtab.removeTab(index) + return res + + + def run(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.run() + + def saveRun(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.saveRun() + + def handleCloseAll(self,texte=tr('Quitter')): + res=0 + self.appliEficas.sauveRecents() + while len(self.dictEditors) > 0 : + self.myQtab.setCurrentIndex(0) + res=self.handleClose(0,texte) + if res==2 : return res # l utilsateur a annule + return res + + def handleRechercher(self): + #print "passage dans handleRechercher" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleRechercher() + + def handleRechercherDsCatalogue(self): + #print "passage dans handleRechercher" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleRechercherDsCatalogue() + + def handleDeplier(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleDeplier() + + def handleEditCopy(self): + #print "passage dans handleEditCopy" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleEditCopy() + + def handleEditCut(self): + #print "passage dans handleEditCut" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleEditCut() + + def handleEditPaste(self): + #print "passage dans handleEditPaste" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleEditPaste() + + def handleSupprimer(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleSupprimer() + + def handleAjoutEtape(self,nomEtape): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleAjoutEtape(nomEtape) + + + def newEditor(self,include=0): + if self.appliEficas.demande==True : + self.appliEficas.definitCode(None,None) + if self.appliEficas.code == None:return + maPage=self.getEditor(include=include) + + def newIncludeEditor(self): + self.newEditor(include=1) + + def handleViewJdcFichierSource(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].viewJdcSource() + + def ouvreArbre(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].ouvreArbre() + + def fermeArbre(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].fermeArbre() + + def ajoutCommentaire(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.ajoutCommentaire() + + def handleViewJdcRegles(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].viewJdcRegles() + + def handleGestionParam(self): + index=self.myQtab.currentIndex() + if index < 0 : + QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees")) + return + self.dictEditors[index].gestionParam() + + def handleViewJdcRapport(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].viewJdcRapport() + + def handleViewJdcPy(self): + index=self.myQtab.currentIndex() + if index < 0 : return + self.dictEditors[index].viewJdcPy() + + def saveCurrentEditor(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + if editor in self.doubles : + QMessageBox.warning( + None, + tr("Fichier Duplique"), + tr("Le fichier ne sera pas sauvegarde."),) + return + ok, newName = editor.saveFile() + if ok : + fileName=os.path.basename(newName) + self.myQtab.setTabText(index,fileName) + return ok + + def saveCompleteCurrentEditor(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + ok, newName = editor.saveCompleteFile() + return ok + + def sauveLigneCurrentEditor(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + if editor in self.doubles : + QMessageBox.warning( + None, + tr("Fichier Duplique"), + tr("Le fichier ne sera pas sauvegarde."),) + return + ok, newName = editor.sauveLigneFile() + if ok : + fileName=os.path.basename(newName) + self.myQtab.setTabText(index,fileName) + return ok + + def saveAsCurrentEditor(self): + index=self.myQtab.currentIndex() + editor=self.dictEditors[index] + oldName=editor.fichier + ok,newName = editor.saveFileAs() + if ok : + fileName=os.path.basename(newName) + self.myQtab.setTabText(index,fileName) + if editor in self.doubles : + if oldName != newName : + del self.doubles[editor] + return ok + + def displayJDC(self,jdc,fn=None): """ Public slot to display a file in an editor. @param fn name of file to be opened @@ -299,43 +299,43 @@ class MyViewManager(object): editor = self.getEditor(fichier= fn, jdc = jdc ,include=1) self.appliEficas.addToRecentList(editor.getFileName()) - def getEditor(self,fichier = None,jdc = None, units = None,include=0): - newWin = 0 - double = None - indexEditor=0 - for indexEditor in self.dictEditors : - editor=self.dictEditors[indexEditor] - if self.samePath(fichier, editor.getFileName()): - msgBox = QMessageBox() - msgBox.setWindowTitle(tr("Fichier")) - msgBox.setText(tr("Le fichier %s est deja ouvert", str(fichier))) - msgBox.addButton(tr("&Duplication"),0) - msgBox.addButton(tr("&Abandonner"),1) - abort=msgBox.exec_() - if abort: break - double=editor - else : + def getEditor(self,fichier = None,jdc = None, units = None,include=0): + newWin = 0 + double = None + indexEditor=0 + for indexEditor in self.dictEditors : + editor=self.dictEditors[indexEditor] + if self.samePath(fichier, editor.getFileName()): + msgBox = QMessageBox() + msgBox.setWindowTitle(tr("Fichier")) + msgBox.setText(tr("Le fichier %s est deja ouvert", str(fichier))) + msgBox.addButton(tr("&Duplication"),0) + msgBox.addButton(tr("&Abandonner"),1) + abort=msgBox.exec_() + if abort: break + double=editor + else : from .editor import JDCEditor editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,include=include) - if double != None : - self.doubles[editor]=double + if double != None : + self.doubles[editor]=double if editor.jdc: # le fichier est bien un jdc self.editors.append(editor) newWin = 1 else: editor.closeIt() - if newWin: + if newWin: self.addView(editor, fichier) - elif editor.jdc: + elif editor.jdc: self.myQtab.setCurrentIndex(indexEditor) - index=self.myQtab.currentIndex() - if index != -1 : - self.dictEditors[index]=editor - return editor + index=self.myQtab.currentIndex() + if index != -1 : + self.dictEditors[index]=editor + return editor - def addView(self, win, fichier=None): + def addView(self, win, fichier=None): #PNPNPNPN --> a affiner if fichier is None: self.untitledCount += 1 @@ -351,31 +351,31 @@ class MyViewManager(object): self.currentEditor=win win.setFocus() - def getOpenStartDir(self) : - #PN --> Les Preferences + def getOpenStartDir(self) : + #PN --> Les Preferences try : userDir=os.path.expanduser("~/Eficas_install/") return userDir except : return "" - def samePath(self,f1, f2): - """ - compare two paths. - """ - if f1 is None or f2 is None: return 0 - if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 - return 0 + def samePath(self,f1, f2): + """ + compare two paths. + """ + if f1 is None or f2 is None: return 0 + if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 + return 0 - def checkDirty(self, editor,texte): + def checkDirty(self, editor,texte): """ Private method to check dirty status and open a message window. - + @param editor editor window to check @return flag indicating successful reset of the dirty flag (boolean) - """ - res=1 + """ + res=1 if (editor.modified) and (editor in self.doubles) : msgBox = QMessageBox(None) msgBox.setWindowTitle(tr("Fichier Duplique")) @@ -405,28 +405,27 @@ class MyViewManager(object): return ok return res - def handleAjoutGroup(self,listeGroup): - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - editor.handleAjoutGroup(listeGroup) - - def handleFonctionUtilisateur(self,laFonctionUtilisateur, lesArguments): - # Peut-etre a blinder un peu plus sur le nb d argument - index=self.myQtab.currentIndex() - if index < 0 : return - editor=self.dictEditors[index] - if editor.getEtapeCourante() == None : - QMessageBox.information( self.appliEficas, - tr("Selectionner une etape"), - tr("Le texte ne peut pas etre insere dans un fichier vide,\nCreer un materiau vide ou une zone vide et inserer le catalogue apres")) - return - - listeParam = [] - for p in lesArguments: - #print (p) - if hasattr(editor,p): listeParam.append(getattr(editor,p)) - if p=="editor" : listeParam.append(editor) - if p=="etapeCourante" : listeParam.append(editor.getEtapeCourante()) - laFonctionUtilisateur(*listeParam) - + def handleAjoutGroup(self,listeGroup): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + editor.handleAjoutGroup(listeGroup) + + def handleFonctionUtilisateur(self,laFonctionUtilisateur, lesArguments): + # Peut-etre a blinder un peu plus sur le nb d argument + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dictEditors[index] + if editor.getEtapeCourante() == None : + QMessageBox.information( self.appliEficas, + tr("Selectionner une etape"), + tr("Le texte ne peut pas etre insere dans un fichier vide,\nCreer un materiau vide ou une zone vide et inserer le catalogue apres")) + return + + listeParam = [] + for p in lesArguments: + #print (p) + if hasattr(editor,p): listeParam.append(getattr(editor,p)) + if p=="editor" : listeParam.append(editor) + if p=="etapeCourante" : listeParam.append(editor.getEtapeCourante()) + laFonctionUtilisateur(*listeParam) diff --git a/InterfaceQT4/viewManagerSsIhm.py b/InterfaceQT4/viewManagerSsIhm.py index 030f86a8..e487fa89 100644 --- a/InterfaceQT4/viewManagerSsIhm.py +++ b/InterfaceQT4/viewManagerSsIhm.py @@ -20,8 +20,8 @@ from __future__ import absolute_import try : - from builtins import str - from builtins import object + from builtins import str + from builtins import object except : pass import os @@ -32,45 +32,45 @@ class JdcSsIhmHandler(object): # -------------------------------- # retourne a l utilisateur - def __init__(self,viewManager): + def __init__(self,viewManager): # -------------------------------------- - self.viewManagerSsIhm=viewManager + self.viewManagerSsIhm=viewManager - def viewJdcPy(self) : + def viewJdcPy(self) : # --------------------- - self.viewManagerSsIhm.handleViewJdcPy(self) + self.viewManagerSsIhm.handleViewJdcPy(self) - def viewJdcSource(self) : + def viewJdcSource(self) : # --------------------- - self.viewManagerSsIhm.handleViewJdcSource(self) + self.viewManagerSsIhm.handleViewJdcSource(self) - def getFileName(self): + def getFileName(self): # --------------------- - self.viewManagerSsIhm.getFileName(self) + self.viewManagerSsIhm.getFileName(self) - def viewJdcRapport(self) : + def viewJdcRapport(self) : # --------------------- - self.viewManagerSsIhm.handleViewJdcRapport(self) + self.viewManagerSsIhm.handleViewJdcRapport(self) - def getJdcRapport(self) : + def getJdcRapport(self) : # --------------------- - return self.viewManagerSsIhm.handleGetJdcRapport(self) + return self.viewManagerSsIhm.handleGetJdcRapport(self) - def getDicoPython(self) : + def getDicoPython(self) : # ------------------------- - return self.viewManagerSsIhm.generDico(self) + return self.viewManagerSsIhm.generDico(self) - def isJdcValid(self) : + def isJdcValid(self) : # ------------------------- - return self.viewManagerSsIhm.isJdcValid(self) + return self.viewManagerSsIhm.isJdcValid(self) - def fileSaveAs(self,fileName): + def fileSaveAs(self,fileName): # ------------------------- - return self.viewManagerSsIhm.fileSaveAs(self,fileName) + return self.viewManagerSsIhm.fileSaveAs(self,fileName) - def fileLegerSaveAs(self,fileName): + def fileLegerSaveAs(self,fileName): # ----------------------------------- - return self.viewManagerSsIhm.fileLegerSaveAs(self,fileName) + return self.viewManagerSsIhm.fileLegerSaveAs(self,fileName) @@ -79,163 +79,161 @@ class MyViewManagerSsIhm(object): #-------------------------------- # Symetrique de ViewManager mais pas d heritage entre les 2 # dans le viewManager pas de souci pour savoir qui est le jdc sur lequel on travaille -# ici en revanche.... c est moins sur . voir avec le fichier +# ici en revanche.... c est moins sur . voir avec le fichier # -------------------------------- - def __init__(self,appliEficas): + def __init__(self,appliEficas): # -------------------------------- - self.appliEficas=appliEficas - self.tabWidgets = [] - self.mesIndexes = {} - self.dictEditors={} - self.untitledCount = 0 - self.doubles = {} + self.appliEficas=appliEficas + self.tabWidgets = [] + self.mesIndexes = {} + self.dictEditors={} + self.untitledCount = 0 + self.doubles = {} # ------------------------------------------------------ - def handleOpen(self,fichier=None, units=None): + def handleOpen(self,fichier=None, units=None): # ------------------------------------------------------ - result = None - if fichier is None: - print ('nom de fichier obligatoire') - return None + result = None + if fichier is None: + print ('nom de fichier obligatoire') + return None - for handler in self.dictEditors : - editor=self.dictEditors[handler] - if self.samePath(fichier, editor.getFileName()): - print ('fichier deja ouvert . pas de nouvel editor') - return handler + for handler in self.dictEditors : + editor=self.dictEditors[handler] + if self.samePath(fichier, editor.getFileName()): + print ('fichier deja ouvert . pas de nouvel editor') + return handler - monNewHandler = self.getNewEditor(fichier,units) - return monNewHandler + monNewHandler = self.getNewEditor(fichier,units) + return monNewHandler # ---------------------------------------------------------------------- - def getNewEditor(self,fichier = None,jdc = None, units = None,include=0): + def getNewEditor(self,fichier = None,jdc = None, units = None,include=0): # ---------------------------------------------------------------------- # il faudrait decider entre e handler ou non # le cas d usage n est pas tout a fait identique : # avec handler pour les utilisateurs avance # sans pour les utilisateurs encore plus ancvances et les tests - from InterfaceQT4.editorSsIhm import JDCEditorSsIhm - editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include) + from InterfaceQT4.editorSsIhm import JDCEditorSsIhm + editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include) - if editor.jdc: # le fichier est bien un jdc - monHandler = JdcSsIhmHandler(self) - self.dictEditors[monHandler]=editor - return monHandler - else: - print ('impossible de construire le jdc') - return None + if editor.jdc: # le fichier est bien un jdc + monHandler = JdcSsIhmHandler(self) + self.dictEditors[monHandler]=editor + return monHandler + else: + print ('impossible de construire le jdc') + return None # -------------------------------------------------------------------------------- - def getNewEditorNormal(self,fichier = None,jdc = None, units = None,include=0): + def getNewEditorNormal(self,fichier = None,jdc = None, units = None,include=0): # -------------------------------------------------------------------------------- - from InterfaceQT4.editorSsIhm import JDCEditorSsIhm - editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include) - self.editor=editor - return editor + from InterfaceQT4.editorSsIhm import JDCEditorSsIhm + editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include) + self.editor=editor + return editor # ----------------------------- - def samePath(self,f1, f2): + def samePath(self,f1, f2): # ------------------------------ - """ - compare two paths. - """ - if f1 is None or f2 is None: return 0 - if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 - return 0 + """ + compare two paths. + """ + if f1 is None or f2 is None: return 0 + if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1 + return 0 # --------------------------------- - def handleViewJdcPy(self,handler): + def handleViewJdcPy(self,handler): # --------------------------------- if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].viewJdcPy() # --------------------------------- - def getFileName(self,handler): + def getFileName(self,handler): # --------------------------------- if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].getFileName() # --------------------------------------------- - def handleViewJdcSource(self,handler): + def handleViewJdcSource(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].viewJdcSource() # --------------------------------------------- - def handleViewJdcRapport(self,handler): + def handleViewJdcRapport(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].viewJdcRapport() # --------------------------------------------- - def handleGetJdcRapport(self,handler): + def handleGetJdcRapport(self,handler): # --------------------------------------------- if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].getJdcRapport() # --------------------------------------------- - def handleViewJdcRapport(self,handler): + def handleViewJdcRapport(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].viewJdcRapport() # --------------------------------------------- - def generDico(self,handler): + def generDico(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].generDico() # --------------------------------------------- - def isJdcValid(self,handler): + def isJdcValid(self,handler): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].jdc.isValid() # --------------------------------------------- - def fileSaveAs(self,handler,fileName): + def fileSaveAs(self,handler,fileName): # --------------------------------------------- print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return return self.dictEditors[handler].saveFile(fileName) # --------------------------------------------- - def fileLegerSaveAs(self, handler,fileName): + def fileLegerSaveAs(self, handler,fileName): # --------------------------------------------- # print (handler) if not (handler in self.dictEditors) : - print ('editor non trouve') - return + print ('editor non trouve') + return self.dictEditors[handler].saveFileLegerAs(fileName) - -