From 62e41d3f2e48422bbdf1bb2db83ae60b255b1a1a Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 16 Jan 1998 12:19:09 +0000 Subject: Initial revision git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/tcltklib/README.euc | 133 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 ext/tcltklib/README.euc (limited to 'ext/tcltklib/README.euc') diff --git a/ext/tcltklib/README.euc b/ext/tcltklib/README.euc new file mode 100644 index 0000000000..290ffb0b60 --- /dev/null +++ b/ext/tcltklib/README.euc @@ -0,0 +1,133 @@ +(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) -- cgit v1.2.3