Salome HOME
bug de CBChecked a True
[tools/eficas.git] / InterfaceQT4 / compooper.py
index 66bd646fe7dd1131aa2af4ba959350116b184f99..9fd380423a96d4e5495c0f016690d8bef8e24abb 100644 (file)
-# -*- 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
+#
+import os
+import tempfile
+from determine import monEnvQT5
+if monEnvQT5 :
+   from PyQt5.QtWidgets import QMessageBox, QAction, QApplication
+   from PyQt5.QtGui  import QCursor
+   from PyQt5.QtCore import Qt
+else :
+   from PyQt4.QtGui  import *
+   from PyQt4.QtCore import *
+
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
 
 from Editeur     import Objecttreeitem
 import browser
 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)
+           if monEnvQT5 : self.Graphe.triggered.connect(self.viewPng)
+           else : self.tree.connect(self.Graphe,SIGNAL("triggered()"),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) :
-        import TroisDPal
-        troisD=TroisDPal.TroisDPilote(self.item,self.editor.parent.appliEficas)
+        from Editeur import TroisDPal
+        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 = 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 in 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 +143,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 +172,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 +204,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:
@@ -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)
@@ -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):
@@ -234,7 +308,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
       """
       import generator,string,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