Salome HOME
CCAR: correction edition include avec fichier inexistant
[tools/eficas.git] / Editeur / jdcdisplay.py
index da4d1ac82486a5c00b079de03517698e74d470a2..863c5b61024944fa1f38712ddb27693b706ecdb2 100644 (file)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
 """
 # Modules Python
 import types
+import traceback
 import Tkinter
 import Pmw
 
 # Modules Eficas
 import panels
 from treeitemincanvas import TREEITEMINCANVAS
-from tkMessageBox import showinfo,showerror
+from widgets import showinfo,showerror
 
 class CONFIG:
    isdeveloppeur='NON'
@@ -108,13 +110,13 @@ class JDCDISPLAY:
                  # On a une chaine avec & en tete => on cree un radiobouton
                  try:
                     command=getattr(node.item,method[1:])
-                    menu.add_radiobutton(label=label,command=lambda a=self.appli,c=command:c(a))
+                    menu.add_radiobutton(label=label,command=lambda a=self.appli,c=command,n=node:c(a,n))
                     if radio == None:radio=number_item
                  except:pass
             else:
                  try:
                     command=getattr(node.item,method)
-                    menu.add_command(label=label,command=lambda a=self.appli,c=command:c(a))
+                    menu.add_command(label=label,command=lambda a=self.appli,c=command,n=node:c(a,n))
                  except:pass
       # Si au moins un radiobouton existe on invoke le premier
       if radio:menu.invoke(radio)
@@ -127,12 +129,13 @@ class JDCDISPLAY:
       """
       if node is not self.node_selected :
          self.create_panel(node)
-      # on conserve la trace du noeud sélectionné et de celui d'avant
-      if self.node_selected :
-          self.ancien_node = self.node_selected
-          self.node_selected = node
-      else:
-          self.ancien_node = self.node_selected = node
+      self.node_selected = node
+      ## on conserve la trace du noeud sélectionné et de celui d'avant
+      #if self.node_selected :
+          #self.ancien_node = self.node_selected
+          #self.node_selected = node
+      #else:
+          #self.ancien_node = self.node_selected = node
 
    def create_panel(self,node):
       """
@@ -156,6 +159,9 @@ class JDCDISPLAY:
              z.show_stats()
              z.show_cycles()
 
+      if node is None:
+          self.panel_courant=None
+          return self.panel_courant
 
       if node.item.isactif():
           if hasattr(node.item,"panel"):
@@ -196,9 +202,10 @@ class JDCDISPLAY:
       else:
           self.init_modif()
           node.delete()
-          if nom_sd:
-              child.item.nomme_sd(nom_sd)
-          child.update()
+          #if nom_sd:
+              #child.item.nomme_sd(nom_sd)
+          child.select()
+          #child.update()
 
    def doCut(self):
       """
@@ -227,82 +234,32 @@ class JDCDISPLAY:
       Lance la copie de l'objet placé dans self.appli.noeud_a_editer
       Ne permet que la copie d'objets de type Commande ou MCF
       """
-      objet_a_copier = self.appli.noeud_a_editer.item.get_copie_objet()
-      if objet_a_copier.__class__.__name__ in ('ETAPE','PROC_ETAPE','MACRO_ETAPE','FORM_ETAPE'):
-          self.doPaste_Commande(objet_a_copier)
-      elif objet_a_copier.__class__.__name__ == "MCFACT":
-          self.doPaste_MCF(objet_a_copier)
-      else:
-          showinfo("Copie impossible",
-                   "Vous ne pouvez copier que des commandes ou des mots-clés facteurs !")
-      return
+      try:
+         child=self.appli.noeud_a_editer.doPaste(self.node_selected)
+      except:
+         traceback.print_exc()
+         showinfo("Action de coller impossible",
+                  "L'action de coller apres un tel objet n'est pas permise")
+         return
 
-   def doPaste_Commande(self,objet_a_copier):
-      """
-          Réalise la copie de l'objet passé en argument qui est nécessairement 
-          une commande
-      """
-      # il faut vérifier que le noeud sélectionné (noeud courant) est bien
-      # une commande ou un JDC sinon la copie est impossible ...
-      if self.node_selected.item.isCommande() :
-          child = self.node_selected.append_brother(objet_a_copier,retour='oui')
-      elif self.node_selected.item.isJdc() :
-          child = self.node_selected.append_child(objet_a_copier,pos='first',
-                                                     retour='oui')
-      else:
-          showinfo("Copie impossible",
-                   "Vous ne pouvez coller la commande copiée à ce niveau de l'arborescence !")
-          self.appli.affiche_infos("Copie refusée")
-          return
-      # il faut déclarer le JDCDisplay_courant modifié
-      self.init_modif()
-      # suppression éventuelle du noeud sélectionné
-      if self.edit == "couper":
-          self.appli.noeud_a_editer.delete()
       if child == 0:
-          # la copie est impossible
           if self.appli.message != '':
-              showerror("Copie refusée",self.appli.message)
-              self.appli.message = ''
-          self.appli.affiche_infos("Copie refusée")
-      # on rend la copie à nouveau possible en libérant le flag edit
-      self.edit="copier"
-
-   def doPaste_MCF(self,objet_a_copier):
-      """
-      Réalise la copie de l'objet passé en argument qui est nécessairement un MCF
-      """
-      if self.node_selected.item.isCommande() :
-          # le noeud courant est une ETAPE
-          child = self.node_selected.append_child(objet_a_copier,retour='oui')
-      elif self.node_selected.item.isMCList() :
-          # le noeud courant est une MCList
-          child = self.node_selected.parent.append_child(objet_a_copier,pos='first',retour='oui')
-      elif self.node_selected.item.isMCFact():
-          # le noeud courant est un MCFACT
-          if self.node_selected.parent.item.isMCList():
-             # le noeud selectionne est un MCFACT dans une MCList
-             child = self.node_selected.parent.append_child(objet_a_copier,
-                                                            pos=self.node_selected.item,
-                                                            retour='oui')
-          else:
-             # le noeud MCFACT selectionne n'est pas dans une MCList
-             child = self.node_selected.parent.append_child(objet_a_copier,retour='oui')
-      else:
-          showinfo("Copie impossible",
-                   "Vous ne pouvez coller le mot-clé facteur copié à ce niveau de l'arborescence !")
+             showerror("Copie refusée",self.appli.message)
+             self.appli.message = ''
           self.appli.affiche_infos("Copie refusée")
           return
+
       # il faut déclarer le JDCDisplay_courant modifié
       self.init_modif()
       # suppression éventuelle du noeud sélectionné
+      # si possible on renomme l objet comme le noeud couper
       if self.edit == "couper":
-          self.appli.noeud_a_editer.delete()
-      if child == 0:
-          if self.appli.message != '':
-              showerror("Copie refusée",self.appli.message)
-              self.appli.message = ''
-          self.appli.affiche_infos("Copie refusée")
+         #nom = self.appli.noeud_a_editer.item.object.sd.nom
+         item=self.appli.noeud_a_editer.item
+         self.appli.noeud_a_editer.delete()
+         child.item.update(item)
+        #test,mess = child.item.nomme_sd(nom)
+         child.select()
       # on rend la copie à nouveau possible en libérant le flag edit
       self.edit="copier"