X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Editeur%2Fmacrodisplay.py;h=971dd10c25ff6f4719e7fb94373c06919093fa6b;hb=36ca867c4099d6a804374b8f6a2b897d9ea69a09;hp=9c80f2640eee9fc252a3ce01c7dc99861d218433;hpb=9fedb490389cab173c8ecb6e1af88fb53e3a54f5;p=tools%2Feficas.git diff --git a/Editeur/macrodisplay.py b/Editeur/macrodisplay.py index 9c80f264..971dd10c 100644 --- a/Editeur/macrodisplay.py +++ b/Editeur/macrodisplay.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -29,59 +30,26 @@ import Tkinter,Pmw import images import tooltip import Objecttreeitem +import compojdc +import treewidget from widgets import Fenetre -class MACRO2TreeItem(Objecttreeitem.ObjectTreeItem): - def IsExpandable(self): - return 1 - - def GetText(self): - return " " - - def GetIconName(self): - if self.object.isvalid(): - return "ast-green-square" - else: - return "ast-red-square" - - def keys(self): - return range(len(self.object.etapes)) - - def GetSubList(self): - sublist=[] - for key in self.keys(): - liste = self.object.etapes - try: - value = liste[key] - except KeyError: - continue - def setfunction(value, key=key, object=liste): - object[key] = value - item = self.make_objecttreeitem(self.appli,value.ident() + " : ", value, setfunction) - sublist.append(item) - return sublist - - def verif_condition_bloc(self): - # retourne la liste des sous-items dont la condition est valide - # sans objet pour le JDC - return [],[] - - def get_l_noms_etapes(self): - """ Retourne la liste des noms des étapes de self.object""" - return self.object.get_l_noms_etapes() +class MACRO2TreeItem(compojdc.JDCTreeItem): + pass 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") @@ -92,13 +60,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'): @@ -128,20 +96,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)