RubyLit - Ruby.del.litoral!
Layout

El siguiente ejemplo muestra el uso del widget Layout en Ruby GTK.

Y como Nobleza obliga debo decir que el ejemplo fue copiado completamente de este sitio.
http://www.pygtk.org/pygtk2tutorial/sec-Layout.html

Solo hice traducciones de los comentarios, en algunos casos los amplié muy poco y el resto es migración de python a ruby.


require 'gtk2'

# inicio gtk, es comun olvidarse de esta linea.
Gtk.init

# creo una ventana "top level", con titulo y de 300x300
window = Gtk::Window.new(Gtk::Window::TOPLEVEL) 
window.set_title("Ejemplo de Layout")
window.set_default_size(300, 300)

#defino el método para cerrar la ventana
window.signal_connect( "delete_event" ) { Gtk.main_quit }

# creo una tabla y la pongo en la ventana
table = Gtk::Table.new(2, 2, false)
window.add(table)

# creo el layout y lo pongo en la tabla
# se debe notar que el layout está en la primer celda de la tabla
layout = Gtk::Layout.new(nil, nil)
layout.set_size(600, 600)
table.attach(layout, 0, 1, 0, 1, Gtk::FILL|Gtk::EXPAND,
    Gtk::FILL|Gtk::EXPAND, 0, 0)

# creo el scrollbar vertical y lo pongo en la segunda celda de la primera fila
vScrollbar = Gtk::VScrollbar.new(nil)
table.attach(vScrollbar, 1, 2, 0, 1, Gtk::FILL|Gtk::SHRINK,
    Gtk::FILL|Gtk::SHRINK, 0, 0)

# creo el scrollbar horizontal y lo pongo en la primer celda de la segunda fila
hScrollbar = Gtk::HScrollbar.new(nil)
table.attach(hScrollbar, 0, 1, 1, 2, Gtk::FILL|Gtk::SHRINK,
    Gtk::FILL|Gtk::SHRINK, 0, 0)

# seteo los ajustes de la scrollbar vertical
vAdjust = layout.vadjustment
vScrollbar.set_adjustment(vAdjust)

# seteo los ajustes de la scrollbar horizontal
hAdjust = layout.hadjustment
hScrollbar.set_adjustment(hAdjust)

#hAdjust = Gtk::Adjustment.new(5, 1, 10, 1, 0, 0)

# creo tres botones y los pongo en el Layout
button = Gtk::Button.new("Clic")
button.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) { 
    print "Clic\n" 
}
layout.put(button, 0, 0)

button = Gtk::Button.new("Clic")
button.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) { 
    print "Clic\n" 
}
layout.put(button, 100, 0)

button = Gtk::Button.new("Clic")
button.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) { 
    print "Clic\n" 
}
layout.put(button, 200, 0)

#muestro todo lo que puse en la ventana
window.show_all

#run!
Gtk.main