From: matz@... (Yukihiro Matsumoto) Date: 1998-06-16T18:14:17+09:00 Subject: [ruby-dev:2886] Re: TkMenu's bug まつもと ゆきひろです In message "[ruby-dev:2885] Re: TkMenu's bug" on 98/06/16, NAGAI Hidetoshi writes: |永井@知能.九工大です. |tk.rb の利用者には,Tcl/Tk のパス文字列に変換しなければならないなどと |意識させたくはないので,現状では,たとえば initialize において |-------------------------------------------------------- |if keys['create'] | @p_create = keys['create'] | if @p_create.kind_of? Proc | keys['create'] = proc{@id = @p_create.call; @id.path} | end |end |-------------------------------------------------------- |というような感じに wrap してやろうかと思っています. えーと,私の勘違いかも知れませんが,TkObjectをtcl側に渡す時 にパスへの変換は自動的に行われると思うのですが,それでは足り ないのでしょうか? |ついでにまだ報告していなかったバグらしきものの報告です. ありがとうございます.tk_split_listに関してはその通りです. 修正します. |次に,hash_kv ですが,値として TkObject のサブクラスが来た場合には, |その path を値にしてやる必要があるのではないでしょうか? これはその後段のtk_callの中で変換されるはずなので,不要だと 思います.むしろ,hash_kvの中のProcの変換を_get_eval_string に移動すべきでしょう. |以下は,「これはあってもいいかも?」というものです. | |module Tk に次の定数を追加. |----------------------------------------------------------- | TCL_VERSION = INTERP._invoke("info", "tclversion") | TK_VERSION = INTERP._invoke("set", "tk_version") |----------------------------------------------------------- 邪魔にならないと思うので,採用します. |次のメソッドを追加. |----------------------------------------------------------- | def Tk.setPalette(*args) | def Tk.bisque |----------------------------------------------------------- |# これ ↑ は重要性は低いかもしれません. これらはtclで書かれたライブラリですよね.tclで書かれたものは 外に出しておきたいという望みがあります.別のファイルにまとめ るのが良いかもしれません. |TkObject に次のメソッドを追加. 解りました. |現在の tk.rb の bind では Tcl/Tk における |bind . ... のような |イベント列を扱うことができません. そうですね._bindを書き換えれば対応できると思いますが,どの ような仕様にするのが使いやすいと思いますか? まつもと ゆきひろ /:|)