Class: Alexandria::WebTheme

Inherits:
Object
  • Object
show all
Defined in:
lib/alexandria/web_themes.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(css_file, preview_file, pixmaps_directory) ⇒ WebTheme

Returns a new instance of WebTheme.



25
26
27
28
29
30
# File 'lib/alexandria/web_themes.rb', line 25

def initialize(css_file, preview_file, pixmaps_directory)
  @name = File.basename(css_file, ".css").capitalize
  @css_file = css_file
  @preview_file = preview_file
  @pixmaps_directory = pixmaps_directory
end

Instance Attribute Details

#css_fileObject (readonly)

Returns the value of attribute css_file.



23
24
25
# File 'lib/alexandria/web_themes.rb', line 23

def css_file
  @css_file
end

#nameObject (readonly)

Returns the value of attribute name.



23
24
25
# File 'lib/alexandria/web_themes.rb', line 23

def name
  @name
end

#pixmaps_directoryObject (readonly)

Returns the value of attribute pixmaps_directory.



23
24
25
# File 'lib/alexandria/web_themes.rb', line 23

def pixmaps_directory
  @pixmaps_directory
end

#preview_fileObject (readonly)

Returns the value of attribute preview_file.



23
24
25
# File 'lib/alexandria/web_themes.rb', line 23

def preview_file
  @preview_file
end

Class Method Details

.allObject



36
37
38
39
40
41
42
43
44
45
# File 'lib/alexandria/web_themes.rb', line 36

def self.all
  themes_dir = [
    # System dir
    File.join(Alexandria::Config::DATA_DIR, "web-themes"),

    # User dir
    File.join(Dir.home, ".alexandria", ".web-themes")
  ]
  themes_dir.map { |x| load(x) }.flatten
end

.load(themes_dir) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/alexandria/web_themes.rb', line 47

def self.load(themes_dir)
  themes = []
  if File.exist?(themes_dir)
    Dir.entries(themes_dir).each do |file|
      # ignore hidden files
      next if file.start_with?(".")

      # ignore non-directories
      path = File.join(themes_dir, file)
      next unless File.directory?(path)
      # ignore CVS directories
      next if file == "CVS"

      css_file = File.join(path, file + ".css")
      preview_file = File.join(path, "preview.jpg")
      [css_file, preview_file].each do |helper_file|
        unless File.exist?(helper_file)
          raise format(_("File %<file>s not found"), file: helper_file)
        end
      end
      themes << WebTheme.new(css_file, preview_file,
                             File.join(path, file, "pixmaps"))
    end
  else
    FileUtils.mkdir_p(themes_dir)
  end
  themes
end

Instance Method Details

#has_pixmaps?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/alexandria/web_themes.rb', line 32

def has_pixmaps?
  File.exist?(@pixmaps_directory)
end