mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
62e41d3f2e
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
133 lines
4.3 KiB
Text
133 lines
4.3 KiB
Text
(tof)
|
|
tcltk ライブラリ
|
|
tcltklib ライブラリ
|
|
Sep. 19, 1997 Y. Shigehiro
|
|
|
|
以下, 「tcl/tk」という表記は, tclsh や wish を実現している, 一般でいう
|
|
ところの tcl/tk を指します. 「tcltk ライブラリ」, 「tcltklib ライブラ
|
|
リ」という表記は, 本パッケージに含まれる ruby 用のライブラリを指します.
|
|
|
|
[ファイルについて]
|
|
|
|
README.euc : このファイル(注意, 特徴, インストールの方法).
|
|
MANUAL.euc : マニュアル.
|
|
|
|
lib/, ext/ : ライブラリの実体.
|
|
|
|
sample/ : マニュアル代わりのサンプルプログラム.
|
|
sample/sample0.rb : tcltklib ライブラリのテスト.
|
|
sample/sample1.rb : tcltk ライブラリのテスト.
|
|
tcl/tk (wish) でできそうなことを一通り書いてみました.
|
|
sample/sample2.rb : tcltk ライブラリのサンプル.
|
|
maeda shugo (shugo@po.aianet.ne.jp) 氏による
|
|
(`rb.tk' で書かれていた) ruby のサンプルプログラム
|
|
http://www.aianet.or.jp/~shugo/ruby/othello.rb.gz
|
|
を tcltk ライブラリを使うように, 機械的に変更してみました.
|
|
|
|
demo/ : 100 本の線を 100 回描くデモプログラム.
|
|
最初に空ループの時間を測定し, 続いて実際に線を引く時間を測定します.
|
|
tcl/tk は(再)描画のときに backing store を使わずに律義に 10000 本(?)
|
|
線を引くので, (再)描画を始めると, マシンがかなり重くなります.
|
|
demo/lines0.tcl : wish 用のスクリプト.
|
|
demo/lines1.rb : `tk.rb' 用のスクリプト.
|
|
demo/lines2.rb : tcltk ライブラリ用のスクリプト.
|
|
|
|
[注意]
|
|
|
|
コンパイル/実行には, tcl/tk の C ライブラリが必要です.
|
|
|
|
このライブラリは,
|
|
|
|
ruby-1.0-970701, ruby-1.0-970911, ruby-1.0-970919
|
|
FreeBSD 2.2.2-RELEASE
|
|
およびそのパッケージ jp-tcl-7.6.tgz, jp-tk-4.2.tgz
|
|
|
|
で作成/動作確認しました. 他の環境では動作するかどうかわかりません.
|
|
|
|
TclTkLib.mainloop を実行中に Control-C が効かないのは不便なので, ruby
|
|
のソースを参考に, #include "sig.h" して trap_immediate を操作していま
|
|
すが, ruby の README.EXT にも書いてないのに, こんなことをして良いのか
|
|
どうかわかりません.
|
|
|
|
-d オプションでデバッグ情報を表示させるために, ruby のソースを参考に,
|
|
debug という大域変数を参照していますが, ruby の README.EXT にも書いて
|
|
ないのに, こんなことをして良いのかどうかわかりません.
|
|
|
|
extconf.rb は書きましたが, (いろいろな意味で)これで良いのか良く分かり
|
|
ません.
|
|
|
|
[特徴]
|
|
|
|
ruby から tcl/tk ライブラリを利用できます.
|
|
|
|
tcl/tk インタプリタのスクリプトは, 機械的に tcltk ライブラリ用の ruby
|
|
スクリプトに変換できます.
|
|
|
|
(`tk.rb' との違い)
|
|
|
|
1. tcl/tk インタプリタのスクリプトが, どのように, tcltk ライブラリ用の
|
|
ruby スクリプトに変換されるかが理解できれば, マニュアル類が無いに等
|
|
しい `tk.rb' とは異なり
|
|
|
|
tcl/tk のマニュアルやオンラインドキュメントを用いて
|
|
|
|
効率良くプログラミングを行うことができます.
|
|
記述方法がわからない, コマンドに与えるパラメータがわからない...
|
|
- Canvas.new { ... } と, なぜイテレータブロックを書けるの??
|
|
- Canvas の bbox は数値のリストを返すのに, xview は文字列を返すの??
|
|
と, いちいち, ライブラリのソースを追いかける必要はありません.
|
|
|
|
2. 個々の機能(オプション)を個別処理によりサポートしており, そのためサ
|
|
ポートしていない機能は使うことができない(本当は使えないこともないの
|
|
ですが) `tk.rb' とは異なり, tcl/tk インタプリタで可能なことは
|
|
|
|
ほとんど
|
|
|
|
ruby からも実行できます. 現在, ruby から実行できないことが確認され
|
|
ているのは,
|
|
|
|
bind コマンドでスクリプトを追加する構文
|
|
「bind tag sequence +script」
|
|
^
|
|
|
|
のみです.
|
|
- `. configure -width' をしようとして, `Tk.root.height()' と書い
|
|
たのに, `undefined method `height'' と怒られてしまった. tk.rb を
|
|
読んでみて, ガーン. できないのか...
|
|
ということはありません.
|
|
|
|
3. wish プロセスを起動しプロセス間通信で wish を利用する `tk.rb' とは
|
|
異なり, tcl/tk の C ライブラリをリンクし
|
|
|
|
より高速に (といっても, 思った程は速くないですが)
|
|
|
|
処理を行います.
|
|
|
|
4. `tk.rb' ほど, 高水準なインターフェースを備えていないため, tcl/tk イ
|
|
ンタプリタの生成等
|
|
|
|
何から何まで自分で記述
|
|
|
|
しなければなりません(その代わり, tcl/tk ライブラリの仕様通り,
|
|
tcl/tk インタプリタを複数生成することもできますが).
|
|
インターフェースは(おそらく) ruby の思想に沿ったものではありません.
|
|
また, スクリプトの記述は
|
|
|
|
ダサダサ
|
|
|
|
です. スクリプトは, 一見, 読みづらいものとなります. が, 書く人にとっ
|
|
ては, それほど煩わしいものではないと思います.
|
|
|
|
[インストールの方法]
|
|
|
|
0. ruby のソースファイル(ruby-1.0-なんたら.tgz)を展開しておきます.
|
|
|
|
1. ruby-1.0-なんたら/ext に ext/tcltklib をコピーします.
|
|
cp -r ext/tcltklib ???/ruby-1.0-なんたら/ext/
|
|
|
|
2. ruby のインストール法に従い make 等をします.
|
|
|
|
3. ruby のライブラリ置場に lib/* をコピーします.
|
|
cp lib/* /usr/local/lib/ruby/
|
|
|
|
(eof)
|