X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2FgereIcones.py;h=135b983e4b49022a2252e030c1cc43bed682717c;hb=b40366c908695962ba185fb4487e57143bf8927c;hp=66fe006bb9af3dd24437876becae8fbf3f9f16cc;hpb=0cc610dec94446586e72e6ab0385d69e4c535736;p=tools%2Feficas.git diff --git a/InterfaceQT4/gereIcones.py b/InterfaceQT4/gereIcones.py index 66fe006b..135b983e 100644 --- a/InterfaceQT4/gereIcones.py +++ b/InterfaceQT4/gereIcones.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2021 EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -18,46 +18,63 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # Modules Python -import string,types,os,re,sys +from __future__ import absolute_import +from __future__ import print_function +try : + from builtins import str + from builtins import object +except : pass + +import types,os,re,sys import traceback +import six +import inspect + +from PyQt5.QtWidgets import QMessageBox, QFileDialog , QMenu, QPushButton, QTreeView ,QListView, QAbstractItemView +from PyQt5.QtGui import QIcon +from PyQt5.QtCore import QFileInfo, Qt, QSize, QVariant + -from PyQt4 import * -from PyQt4.QtGui import * -from PyQt4.QtCore import * from Extensions.i18n import tr listeSuffixe=('bmp','png','jpg' ,'txt','med') -class FacultatifOuOptionnel: +class FacultatifOuOptionnel(object): def setReglesEtAide(self): listeRegles=() try : - listeRegles = self.node.item.get_regles() + listeRegles = self.node.item.getRegles() except : pass if hasattr(self,"RBRegle"): if listeRegles==() : self.RBRegle.close() - else : self.connect( self.RBRegle,SIGNAL("clicked()"),self.viewRegles) + 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 - from monWidgetCommande import MonWidgetCommande + 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.get_docu() + self.cle_doc = self.node.item.getDocu() if self.cle_doc == None : self.RBInfo.close() - else : self.connect (self.RBInfo,SIGNAL("clicked()"),self.viewDoc) + else : self.RBInfo.clicked.connect (self.viewDoc) def chercheDocMAP(self): try : - clef=self.editor.CONFIGURATION.adresse+"/" + clef=self.editor.maConfiguration.adresse+"/" except : return None - for k in self.editor.readercata.cata[0].JdC.dict_groupes.keys(): - if self.obj.nom in self.editor.readercata.cata[0].JdC.dict_groupes[k]: + 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" @@ -73,18 +90,19 @@ class FacultatifOuOptionnel: QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee ")) def viewRegles(self): - self.node.AppelleBuildLBRegles() + self.node.appellebuildLBRegles() def setIconePoubelle(self): if not(hasattr(self,"RBPoubelle")):return - if self.node.item.object.isoblig() : + + 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.connect(self.RBPoubelle,SIGNAL("clicked()"),self.aDetruire) + self.RBPoubelle.clicked.connect(self.aDetruire) def setIconesSalome(self): if not (hasattr(self,"RBSalome")): return @@ -98,14 +116,16 @@ class FacultatifOuOptionnel: if enable_salome_selection: icon=QIcon(self.repIcon+"/flecheSalome.png") self.RBSalome.setIcon(icon) - self.connect(self.RBSalome,SIGNAL("pressed()"),self.BSalomePressed) + 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): - self.BView2D.close() + if hasattr(self,"RBSalomeVue") : self.RBSalomeVue.close() else : icon1=QIcon(self.repIcon+"/eye.png") self.RBSalomeVue.setIcon(icon1) - self.connect(self.RBSalomeVue,SIGNAL("clicked()"),self.BView2DPressed) + self.RBSalomeVue.clicked.connect(self.BView2DPressed) else: self.RBSalome.close() self.RBSalomeVue.close() @@ -115,13 +135,17 @@ class FacultatifOuOptionnel: if not ( hasattr(self,"BFichier")): return mc = self.node.item.get_definition() mctype = mc.type[0] - if mctype == "Repertoire": + if mctype == "FichierOuRepertoire": + self.BFichierOuRepertoire=self.BFichier + self.BFichierOuRepertoire.clicked.connect(self.BFichierOuRepertoirePressed) + self.BVisuFichier.close() + elif mctype == "Repertoire": self.BRepertoire=self.BFichier - self.connect(self.BRepertoire,SIGNAL("clicked()"),self.BRepertoirePressed) + self.BRepertoire.clicked.connect(self.BRepertoirePressed) self.BVisuFichier.close() else : - self.connect(self.BFichier,SIGNAL("clicked()"),self.BFichierPressed) - self.connect(self.BVisuFichier,SIGNAL("clicked()"),self.BFichierVisu) + self.BFichier.clicked.connect(self.BFichierPressed) + self.BVisuFichier.clicked.connect(self.BFichierVisu) @@ -135,30 +159,38 @@ class FacultatifOuOptionnel: 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 hasattr(self.editor,'tree') and self.editor.tree.currentItem().item.get_nom() in self.appliEficas.mesScripts.dict_commandes.keys() : - print 'il faut programmer le self.ajoutScript()' - print '#PNPNPNPN' + 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): - #print " c est le moment de gerer le passage au suivant" if not(hasattr (self,'RBValide')) : return - icon = QIcon() - if self.node.item.object.isvalid() : - icon=QIcon(self.repIcon+"/ast-green-ball.png") - else : - icon=QIcon(self.repIcon+"/ast-red-ball.png") - self.RBValide.setIcon(icon) + couleur=self.node.item.getIconName() + monIcone = QIcon(self.repIcon+"/" + couleur + ".png") + self.RBValide.setIcon(monIcone) # il faut chercher la bonne fenetre def rendVisible(self): @@ -174,15 +206,42 @@ class FacultatifOuOptionnel: #newNode.fenetre.setFocus() -class ContientIcones: + 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 + 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() + +class ContientIcones(object): def BFichierVisu(self): fichier=self.lineEditVal.text() if fichier == None or str(fichier)=="" : return - from monViewTexte import ViewText + from .monViewTexte import ViewText try : if sys.platform[0:5]=="linux" : - cmd="xdg-open "+ str(fichier) + #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)) @@ -207,48 +266,94 @@ class ContientIcones: elif hasattr(mctype[0], "filters"): filters = mctype[0].filters else: - filters = QString() + filters = "" if len(mctype) > 2 and mctype[2] == "Sauvegarde": fichier = QFileDialog.getSaveFileName(self.appliEficas, tr('Sauvegarder Fichier'), - self.appliEficas.CONFIGURATION.savedir, + self.appliEficas.maConfiguration.savedir, filters) else: + #print(filters) fichier = QFileDialog.getOpenFileName(self.appliEficas, tr('Ouvrir Fichier'), - self.appliEficas.CONFIGURATION.savedir, + self.appliEficas.maConfiguration.savedir, filters) - if not(fichier.isNull()): - ulfile = os.path.abspath(unicode(fichier)) - self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] + fichier=fichier[0] + if not(fichier == ""): + ulfile = os.path.abspath(six.text_type(fichier)) + self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0] self.lineEditVal.setText(fichier) - self.editor.affiche_commentaire(tr("Fichier selectionne")) - self.LEValeurPressed() + self.editor.afficheCommentaire(tr("Fichier selectionne")) + self.LEvaleurPressed() if (QFileInfo(fichier).suffix() in listeSuffixe ): self.image=fichier if (not hasattr(self,"BSelectInFile")): - self.BSelectInFile = QPushButton(self.Widget8) - 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.connect(self.BSelectInFile,SIGNAL("clicked()"),self.BSelectInFilePressed) + 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.CONFIGURATION.savedir, + directory = self.appliEficas.maConfiguration.savedir, options = QFileDialog.ShowDirsOnly) - if not directory.isNull(): - absdir = os.path.abspath(unicode(directory)) - self.appliEficas.CONFIGURATION.savedir = os.path.dirname(absdir) + if not (directory == "") : + absdir = os.path.abspath(six.text_type(directory)) + self.appliEficas.maConfiguration.savedir = os.path.dirname(absdir) self.lineEditVal.setText(directory) - self.LEValeurPressed() + self.LEvaleurPressed() def BSelectInFilePressed(self): from monSelectImage import MonSelectImage @@ -257,59 +362,69 @@ class ContientIcones: def BSalomePressed(self): - self.editor.affiche_commentaire(QString("")) + self.editor.afficheCommentaire("") selection=[] commentaire="" - genea=self.node.item.get_genealogie() + genea=self.node.item.getGenealogie() kwType = self.node.item.get_definition().type[0] for e in genea: if "GROUP_NO" in e: kwType = "GROUP_NO" if "GROUP_MA" in e: kwType = "GROUP_MA" if 'grno' in repr(kwType): kwType = "GROUP_NO" - if 'grma' in repr(kwType): kwType = "GROUP_NO" + if 'grma' in repr(kwType): kwType = "GROUP_MA" if kwType in ("GROUP_NO","GROUP_MA"): selection, commentaire = self.appliEficas.selectGroupFromSalome(kwType,editor=self.editor) mc = self.node.item.get_definition() - if (isinstance(mc.type,types.TupleType) and len(mc.type) > 1 and "(*.med)" in mc.type[1] ): + 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 + #print selection, commentaire if commentaire != "" : QMessageBox.warning( None, tr("Export Med vers Fichier "), tr("Impossibilite d exporter le Fichier"),) return else : - self.lineEditVal.setText(QString(selection)) + self.lineEditVal.setText(str(selection)) return from Accas import SalomeEntry - if isinstance(kwType, types.ClassType) and issubclass(kwType, SalomeEntry): + if inspect.isclass(kwType) and issubclass(kwType, SalomeEntry): selection, commentaire = self.appliEficas.selectEntryFromSalome(kwType,editor=self.editor) if commentaire !="" : - self.editor.affiche_infos(tr(QString(commentaire))) - monTexte="" + self.editor.afficheInfos(tr(str(commentaire))) if selection == [] : return - for geomElt in selection: - monTexte=geomElt+"," + + min,max=self.node.item.getMinMax() + if max > 1 : + self.ajoutNValeur(selection) + return + + monTexte="" + for geomElt in selection: monTexte=geomElt+"," monTexte= monTexte[0:-1] - self.lineEditVal.setText(QString(monTexte)) + self.lineEditVal.setText(str(monTexte)) + self.LEvaleurPressed() def BView2DPressed(self): - valeur=self.lineEditVal.text() - if valeur == QString("") : return + try : + # cas d un Simp de base + valeur=self.lineEditVal.text() + except : + valeur=self.textSelected valeur = str(valeur) + if valeur == str("") : return if valeur : ok, msgError = self.appliEficas.displayShape(valeur) if not ok: - self.editor.affiche_infos(msgError,Qt.red) + self.editor.afficheInfos(msgError,Qt.red) def BParametresPressed(self): - liste=self.node.item.get_liste_param_possible() + liste=self.node.item.getListeParamPossible() from monListeParamPanel import MonListeParamPanel MonListeParamPanel(liste=liste,parent=self).show()