In Files

  • tk/lib/tk/composite.rb

Class/Module Index [+]

Quicksearch

TkComposite

Public Class Methods

new(*args) click to toggle source

def initialize(parent=nil, *args)

 
               # File tk/lib/tk/composite.rb, line 94
def initialize(*args)
  @delegates = {}
  @option_methods = {}
  @option_setting = {}

  if args[-1].kind_of?(Hash)
    keys = _symbolkey2str(args.pop)
  else
    keys = {}
  end
  parent = args.shift
  parent = keys.delete('parent') if keys.has_key?('parent')

  if keys.key?('classname')
    keys['class'] = keys.delete('classname')
  end
  if (base_class_name = (keys.delete('class')).to_s).empty?
    base_class_name = _choice_classname_of_baseframe
  end

  if base_class_name
    # @frame = Tk::Frame.new(parent, :class=>base_class_name)
    # --> use current TkFrame class
    @frame = TkFrame.new(parent, :class=>base_class_name)
  else
    # @frame = Tk::Frame.new(parent)
    # --> use current TkFrame class
    @frame = TkFrame.new(parent)
  end
  @path = @epath = @frame.path

  args.push(keys) unless keys.empty?
  initialize_composite(*args)
end
            

Public Instance Methods

cget(slot) click to toggle source
 
               # File tk/lib/tk/composite.rb, line 245
def cget(slot)
  if (ret = __cget_delegates(slot)) == None
    super(slot)
  else
    ret
  end
end
            
cget_strict(slot) click to toggle source
 
               # File tk/lib/tk/composite.rb, line 253
def cget_strict(slot)
  if (ret = __cget_delegates(slot)) == None
    super(slot)
  else
    ret
  end
end
            
cget_tkstring(slot) click to toggle source
 
               # File tk/lib/tk/composite.rb, line 237
def cget_tkstring(slot)
  if (ret = __cget_delegates(slot)) == None
    super(slot)
  else
    _get_eval_string(ret)
  end
end
            
configinfo(slot = nil) click to toggle source
 
               # File tk/lib/tk/composite.rb, line 332
def configinfo(slot = nil)
  if TkComm::GET_CONFIGINFO_AS_ARRAY
    if slot
      slot = slot.to_s
      if @option_methods.include?(slot)
        if @option_methods[slot][:info]
          return self.__send__(@option_methods[slot][:info])
        else
          return [slot, '', '', '', self.cget(slot)]
        end
      end

      tbl = @delegates[slot]
      tbl = @delegates['DEFAULT'] unless tbl

      begin
        if tbl
          if tbl.length == 1
            opt, wins = tbl[0]
            if slot == opt || opt == 'DEFAULT'
              return wins[-1].configinfo(slot)
            else
              info = wins[-1].configinfo(opt)
              info[0] = slot
              return info
            end
          else
            opt, wins = tbl[-1]
            return [slot, '', '', '', wins[-1].cget(opt)]
          end
        end
      rescue
      end

      super(slot)

    else # slot == nil
      info_list = super(slot)

      tbl = @delegates['DEFAULT']
      if tbl
        wins = tbl[0][1]
        if wins && wins[-1]
          wins[-1].configinfo.each{|info|
            slot = info[0]
            info_list.delete_if{|i| i[0] == slot} << info
          }
        end
      end

      @delegates.each{|slot, tbl|
        next if slot == 'DEFAULT'
        if tbl.length == 1
          opt, wins = tbl[0]
          next unless wins && wins[-1]
          if slot == opt
            info_list.delete_if{|i| i[0] == slot} <<
              wins[-1].configinfo(slot)
          else
            info = wins[-1].configinfo(opt)
            info[0] = slot
            info_list.delete_if{|i| i[0] == slot} << info
          end
        else
          opt, wins = tbl[-1]
          info_list.delete_if{|i| i[0] == slot} <<
            [slot, '', '', '', wins[-1].cget(opt)]
        end
      }

      @option_methods.each{|slot, m|
        if m[:info]
          info = self.__send__(m[:info])
        else
          info = [slot, '', '', '', self.cget(slot)]
        end
        info_list.delete_if{|i| i[0] == slot} << info
      }

      info_list
    end

  else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
    if slot
      slot = slot.to_s
      if @option_methods.include?(slot)
        if @option_methods[slot][:info]
          return self.__send__(@option_methods[slot][:info])
        else
          return {slot => ['', '', '', self.cget(slot)]}
        end
      end

      tbl = @delegates[slot]
      tbl = @delegates['DEFAULT'] unless tbl

      begin
        if tbl
          if tbl.length == 1
            opt, wins = tbl[0]
            if slot == opt || opt == 'DEFAULT'
              return wins[-1].configinfo(slot)
            else
              return {slot => wins[-1].configinfo(opt)[opt]}
            end
          else
            opt, wins = tbl[-1]
            return {slot => ['', '', '', wins[-1].cget(opt)]}
          end
        end
      rescue
      end

      super(slot)

    else # slot == nil
      info_list = super(slot)

      tbl = @delegates['DEFAULT']
      if tbl
        wins = tbl[0][1]
        info_list.update(wins[-1].configinfo) if wins && wins[-1]
      end

      @delegates.each{|slot, tbl|
        next if slot == 'DEFAULT'
        if tbl.length == 1
          opt, wins = tbl[0]
          next unless wins && wins[-1]
          if slot == opt
            info_list.update(wins[-1].configinfo(slot))
          else
            info_list.update({slot => wins[-1].configinfo(opt)[opt]})
          end
        else
          opt, wins = tbl[-1]
          info_list.update({slot => ['', '', '', wins[-1].cget(opt)]})
        end
      }

      @option_methods.each{|slot, m|
        if m[:info]
          info = self.__send__(m[:info])
        else
          info = {slot => ['', '', '', self.cget(slot)]}
        end
        info_list.update(info)
      }

      info_list
    end
  end
