# File tk/lib/tk/virtevent.rb, line 50 def TkVirtualEvent.getobj(event) obj = nil TkVirtualEventTBL.mutex.synchronize{ obj = TkVirtualEventTBL[event] } if obj obj else if tk_call_without_enc('event', 'info').index("<#{event}>") PreDefVirtEvent.new(event) else fail ArgumentError, "undefined virtual event '<#{event}>'" end end end
# File tk/lib/tk/virtevent.rb, line 66 def TkVirtualEvent.info tk_call_without_enc('event', 'info').split(/\s+/).collect!{|seq| TkVirtualEvent.getobj(seq[1..-2]) } end
# File tk/lib/tk/virtevent.rb, line 72 def initialize(*sequences) TkVirtualEventID.mutex.synchronize{ # @path = @id = '<' + TkVirtualEventID.join('') + '>' @path = @id = '<' + TkVirtualEventID.join(TkCore::INTERP._ip_id_) + '>' TkVirtualEventID[1].succ! } _add_sequences(sequences) end
# File tk/lib/tk/virtevent.rb, line 92 def add(*sequences) if sequences != [] _add_sequences(sequences) TkVirtualEventTBL.mutex.synchronize{ TkVirtualEventTBL[@id] = self } end self end
# File tk/lib/tk/virtevent.rb, line 102 def delete(*sequences) if sequences.empty? tk_call_without_enc('event', 'delete', "<#{@id}>") TkVirtualEventTBL.mutex.synchronize{ TkVirtualEventTBL.delete(@id) } else tk_call_without_enc('event', 'delete', "<#{@id}>", *(sequences.collect{|seq| "<#{tk_event_sequence(seq)}>" }) ) if tk_call_without_enc('event','info',"<#{@id}>").empty? TkVirtualEventTBL.mutex.synchronize{ TkVirtualEventTBL.delete(@id) } end end self end
# File tk/lib/tk/virtevent.rb, line 122 def info tk_call_without_enc('event','info',"<#{@id}>").split(/\s+/).collect!{|seq| lst = seq.scan(/<*[^<>]+>*/).collect!{|subseq| case (subseq) when /^<<[^<>]+>>$/ TkVirtualEvent.getobj(subseq[1..-2]) when /^<[^<>]+>$/ subseq[1..-2] else subseq.split('') end }.flatten (lst.size == 1) ? lst[0] : lst } end