ruby-****@sourc*****
ruby-****@sourc*****
2005年 3月 18日 (金) 02:18:45 JST
------------------------- REMOTE_ADDR = 213.37.10.235 REMOTE_HOST = REMOTE_USER = ruby-gnome2-hiki URL = http://ruby-gnome2.sourceforge.jp/cgi-bin/hiki/es/hiki.cgi?tut-gtk-holamundo-detalles ------------------------- TITLE = tut-gtk-holamundo-detalles KEYWORD = = Hola Mundo en Ruby/GTK2 (comentado) {{link "tut-gtk-eventos", "tut-gtk-primeros-pasos", "tut-gtk", "tut-gtk-senales-mas"}} Ahora que ya hemos visto la teor$ByB(B sobre se$B(Bles y eventos, estamos listos para estudiar en detalle el programa "Hola Mundo". El primer paso es inicializar Ruby/GTK2. Este c$B(Bigo es necesario en todos los programas Ruby/GTK2. #!/usr/bin/env ruby =begin helloworld.rb - Ruby/GTK first sample script. Copyright (c) 2002,2003 Ruby-GNOME2 Project Team This program is licenced under the same licence as Ruby-GNOME2. $Id: helloworld.rb,v 1.4 2003/02/01 16:46:22 mutoh Exp $ =end require 'gtk2' Gtk.init Aqucreamos un bot$B(B llamado "Hola Mundo". Gtk::Button.new crea un nuevo bot$B(B y asigna como etiqueta el par$BaN(Betro de tipo String proporcionado. En este punto, el bot$B(B no forma parte de una ventana GTK, por lo que no es visible. button = Gtk::Button.new("Hola Mundo") El siguiente c$B(Bigo imprimir"Hola Mundo" en la terminal de comandos cada vez que el bot$B(B es pulsado. Esto se consigue conectando un bloque de c$B(Bigo que imprime el mensaje a la se$B(Bl "clicked" del bot$B(B. button.signal_connect("clicked") { puts "Hola Mundo" } Ahora es el momento de crear la ventana. Al igual que el bot$B(B, la ventana a$B(B no es visible en pantalla. window = Gtk::Window.new Vamos a conectar algunos manejadores de se$B(Bles a la ventana: * "delete_event" sergenerado cuando la ventana es cerrada por el gestor de ventanas (normalmente cuando el usuario la cierra manualmente). Hay que tener en cuenta que devolveremos el valor false en este manejador: esto significa que el procesamiento de este evento no ha terminado. GTK lanzara continuaci$B(B la se$B(Bl "destroy". "destroy" se lanza justo despu$BqT(B de "delete_event". En este manejador, cerramos la aplicaci$B(B llamando a Gtk.main_qui. Se imprimir$BaO(B dos mensajes cuando el usuario cierre la ventana: primero "Ocurrio el evento delete" y despu$BqT(B "Ocurrio el evento destroy". window.signal_connect("delete_event") { puts "Ocurrio el evento delete" #true false } window.signal_connect("destroy") { puts "Ocurrio el evento destroy" Gtk.main_quit } Aqudamos al borde de la ventana un valor de 10 pixels. $B?Q(Busignifica esto? Las ventanas en GTK son de hecho contenedores. Un contenedor es un componente que puede albergar otro(s) componente(s) dentro de si. Nuestra ventana mostrarun borde de 10 pixels alrededor del componente que alberga. window.border_width = 10 Es el momento de asociar nuestro bot$Bsn(B con nuestra ventana. Esto se consigue almacenando el bot$Bsn(B dentro de la ventana. window.add(button) El siguiente paso es mostrar nuestro trabajo en pantalla. Necesitamos mostrar dos componentes: el bot$Bsn(B y la ventana. Por lo que podr$Bma(Bmos escribir: button.show window.show Pero ya que el bot$Bsn(B estcontenido en la ventana, podemos simplemente llamar a Gtk::Widget#show_all en la ventana. Este m$Bit(Bodo llamara a Gtk::Widget#show en la ventana y en cada uno de los componentes que contiene (en este caso solo hay un componente empaquetado: el bot$Bsn(B). window.show_all Finalmente, entramos en el proceso principal llamando a Gtk.main. El programa entraren reposo hasta que se lance un evento X Window. Hay que tener en cuenta que Gtk.main no devuelve el control Pero el usuario sigue siendo capaz de cerrar el programa ya que llamamos a Gtk.main_quit cuando se recibe la se$Bqa(Bl "destroy". Gtk.main