That should about do it. Let's take a look at an example to help clarify.
require 'gtk2'
def button_press( widget, event, menu)
time = event.time
button = event.time
if event = Gdk::Event::BUTTON_PRESS
menu.popup( nil, nil, nil, button, time )
end
end
Gtk.init
# Create a new window
window = Gtk::Window.new( Gtk::Window::TOPLEVEL )
window.set_size_request( 200, 100 )
window.set_title( "Ruby-GNOME2 Menu Test" )
window.signal_connect( "delete_event" ) { Gtk.main_quit }
vbox = Gtk::VBox.new( false, 0 )
window.add( vbox )
# Create the menubar
menubar = Gtk::MenuBar.new
vbox.pack_start( menubar, false, false, 0)
# Create our toplevel menuitem
top_menu = Gtk::MenuItem.new( "Root Menu" )
# Append top_menu into the menubar
menubar.append( top_menu )
# Create an empty menu to hold all of our menuitems
menu = Gtk::Menu.new
# Create a few menuitems and append them into "menu"
for i in 1..10
item = Gtk::MenuItem.new( "MenuItem #{i}" )
menu.append( item )
end
# Now we set the submenu of top_menu to our menu
# holding all of our menuitems
top_menu.set_submenu( menu )
button = Gtk::Button.new( "Press Me" )
button.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) {
|widget, event, y|
button_press( widget, event, menu )
}
vbox.pack_start( button, true, true, 0)
window.show_all
Gtk.main
| Prev | Next |