X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=Editeur%2Fjdcdisplay.py;h=da4d1ac82486a5c00b079de03517698e74d470a2;hb=ae668252451f924adb04dd6a8d71fd3f63e29728;hp=7c7060691dd8bbcafe504456aacefb12d9e00a95;hpb=8032f97d8fa3b30348497c1dc96c987aaffce80f;p=tools%2Feficas.git diff --git a/Editeur/jdcdisplay.py b/Editeur/jdcdisplay.py index 7c706069..da4d1ac8 100644 --- a/Editeur/jdcdisplay.py +++ b/Editeur/jdcdisplay.py @@ -23,6 +23,7 @@ les informations attachées au noeud de l'arbre sélectionné """ # Modules Python +import types import Tkinter import Pmw @@ -72,11 +73,51 @@ class JDCDISPLAY: self.modified='n' self.pane=Pmw.PanedWidget(self.parent,orient='horizontal') - self.pane.add('treebrowser',min=0.5) - self.pane.add('selected',min=0.5) + 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.appli,self.select_node,self.make_rmenu) + + def make_rmenu(self,node,event): + if hasattr(node.item,'rmenu_specs'): + rmenu = Tkinter.Menu(self.pane.pane('treebrowser'), tearoff=0) + #node.select() + self.cree_menu(rmenu,node.item.rmenu_specs,node) + rmenu.tk_popup(event.x_root,event.y_root) + + def cree_menu(self,menu,itemlist,node): + """ + Ajoute les items du tuple itemlist + dans le menu menu + """ + number_item=0 + radio=None + for item in itemlist: + number_item=number_item + 1 + if not item : + menu.add_separator() + else: + label,method=item + if type(method) == types.TupleType: + # On a un tuple => on cree une cascade + menu_cascade=Tkinter.Menu(menu) + menu.add_cascade(label=label,menu=menu_cascade) + self.cree_menu(menu_cascade,method,node) + elif method[0] == '&': + # 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)) + 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)) + except:pass + # Si au moins un radiobouton existe on invoke le premier + if radio:menu.invoke(radio) def select_node(self,node): """ @@ -194,7 +235,7 @@ class JDCDISPLAY: else: showinfo("Copie impossible", "Vous ne pouvez copier que des commandes ou des mots-clés facteurs !") - return + return def doPaste_Commande(self,objet_a_copier): """ @@ -265,3 +306,9 @@ class JDCDISPLAY: # on rend la copie à nouveau possible en libérant le flag edit self.edit="copier" + def update(self): + """Cette methode est utilisee par le JDC associe pour + signaler des modifications globales du JDC + """ + self.tree.update() +