# Copyright (c) 2004, 2005 Martin Ankerl
# This application is free software; you can redistribute it and/or
# modify it under the terms of the Ruby license defined in the
# COPYING file.
#
# Converts a Recursive_Open_Struct that contains filenames of PNG-icons into real icons.
class Icon_Loader
	# Create a new Icon_Loader. You need to specify the Fox-application.
	def initialize(app)
		@app = app
	end
	
	# Takes each attribute of the given Recursive_Open_Struct,
	# converts it into a real icon, and sets it.
	def cfg_to_icons(cfg)
		cfg.attrs.each do |attr|
			value = cfg.send(attr.to_sym)
			if (value.class == Recursive_Open_Struct)
				cfg_to_icons(value)
			else
				# value is a filename
				icon = make_icon(value)
				cfg.send((attr + "=").to_sym, icon)
			end
		end
	end
	
	# Constructs an icon from the given filename (from the icons directory).
	def make_icon(filename)
		filename = File.join($cfg.icons_path, filename)
		icon = nil
		File.open(filename, "rb") do |f|
			icon = FXPNGIcon.new(@app, f.read, 0)
		end
		icon.create
		icon
	end
end
