永井@知能.九工大です. ruby-dev と ruby-list との両方に送らせていただいてます. 下記の通り,safeTk を含む複数のインタープリタをサポート するような修正と追加ファイルとを CVS に突っ込みました. 予想よりも大幅に手間取りましたが,なんとか間に合わせる ことができました.(^_^) 本日の公開が予定されている新しい 1.8.0 の preview 版が マルチインタープリタサポートの初のリリースとなります. ぜひ試していただいて,バグレポートを送ってていただけると 嬉しいです. 使い方は sample/safe-tk.rb を見ていただくのがいいと思い ます.従来の単独インタープリタサポートとの互換性がほぼ 維持できていると考えています. safeTk など複数のインタープリタを必要とする場合の違いは, 従来の require 'tk' の代わりに require 'multi-tk' とする くらいでしょう.デフォルトのマスターインタプリタは自動生 成しますから,そのままデフォルトマスターを使う限りは従来 と全く違いはないはずです.あとはマスターインタープリタで も通常のスレーブインタープリタでも,Tcl/Tk のセーフベース に基づく safeTk インタープリタでも,インスタンスとして生 成して操作してください. この際のポイントは,どのインタープリタにおける操作であっ てもスクリプトの書き方に違いが存在しない点です. sample/safe-tk.rb を見ていただくとわかるように,例えば 「 button widget と label widget とを生成して pack する」 といった処理を記述する際に,個々の命令 (TkButton.newなど) に対してそれを処理するインタープリタを指定するなどは必要 ありません.一連の処理を手続きオブジェクト化して,処理対 象のインタープリタに渡してやるだけです.一連の処理の記述 形式は従来のままですから,その手続きオブジェクトをそのま ま call すればデフォルトマスターが選択されてその上で処理 が行われます.インタープリタの選択は,手続きオブジェクト を渡す先を変えるだけです. # もちろん,セーフベースで使用が禁止されている命令は # 実行できませんが.(^_^) このように,従来の tk.rb と比べて完全なアッパーコンパチ であると考えて良いはずですが,その代わり,インタープリタ 管理のためにスレッドやスレッドグループを多用しており,負 荷が大きいものになっています.目的に合わせて使い分けてい ただくのが良いと思います. > nagai Sun, 27 Jul 2003 19:35:06 +0000 > > Modified files: > ruby/ext/tcltklib: > MANIFEST MANUAL.euc tcltklib.c > ruby/ext/tk: > MANIFEST > ruby/ext/tk/lib: > README tk.rb tkafter.rb > Added files: > ruby/ext/tcltklib/demo: > safeTk.rb > ruby/ext/tk/lib: > multi-tk.rb > ruby/ext/tk/sample: > safe-tk.rb > Log: > multi-tk.rb : (new) library to support multiple Tk interpreters (high level) > tcltklib.c : add some methods to support multiple interpreters (low level) > MANUAL.euc : modify descriptions > tcltklib/sample/safeTk.rb : (new) sample : how to use safeTk interpreter > tk/sample/safe-tk.rb : (new) sample : how to use multi-tk.rb > tk.rb, tkafter.rb : bug fix and add feature to supprt multi-tk -- 永井 秀利 (九工大 知能情報) nagai / ai.kyutech.ac.jp