#! /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()