# DEFUNCT # use tuple assignment, not indexing # not done: update for real tk8.0 menus??? ############################################################## # uses menu classes for layouts, instead of type tests ############################################################## from Tkinter import * # widget classes ##################### # menu layout classes ##################### def addMenuItems(parent, items): menu = Menu(parent) for item in items: item.action(menu) return menu class MenuCascade: def __init__(self, label, underline, cascade): self.label = label self.underline = underline self.cascade = cascade def action(self, menu): submenu = addMenuItems(menu, self.cascade) menu.add_cascade(label = self.label, underline = self.underline, menu = submenu) class MenuItem: def __init__(self, label, underline, command): self.label = label self.underline = underline self.command = command def action(self, menu): menu.add_command(label = self.label, underline = self.underline, command = self.command) class MenuSeparator: def action(self, menu): menu.add_separator({}) class MenuDisabler: def __init__(self, indexList): self.indexes = indexList def action(self, menu): for num in self.indexes: menu.entryconfig(num, state=DISABLED) ########################### # customized guimaker class ########################### import guimaker class GuiMaker(guimaker.GuiMaker): def makeMenuBar(self): menubar = Frame(self, relief=RAISED, bd=2) menubar.pack(side=TOP, fill=X) for name, key, items in self.menuBar: mbutton = Menubutton(menubar, text=name, underline=key) mbutton.pack(side=LEFT) menu = addMenuItems(mbutton, items) mbutton['menu'] = menu if self.helpButton: Button(menubar, text = 'Help', cursor = 'gumby', relief = FLAT, command = self.help).pack(side=RIGHT) ############################## # customized big_gui test code ############################## if __name__ == '__main__': from PP2E.Gui.WidgetTour.BigGui import big_gui2 # reuse test methods from guimixin import GuiMixin # get mix-in methods class Hello(GuiMixin, GuiMaker, big_gui2.Hello): # use new GuiMaker def start(self): self.hellos = 1 self.master.title("GuiMaker Demo - classes") self.master.iconname("GuiMaker") self.menuBar = [ ('File', 0, [MenuItem('New...', 0, self.notdone), MenuItem('Open...', 0, self.fileOpen), MenuItem('Quit', 0, self.quit)] ), ('Edit', 0, [MenuItem('Cut', -1, lambda:0), MenuItem('Paste',-1, lambda:0), MenuSeparator(), MenuCascade('Stuff', -1, [MenuItem('Clone', -1, self.clone), MenuItem('More', -1, self.more)]), MenuItem('Delete', -1, lambda:0), MenuDisabler([5])] ), ('Play', 0, [MenuItem('Hello', 0, self.greeting), MenuItem('Popup...', 0, self.dialog), MenuCascade('Demos', 0, [MenuItem('Hanoi', -1, self.notdone), MenuItem('Pong', -1, self.notdone), MenuItem('Other...', -1, self.pickDemo) ]) ] )] self.toolBar = [('Quit', self.quit, {})] Hello().mainloop()