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

>>>>> "t" == ttate  <ttate / jaist.ac.jp> writes:
t> TkWinfo.containingが別のTkコマンドを
t> 発行しています。
t> また、rolodexが一応完成したのでチェックを
t> して明日かあさってには下記URLにおいておきます。
t> http://www.jaist.ac.jp/~ttate/ftp/ruby-tk-demo/
t> (URL変更しました。)

ありがとうございます.先ほど受け取りました.

ついでに,unofficial patch です.
私が以前流した 1.1c0 からのパッチ後の状態からのパッチになっています.
# 立石さんの修正は含まれていません.
このパッチで OK なら,ixset, rmt の移植が完了,
つまり,すべての widget demo の移植が完了となります.
パッチが取り込まれることになりましたら,
簡単な README を添えて Ruby_Tk-widget-demo-v1.0 として
リリースということになります.

# パッチが取り込まれることになった場合,
# 「1.1c1 以上で動作」ということにしとけばいいですよね?
#                                              > まつもとさん

-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp

--- tk.rb.new1	Fri Jul 17 20:27:41 1998
+++ tk.rb	Tue Jul 21 15:18:41 1998
@@ -26,6 +26,8 @@
   private :error_at
 
   def _genobj_for_tkwidget(path)
+    return TkRoot.new if path == '.'
+
     begin
       tk_class = TkCore::INTERP._invoke('winfo', 'class', path)
     rescue
@@ -94,7 +96,33 @@
     list += tk_split_list(str[i+1..-1])
     list
   end
-  private :tk_tcl2ruby, :tk_split_list
+
+  def tk_split_simplelist(str)
+    return [] if str == ""
+    idx = str.index('{')
+    return str.split unless idx
+
+    list = str[0,idx].split
+    str = str[idx+1..-1]
+    i = -1
+    brace = 1
+    str.each_byte {|c|
+      i += 1
+      brace += 1 if c == ?{
+      brace -= 1 if c == ?}
+      break if brace == 0
+    }
+    if i == 0
+      list.push ''
+    elsif str[0, i] == ' '
+      list.push ' '
+    else
+      list.push str[0..i-1]
+    end
+    list += tk_split_simplelist(str[i+1..-1])
+    list
+  end
+  private :tk_tcl2ruby, :tk_split_list, :tk_split_simplelist
 
   def hash_kv(keys)
     conf = []
@@ -445,6 +473,10 @@
     appsend_displayof(interp, win, async, *args)
   end
 
+  def info(*args)
+    tk_call('info', *args)
+  end
+
   def mainloop
     TclTkLib.mainloop
   end
@@ -681,7 +713,7 @@
 
   def value
     begin
-      INTERP._eval(format('global %s; set %s', @id, @id))
+      tk_tcl2ruby(INTERP._eval(format('global %s; set %s', @id, @id)))
     rescue
       if INTERP._eval(format('global %s; array exists %s', @id, @id)) != "1"
 	raise
@@ -1093,22 +1125,10 @@
   end
   def TkWinfo.interps(window=nil)
     if window
-      tk_split_list(tk_call('winfo', '-displayof', window.path, 
-			    'interps')).collect{|ip|
-	if ip.kind_of? Array
-	  ip.flatten.join(' ')
-	else
-	  ip
-	end
-      }
+      tk_split_simplelist(tk_call('winfo', '-displayof', window.path, 
+				  'interps'))
     else
-      tk_split_list(tk_call('winfo', 'interps')).collect{|ip|
-	if ip.kind_of? Array
-	  ip.flatten.join(' ')
-	else
-	  ip
-	end
-      }
+      tk_split_simplelist(tk_call('winfo', 'interps'))
     end
   end
   def winfo_interps
@@ -1120,6 +1140,12 @@
   def winfo_mapped?
     TkWinfo.mapped? self
   end
+  def TkWinfo.appname(window)
+    bool(tk_call('winfo', 'name', window.path))
+  end
+  def winfo_appname
+    TkWinfo.appname self
+  end
   def TkWinfo.parent(window)
     window(tk_call('winfo', 'parent', window.path))
   end
@@ -2201,6 +2227,9 @@
   end
   def insert(index, type, keys=nil)
     tk_send 'add', index, type, *hash_kv(keys)
+  end
+  def delete(index, last=None)
+    tk_send 'delete', index, last
   end
   def post(x, y)
     tk_send 'post', x, y