Hash
# File tk/lib/tk/optionobj.rb, line 162
def +(hash)
unless hash.kind_of?(Hash)
fail ArgumentError, "expect a Hash"
end
new_obj = self.dup
new_obj.update_without_notify(_symbolkey2str(hash))
new_obj
end
# File tk/lib/tk/optionobj.rb, line 186
def [](key)
super(key.to_s)
end
# File tk/lib/tk/optionobj.rb, line 196
def []=(key, val)
store(key,val)
end
# File tk/lib/tk/optionobj.rb, line 58
def assign(*wins)
# win :=
# widget #==> call widget.configure(hash)
# [widget] #==> call widget.configure(hash)
# [widget, nil, {src=>target, ... }]
# #==> call widget.configure(hash)
# with converting hash-key
# [widget, method] #==> call widget.method(hash)
# [widget, method, {src=>target, ... }]
# #==> call widget.method(hash)
# with converting hash-key
# [widget [receiver, method, arg, ... ]]
# #==> call receiver.method(arg, ... , hash)
# [widget [receiver, method, arg, ... ], {src=>target, ... }]
# #==> call receiver.method(arg, ... , hash)
# with onverting hash-key
#
# src := option_name_on_optobj
#
# target :=
# nil #==> not use the src
# option_name_on_target_widget
# [ option_name_on_target_widget, ... ]
# #==> set all of them
#
wins.each{|win|
_remove_win(win)
@observ << win
notify(win)
}
self
end
# File tk/lib/tk/optionobj.rb, line 178
def configure(key, value=nil)
if key.kind_of?(Hash)
update(key)
else
store(key,value)
end
end
# File tk/lib/tk/optionobj.rb, line 98
def notify(target = nil)
if target
targets = [target]
elsif @observ.empty?
return self
else
targets = @observ.dup
end
return self if empty?
org_hash = _symbolkey2str(self)
targets.each{|win|
widget = receiver = win
hash = org_hash
begin
if win.kind_of?(Array)
widget, method, conv_tbl = win
receiver = widget
if conv_tbl
hash = {}
org_hash.each{|key, val|
key = conv_tbl[key] if conv_tbl.key?(key)
next unless key
if key.kind_of?(Array)
key.each{|k| hash[k] = val}
else
hash[key] = val
end
}
end
if method.kind_of?(Array)
receiver, method, *args = method
receiver.__send__(method, *(args << hash))
elsif method
widget.__send__(method, hash)
else
widget.configure(hash)
end
else
widget.configure(self)
end
rescue => e
if ( ( widget.kind_of?(TkObject) && widget.respond_to?('exist?') && ! receiver.exist? ) || ( receiver.kind_of?(TkObject) && receiver.respond_to?('exist?') && ! receiver.exist? ) )
@observ.delete(win)
else
fail e
end
end
}
self
end
# File tk/lib/tk/optionobj.rb, line 22
def observ_info
@observ.dup
end
# File tk/lib/tk/optionobj.rb, line 26
def observs
@observ.collect{|win|
if win.kind_of?(Array)
win[0]
else
win
end
}
end
# File tk/lib/tk/optionobj.rb, line 200
def replace(hash)
super(_symbolkey2str(hash))
notify
end
# File tk/lib/tk/optionobj.rb, line 191
def store(key, val)
key = key.to_s
super(key, val)
notify
end
# File tk/lib/tk/optionobj.rb, line 91
def unassign(*wins)
wins.each{|win|
_remove_win(win)
}
self
end
# File tk/lib/tk/optionobj.rb, line 173
def update(hash)
update_without_notify(_symbolkey2str(hash))
notify
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.