def tag_start name, attributes
@parent = @widget_stack.last
if name[0..2] == "Tk:"
tag_name = name[3..name.length]
else
tag_name = name
end
attr_hash = Hash.new
attributes.each do |a|
attr_hash[a[0]] = a[1]
end
if tag_name[0..0] == '_'
puts "Applying Method: #{name} to #{@parent}"
meth_name = tag_name[1..tag_name.length]
p_arr = Array.new
p_init = Hash.new
p_hash = Hash.new
attr_hash.each do |n, v|
puts " #{n} => #{v}"
if n[0..0] == "_"
p_init[n] = v
else
p_hash[n] = v
end
end
if not p_init.empty?
p_init.sort
p_init.each do |a|
p_arr.push a[1]
end
end
if not p_hash.empty?
p_arr.push p_hash
end
@parent.send(meth_name, *p_arr)
else
puts "Creating Widget: #{name} of #{@parent}"
widget_class = "Tk" + tag_name.capitalize
widget_name = attr_hash['name']
if @parent == nil
@widget[widget_name] = Tk.const_get(widget_class).new
else
@widget[widget_name] = Tk.const_get(widget_class).new(@parent)
end
attr_hash.each do |n, v|
if not n == 'name'
puts " #{n} => #{v}"
@widget[widget_name].send(n, v)
end
end
@widget_stack.push(@widget[widget_name])
end
end