[ruby-gnome2-doc-cvs] [Hiki] update - tips_signal

Back to archive index

ruby-****@lists***** ruby-****@lists*****
2003年 7月 8日 (火) 02:40:31 JST


-------------------------
REMOTE_ADDR = 210.249.204.48
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/?tips_signal
-------------------------

-------------------------
= シグナルの動きを調べる
各ウィジェットが持つシグナルは一体どのような時に使えばいいのでしょう。
代表的なシグナルやサンプルがあるものは良いのですが、本家のAPIドキュメントにすらドキュメント化されていないシグナルも多く、そのようなシグナルは調べようがありません(GTK+のソースコードを読む...なんてわけにはいかないですよね(^^;))。

そこで、以下のようなスクリプトを書いてみてはいかがでしょうか。
これを使うと、そのクラスがどのようなシグナルを持っていて、それぞれどのようなタイミングでシグナルが発行できるのかが「体感」できます。

  require 'gtk2'
  Gtk.init
  widget = Gtk::Button.new("click")        #(1)
  Gtk::Button.signals(false).each do |v|   #(2)
    p v
    widget.signal_connect(v) do
      p "#{v} is occured."
    end
  end
  Gtk::Window.new.set_default_size(100, 100).add(widget).show_all
  Gtk.main

上記例ではボタンを使っていますが、(1),(2)をいじって調べたいウィジェット(厳密にはGLib::Objectのサブクラス)を書いてあげます。

ウィジェットによっては大量のシグナルが発生してしまうかもしれませんのでその場合は、出力された名前から、自分が目的とする動作に近そうなシグナルを選んで、以下のようなスクリプトに書き直します。

  require 'gtk2'
  Gtk.init
  v = "clicked"                            #(1)
  widget = Gtk::Button.new("click")        #(2)
  widget.signal_connect(v) do
    p "#{v} is occured."
  end
  Gtk::Window.new.set_default_size(100, 100).add(widget).show_all
  Gtk.main

これで(1)の部分にシグナルを書いてみるわけです。

:2003-07-08 むとう
 Initial release





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