新井です。

>>> From: nagai / dumbo.ai.kyutech.ac.jp
>>> Date: 21 Dec 1999 18:29:57 +0900
>>> Subject: [ruby-dev:8681] Re: [PATCH] Ruby/Tk

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

> JCA02266> どう思います?>永井さん(指名するやつ ^^;)
> 
> 呼ばれてしまった.(^_^)

お呼び立てしてすみませんです。ありがとうございます。

> window id については,私も文字列の方が都合が良さそうに感じます.

やっぱり。最初「どっちでもいいかぁ、どーせ使わないし」とか思っ
ていたら永井さんがembedでwindow idを使った例を出したのでした。
で、永井さんに聞くのが一番いいだろうと・・・(^^;

> TkWinfo.visualsavailable の仕様ですが,
> Tk が返してくるのはリストのリストですから,
> 配列の配列を返すのはいいだろうと思います.

Tclはこの辺でよく判断に迷います。

> が,includeids をデフォルトで付けてしまうのは反対です.
> というのも,例えば,

> % toplevel .t3 -visual {toplevel 16 0x22}
> 
> は error になりますよね.

なるほど。visualsavailableはこのように使えるのですか。私は情
報量は多い方がいいだろうという程度でしか考えてませんでした。

> いかがでしょうか?

了解です。以下のようにした追加パッチを付けます。

  require "tk"
  p TkWinfo.visualsavailable Tk.root
  p TkWinfo.visualsavailable Tk.root, true

  => [["truecolor", 16]]
     [["truecolor", 16, "0x22"]]


--- ext/tk/lib/tk.rb.old Tue Dec 21 22:44:34 1999 +++ ext/tk/lib/tk.rb Tue Dec 21 23:03:34 1999 @@ -594,7 +594,7 @@ module Tk tk_call 'wm', 'focusmodel', path, *args end def frame - tk_call('wm', 'frame', path).hex + tk_call('wm', 'frame', path) end def geometry(*args) tk_call('wm', 'geometry', path, *args) @@ -1138,7 +1138,7 @@ module TkWinfo TkWinfo.height self end def TkWinfo.id(window) - tk_call('winfo', 'id', window.path).hex + tk_call('winfo', 'id', window.path) end def winfo_id TkWinfo.id self @@ -1292,17 +1292,16 @@ module TkWinfo def winfo_visualid TkWinfo.visualid self end - def TkWinfo.visualsavailable(window) - begin + def TkWinfo.visualsavailable(window, includeids=false) + if includeids v = tk_call('winfo', 'visualsavailable', window.path, "includeids") - rescue RuntimeError - # for Tk4.0 + else v = tk_call('winfo', 'visualsavailable', window.path) end list(v) end - def winfo_visualsavailable - TkWinfo.visualsavailable self + def winfo_visualsavailable(includeids=false) + TkWinfo.visualsavailable self, includeids end def TkWinfo.vrootheight(window) number(tk_call('winfo', 'vrootheight', window.path))