[#8468] require で SEGV — ruby <g96p0935@...>
西本です。
[#8469] [PATCH] -s command line option — nobu.nakada@...
なかだです。
[#8507] mode_t in file.c — Katsuyuki Komatsu <komatsu@...>
小松です。
[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>
これつぐです。
まつもと ゆきひろです
これつぐです。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
ごとけんです
これつぐです。
[#8565] interface declaretion — "Dai.K." <MAP2303@...>
[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
小松です。
まつもと ゆきひろです
小松です。
[#8622] Win32API (Re: Ruby 1.4.3 binaries for Cygwin and DJGPP) — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
有馬@FITECです。
よしだです
[#8623] [BUG?] core dump `ruby -r debug' — IWAMURO Motonori <iwa@...>
岩室@富士通です。
[#8635] slow gsub — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
なひです.
高橋征義です。
なひです.
まつもと ゆきひろです
なひです.
青山です。
なひです.
高橋征義です。
まつもと ゆきひろです
高橋征義です。
なひです.
西@九大です。
なかだです。
あおきです。
[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>
新井です。
新井です。
新井です。
新井です。
永井@知能.九工大です.
新井です。
永井@知能.九工大です.
新井です。
新井です。
[#8665] [mswin32] STDERR does not work during `_function. — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.
金子です。
金子です。
[#8667] make symlinks around libruby.so in instruby.rb — akira yamada / やまだあきら <akira@...>
[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>
金子です。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
えぐち@エスアンドイー です。
なかだです。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
[#8705] [mswin32] 100% CPU usage when use sleep — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
小松です。
[#8722] [mswin32] Win32API — KANEKO Naoshi <wbs01621@...>
金子です。
小松です。
まつもと ゆきひろです
[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
西@九大です。
あおきです。議論も好き。
西@九大です。
あおきです。
まつもと ゆきひろです
有馬です。
knuです。
まつもと ゆきひろです
これつぐです。
knuです。
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
In message "[ruby-dev:8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
まつもと ゆきひろです
ごとけんです
ごとけんです
なかだです。
ごとけんです
[ruby-dev:8706] Re: [PATCH] Ruby/Tk
新井です。
# 調子にのってまたパッチ付けます。関連パッチを集めるという意
# 味でこのままこのスレッドに続けます。
現状の、Ruby/Tkではウィジェットクラスに対してイベントコール
バック関数を登録できません。
で、以下を提案します。
・モジュールTkに以下のモジュールメソッドを追加
(他のメソッドにならって実際にはインスタンスメソッドで定義してます)
o Tk.bind
o Tk.bind_append
o Tk.bindinfo_all (Tk.bindinfo "all" と同じ。ついで)
e.g.)
require "tk"
Tk.bind TkButton, "1", proc {p "button 1 pressed (class binding)"}
p Tk.bindinfo TkButton, "1"
b1 = TkButton.new.pack
Tk.bind b1, "1", proc {p "button 1 pressed"}
p Tk.bindinfo b1, "1"
Tk.mainloop
=> [[#<Proc:0x40134b88>, "%# ... "]]
[[#<Proc:0x401320f4>, "%# ... "]]
e.g.)
require "tk"
p Tk.bindinfo_all
p Tk.bindinfo_all "Tab"
=> ["Shift-Key-Tab", "Key-Tab", "Key-F10", "Alt-Key"]
["tkTabToWindow [tk_focusNext %W]"]
・モジュールTkBindを追加
o TkBind#bind
o TkBind#bind_append
o TkBind#bindinfo
・TkBindをTkObjectでinclude、TkWindowで extend
(include、extendするクラスの選別はあまり考えず元の定義に倣
いました。TkWindowのオブジェクト以外でTkBindが必要なのかど
うか考えてないので。もしかしたら、モジュールにする意味がな
いかも知れない)
o TkObject#bind
o TkObject#bind_append
o TkObject#bindinfo
o TkWindow.bind
o TkWindow.bind_append
o TkWindow.bindinfo
e.g.)
require "tk"
TkButton.bind "1", proc {p "button 1 pressed (class binding)"}
p TkButton.bindinfo "1"
b1 = TkButton.new.pack
b1.bind "1", proc {p "button 1 pressed"}
p b1.bindinfo "1"
Tk.mainloop
=> [[#<Proc:0x40134ca0>, "%# ... "]]
[[#<Proc:0x401322d4>, "%# ... "]]
・以下のようにしたとき、bindtagsがエラーになるので修正しました。
ruby -rtk -e 'b = TkButton.new' -e 'b.bindtags [Tk.root]' -e 'p b.bindtags'
=> -e:3: undefined local variable or method `collect' \
for #<TkRoot:0x40134858> (NameError)
・bindtags の以下の部分は必要ないように思えましたので削除しました。
(自信はない)
tk_split_list(tk_call('bindtags', path)).collect{|tag|
if tag == nil <- ココ
"." <- ココ
elsif ....
}
--- ext/tk/lib/tk.rb.old Tue Dec 21 23:03:34 1999
+++ ext/tk/lib/tk.rb Thu Dec 23 22:58:21 1999
@@ -349,6 +349,14 @@ module TkComm
end
private :install_bind, :tk_event_sequence, :_bind_core, :_bind, :_bind_append
+ def bind(tagOrClass, context, cmd=Proc.new, args=nil)
+ _bind(['bind', tagOrClass], context, cmd, args)
+ end
+
+ def bind_append(tagOrClass, context, cmd=Proc.new, args=nil)
+ _bind_append(['bind', tagOrClass], context, cmd, args)
+ end
+
def bind_all(context, cmd=Proc.new, args=nil)
_bind(['bind', 'all'], context, cmd, args)
end
@@ -372,11 +380,16 @@ module TkComm
}
end
end
+ private :_bindinfo
def bindinfo(tagOrClass, context=nil)
_bindinfo(['bind', tagOrClass], context)
end
+ def bindinfo_all(context=nil)
+ _bindinfo(['bind', 'all'], context)
+ end
+
def pack(*args)
TkPack.configure *args
end
@@ -1573,9 +1586,24 @@ module TkTreatFont
end
end
+module TkBind
+ def bind(context, cmd=Proc.new, args=nil)
+ Tk.bind(to_eval, context, cmd, args)
+ end
+
+ def bind_append(context, cmd=Proc.new, args=nil)
+ Tk.bind_append(to_eval, context, cmd, args)
+ end
+
+ def bindinfo(context=nil)
+ Tk.bindinfo(to_eval, context)
+ end
+end
+
class TkObject<TkKernel
include Tk
include TkTreatFont
+ include TkBind
def path
return @path
@@ -1672,18 +1700,6 @@ class TkObject<TkKernel
end
end
- def bind(context, cmd=Proc.new, args=nil)
- _bind(["bind", to_eval], context, cmd, args)
- end
-
- def bind_append(context, cmd=Proc.new, args=nil)
- _bind_append(["bind", to_eval], context, cmd, args)
- end
-
- def bindinfo(context=nil)
- _bindinfo(['bind', to_eval], context)
- end
-
def event_generate(context, keys=nil)
if keys
tk_call('event', 'generate', path,
@@ -1707,7 +1723,7 @@ class TkObject<TkKernel
end
class TkWindow<TkObject
-# extend TkClassBind
+ extend TkBind
def initialize(parent=nil, keys=nil)
install_win(if parent then parent.path end)
@@ -1855,10 +1871,8 @@ class TkWindow<TkObject
fail unless taglist.kind_of? Array
tk_call('bindtags', path, taglist)
else
- tk_split_list(tk_call('bindtags', path)).collect{|tag|
- if tag == nil
- '.'
- elsif tag.kind_of?(String) && (cls = WidgetClassNames[tag])
+ list(tk_call('bindtags', path)).collect{|tag|
+ if tag.kind_of?(String) && (cls = WidgetClassNames[tag])
cls
else
tag
--
新井康司 (Koji Arai)