# File tk/lib/tk/menu.rb, line 593
def initialize(*args)
# args :: [parent,] [var,] [value[, ...],] [keys]
# parent --> TkWindow or nil
# var --> TkVariable or nil
# keys --> Hash
# keys[:parent] or keys['parent'] --> parent
# keys[:variable] or keys['variable'] --> var
# keys[:values] or keys['values'] --> value, ...
# other Hash keys are menubutton options
keys = {}
keys = args.pop if args[-1].kind_of?(Hash)
keys = _symbolkey2str(keys)
parent = nil
if !args.empty? && (args[0].kind_of?(TkWindow) || args[0] == nil)
keys.delete('parent') # ignore
parent = args.shift
else
parent = keys.delete('parent')
end
@variable = nil
if !args.empty? && (args[0].kind_of?(TkVariable) || args[0] == nil)
keys.delete('variable') # ignore
@variable = args.shift
else
@variable = keys.delete('variable')
end
@variable = TkVariable.new unless @variable
(args = keys.delete('values') || []) if args.empty?
if args.empty?
args << @variable.value
else
@variable.value = args[0]
end
install_win(if parent then parent.path end)
@menu = OptionMenu.new(tk_call('tk_optionMenu',
@path, @variable.id, *args))
configure(keys) if keys
end
# File tk/lib/tk/menu.rb, line 645
def activate(index)
@menu.activate(index)
self
end
# File tk/lib/tk/menu.rb, line 649
def add(value)
@menu.add('radiobutton', 'variable'=>@variable,
'label'=>value, 'value'=>value)
self
end
# File tk/lib/tk/menu.rb, line 707
def current_entryconfiginfo(index, key=nil)
@menu.current_entryconfiginfo(index, key)
end
# File tk/lib/tk/menu.rb, line 665
def delete(index, last=None)
@menu.delete(index, last)
self
end
# File tk/lib/tk/menu.rb, line 694
def entrycget(index, key)
@menu.entrycget(index, key)
end
# File tk/lib/tk/menu.rb, line 697
def entrycget_strict(index, key)
@menu.entrycget_strict(index, key)
end
# File tk/lib/tk/menu.rb, line 704
def entryconfiginfo(index, key=nil)
@menu.entryconfiginfo(index, key)
end
# File tk/lib/tk/menu.rb, line 700
def entryconfigure(index, key, val=None)
@menu.entryconfigure(index, key, val)
self
end
# File tk/lib/tk/menu.rb, line 654
def index(index)
@menu.index(index)
end
# File tk/lib/tk/menu.rb, line 660
def insert(index, value)
@menu.insert(index, 'radiobutton', 'variable'=>@variable,
'label'=>value, 'value'=>value)
self
end
# File tk/lib/tk/menu.rb, line 657
def invoke(index)
@menu.invoke(index)
end
# File tk/lib/tk/menu.rb, line 641
def value=(val)
@variable.value = val
end