[ruby-gnome2-doc-cvs] [Hiki] update - tut-gtk-helloworld-details

Back to archive index

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  





ruby-gnome2-cvs メーリングリストの案内
Back to archive index