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

Back to archive index

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


-------------------------
REMOTE_ADDR = 80.137.231.102
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/de/?tut-gtk-signals
-------------------------
= Theoretisches er Signale und Callbacks
{{link "tut-gtk-helloworld", "tut-gtk-intro", "tut-gtk", "tut-gtk-events"}}

Bevor wir uns das "Hello World"-Programm genauer ansehen, sehen wir uns an, wie GTK mit Signalen und Callbacks umgeht.

Auf die gleiche Weise, wie das System ein Signal beim Herunterfahren Signale an laufende Prozesse sendet ((-beachten Sie, dass GTK-Signale nicht mit den Unix-Signalen in direkter Verbindung stehen. Das GTK-Toolkit wurde unabh舅gig von dem darunterliegenden System konzipiert. -)), sendet GTK ein Signal an die Main-Schleife (Gtk.main), wenn ein besonderes Ereignis ausgelt wird. Die Main-Schleife wird daher die zugehige Methode des Widgets als Callback aufrufen.

Bis ein Signal empfangen wird, wird die Main-Schleife nichts tun.

Um einem GTK-Widget mitzuteilen, dass es ein bestimmtes Signal abfangen und den zugehigen Code ausfren soll, msen wir einen Signal-Handler erstellen.

Das kann mit der Methode GLib::Instantiatable#signal_connect erledigt werden, die ein Teil der Ruby/GLib-Bibliothek ist. (Erinnern Sie sich, dass GTK auf GLib aufbaut).

  GLib::Instantiatable#signal_connect("signal name") do
      # Code, der ausgefrt werden soll, wenn "signal name" empfangen wird
  end

GLib::Instantiatable#signal_connect benigt zwei Dinge:
* den Namen des Signals, das abgefangen werden soll und
* einen Block mit Code, der bei Empfangen des Signals ausgefrt werden soll.

Der Block kann optionale Parameter entgegennehmen, wie im folgenden Abschnitt gezeigt wird:

  GLib::Instantiatable#signal_connect("signal name") do |w|
      # ...
  end

Das Widget, welches das Signal gesendet hat wird in dem Parameter w zur Verfung gestellt.





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