# # tkvirtevent.rb : treats virtual events # 1998/07/16 by Hidetoshi Nagai # require 'tk' class TkVirtualEvent", 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