永井@知能.九工大です.

忙しくて形を成すのが遅くなりましたが,
Tcl/Tk 拡張パッケージを Ruby/Tk から利用するユーティリティを
in.coming に置かせていただきました.

# tar + gzip + uuencode すると 50K を越えたため,
# ML に流すのは気がひけましたので.

テストケースが少なすぎて,まだうまく動かない可能性の方が高いのですが,
もし構わなければお試しください.
このユーティリティは以下のようなものです ( README より ).

-----------------------------------------------------------------------

    Tcl/Tk 拡張パッケージユーティリティ

                                 Hidetoshi NAGAI (nagai / ai.kyutech.ac.jp)


Tcl/Tk はちょっとした GUI を作成する際には便利なスクリプト言語です.
Tk は Ruby からも使用することができ,Ruby に GUI を付ける際には有用なライブ
ラリの一つとなっています.

この Tcl/Tk ですが,Tcl/Tk では様々な拡張パッケージが作成・提供されており,
それらを用いることで凝った GUI の作成もより容易なものとすることができます.
この点も Tcl/Tk を用いる利点の一つであると言えるかもしれませんが,これまで
Ruby/Tk では,そのような Tcl/Tk 拡張パッケージを用いるためのライブラリは用
意されていませんでした.本ユーティリティは,Ruby/Tk からの Tcl/Tk 拡張パッ
ケージ使用を支援するためのものです.

本ユーティリティは,Tcl/Tk のダイナミックローディング機能を利用して Tcl/Tk 
拡張パッケージを用いるためのライブラリと,追加された Tcl/Tk コマンドのテス
トを行い,それにより推定された結果から,Ruby/Tk のためのクラス/モジュール
定義を生成するツールとから構成されています.ダイナミックローディング機能が
利用できない OS ,またはダイナミックローディング機能が利用できない拡張パッ
ケージにおいて,Tcl/Tk 拡張パッケージを用いるためのヒントは README.non-dl 
を参照してください.

------------------------------------------------------------------------
  ここに tcltkextlib.rb , tcltkext.rb, tkext.rb の使用法を書く予定.
  とりあえずは,使用例として tcltkextlib-test.rb , tcltkext-test.rb, 
  tkext-test.rb, tkext-test2.rb, tkext-test3.rb を参照してください.
------------------------------------------------------------------------

Ruby/Tk のためのクラス/モジュール定義を推定生成するツール mk_tkextlib.rb 
の使い方は次の通りです.

   mk_tkextlib.rb [-v] [-b base_info [-g]] [-p pkg_name]

コマンドライン引数の内,-p pkg_name が生成するライブラリ名の指定です.
例えば -p Tix と指定すると,動的にロードする Tcl/Tk ライブラリの定義が,カ
レントディレクトリの Tix.def というファイルにあるとしてこれを読み込み,ロー
ドする Tcl/Tk ライブラリの情報が書かれた Tix.inf と,クラス/モジュール定義
が書かれた Tix.rb とを生成します.生成するクラス/モジュールで定義されるメ
ソッドは,拡張ライブラリ導入の前後で新たに追加されたコマンドに関してのみです.
もともとあったコマンドに機能を追加するようなものについては対応できませんので
注意してください.
-v オプションを指定すると生成作業の進行状況をより多く表示します.
-b , -g オプションは,主としてダイナミックローディングが使えない環境で使用
するものです.これについては README.non-dl を参照してください.-b オプショ
ンは,mk_tkextlib.rb の推定処理がうまくいかずにプログラムが停止してしまうよ
うなコマンドのチェックを行わないようにする際にも応用可能です.

このツールによって出力される結果は,Tcl/Tk が出力するエラーメッセージなどの
情報に基づいて推定したものにすぎませんから,定義には誤りや不備があるものと
考えておいてください.現時点においてテストしたのは,下記のサンプル例に基づ
くもののみですので,拡張パッケージによってはうまく動かない可能性がかなり高
いと言えます.生成された定義に誤りや不備が見つかった場合は,生成されたもの
を雛型として,きちんとした定義に書き換えるようにしてください.

本ユーティリティのアーカイブには Tcl8.0jp/Tk8.0jp において,Blt および Tix 
拡張パッケージについて生成したサンプルが添えてあります.それぞれ,Blt.def, 
Tix.def が,各拡張パッケージのインストール状況に応じて作成したファイルであ
り,Blt.inf, Blt.rb および Tix.def, Tix.inf, Tix.rb が本ユーティリティで作
成されたものとなります.

-----------------------------------------------------------------------

-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp