def def_draw_hook(klass, name)
@@draw_hook_names << name
base_name = "#{name}_draw_proc"
var_name = "@#{base_name}s"
klass.module_eval(" def add_#{base_name}(name=nil, &block)
#{var_name} << [block, name]
block
end
def delete_#{base_name}(name=nil, &block)
#{var_name}.reject! do |blk,|
blk == block
end
end
def delete_#{base_name}_by_name(name)
#{var_name}.reject! do |_, nm|
name === nm
end
end
def clear_#{base_name}s
#{var_name} = []
end
def #{base_name}s(name)
#{var_name}.find_all do |_, nm|
name === nm
end
end
def #{base_name}(name)
#{var_name}.find do |_, nm|
name === nm
end
end
", __FILE__, __LINE__ + 1)
end