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

Back to archive index

ruby-****@sourc***** ruby-****@sourc*****
2004年 4月 8日 (木) 02:56:13 JST


-------------------------
REMOTE_ADDR = 80.137.231.102
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/de/?tut-gtk-signals-more
-------------------------
= Mehr er Signalbehandler
{{link "tut-gtk-helloworld-details", nil, "tut-gtk", "tut-gtk-helloworld2"}}

Lassen Sie uns einen weiteren Blick auf GLib::Instantiatable#signal_connect werfen:

  % 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
  >>

Bemerken Sie den zurkgegebenen Integer-Wert?

Das ist ein Kennzeichen zur Identifizierung des Callback-Blocks. Wie oben schon erw臧nt wurde, knen Sie so viele Callbacks pro Signal haben, wie Sie benigen und sie werden in der Reihenfolge ausgefrt, wie sie angeh舅gt wurden.

Jetzt werden wir selbst ein Signal senden lassen. Die Methode GLib::Instantiatable#emit_signal wird den spezifischen Signal-Namen emittieren, der als Parameter ergeben wurde.

Sie knen hier beobachten, dass unsere Blke in der Reihenfolge ihrer Einrichtung aufgerufen werden:

  >> b.signal_emit("clicked")
  1 
  2
  => nil
  >>

GLib::Instantiatable#signal_handler_disconnect kann verwendet werden, um ein vorher eingerichteten Signalbehandler zu entfernen, der durch ein Kennzeichen identifiziert wird, das von GLib::Instantiatable#signal_connect zurkgegeben wird.

  >> b.signal_handler_disconnect 1
  => #<Gtk::Button:0x40a2a858 ptr=0x8237df8>
  >> b.signal_emit("clicked")
  2
  => nil
  >>

Callback-Blke knen Sie auch vorrergehend mit den Methoden GLib::Instantiatable#signal_handler_block und GLib::Instantiatable#signal_handler_unblock deaktivieren:

  >> 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
  >>






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