#! /usr/local/bin/python
# Hever Zsolt 1999
from Tkinter import *
from frameobj import *
##########################################################
# Callbacks start here.
##########################################################
def new_canvas():
if not root.v :
root.v=1 # Registering the application
#Application
page=Toplevel()
page.geometry("+330+100")
page.title('Application')
root.a=App(page)
root.a.Toolbar()
def load_canvas():
if not (root.a == None):
root.a.load()
#Setting the toolbar and its methods
root.a.x_()
def save_canvas():
if not (root.a == None):
root.a.save()
def clear_canvas():
if not (root.a == None):
root.a.clearCanvas()
##########################################################
# Functions of Menu building start here.
##########################################################
def makeFileMenu():
# make menu button : "File"
File_button = Menubutton(mBar, {'text': 'File',
'underline': 0,
Pack: {'side': 'left',
'padx': '1m'}})
# make the pulldown part of the File menu. The parameter passed is the master.
# we attach it to the File button as a python attribute called "menu" by convention.
# hopefully this isn't too confusing...
File_button.menu = Menu(File_button)
# add an item. The first param is a menu entry type,
# must be one of: "cascade", "checkbutton", "command", "radiobutton", "seperator"
# see menu-demo-2.py for examples of use
File_button.menu.add('command', {'label': 'New...',
'underline': 0,
'command' : new_canvas})
File_button.menu.add('command', {'label': 'Load...',
'underline': 0,
'command': load_canvas})
File_button.menu.add('command', {'label': 'Save...',
'underline': 0,
'command': save_canvas})
File_button.menu.add('command', {'label': 'Quit',
'underline': 0,
'command': 'exit'})
# set up a pointer from the file menubutton back to the file menu
File_button['menu'] = File_button.menu
return File_button
def makeEditMenu():
# make menu button : "Edit"
Edit_button = Menubutton(mBar, {'text': 'Edit',
'underline': 0,
Pack: {'side': 'left',
'padx' : '1m'}})
Edit_button.menu = Menu(Edit_button)
# just to be cute, let's disable the undo option:
Edit_button.menu.add('command', {"label" : "Undo"} )
# undo is the 0th entry...
Edit_button.menu.entryconfig(0, {"state" : "disabled"})
# and these are just for show. No "command" callbacks attached.
Edit_button.menu.add('command', {"label" : "Cut"} )
Edit_button.menu.add('command', {"label" : "Copy"} )
Edit_button.menu.add('command', {"label" : "Paste"} )
Edit_button.menu.add('command', {"label" : "Clear","command":clear_canvas} )
# set up a pointer from the file menubutton back to the file menu
Edit_button['menu'] = Edit_button.menu
return Edit_button
##################################################################################
#### Main starts here ...
##################################################################################
root = Tk()
root.v= 0
root.a= None
# make a menu bar
mBar = Frame(root, {'relief': 'raised',
'bd': 2,
Pack: {'side': 'top',
'fill': 'x'}})
File_button = makeFileMenu()
Edit_button = makeEditMenu()
# finally, install the buttons in the menu bar.
# This allows for scanning from one menubutton to the next.
mBar.tk_menuBar(File_button, Edit_button)
# and set some properties of the Menu window.
root.geometry("600x35+150+20")
root.title('Visual utility')
root.iconname('Visual utility')
root.mainloop()