In Files

  • tk/lib/tkextlib/blt/watch.rb

Class/Module Index [+]

Quicksearch

Tk::BLT::Watch

Public Class Methods

names(state = None) click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 28
def self.names(state = None)
  lst = tk_split_list(tk_call('::blt::watch', 'names', state))
  WATCH_ID_TBL.mutex.synchronize{
    lst.collect{|name|
      WATCH_ID_TBL[name] || name
    }
  }
end
            
new(name = nil, keys = {}) click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 52
def initialize(name = nil, keys = {})
  if name.kind_of?(Hash)
    keys = name
    name = nil
  end

  if name
    @id = name.to_s
  else
    BLT_WATCH_ID.mutex.synchronize{
      @id = BLT_WATCH_ID.join(TkCore::INTERP._ip_id_)
      BLT_WATCH_ID[1].succ!
    }
  end

  @path = @id

  WATCH_ID_TBL.mutex.synchronize{
    WATCH_ID_TBL[@id] = self
  }
  tk_call('::blt::watch', 'create', @id, *hash_kv(keys))
end
            

Public Instance Methods

activate() click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 75
def activate
  tk_call('::blt::watch', 'activate', @id)
  self
end
            
cget(key) click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 158
def cget(key)
  unless TkConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
    cget_strict(key)
  else
    begin
      cget_strict(key)
    rescue => e
      if current_configinfo.has_key?(key.to_s)
        # error on known option
        fail e
      else
        # unknown option
        nil
      end
    end
  end
end
            
cget_strict(key) click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 150
def cget_strict(key)
  key = key.to_s
  begin
    info.assoc(key)[1]
  rescue
    fail ArgumentError, "unknown option '#{key}'"
  end
end
            
configinfo(slot = nil) click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 133
def configinfo(slot = nil)
  if slot
    slot = slot.to_s
    v = cget(slot)
    if TkComm::GET_CONFIGINFO_AS_ARRAY
      [slot, v]
    else
      {slot=>v}
    end
  else
    if TkComm::GET_CONFIGINFO_AS_ARRAY
      info
    else
      Hash[*(info.flatten)]
    end
  end
end
            
deactivate() click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 79
def deactivate
  tk_call('::blt::watch', 'deactivate', @id)
  self
end
            
delete() click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 83
def delete
  tk_call('::blt::watch', 'delete', @id)
  self
end
            
info() click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 87
def info
  ret = []
  lst = tk_split_simplelist(tk_call('::blt::watch', 'info', @id))
  until lst.empty?
    k, v, *lst = lst
    k = k[1..-1]
    case k
    when /^(#{__strval_optkeys.join('|')})$/
      # do nothing

    when /^(#{__numval_optkeys.join('|')})$/
      begin
        v = number(v)
      rescue
        v = nil
      end

    when /^(#{__numstrval_optkeys.join('|')})$/
      v = num_or_str(v)

    when /^(#{__boolval_optkeys.join('|')})$/
      begin
        v = bool(v)
      rescue
        v = nil
      end

    when /^(#{__listval_optkeys.join('|')})$/
      v = simplelist(v)

    when /^(#{__numlistval_optkeys.join('|')})$/
      v = list(v)

    else
      if v.index('{')
        v = tk_split_list(v)
      else
        v = tk_tcl2ruby(v)
      end
    end

    ret << [k, v]
  end

  ret
end
            
mutex() click to toggle source
 
               # File tk/lib/tkextlib/blt/watch.rb, line 20
def mutex; @mutex; 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.