むとうです。

In message "[ruby-ext:02026] Re: [ANN]ruby-gnome-0.26"
        on Sun, 02 Dec 2001 11:45:35 +0900, Noritsugu Nakamura <nnakamur / mxq.mesh.ne.jp> wrote:

> 中村 のりつぐ です。
> 
> In article <20011201114051.020187e0.mutoh / highway.ne.jp> 
> MUTOH Masao <mutoh / highway.ne.jp> wrote:
> > 一応、手前味噌で恐縮ですが
> > http://home2.highway.ne.jp/mutoh/tips/index.html
> 
> ありがたく利用させて頂いております。期待しております。

ありがとうございます。そういっていただけるとうれしいです。

> (ページを固めたのがあるともっと嬉しいです。
> local でも見られるので)

了解しました。今夜中に固めておきます。
http://home2.highway.ne.jp/tips.tar.gz
にする予定です。
#ディレクトリ名称をもうちょっときちんと考えれば良かったな....。

> void hoge_cb(GtkWidget *widget, gpointer data)
> とか
> void hoge_cb(GtkWidget *widget, gchar *text, gint len, gint pos)
> とか系のコールバックを ruby/gtk でどう書くのか良く分からない
> のですが、これはどこかに記述があるでしょうか?

コールバックは基本的には
Gtk::Object#signal_connect(signal) do |v| hoge; end
という形を取り、このhogeの部分がCでいうところのコールバックになります。
で、vはものによって異なるのですが、複数あるものは配列になっていますので
たとえば、p v; などとすればどのような情報が渡されてくるのか確認ができます。
 
> [ruby-talk:21472] ruby-gtk and entry validation
> あたりに話が出ているようなのですが、結論がいまいち
> 良く分からない…

ruby-talk:21472の件は以下のようなコードになると思います。
が、これだとカーソル位置がおかしくなっちゃうんですよね。

これの元ネタはとみたさん<http://www.tmtm.org/ja/ruby/gtk/>
のページにあります。
で、とみたさんもカーソル位置について言及なさっていますが、
これってなぜNGなんでしたっけ?(^^;)
#そういや、insert_textシグナルの定数値もないですね...(^^;)。

それでは。

----
require 'gtk'

entry = Gtk::Entry.new
handler_id = entry.signal_connect("insert_text") do |widget, text, pos|
  entry.signal_handler_block(handler_id)
  entry.insert_text(text.upcase!, pos)
  entry.signal_handler_unblock(handler_id)

  entry.signal_emit_stop_by_name("insert_text")
end

window = Gtk::Window.new
window.add(entry)
window.show_all
Gtk.main

-- 
.:% MUTOH Masao <mutoh / highway.ne.jp>