diff options
Diffstat (limited to 'examples/pygtk-demo/demos/menu.py')
-rw-r--r-- | examples/pygtk-demo/demos/menu.py | 126 |
1 files changed, 69 insertions, 57 deletions
diff --git a/examples/pygtk-demo/demos/menu.py b/examples/pygtk-demo/demos/menu.py index cc99e00e..3a61a427 100644 --- a/examples/pygtk-demo/demos/menu.py +++ b/examples/pygtk-demo/demos/menu.py @@ -1,76 +1,88 @@ #!/usr/bin/env python -'''Menus Test +'''Menu This example demonstrates the use of various menu types in gtk. It demonstrates the new submenu navigation and scrolling menu features of gtk 2.0.''' -description = 'Menus' - import gtk def create_menu(depth, length=5): if depth < 1: - return None + return None + menu = gtk.Menu() group= None + for i in range(length): - menuitem = gtk.RadioMenuItem(group, 'item %2d - %d' % (depth, i)) - group = menuitem - menu.add(menuitem) - menuitem.show() - if depth > 1: - submenu = create_menu(depth - 1) - menuitem.set_submenu(submenu) + menuitem = gtk.RadioMenuItem(group, 'item %2d - %d' % (depth, i)) + group = menuitem + menu.add(menuitem) + menuitem.show() + if depth > 1: + submenu = create_menu(depth - 1) + menuitem.set_submenu(submenu) return menu +class MenuDemo(gtk.Window): + def __init__(self, parent=None): + # Create the toplevel window + gtk.Window.__init__(self) + try: + self.set_screen(parent.get_screen()) + except AttributeError: + self.connect('destroy', lambda *w: gtk.main_quit()) + + self.set_title(self.__class__.__name__) + + vbox = gtk.VBox() + self.add(vbox) + + menubar = gtk.MenuBar() + vbox.pack_start(menubar, expand=False) + + menuitem = gtk.MenuItem('test\nline2') + menuitem.set_submenu(create_menu(2, 50)) + menubar.add(menuitem) + + menuitem = gtk.MenuItem('foo') + menuitem.set_submenu(create_menu(2)) + menubar.add(menuitem) + + menuitem = gtk.MenuItem('bar') + menuitem.set_submenu(create_menu(2)) + menuitem.set_right_justified(True) + menubar.add(menuitem) + + vbox2 = gtk.VBox(spacing=10) + vbox2.set_border_width(10) + vbox.pack_start(vbox2) + + combo_box = gtk.combo_box_new_text() + combo_box.set_wrap_width(2) + for i in range(50): + combo_box.append_text('item - %d' % i) + combo_box.set_active(0) + vbox2.pack_start(combo_box) + + separator = gtk.HSeparator() + vbox.pack_start(separator, expand=False) + + vbox2 = gtk.VBox(spacing=10) + vbox2.set_border_width(10) + vbox.pack_start(vbox2, expand=False) + + button = gtk.Button('close') + button.connect('clicked', lambda button, w=self: w.destroy()) + vbox2.pack_start(button) + button.set_flags(gtk.CAN_DEFAULT) + button.grab_default() + + self.show_all() + def main(): - window = gtk.Window() - window.connect('destroy', lambda win: gtk.main_quit()) - window.set_title('Menus') - - vbox = gtk.VBox() - window.add(vbox) - - menubar = gtk.MenuBar() - vbox.pack_start(menubar, expand=gtk.FALSE) - - menuitem = gtk.MenuItem('test\nline2') - menuitem.set_submenu(create_menu(2, 50)) - menubar.add(menuitem) - - menuitem = gtk.MenuItem('foo') - menuitem.set_submenu(create_menu(2)) - menubar.add(menuitem) - - menuitem = gtk.MenuItem('bar') - menuitem.set_submenu(create_menu(2)) - menuitem.set_right_justified(gtk.TRUE) - menubar.add(menuitem) - - vbox2 = gtk.VBox(spacing=10) - vbox2.set_border_width(10) - vbox.pack_start(vbox2) - - optionmenu = gtk.OptionMenu() - optionmenu.set_menu(create_menu(1,50)) - vbox2.pack_start(optionmenu) - - separator = gtk.HSeparator() - vbox.pack_start(separator, expand=gtk.FALSE) - - vbox2 = gtk.VBox(spacing=10) - vbox2.set_border_width(10) - vbox.pack_start(vbox2, expand=gtk.FALSE) - - button = gtk.Button('close') - button.connect('clicked', lambda widget, window=window: window.destroy()) - vbox2.pack_start(button) - button.set_flags(gtk.CAN_DEFAULT) - button.grab_default() - - window.show_all() + MenuDemo() gtk.main() - + if __name__ == '__main__': main() |