ruby-****@sourc*****
ruby-****@sourc*****
2005年 3月 18日 (金) 02:14:23 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-senales ------------------------- TITLE = tut-gtk-senales KEYWORD = = Mecanismo de se$B(Bles y callbacks {{link "tut-gtk-holamundo", "tut-gtk-primeros-pasos", "tut-gtk", "tut-gtk-eventos"}} Antes de estudiar el programa "Hola Mundo" en detalle, vamos a estudiar un poco como gestiona GTK las se$B(Bles y callbacks. Al igual que tu sistema devuelve una se$B(Bl a los procesos al apagarse (Notese que las se$B(Bles GTK no est$BaO(B relacionadas de ninguna forma con las se$B(Bles UNIX). El toolkit GTK ha sido dise$B(Bdo para ser independiente de la plataforma en la que se ejecuta.), GTK env$ByB(B una se$B(Bl al proceso principal (Gtk.main) cuando un evento ocurre. El proceso principal puede entonces llamar a la funci$B(B apropiada asociada al componente que envila se$B(Bl. Hasta que se recibe una se$B(Bl, el proceso principal se encuentra dormido. Para indicar a un componente GTK que debe responder a una se$B(Bl espec$ByG(Bica, y entonces ejecutar el c$B(Bigo apropiado, necesitamos un manejador de se$B(Bles. Esto se consigue con el m$BqU(Bodo GLib::Instantiatable#signal_connect, que es parte de la librer$ByB(B Ruby/GLib (no hay que olvidar que GTK se basa en GLib): GLib::Instantiatable#signal_connect("nombre de se$B(Bl") do # C$B(Bigo a ajecutar al capturar "nombre de se$B(Bl". end GLib::Instantiatable#signal_connect necesita 2 cosas: * el nombre de la se$B(Bl que sercapturada; * el bloque de c$B(Bigo que serejecutado tras recibir la se$B(Bl. EL bloque de c$B(Bigo puede tomar un par$BaN(Betro opcional: GLib::Instantiatable#signal_connect("nombre de se$B(Bl") do |w| # ... end El componente que generla se$B(Bl sersustituido en adelante por el par$BaN(Betro w.