ruby-gnome2-hiki-pt_BR****@sourc*****
ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 11日 (日) 12:44:00 JST
------------------------- REMOTE_ADDR = 200.216.145.78 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tut-gtk-helloworld-details ------------------------- = O OlMundo de Ruby/GTK2 (comentado) {{link "tut-gtk-events", "tut-gtk-intro", "tut-gtk", "tut-gtk-signals-more"}} Agora que acabamos de ver a teoria de eventos e sinais, estamos prontos para olhar em detalhes no programa "OlMundo". Primeiramente, ele inicializa a Ruby/GTK2. Este c$B(Bigo exigido para todos os 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 Aqui a gente cria um bot$BeP(B nomeado "OlMundo". Gtk::Button.new cria um bot$BeP(B GTK e configura seu r$B(Bulo para o par$BcN(Betro de String que a gente prov$BqN(B. Atualmente, o bot$BeP(B n$BeP(B parte de uma janela GTK, e n$BeP(B estvis$ByW(Bel. button = Gtk::Button.new("OlMundo") O c$B(Bigo a seguir imprimir"OlMundo" no terminal cada vez que o bot$BeP(B for pressionado. Isso feito conectando um bloco de c$B(Bigo que coloca a nossa mensagem no sinal "clicked" (clicado) do bot$BeP(B. button.signal_connect("clicked") { puts "OlMundo" } Agora hora de criar uma janela. Como o bot$BeP(B, a janela n$BeP(B estvis$ByW(Bel ainda na tela. window = Gtk::Window.new A gente decide conectar diversos gerenciadores de sinais a janela: * "delete_event" serdisparado quando a janela morta ("killed") pelo gerenciador de janelas (usualmente quando o usu$BaS(Bio a fecha manualmente). Note que a gente retorna um valor "false" neste gerenciador: ele significa que o processamento deste evento ainda n$BeP(B terminou. A GTK irassim gerar um sinal "destroy" (destrua). * "destroy" sergerado logo ap$B(B o "delete_event". No gerenciador, a gente fecha a aplica$Bne(Bo chamando Gtk.main_quit. 2 mensagens ser$BeP(B impressas quando o usu$BaS(Bio fechar a janela: primeiramente "ocorreu um evento delete" e ent$BeP(B um "ocorreu um evento destroy". window.signal_connect("delete_event") { puts "ocorreu um evento delete" #true false } window.signal_connect("destroy") { puts "ocorreu um evento destroy" Gtk.main_quit } Agora a gente configura aqui a largura da borda da janela para 10 pixels. O que isso significa ? As janelas GTK s$BeP(B de fato "containers". Um container um componente que pode hospedar outros componentes dentro dele. Nossa janela aqui mostraruma borda de 10 pixels ao redor do componente contido. window.border_width = 10 o momento de associar nosso bot$Bco(B com a nossa janela. Isso feito posicionando ("packing") o bot$Bco(B dentro da janela. window.add(button) O pr$Bsx(Bimo passo para mostrar nosso trabalho na tela. Precisamos mostrar dois componentes: o bot$Bco(B e a janela. Ent$Bco(B a gente podia ter escrito isto: button.show window.show Mas como o bot$Bco(B estposicionado dentro da janela, a gente pode assim chamar Gtk::Widget#show_all na janela. Esse m$Bit(Bodo chamarGtk::Widget#show na janela e em cada um dos componentes contidos nela (aqui existe apenas um componente posicionado: o bot$Bco(B). window.show_all Finalmente, a gente entra no loop principal, chamando Gtk.main. O programa assim dormiratque um evento de Janela X seja gerado. Perceba que Gtk.main n$Bco(B retornarao chamador. Mas o usu$Bar(Bio ainda estarcapaz de terminar o programa, uma vez que a gente chama Gtk.main_quit quando o evento "destroy" recebido. Gtk.main