#!/usr/bin/env python

from gtk import *
from gnome.ui import *

class Document(GnomeMDIGenericChild):
    def __init__(self, name=None):
        GnomeMDIGenericChild.__init__(self, name)
        self.set_view_creator(self.create_view)
        self.__name = name

    def create_view(self, data=None):
        sci = GtkButton(self.__name)
        return sci

def new_document(w, name=None):
    global counter

    if not name:
        name = 'MDI Child %i' % counter
        counter = counter + 1
    child = Document(name)
    mdi.add_child(child)
    mdi.add_view(child)

def cb(w):
    print 'Clicked!'

file_menu = [
    UIINFO_MENU_NEW_ITEM('New...', 'Create a new document', new_document),
    UIINFO_MENU_OPEN_ITEM(cb),
    UIINFO_MENU_SAVE_ITEM(cb),
    UIINFO_MENU_SAVE_AS_ITEM(cb),
    UIINFO_MENU_REVERT_ITEM(),
    UIINFO_SEPARATOR,
    UIINFO_MENU_CLOSE_ITEM(cb),
    UIINFO_MENU_EXIT_ITEM(lambda w: w.destroy())
]

files_menu = [ ]

help_menu = [
    UIINFO_MENU_ABOUT_ITEM(cb)
]

menubar = [
    UIINFO_SUBTREE('_File', file_menu),
    UIINFO_SUBTREE('_Documents', files_menu),
    UIINFO_SUBTREE('_Help', help_menu)
]

mdi = None
counter = 1

def init_mdi():
    global mdi

    mdi = GnomeMDI('MDITest', 'main_window')
    mdi.set_menubar_template(menubar)
    mdi.set_child_list_path('Documents/')
    mdi.connect('destroy', lambda w: mainquit())

def run():
    init_mdi()
    mdi.open_toplevel()
    new_document(None)
    new_document(None)
    mainloop()

if __name__ == '__main__':
    run()
