# File tk/lib/tk/virtevent.rb, line 51
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 67
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 73
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 93
def add(*sequences)
if sequences != []
_add_sequences(sequences)
TkVirtualEventTBL.mutex.synchronize{
TkVirtualEventTBL[@id] = self
}
end
self
end
# File tk/lib/tk/virtevent.rb, line 103
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 123
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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.