In Files

  • tk/lib/tk/virtevent.rb

Class/Module Index [+]

Quicksearch

TkVirtualEvent

Public Class Methods

getobj(event) click to toggle source
 
               # 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
            
info() click to toggle source
 
               # 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
            
new(*sequences) click to toggle source
 
               # 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
            

Public Instance Methods

add(*sequences) click to toggle source
 
               # 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
            
delete(*sequences) click to toggle source
 
               # 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
            
info() click to toggle source
 
               # 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
            
mutex() click to toggle source
 
               # File tk/lib/tk/virtevent.rb, line 14
def mutex; @mutex; end