X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2Fcompooper.py;h=35b1e2f0218bed63f519da1b7c132e119d552c91;hb=96176d0080e0d4efbd29d98c0df700a64a82acdc;hp=14d05da758790f4816df9bc8f3d099e8dcad0499;hpb=7e72a676f0cd6fcb60eb9515ba411fdc6dfabc1a;p=tools%2Feficas.git diff --git a/InterfaceQT4/compooper.py b/InterfaceQT4/compooper.py index 14d05da7..35b1e2f0 100644 --- a/InterfaceQT4/compooper.py +++ b/InterfaceQT4/compooper.py @@ -1,60 +1,127 @@ -# -*- coding: utf-8 -*- -import traceback -import string -from PyQt4 import * -from PyQt4.QtGui import * -from PyQt4.QtCore import * - +#-*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2013 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +from __future__ import absolute_import +try : + from builtins import str +except : pass + +import os +import tempfile +from PyQt5.QtWidgets import QMessageBox, QAction, QApplication +from PyQt5.QtGui import QCursor +from PyQt5.QtCore import Qt + +from Extensions.i18n import tr +from Extensions.eficas_exception import EficasException from Editeur import Objecttreeitem -import browser -import typeNode +from . import browser +from . import typeNode class Node(browser.JDCNode, typeNode.PopUpMenuNode): - def getPanel( self ): - """ - """ - from monCommandePanel import MonCommandePanel - return MonCommandePanel(self,parent=self.editor) + + + def select(self): + browser.JDCNode.select(self) + self.treeParent.tree.openPersistentEditor(self,1) + self.monWidgetNom=self.treeParent.tree.itemWidget(self,1) + self.monWidgetNom.returnPressed.connect(self.nomme) + if self.item.GetIconName() == "ast-red-square" : self.monWidgetNom.setDisabled(True) + #else : self.monWidgetNom.setFocus() ;self.monWidgetNom.setDisabled(False) + + def nomme(self): + nom=str(self.monWidgetNom.text()) + self.editor.init_modif() + test,mess = self.item.nomme_sd(nom) + if (test== 0): + self.editor.affiche_infos(mess,Qt.red) + old=self.item.GetText() + self.monWidgetNom.setText(old) + else : + self.editor.affiche_commentaire(tr("Nommage du concept effectue")) + self.onValid() + try : + self.fenetre.LENom.setText(nom) + except : + pass + + + def getPanel(self): + from .monWidgetCommande import MonWidgetCommande + return MonWidgetCommande(self,self.editor,self.item.object) def createPopUpMenu(self): typeNode.PopUpMenuNode.createPopUpMenu(self) if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome: - self.menu.insertItem( 'View3D', self.view3D ) - - def doPaste(self,node_selected): - """ - Déclenche la copie de l'objet item avec pour cible - l'objet passé en argument : node_selected - """ - objet_a_copier = self.item.get_copie_objet() - child=node_selected.doPasteCommande(objet_a_copier) - return child - - def doPasteCommande(self,objet_a_copier): - """ - Réalise la copie de l'objet passé en argument qui est nécessairement - une commande - """ - parent=self.parent - #child = parent.item.append_child(objet_a_copier,self.item.getObject()) - child = self.append_brother(objet_a_copier) - #if child is None:return 0 - return child - - def doPasteMCF(self,objet_a_copier): - """ - Réalise la copie de l'objet passé en argument (objet_a_copier) - Il s'agit forcément d'un mot clé facteur - """ - child = self.append_child(objet_a_copier,pos='first',retour='oui') - return child + self.ViewElt = QAction(tr('View3D'),self.tree) + self.tree.connect(self.ViewElt,SIGNAL("triggered()"),self.view3D) + self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure")) + self.menu.addAction(self.ViewElt) + if self.item.isvalid() : + self.ViewElt.setEnabled(1) + else: + self.ViewElt.setEnabled(0) + if self.item.get_nom() == "DISTRIBUTION" : + self.Graphe = QAction(tr('Graphique'),self.tree) + self.Graphe.triggered.connect(self.viewPng) + self.Graphe.setStatusTip(tr("affiche la distribution ")) + self.menu.addAction(self.Graphe) + if self.item.isvalid() : + self.Graphe.setEnabled(1) + else: + self.Graphe.setEnabled(0) def view3D(self) : from Editeur import TroisDPal - troisD=TroisDPal.TroisDPilote(self.item,self.editor.parent.appliEficas) + troisD=TroisDPal.TroisDPilote(self.item,self.editor.appliEficas) troisD.envoievisu() + def viewPng(self) : + from monPixmap import MonLabelPixmap + import generator + try: + QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) + g = generator.plugins[self.appliEficas.format_fichier]() + g.gener(self.item.object, format='beautifie') + stdGener = g.getGenerateur() + loi = list(g.dictMCLois.keys())[0] + nomLoi = loi.get_name() + (fd, fichier) = tempfile.mkstemp(prefix = "openturns_graph_", suffix = ".png") + os.close(fd) + chemin = os.path.dirname(fichier) + base = os.path.splitext(os.path.basename(fichier))[0] + script = stdGener.GraphiquePDF(loi, chemin, base) + #print script + d = {} + exec(script, d) + widgetPng=MonLabelPixmap(self.appliEficas,fichier,nomLoi) + os.remove(fichier) + QApplication.restoreOverrideCursor() + widgetPng.show() + except: + QApplication.restoreOverrideCursor() + QMessageBox.warning( + self.appliEficas, + tr("Erreur interne"), + tr("La PDF de la loi ne peut pas etre affichee."), + tr("&Annuler")) class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau @@ -75,7 +142,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): def GetIconName(self): """ Retourne le nom de l'icone a afficher dans l'arbre - Ce nom dépend de la validité de l'objet + Ce nom depend de la validite de l'objet """ if not self.object.isactif(): return "ast-white-square" @@ -104,11 +171,12 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): - la fonte dans laquelle afficher ce texte - la couleur du texte """ - if self.object.isactif(): + return self.labeltext,None,None + #if self.object.isactif(): # None --> fonte et couleur par défaut - return self.labeltext,None,None - else: - return self.labeltext, None, None #CS_pbruno todo + # return self.labeltext,None,None + #else: + # return self.labeltext, None, None #CS_pbruno todo def get_objet(self,name) : for v in self.object.mc_liste: @@ -135,15 +203,15 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): # item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList itemobject=item.getObject() if itemobject.isoblig() : - self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ') - return 0 + #self.editor.affiche_infos(tr('Impossible de supprimer un mot-clef obligatoire '),Qt.red) + return (0,tr('Impossible de supprimer un mot-clef obligatoire ')) if self.object.suppentite(itemobject): - message = "Mot-clé " + itemobject.nom + " supprimé" - self.appli.affiche_infos(message) - return 1 + message = tr("Mot-clef %s supprime " , itemobject.nom) + #self.editor.affiche_commentaire(message) + return (1,message) else : - self.appli.affiche_infos('Pb interne : impossible de supprimer ce mot-clé') - return 0 + #self.editor.affiche_commentaire(tr('Pb interne : impossible de supprimer ce mot-clef'),Qt.red) + return (0,tr('Pb interne : impossible de supprimer ce mot-clef')) def GetText(self): try: @@ -151,9 +219,10 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): except: return '' - def keys(self): - keys=self.object.mc_dict.keys() - return keys + # PNPN ???? + #def keys(self): + # keys=self.object.mc_dict + # return keys def GetSubList(self): """ @@ -197,6 +266,11 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): """ return 1 + def updateDeplace(self,item): + if item.sd and item.sd.nom: + self.object.sd=item.sd + self.object.sd.nom=item.sd.nom + def update(self,item): if item.sd and item.sd.nom: self.nomme_sd(item.sd.nom) @@ -208,7 +282,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): oldnom=self.object.sd.nom test,mess= self.object.nomme_sd(nom) if test:self.object.parent.reset_context() - if (test and self.appli.dict_reels.has_key(oldnom) ): + if (test and oldnom in self.appli.dict_reels ): self.appli.dict_reels[nom]=self.appli.dict_reels[oldnom] return test,mess @@ -224,7 +298,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): représentatif de self.object """ # Format de fichier utilisé - format=self.appli.format_fichier + format=self.appli.appliEficas.format_fichier return self.object.get_objet_commentarise(format) def get_objet_commentarise_BAK(self): @@ -232,14 +306,14 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): Cette méthode retourne un objet commentarisé représentatif de self.object """ - import generator,string,Accas + import generator,Accas # Format de fichier utilisé - format=self.appli.format_fichier + format=self.appli.appliEficas.format_fichier g=generator.plugins[format]() texte_commande = g.gener(self.object,format='beautifie') # Il faut enlever la premiere ligne vide de texte_commande que # rajoute le generator - rebut,texte_commande = string.split(texte_commande,'\n',1) + rebut,texte_commande = texte_commande.split('\n',1) # on construit l'objet COMMANDE_COMM repésentatif de self mais non # enregistré dans le jdc commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non',