end
            
configure(slot, value=None) click to toggle source

def cget(slot)

slot = slot.to_s

if @option_methods.include?(slot)
  if @option_methods[slot][:cget]
    return self.__send__(@option_methods[slot][:cget])
  else
    if @option_setting[slot]
      return @option_setting[slot]
    else
      return ''
    end
  end
end

tbl = @delegates[slot]
tbl = @delegates['DEFAULT'] unless tbl

begin
  if tbl
    opt, wins = tbl[-1]
    opt = slot if opt == 'DEFAULT'
    if wins && wins[-1]
      return wins[-1].cget(opt)
    end
  end
rescue
end

super(slot)

end

 
               # File tk/lib/tk/composite.rb, line 295
def configure(slot, value=None)
  if slot.kind_of? Hash
    slot.each{|slot,value| configure slot, value}
    return self
  end

  slot = slot.to_s

  if @option_methods.include?(slot)
    unless @option_methods[slot][:cget]
      if value.kind_of?(Symbol)
        @option_setting[slot] = value.to_s
      else
        @option_setting[slot] = value
      end
    end
    return self.__send__(@option_methods[slot][:set], value)
  end

  tbl = @delegates[slot]
  tbl = @delegates['DEFAULT'] unless tbl

  begin
    if tbl
      last = nil
      tbl.each{|opt, wins|
        opt = slot if opt == 'DEFAULT'
        wins.each{|w| last = w.configure(opt, value)}
      }
      return last
    end
  rescue
  end

  super(slot, value)
end
            
database_class() click to toggle source
 
               # File tk/lib/tk/composite.rb, line 133
def database_class
  @frame.database_class
end
            
database_classname() click to toggle source
 
               # File tk/lib/tk/composite.rb, line 129
def database_classname
  @frame.database_classname
end
            
delegate(option, *wins) click to toggle source
 
               # File tk/lib/tk/composite.rb, line 199
def delegate(option, *wins)
  delegate_alias(option, option, *wins)
end
            
delegate_alias(alias_opt, option, *wins) click to toggle source
 
               # File tk/lib/tk/composite.rb, line 179
def delegate_alias(alias_opt, option, *wins)
  if wins.length == 0
    fail ArgumentError, "target widgets are not given"
  end
  if alias_opt != option && (alias_opt == 'DEFAULT' || option == 'DEFAULT')
    fail ArgumentError, "cannot alias 'DEFAULT' option"
  end
  alias_opt = alias_opt.to_s
  option = option.to_s
  if @delegates[alias_opt].kind_of?(Array)
    if (elem = @delegates[alias_opt].assoc(option))
      wins.each{|w| elem[1].push(w)}
    else
      @delegates[alias_opt] << [option, wins]
    end
  else
    @delegates[alias_opt] = [ [option, wins] ]
  end
end
            
epath() click to toggle source
 
               # File tk/lib/tk/composite.rb, line 137
def epath
  @epath
end
            
inspect() click to toggle source
 
               # File tk/lib/tk/composite.rb, line 144
def inspect
  str = super
  str.chop << ' @epath=' << @epath.inspect << '>'
end
            
option_methods(*opts) click to toggle source
 
               # File tk/lib/tk/composite.rb, line 159
def option_methods(*opts)
  if opts.size == 1 && opts[0].kind_of?(Hash)
    # {name => [m_set, m_cget, m_info], name => method} style
    opts[0].each{|name, arg|
      m_set, m_cget, m_info = _get_opt_method_list(arg)
      @option_methods[name.to_s] = {
        :set => m_set, :cget => m_cget, :info => m_info
      }
    }
  else
    # [m_set, m_cget, m_info] or method style
    opts.each{|arg|
      m_set, m_cget, m_info = _get_opt_method_list(arg)
      @option_methods[m_set] = {
        :set => m_set, :cget => m_cget, :info => m_info
      }
    }
  end
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.