いがらしです。

「[ruby-ext:00303] ruby-gtk-0.19 patch」で 、
thitoshi / ne.scphys.kyoto-u.ac.jp (TAKAHASHI Hitoshi)さんは書きました:

>   京都大学の高橋です。
> 
>   ここ1ヶ月ほどずっと忙しかったんですが、最近ちょっと時間ができたので
> 「testgtk をマイナーなところから攻めてみよう」シリーズの続きを
> 書きました。今回は、
> 
> ・entry.rb
> ・shapedwindow.rb
> ・wmhints.rb
> 
> の3つです。足りないメソッドや定数を追加するための rbgdk.c へのパッチも
> 含まれています。

どうもありがとうございます。取り込みました。
スクリプトとパッチ自体には問題はないと思いますが、
動かしてみたらRuby/GTKのバグが見つかりました。

[shapedwindow.rb]
Gtk::Widget#get_eventsで例外が出るのでおかしいなと思ったら
あちこちでNUM2INTを使って値を返していたので、
gtkwindow.cを修正しました。

[entry.rb] (バグじゃないのですが)
gtkcompat.hによると
  gtk_toggle_button_set_state
が
  gtk_toggle_button_set_active
に変更されたようなので、Ruby/GTKでもそれに合わせて
  Gtk::ToggleButton#set_active
を定義して、これを使うようにしました。
  Gtk::ToggleButton#set_state
も残してあります。

> 問題がありましたらご指摘下さい。(まだ ruby1.3.x に移行してません ^^;;)

1.2で使っていると分からないバグというのは結構あるので
できれば1.3に移行していただくと嬉しいです(^_^)

Ruby/GTKが0.25くらいになったらruby1.2.xのサポートは
打ち切りたいなぁ、と思っています。

>   ところで、wmhints.rb を書いてて
> Gdk::Bitmap::create_from_data が非常に使いにくかったんですが、
> もっといい書き方がありますでしょうか?
> 本家の testgtk.c では #include "circles.xbm" 一行で終ってるところ
> なんですが、、、、

いい書き方ですか……ちょっと分かりません。
Cでは#includeで済んでしまうので
    gdk_bitmap_create_from_xbm
は用意されていないんでしょうね。
xbmファイルからの読み込みはそれほど需要もないでしょうし。

根本的解決ではないですが、
あらかじめcircles.xbmをxpmに変換しておいて、
    Gdk::Pixmap::create_from_xpm
で読み込むように修正してしまいましょうか?
手元では実際にそうしてしまっていますが。

#昨日はRuby/GTKしようとしたら突然マウスのボタンが
#いかれてしまいました……。
#さすがにマウスなしでGUIのデバッグはできないので、
#とりあえず間に合わせの安物を買ってはきたのですが、
#おかげでせっかく時間ができたと思ったのに
#あまり作業できませんでした。

----
五十嵐  宏  (Hiroshi IGARASHI)