Module: TkComposite (Ruby 2.3.4)

In Files

  • tk/lib/tk/composite.rb

Class/Module Index [+]

Quicksearch

TkComposite

Public Class Methods

new(*args)

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)
 
               # 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)
 
               # 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)
 
               # 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)
 
               # 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)

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()
 
               # File tk/lib/tk/composite.rb, line 133
def database_class
  @frame.database_class
end
            
database_classname()
 
               # File tk/lib/tk/composite.rb, line 129
def database_classname
  @frame.database_classname
end
            
delegate(option, *wins)
 
               # File tk/lib/tk/composite.rb, line 199
def delegate(option, *wins)
  delegate_alias(option, option, *wins)
end
            
delegate_alias(alias_opt, option, *wins)
 
               # 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()
 
               # File tk/lib/tk/composite.rb, line 137
def epath
  @epath
end
            
inspect()
 
               # File tk/lib/tk/composite.rb, line 144
def inspect
  str = super
  str.chop << ' @epath=' << @epath.inspect << '>'
end
            
option_methods(*opts)
 
               # 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