function create_menu(depth, tearoff) { local menu, menuitem, group, tag, i, j; if (depth < 1) { menu = nil; } else { menu = new(GtkMenu); group = nil; if (tearoff == TRUE) { menuitem = gtk_tearoff_menu_item_new (); menu.append(menuitem); menuitem.show(); } for (i = 0, j = 1; i < 5; i++, j++) { tag = string("item ", depth, " - ", j); menuitem = gtk_radio_menu_item_new_with_label (group, tag); group = menuitem.group (); if (depth % 2 != 0) menuitem.set_show_toggle(TRUE); menu.append(menuitem); menuitem.show(); if (i == 3) menuitem.set_sensitive(FALSE); menuitem.set_submenu (create_menu (depth - 1, TRUE)); } } menu; } function create_menus () { local box1, box2, button, menu, menubar, menuitem, label, optionmenu, separator; win_menus = new (GtkWindow); win_menus.signal ("destroy", #win_menus = nil); win_menus.signal ("delete-event", #gtk_true()); win_menus.title = "menus"; win_menus.border_width = 0; win_menus.set_default_size(180, 100); accel_group = gtk_accel_group_new(); accel_group.attach (win_menus); box1 = new(GtkVBox); win_menus.add(box1); box1.show(); menubar = new(GtkMenuBar); box1.pack_start(menubar, FALSE, TRUE, 0); menubar.show(); menu = create_menu(2, TRUE); menu.set_accel_group(accel_group); menuitem = gtk_menu_item_new_with_label ("test\nline2"); menuitem.set_submenu(menu); menubar.append(menuitem); menuitem.show(); menuitem = gtk_menu_item_new_with_label ("foo"); menuitem.set_submenu(create_menu(3, TRUE)); menubar.append(menuitem); menuitem.show(); menuitem = gtk_menu_item_new_with_label ("bar"); menuitem.set_submenu(create_menu(4, TRUE)); menuitem.right_justify(); menubar.append(menuitem); menuitem.show(); box2 = gtk_vbox_new (FALSE, 10); box2.set_border_width(10); box1.pack_start(box2, TRUE, TRUE, 0); box2.show(); menu = create_menu(1, FALSE); menu.set_accel_group(accel_group); menuitem = gtk_check_menu_item_new_with_label ("Accelerate Me"); menuitem.right_justify(); menu.append(menuitem); menuitem.show(); menuitem.add_accelerator("activate", accel_group, GDK_F1, 0, GTK_ACCEL_VISIBLE | GTK_ACCEL_SIGNAL_VISIBLE); menuitem = gtk_check_menu_item_new_with_label ("Accelerator Locked"); menu.append (menuitem); menuitem.show (); menuitem.add_accelerator ("activate", accel_group, GDK_F2, 0, GTK_ACCEL_VISIBLE | GTK_ACCEL_LOCKED); menuitem = gtk_check_menu_item_new_with_label ("Accelerators Frozen"); menu.append (menuitem); menuitem.show (); menuitem.add_accelerator ("activate", accel_group, GDK_F2, 0, GTK_ACCEL_VISIBLE); menuitem.add_accelerator ("activate", accel_group, GDK_F3, 0, GTK_ACCEL_VISIBLE); menuitem.lock_accelerators (); optionmenu = new(GtkOptionMenu); optionmenu.set_menu(menu); optionmenu.set_history(3); box2.pack_start(optionmenu, TRUE, TRUE, 0); optionmenu.show(); separator = new(GtkHSeparator); box1.pack_start(separator, FALSE, TRUE, 0); separator.show(); box2 = gtk_vbox_new (FALSE, 10); box2.set_border_width(10); box1.pack_start(box2, FALSE, TRUE, 0); box2.show(); button = new (GtkButton); button.label = "close"; button.signal ("clicked", `(@win_menus).destroy()); box2.pack_start (button, TRUE, TRUE, 0); button.can_default = TRUE; button.grab_default(); button.show(); win_menus.show_all(); win_menus; } function main () { local window, win_menus; TRUE=1; FALSE=0; window = create_menus (); window.signal ("destroy", #exit_program(0)); init_ipc("menus", "menusq"); gtk_main (); }
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.