# 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