ruby-gnome2-hiki-pt_BR****@sourc*****
ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 11日 (日) 12:44:27 JST
------------------------- REMOTE_ADDR = 200.216.145.78 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tut-gtk-signals-more ------------------------- = Mais Sobre os Gerenciadores de Sinais {{link "tut-gtk-helloworld-details", nil, "tut-gtk", "tut-gtk-helloworld2"}} Vamos dar outra olhada em GLib::Instantiatable#signal_connect: % irb --simple-prompt >> require 'gtk2' => true >> b = Gtk::Button.new("hoge") => #<Gtk::Button:0x40a2a858 ptr=0x8237df8> >> b.signal_connect("clicked") { puts 1 } => 1 >> b.signal_connect("clicked") { puts 2 } => 2 >> Percebeu o valor "integer" retornado ? Isso uma marca ("tag") que identifica o seu bloco de "callback". Como dito acima, vocpode ter quantos "callbacks" por sinal e por objeto que vocprecisar, e cada um serexecutado na sua vez, na ordem que eles foram anexados. Agora, iremos emitir manualmente um sinal. O m騁odo GLib::Instantiatable#emit_signal enviaro nome do sinal especificado passado como um argumento. Vocpode observar aqui que nosso blocos s縊 chamados na ordem de suas instala鋏es: >> b.signal_emit("clicked") 1 2 => nil >> GLib::Instantiatable#signal_handler_disconnect usado para remover um gerenciador de sinal previamente instalado, identificado por uma marca retornada pelo GLib::Instantiatable#signal_connect: >> b.signal_handler_disconnect 1 => #<Gtk::Button:0x40a2a858 ptr=0x8237df8> >> b.signal_emit("clicked") 2 => nil >> Vocpode tamb駑 temporariamente desabilitar um bloco de cigo de "callback" com GLib::Instantiatable#signal_handler_block e GLib::Instantiatable#signal_handler_unblock: >> b.signal_handler_block 2 => #<Gtk::Button:0x40a2a858 ptr=0x8237df8> >> b.signal_emit("clicked") => nil >> b.signal_handler_unblock 2 => #<Gtk::Button:0x40a2a858 ptr=0x8237df8> >> b.signal_emit("clicked") 2 => nil >>