diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-07-17 05:16:38 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-07-17 05:16:38 +0000 |
commit | 0ac67b89331e03f82f731aa952050f4cfc64c80e (patch) | |
tree | 66119fe3f775d336772ccd8be7734f6afbf8f41a /lib/tkvirtevent.rb | |
parent | c2fa49a9b453621dbe80630f3be88223fe10ab29 (diff) |
1.1c0 addendum
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/tkvirtevent.rb')
-rw-r--r-- | lib/tkvirtevent.rb | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/tkvirtevent.rb b/lib/tkvirtevent.rb new file mode 100644 index 0000000000..0d100c2186 --- /dev/null +++ b/lib/tkvirtevent.rb @@ -0,0 +1,66 @@ +# +# tkvirtevent.rb : treats virtual events +# 1998/07/16 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp> +# +require 'tk' + +class TkVirtualEvent<TkObject + extend Tk + + TkVirturlEventID = [0] + TkVirturlEventTBL = {} + + def TkVirtualEvent.getobj(event) + obj = TkVirturlEventTBL[event] + obj ? obj : event + end + + def TkVirtualEvent.info + tk_call('event', 'info').split(/\s+/).filter{|seq| + TkVirtualEvent.getobj(seq[1..-2]) + } + end + + def initialize(*sequences) + @path = @id = format("<VirtEvent%.4d>", TkVirturlEventID[0]) + TkVirturlEventID[0] += 1 + add(*sequences) + end + + def add(*sequences) + if sequences != [] + tk_call('event', 'add', "<#{@id}>", + *(sequences.collect{|seq| "<#{tk_event_sequence(seq)}>"}) ) + TkVirturlEventTBL[@id] = self + end + self + end + + def delete(*sequences) + if sequences == [] + tk_call('event', 'delete', "<#{@id}>") + TkVirturlEventTBL[@id] = nil + else + tk_call('event', 'delete', "<#{@id}>", + *(sequences.collect{|seq| "<#{tk_event_sequence(seq)}>"}) ) + TkVirturlEventTBL[@id] = nil if info == [] + end + self + end + + def info + tk_call('event', 'info', "<#{@id}>").split(/\s+/).filter{|seq| + l = seq.scan(/<*[^<>]+>*/).filter{|subseq| + case (subseq) + when /^<<[^<>]+>>$/ + TkVirtualEvent.getobj(subseq[1..-2]) + when /^<[^<>]+>$/ + subseq[1..-2] + else + subseq.split('') + end + }.flatten + (l.size == 1) ? l[0] : l + } + end +end |