Sha256: 9b792a182e73d209b9e70336c017cd328e91947878157839c3c0ebaf634fdf8a

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

# ralbum
require 'ralbum/options'
require 'ralbum/skin'

class SkinManager

  #
  # +skins_dirname+: directory contains all the skin in subdirectory
  #
  def initialize( skins_dirname = nil )
    if skins_dirname
      @skins_dirname = skins_dirname
    else
      @skins_dirname = File.expand_path(File.join(File.dirname(__FILE__), "skins"))
    end

    @skins = {}
    Dir.new( @skins_dirname).entries.each { |dir|
      next if dir =~ /^\./   # if the directory starts with dot ignore
      @skins[dir] = Skin.new(dir, File.expand_path(File.join(@skins_dirname, dir)) )
    }
  end

  # iterate over skin
  def each(&block)
    @skins.each_value(&block)
  end

  def has_skin?( skin_name )
    @skins.has_key?( skin_name )
  end
    
  def get_skin( skin_name )
    if not has_skin?( skin_name )
      raise RAlbumException.new, "Unknow skin #{skin_name}"
    end
    @skins[skin_name]
  end

  def skins_with_engine(engine)
    @skins.find_all{ |skin| skin.engine.class == engine}
  end

  # TODO: better format
  def describe_skins
    str = ""
    @skins.keys.sort.each do |skin_name|
      skin = @skins[skin_name]
      s = skin_name + "\t by '" + skin.skin_author + "' " + skin.skin_description
      str +=  s + "\n"
    end
    str
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gf-ralbum-0.0.5 lib/ralbum/skin_manager.rb