1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
=begin header
menu.rb - a part of testgtk.c rewritten in Ruby/GTK2
Copyright (C) 2002-2005 Ruby-GNOME2 Project Team
$Id: menu.rb,v 1.6 2005/07/18 17:13:32 mutoh Exp $
=end
require 'sample'
class MenuSample < SampleWindow
def initialize
super("menus")
signal_connect("delete_event") do true end
box = Gtk::VBox.new(false, 10)
add(box)
menubar = Gtk::MenuBar.new
box.pack_start(menubar, false, true, 0)
menu = create_menu(2, true)
menuitem = Gtk::MenuItem.new("test\nline2")
menuitem.set_submenu(menu)
menubar.append(menuitem)
menuitem = Gtk::MenuItem.new("foo")
menuitem.set_submenu(create_menu(3, true))
menubar.append(menuitem)
menuitem = Gtk::MenuItem.new("bar")
menuitem.set_submenu(create_menu(4, true))
menuitem.right_justified = true
menubar.append(menuitem)
optionmenu = Gtk::OptionMenu.new
optionmenu.set_menu(create_menu(1, false))
optionmenu.history = 4
box.add(optionmenu)
box.add(Gtk::HSeparator.new)
button = Gtk::Button.new("close")
button.signal_connect("clicked"){destroy}
box.add(button)
button.set_flags(Gtk::Widget::CAN_DEFAULT)
button.grab_default
end
private
def create_menu(depth, tearoff)
return nil if depth < 1
menu = Gtk::Menu.new
group = nil
if tearoff then
menuitem = Gtk::TearoffMenuItem.new
menu.append(menuitem)
end
for i in 0..4
j = i + 1
buf = sprintf("item %2d - %d", depth, j)
menuitem = Gtk::RadioMenuItem.new(group, buf)
group = menuitem.group
menu.append(menuitem)
menuitem.set_sensitive(false) if i == 3
submenu = create_menu(depth - 1, true)
menuitem.set_submenu(submenu) unless submenu.nil?
end
menu
end
end
|