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