[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>

これつぐです。

21 messages 1999/12/05
[#8534] Re: Enumerable and rand — matz@... (Yukihiro Matsumoto) 1999/12/06

まつもと ゆきひろです

[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>

小松です。

19 messages 1999/12/07
[#8592] Re: [ruby-list:19228] Ruby 1.4.3 — matz@... (Yukihiro Matsumoto) 1999/12/07

まつもと ゆきひろです

[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

47 messages 1999/12/14
[#8646] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/14

なひです.

[#8653] Re: urllib and httplib — matz@... (Yukihiro Matsumoto) 1999/12/14

まつもと ゆきひろです

[#8656] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/15

なひです.

[#8659] Re: urllib and httplib — Wakou Aoyama <wakou@...> 1999/12/15

青山です。

[#8685] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/21

なひです.

[#8687] Re: urllib and httplib — TAKAHASHI Masayoshi <maki@...> 1999/12/21

高橋征義です。

[#8690] Re: urllib and httplib — matz@... (Yukihiro Matsumoto) 1999/12/21

まつもと ゆきひろです

[#8717] Re: urllib and httplib — TAKAHASHI Masayoshi <maki@...> 1999/12/24

高橋征義です。

[#8963] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/19

なひです.

[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>

新井です。

20 messages 1999/12/14
[#8651] Re: [PATCH] Ruby/Tk — Koji Arai <JCA02266@...> 1999/12/14

新井です。

[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>

金子です。

22 messages 1999/12/21
[#8695] Re: [win] dir name — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/12/22

小田@QNES です。

[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>

青山です。

18 messages 1999/12/27
[#8743] Re: [ruby-list:19945] Re: array + empty string — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>

西@九大です。

64 messages 1999/12/27
[#8744] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8748] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...> 1999/12/28

西@九大です。

[#8751] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8767] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...> 1999/12/29

西@九大です。

[#8777] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/30

まつもと ゆきひろです

[#8791] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Minero Aoki <aamine@...> 1999/12/31

あおきです。

[#8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/31

まつもと ゆきひろです

[#8793] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — ARIMA Yasuhiro <fit0298@...> 1999/12/31

有馬です。

[#8795] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Akinori MUSHA aka knu <knu@...> 1999/12/31

 knuです。

[#8798] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 2000/01/01

まつもと ゆきひろです

[#8811] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Akinori MUSHA aka knu <knu@...> 2000/01/03

 knuです。

[ruby-dev:8678] Re: [PATCH] Ruby/Tk

From: Koji Arai <JCA02266@...>
Date: 1999-12-20 20:47:54 UTC
List: ruby-dev #8678
新井です。

>>> From: Koji Arai <JCA02266@nifty.ne.jp>
>>> Date: 15 Dec 1999 00:02:26 +0900
>>> Subject: [ruby-dev:8652] Re: [PATCH] Ruby/Tk

> 新井です。
> 
> > > 新井です。
> > 
> > > @screen -> @visual という修正も含んでるので1.4でもあててください。
> > 
> > あう、もう1箇所あった。
> 
> ぐぐぅ、よく見てませんでした、まだありました。

第4弾です。しくしく。

以前の私のパッチで

  @classname = keys.delete('classname')

としてしまいましたが keys に該当キーがない場合インスタンス変
数に問答無用でnilが入ってしまうので

  @classname = keys.delete('classname') if keys.key?('classname')

とちゃんとチェックするようにしました。こうしないと、

  require "tk"
  p TkToplevel.new(nil, ":0.0", "Hoge", {})

で、screenとclassnameの指定が消えてしまう。しくしく。

以下の修正も行いました。

・TkComm::uninstall_cmd("rb_out cXXXX")が通らなかった。
・Tk::Wm#aspect が wm grid コマンドを呼んでいた。
・Tk::Wm#frame が返すリソースIDを数値にした
・Tk::Wm#geometry が["WxH+X+Y"]という配列を返していた
  (文字列で良いのですよね?)
・Tk::Wm#group をパスではなくウィジェットオブジェクトを返すようにした
・Tk::Wm#maxsize が引数なしのとき設定値を返さなかった
・Tk::Wm#sizefrom が配列を返していた。(本来は "program"、"user"または"")
・Tk::Wm#transient をパスではなくウィジェットオブジェクトを返すようにした。
・TkWinfo.atom が winfo atom コマンドを呼んでいなかった。ついでに数値を
  返すようにした。
・TkWinfo.atomname が winfo atomname コマンドを呼んでいなかった。
・TkWinfo.cells が winfo cells コマンドを呼んでいなかった。
・TkWinfo.colormapfull を 追加
・TkWinfo.geometry が["WxH+X+Y"]という配列を返していた。
  (Tk::Wmと同じ。配列に意味はないはず・・ですよね?2つもあると自信なくなる)
・TkWinfo.id が number()で数値を返そうとしてたが、winfo id の戻り値は
  "0xXXXXXX" な16進文字列なので .hex するようにした。
・TkWinfo.interps が コマンド
    winfo -displayof path interps
  を呼んでいたが以下のように "interps" を先に書かないとダメだった
    winfo interps -displayof path
・TkWinfo.manager を追加
・TkWinfo.appname で winfo name の戻り値をbool()していた。
  (これの戻り値はウィジェットのパスの要素またはアプリケーション名)
・TkWinfo.server を追加
・TkWinfo.visualid、visualsavailable を追加
・TkWinfo.vrootheigh*t*  "t" がなかった

以上、結構でかいですがパッチつくりました。

1点迷っているのが TkWinfo.id と Tk::Wm#frame が現状通り文字
列"0xXXXXXX" を返した方が都合がいいような気がすることです。

パッチで実装したTkWinfo.visualsavailable の仕様もちょっと気
になる。

どう思います?>永井さん(指名するやつ ^^;)

最近、TkWinfo と Tk::Wm のマニュアルを書いたのでこの辺のパッ
チができたのでした。


--- tk.rb.org	Tue Dec 21 05:44:53 1999
+++ tk.rb	Mon Dec 20 05:44:51 1999
@@ -235,7 +235,7 @@ module TkComm
     return format("rb_out %s", id);
   end
   def uninstall_cmd(id)
-    id = $1 if /rb_out (c\d+)/
+    id = $1 if /rb_out (c\d+)/ =~ id
     Tk_CMDTBL[id] = nil
   end
   private :install_cmd, :uninstall_cmd
@@ -575,8 +575,8 @@ module Tk
   module Wm
     include TkComm
     def aspect(*args)
-      w = window(tk_call('wm', 'grid', path, *args))
-      w.split.collect{|s|s.to_i} if args.length == 0
+      w = tk_call('wm', 'aspect', path, *args)
+      list(w) if args.length == 0
     end
     def client(name=None)
       tk_call 'wm', 'client', path, name
@@ -594,17 +594,18 @@ module Tk
       tk_call 'wm', 'focusmodel', path, *args
     end
     def frame
-      tk_call 'wm', 'frame', path
+      tk_call('wm', 'frame', path).hex
     end
     def geometry(*args)
-      list(tk_call('wm', 'geometry', path, *args))
+      tk_call('wm', 'geometry', path, *args)
     end
     def grid(*args)
       w = tk_call('wm', 'grid', path, *args)
       list(w) if args.size == 0
     end
     def group(*args)
-      tk_call 'wm', 'group', path, *args
+      w = tk_call 'wm', 'group', path, *args
+      window(w) if args.size == 0
     end
     def iconbitmap(*args)
       tk_call 'wm', 'iconbitmap', path, *args
@@ -628,7 +629,7 @@ module Tk
     end
     def maxsize(*args)
       w = tk_call('wm', 'maxsize', path, *args)
-      list(w) if not args.size == 0
+      list(w) if args.size == 0
     end
     def minsize(*args)
       w = tk_call('wm', 'minsize', path, *args)
@@ -661,7 +662,7 @@ module Tk
       end
     end
     def sizefrom(*args)
-      list(tk_call('wm', 'sizefrom', path, *args))
+      tk_call('wm', 'sizefrom', path, *args)
     end
     def state
       tk_call 'wm', 'state', path
@@ -670,7 +671,7 @@ module Tk
       tk_call 'wm', 'title', path, *args
     end
     def transient(*args)
-      tk_call 'wm', 'transient', path, *args
+      window(tk_call 'wm', 'transient', path, *args)
     end
     def withdraw
       tk_call 'wm', 'withdraw', path
@@ -1063,19 +1064,19 @@ module TkWinfo
   include Tk
   extend Tk
   def TkWinfo.atom(name)
-    tk_call 'winfo', name
+    number(tk_call 'winfo', 'atom', name)
   end
   def winfo_atom(name)
     TkWinfo.atom name
   end
   def TkWinfo.atomname(id)
-    tk_call 'winfo', id
+    tk_call 'winfo', 'atomname', id
   end
   def winfo_atomname(id)
     TkWinfo.atomname id
   end
   def TkWinfo.cells(window)
-    number(tk_call('winfo', window.path))
+    number(tk_call('winfo', 'cells', window.path))
   end
   def winfo_cells
     TkWinfo.cells self
@@ -1093,6 +1094,12 @@ module TkWinfo
   def winfo_classname
     TkWinfo.classname self
   end
+  def TkWinfo.colormapfull(window)
+     bool(tk_call('winfo', 'colormapfull', window.path))
+  end
+  def winfo_colormapfull
+    TkWinfo.colormapfull self
+  end
   def TkWinfo.containing(rootX, rootY)
     path = tk_call('winfo', 'containing', rootX, rootY)
     window(path)
@@ -1119,7 +1126,7 @@ module TkWinfo
     TkWinfo.fpixels self, number
   end
   def TkWinfo.geometry(window)
-    list(tk_call('winfo', 'geometry', window.path))
+    tk_call('winfo', 'geometry', window.path)
   end
   def winfo_geometry
     TkWinfo.geometry self
@@ -1131,15 +1138,15 @@ module TkWinfo
     TkWinfo.height self
   end
   def TkWinfo.id(window)
-    number(tk_call('winfo', 'id', window.path))
+    tk_call('winfo', 'id', window.path).hex
   end
   def winfo_id
     TkWinfo.id self
   end
   def TkWinfo.interps(window=nil)
     if window
-      tk_split_simplelist(tk_call('winfo', '-displayof', window.path, 
-				  'interps'))
+      tk_split_simplelist(tk_call('winfo', 'interps',
+				  '-displayof', window.path))
     else
       tk_split_simplelist(tk_call('winfo', 'interps'))
     end
@@ -1153,8 +1160,14 @@ module TkWinfo
   def winfo_mapped?
     TkWinfo.mapped? self
   end
+  def TkWinfo.manager(window)
+    tk_call('winfo', 'manager', window.path)
+  end
+  def winfo_manager
+    TkWinfo.manager self
+  end
   def TkWinfo.appname(window)
-    bool(tk_call('winfo', 'name', window.path))
+    tk_call('winfo', 'name', window.path)
   end
   def winfo_appname
     TkWinfo.appname self
@@ -1255,6 +1268,12 @@ module TkWinfo
   def winfo_screenwidth
     TkWinfo.screenwidth self
   end
+  def TkWinfo.server(window)
+    tk_call 'winfo', 'server', window.path
+  end
+  def winfo_server
+    TkWinfo.server self
+  end
   def TkWinfo.toplevel(window)
     window(tk_call('winfo', 'toplevel', window.path))
   end
@@ -1267,7 +1286,25 @@ module TkWinfo
   def winfo_visual
     TkWinfo.visual self
   end
-  def TkWinfo.vrootheigh(window)
+  def TkWinfo.visualid(window)
+    tk_call 'winfo', 'visualid', window.path
+  end
+  def winfo_visualid
+    TkWinfo.visualid self
+  end
+  def TkWinfo.visualsavailable(window)
+    begin
+      v = tk_call('winfo', 'visualsavailable', window.path, "includeids")
+    rescue RuntimeError
+      # for Tk4.0
+      v = tk_call('winfo', 'visualsavailable', window.path)
+    end
+    list(v)
+  end
+  def winfo_visualsavailable
+    TkWinfo.visualsavailable self
+  end
+  def TkWinfo.vrootheight(window)
     number(tk_call('winfo', 'vrootheight', window.path))
   end
   def winfo_vrootheight
@@ -1874,12 +1911,12 @@ class TkToplevel<TkWindow
     @classname = classname
     if keys.kind_of? Hash
       keys = keys.dup
-      @classname = keys.delete('classname')
-      @colormap  = keys.delete('colormap')
-      @container = keys.delete('container')
-      @screen    = keys.delete('screen')
-      @use       = keys.delete('use')
-      @visual    = keys.delete('visual')
+      @classname = keys.delete('classname') if keys.key?('classname')
+      @colormap  = keys.delete('colormap')  if keys.key?('colormap')
+      @container = keys.delete('container') if keys.key?('container')
+      @screen    = keys.delete('screen')    if keys.key?('screen')
+      @use       = keys.delete('use')       if keys.key?('use')
+      @visual    = keys.delete('visual')    if keys.key?('visual')
     end
     super(parent, keys)
   end
@@ -1910,10 +1947,10 @@ class TkFrame<TkWindow
   def initialize(parent=nil, keys=nil)
     if keys.kind_of? Hash
       keys = keys.dup
-      @classname = keys.delete('classname')
-      @colormap  = keys.delete('colormap')
-      @container = keys.delete('container')
-      @visual    = keys.delete('visual')
+      @classname = keys.delete('classname') if keys.key?('classname')
+      @colormap  = keys.delete('colormap')  if keys.key?('colormap')
+      @container = keys.delete('container') if keys.key?('container')
+      @visual    = keys.delete('visual')    if keys.key?('visual')
     end
     super(parent, keys)
   end

In This Thread