Salome HOME
CCAR: correction creation poursuite
[tools/eficas.git] / Editeur / macrodisplay.py
index 3795961557ba70ffd0bbaaad45605c7b73ec1a7a..f6b35d6f6d5455c3a18fae6798bcadd9b91b06f8 100644 (file)
@@ -30,9 +30,12 @@ import Tkinter,Pmw
 import images
 import tooltip
 import Objecttreeitem
+import compojdc
+import treewidget
 from widgets import Fenetre
 
-class MACRO2TreeItem(Objecttreeitem.ObjectTreeItem):
+#class MACRO2TreeItem(Objecttreeitem.ObjectTreeItem):
+class MACRO2TreeItem(compojdc.JDCTreeItem):
   def IsExpandable(self):
     return 1
 
@@ -72,17 +75,18 @@ class MACRO2TreeItem(Objecttreeitem.ObjectTreeItem):
       return self.object.get_l_noms_etapes()
 
 class MacroDisplay:
-  def __init__(self,appli,jdc,nom_jdc):
+  def __init__(self,appli,macroitem,nom_jdc):
     self.fenetre = Tkinter.Toplevel()
     self.fenetre.configure(width = 800,height=500)
     self.fenetre.protocol("WM_DELETE_WINDOW", self.quit)
     self.fenetre.title("Visualisation Macro_Etape")
-    self.jdc=jdc
+    self.macroitem=macroitem
+    self.jdc=macroitem.object.jdc_aux
     self.nom_jdc=nom_jdc
     self.appli=appli
     self.barre=Tkinter.Frame(self.fenetre,relief="ridge",bd=2)
     self.barre.pack(expand=1,fill=Tkinter.X)
-    if self.jdc.fichier_text is not None:
+    if self.macroitem.object.fichier_text is not None:
       b=Tkinter.Button(self.barre,image=images.get_image("Zoom24"),command=self.visufile)
       b.pack(side='left')
       tp=tooltip.TOOLTIP(b,"View file")
@@ -93,13 +97,13 @@ class MacroDisplay:
     self.canvas=self.mainPart.component('canvas')
     Pmw.Color.changecolor(self.canvas,background='gray95')
     self.mainPart.pack(padx=10,pady=10,fill = 'both', expand = 1)
-    self.item=MACRO2TreeItem(self.appli,nom_jdc,jdc)
+    self.item=MACRO2TreeItem(self.appli,nom_jdc,self.jdc)
     import treewidget
     self.tree = treewidget.Tree(self.appli,self.item,self.mainPart,command=None,rmenu=self.make_rmenu)
     self.tree.draw()
 
   def visufile(self):
-    Fenetre(self.appli,titre="Source du fichier inclus",texte=self.jdc.fichier_text)
+    Fenetre(self.appli,titre="Source du fichier inclus",texte=self.macroitem.object.fichier_text)
 
   def make_rmenu(self,node,event):
       if hasattr(node.item,'rmenu_specs'):
@@ -129,20 +133,69 @@ class MacroDisplay:
                  # 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)
 
   def quit(self):
+    try:
+       self.macroitem.views.remove(self)
+    except:
+       pass
     self.fenetre.destroy()
 
-def makeMacroDisplay(appli,jdc,nom_jdc):
-  return MacroDisplay(appli,jdc,nom_jdc)
+def makeMacroDisplay(appli,macroitem,nom_item):
+  return MacroDisplay(appli,macroitem,nom_item)
+
+class TREEITEMINCANVAS:
+   def __init__(self,object,nom="",parent=None,appli=None,sel=None,rmenu=None):
+      print "TREEITEMINCANVAS",object
+      self.object=object
+      self.nom=nom
+      self.appli=appli
+      self.parent=parent
+
+      self.item=MACRO2TreeItem(self.appli,self.nom,self.object)
+      self.canvas=Pmw.ScrolledCanvas(self.parent,borderframe=1,canvas_background='gray95')
+      self.canvas.pack(padx=10,pady=10,fill = 'both', expand = 1)
+      if not sel:
+         def sel(event=None):
+            return
+      self.tree=treewidget.Tree(self.appli,self.item,self.canvas,command=sel,rmenu=rmenu)
+      self.tree.draw()
+
+   def mainloop(self):
+      self.parent.mainloop()
+
+   def update(self):
+      """Cette methode est utilisee pour signaler une mise a jour des objets associes"""
+      self.tree.update()
+
+import jdcdisplay
+
+class MACRODISPLAY(jdcdisplay.JDCDISPLAY):
+   def __init__(self,jdc,nom_jdc,appli=None,parent=None):
+      print "MACRODISPLAY",jdc
+      self.jdc=jdc
+      self.nom_jdc=nom_jdc
+      self.fichier=None
+      self.panel_courant=None
+      self.appli=appli
+      self.parent=parent
+      self.node_selected = None
+      self.modified='n'
+
+      self.pane=Pmw.PanedWidget(self.parent,orient='horizontal')
+      self.pane.add('treebrowser',min=0.4,size=0.5)
+      self.pane.add('selected',min=0.4)
+      self.pane.pack(expand=1,fill='both')
+      self.tree=TREEITEMINCANVAS(jdc,nom_jdc,self.pane.pane('treebrowser'),
+                 self.appli,self.select_node,self.make_rmenu)