Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
def initialize(parent=nil, *args)
# File tk/lib/tk/composite.rb, line 93
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
# File tk/lib/tk/composite.rb, line 244
def cget(slot)
if (ret = __cget_delegates(slot)) == None
super(slot)
else
ret
end
end
# File tk/lib/tk/composite.rb, line 252
def cget_strict(slot)
if (ret = __cget_delegates(slot)) == None
super(slot)
else
ret
end
end
# File tk/lib/tk/composite.rb, line 236
def cget_tkstring(slot)
if (ret = __cget_delegates(slot)) == None
super(slot)
else
_get_eval_string(ret)
end
end
# File tk/lib/tk/composite.rb, line 331
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
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 294
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
# File tk/lib/tk/composite.rb, line 132
def database_class
@frame.database_class
end
# File tk/lib/tk/composite.rb, line 128
def database_classname
@frame.database_classname
end
# File tk/lib/tk/composite.rb, line 198
def delegate(option, *wins)
delegate_alias(option, option, *wins)
end
# File tk/lib/tk/composite.rb, line 178
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
# File tk/lib/tk/composite.rb, line 143
def inspect
str = super
str.chop << ' @epath=' << @epath.inspect << '>'
end
# File tk/lib/tk/composite.rb, line 158
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.