[ruby-gnome2-doc-cvs] [Hiki] create - tut-gtk-signals

Back to archive index

ruby-gnome2-hiki-pt_BR****@sourc***** ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 9日 (金) 09:02:32 JST


-------------------------
REMOTE_ADDR = 200.216.146.35
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tut-gtk-signals
-------------------------
= Mec$BcO(Bismos de "callbacks" e sinais
{{link "tut-gtk-helloworld", "tut-gtk-intro", "tut-gtk", "tut-gtk-events"}}

Antes de olhar no programa "OlMundo" em detalhes, devemos estudar um pouco como a GTK gerencia "callbacks" e sinais.

Da mesma maneira que o seu sistema envia um sinal para processos ao desligar ("shutdown")
((-Note que sinais de GTK n$BeP(B s$BeP(B relacionados de qualquer maneira com os sinais de UNIX. A "GTK toolkit" foi feita para ser independente do sistema abaixo. -)),  A GTK envia um sinal para o loop principal (Gtk.main) quando um evento especial ocorreu. O loop principal irassim chamar de volta ("call back") a fun$Bne(Bo apropriada do componente ("widget").

Atque um sinal seja recebido, o loop principal ficar"dormindo".

Com o objetivo de dizer a um componente de GTK que ele tem que pegar um sinal espec$ByG(Bico, e ent$BeP(B executar o c$B(Bigo apropriado, precisamos configurar um gerenciador ("handler") de sinal.

Isso pode ser feito com o m$BqU(Bodo GLib::Instantiatable#signal_connect, o qual parte da biblioteca Ruby/GLib 
(n$BeP(B esque$BmB(B que a GTK feita sobre a GLib):

  GLib::Instantiatable#signal_connect("nome do sinal") do
      # C$B(Bigo para executar quando "nome do sinal" for pego.
  end

GLib::Instantiatable#signal_connect precisa de 2 coisas:
* o nome do sinal que serpego; 
* um bloco de c$B(Bigo que serexecutado na recep$Bne(Bo do devido sinal.

O bloco de c$B(Bigo pode ter um par$BcN(Betro adicional como a seguir:

  GLib::Instantiatable#signal_connect("nome do sinal") do |w|
      # ...
  end

O componente que dispara o sinal teruma refer$BsO(Bcia no par$BcN(Betro "w".





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