From: Masao M. <mu...@hi...> - 2004-02-22 17:28:00
|
むとうです。 補足です。 G_DEF_CLASS3は基本的にはfoo_get_type()メソッドが非公開のものに 対して使います。 foo_get_type()を明示的に呼び出すことができないために、foo_get_type() が呼び出されたであろう直後(実際はruby側からGDKの関数を呼び出した後)に Rubyのクラスを生成するようにしています。 そのときGdkScreenX11等の文字列を利用してgtypeを取得します。 On Mon, 23 Feb 2004 02:07:34 +0900 Masao Mutoh <mu...@hi...> wrote: > むとうです。 > > 以前、直すと宣言していたものの中で、以下の件に > ついて対応しました。 > > On Wed, 31 Dec 2003 04:46:29 +0900 > Masao Mutoh <mu...@hi...> wrote: > > > ■ GDKのFactory関連 > > GDKでは、実装がWin32の時やX11の時でそれぞれ別々のGTypeを > > 持ちます。 > > で、実は、いくつかのGdk関連のクラスで現在問題になっている > > のですが、Ruby側から登録されていないGTypeがあるために、 > > 無名クラスとして値が返されるメソッドが結構あったりして > > そのままでは使えない状態になっています。 > > たとえば、Gdk::Screen.defaultなど。 > > > > で、以下の2つの対応方法を考えてみました。 > > > > 1. GdkGCX11やGdkGCWin32はGdk::GCとして見えるようにする > > 2. GdkGCX11はGdk::GCX11に、GdkGCWin32はGdk::GCWin32にする > > > > 1.の場合、GOBJ2RVAL2(val, gtype)というのを作って明示的にRuby化 > > されるときのクラスを決定してしまう、という比較的安易な対応が > > できると思います。 > > > > 2.の場合、すべて手作業でG_DEF_CLASSをするという手もありますが > > 結構面倒くさいかなーと。 > > プラッガブルに追加されるようなものを想定すると、 > > 自動でクラスとgtypeのマッピングを生成するようなことを考える > > 必要がありますが、タイミング的にそれはちと難しいかなぁと > > 思っています。 > > > > 実装の問題は置いておいて、本来どっちであるべきかというのも > > 実は悩ましいです。 > > > > GTK+は一つの環境には基本的に1つの実装(X11 or Win32 or linuxfb) > > がインストールされると思うのですが、その場合、rbbrなどで見たときに > > すべてのGdkクラス群が1つのサブクラス(というか実体)を持つという > > 感じになるのがちょっと冗長かな、と。 > > ドキュメント書くのも面倒くさいし(ホンネ)。 > > > > あー、でもここまで書いてきて思ったのですが、 > > やっぱり2の方が良さそうだなぁ。手動でもそんなに数が多いわけでも > > ないし。 > > 結局、2.の案を採用しました。 > > 具体的には、 > G_DEF_CLASS3(gtype_name, ruby_name, module); > というのを用意しました。 > > G_DEF_CLASS3("GdkScreenX11", "ScreenX11", Gdk); > のように使います。 > これで、Gdk::Screen.defaultを呼び出すとClassの代わりにGdk::ScreenX11 > が呼び出されるようになり、その後はGdk::ScreenX11を使うことができます。 > > glibに手を入れましたので、内容についてご確認ください>さかいさん > > #ちょっと遅くなるかなぁ、と思ったのですが...まぁなんとかいけそうです(主観)。 > > > ■ Ruby/ATKの実装 > > これ、もう少しで終わります...。 > > ほぼ、終わりました。ATKに関してはこのまま1.0にしても良いかな。 > > -- > .:% Masao Mutoh<mu...@hi...> > > > ------------------------------------------------------- > SF.Net is sponsored by: Speed Start Your Linux Apps Now. > Build and deploy apps & Web services for Linux with > a free DVD software kit from IBM. Click Now! > http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > -- .:% Masao Mutoh<mu...@hi...> |