gf-ralbum 0.0.2 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. data/VERSION +1 -0
  2. data/bin/{ralbum.rb → ralbum} +1 -1
  3. data/example/example.sh +2 -1
  4. data/example/test_jalbum_phototree/jalbum-settings.jap +321 -0
  5. data/example/test_jalbum_phototree/src/albumfiles.txt +9 -0
  6. data/example/test_jalbum_phototree/src/comments.properties +0 -0
  7. data/example/test_jalbum_phototree/src/flowers/albumfiles.txt +14 -0
  8. data/example/test_jalbum_phototree/src/meta.properties +2 -0
  9. data/example/{test_phototree → test_rubyphoto_phototree}/album.xml +0 -0
  10. data/example/test_rubyphoto_phototree/flowers/IMG_1469.wt.jpg +0 -0
  11. data/example/test_rubyphoto_phototree/flowers/IMG_2291.jpg +0 -0
  12. data/example/test_rubyphoto_phototree/flowers/IMG_2598.jpg +0 -0
  13. data/example/test_rubyphoto_phototree/flowers/IMG_3068.jpg +0 -0
  14. data/example/test_rubyphoto_phototree/flowers/IMG_3323.jpg +0 -0
  15. data/example/test_rubyphoto_phototree/flowers/IMG_3348.jpg +0 -0
  16. data/example/{test_phototree → test_rubyphoto_phototree}/r_photo01.jpg +0 -0
  17. data/example/{test_phototree → test_rubyphoto_phototree}/r_photo01.jpg.xml +0 -0
  18. data/example/{test_phototree/catalog_data → test_rubyphoto_phototree/ralbum}/md5_to_key.yaml +0 -0
  19. data/example/{test_phototree/catalog_data → test_rubyphoto_phototree/ralbum}/md5_to_key.yaml.test +0 -0
  20. data/example/{test_phototree/catalog_data → test_rubyphoto_phototree/ralbum}/project.xml +206 -3
  21. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/album.xml +0 -0
  22. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo01.jpg +0 -0
  23. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo01.jpg.xml +0 -0
  24. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo02.jpg +0 -0
  25. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo02.jpg.xml +0 -0
  26. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo03.jpg +0 -0
  27. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo03.jpg.xml +0 -0
  28. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo04.jpg +0 -0
  29. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum01/subalbum01_photo04.jpg.xml +0 -0
  30. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/album.xml +0 -0
  31. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo01.jpg +0 -0
  32. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo01.jpg.xml +0 -0
  33. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo02.jpg +0 -0
  34. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo02.jpg.xml +0 -0
  35. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo03.jpg +0 -0
  36. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo03.jpg.xml +0 -0
  37. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo04.jpg +0 -0
  38. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo04.jpg.xml +0 -0
  39. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo05.jpg +0 -0
  40. data/example/{test_phototree → test_rubyphoto_phototree}/subalbum02/subalbum02_photo05.jpg.xml +0 -0
  41. data/lib/ralbum.rb +9 -5
  42. data/lib/ralbum/album_tree/album.rb +74 -0
  43. data/lib/ralbum/album_tree/generate_album_tree_node_visitor.rb +73 -0
  44. data/lib/ralbum/album_tree/image_file.rb +88 -0
  45. data/lib/ralbum/{image_pool.rb → album_tree/image_pool.rb} +16 -4
  46. data/lib/ralbum/catalog.rb +7 -7
  47. data/lib/ralbum/cli/cli_ralbum.rb +66 -25
  48. data/lib/ralbum/image_strategies/copy_image_strategy.rb +16 -0
  49. data/lib/ralbum/image_strategies/linked_image_strategy.rb +18 -0
  50. data/lib/ralbum/image_strategies/scaled_image_strategy.rb +52 -0
  51. data/lib/ralbum/image_strategies/sepia_scaled_image_strategy.rb +50 -0
  52. data/lib/{ralbum-common → ralbum}/object_with_properties.rb +0 -0
  53. data/lib/{ralbum-common → ralbum}/object_with_validation.rb +0 -0
  54. data/lib/ralbum/photo_tree/jalbum_photo_tree.rb +83 -0
  55. data/lib/ralbum/photo_tree/photo_file.rb +149 -0
  56. data/lib/ralbum/photo_tree/photo_tree_item.rb +68 -0
  57. data/lib/ralbum/{photo_tree_node.rb → photo_tree/photo_tree_node.rb} +16 -13
  58. data/lib/ralbum/{photo_tree_builder.rb → photo_tree/rubyphoto_photo_tree.rb} +64 -46
  59. data/lib/ralbum/project.rb +48 -12
  60. data/lib/ralbum/skin.rb +34 -27
  61. data/lib/ralbum/skin_engine.rb +32 -17
  62. data/lib/ralbum/skin_engines/erb_skin_engine.rb +2 -5
  63. data/lib/ralbum/skin_engines/kwartz_skin_engine.rb +6 -9
  64. data/lib/ralbum/skin_manager.rb +11 -2
  65. data/lib/ralbum/skins/cgi/cgi_skin.rb +21 -23
  66. data/lib/ralbum/skins/cgi/res/model.rb +30 -32
  67. data/lib/ralbum/skins/gfold/inc/menu_bottom.html +53 -53
  68. data/lib/ralbum/skins/gfold/inc/menu_top.html +71 -71
  69. data/lib/ralbum/skins/gfold/inc/page_footer.html +28 -28
  70. data/lib/ralbum/skins/gfold/out/album_page.rb +316 -316
  71. data/lib/ralbum/skins/gfold/out/image_page.rb +231 -231
  72. data/lib/ralbum/skins/gfold/out/tree_page.rb +96 -96
  73. data/lib/ralbum/skins/gfold/res/prototype.js +3277 -3277
  74. data/lib/ralbum/skins/gfold/template/album_page.html +161 -161
  75. data/lib/ralbum/skins/gfold/template/album_page.plogic +127 -127
  76. data/lib/ralbum/skins/gfold/template/image_page.html +91 -91
  77. data/lib/ralbum/skins/gfold/template/image_page.plogic +70 -70
  78. data/lib/ralbum/skins/gfold/template/tree_page.html +79 -79
  79. data/lib/ralbum/skins/gfold/template/tree_page.plogic +45 -45
  80. data/lib/ralbum/skins/js/out/album_page.rb +2 -2
  81. data/lib/ralbum/skins/js/out/tree_page.rb +18 -17
  82. data/lib/ralbum/skins/js/template/album_page.html +2 -2
  83. data/lib/ralbum/skins/js/template/tree_page.html +1 -1
  84. data/lib/ralbum/skins/test_erb/template/album_page.rhtml +22 -0
  85. data/lib/ralbum/skins/test_erb/template/image_page.rhtml +44 -0
  86. data/lib/ralbum/tasks/compile_skins.rb +8 -0
  87. data/test/ralbum/cli/tc_cli_ralbum.rb +35 -0
  88. data/test/ralbum/image_strategies/tc_scaled_image_strategy.rb +18 -0
  89. data/test/ralbum/image_strategies/tc_sepia_scaled_image_strategy.rb +18 -0
  90. data/test/ralbum/photo_tree/tc_jalbum_photo_tree.rb +39 -0
  91. data/test/ralbum/photo_tree/tc_photo_file.rb +13 -0
  92. data/test/ralbum/{tc_01_photo_tree.rb → photo_tree/tc_photo_tree.rb} +10 -12
  93. data/test/ralbum/photo_tree/tc_rubyalbum_photo_tree.rb +20 -0
  94. data/test/ralbum/tc_album.rb +55 -0
  95. data/test/ralbum/tc_catalog.rb +8 -4
  96. data/test/ralbum/tc_image_pool.rb +37 -0
  97. data/test/ralbum/{tc_05_kwartz_skin_engine.rb → tc_kwartz_skin_engine.rb} +1 -1
  98. data/test/ralbum/{tc_04_skin_manager.rb → tc_skin_manager.rb} +8 -3
  99. data/test/ralbum/test_helper.rb +16 -1
  100. data/test_data/ralbum/test_data/is_test/dummy.txt +0 -0
  101. metadata +78 -81
  102. data/bin/ralbum-JPG2jpg.rb +0 -90
  103. data/bin/ralbum-compile_skins.rb +0 -18
  104. data/bin/ralbum-myconv.rb +0 -81
  105. data/bin/ralbum-readexif.rb +0 -18
  106. data/bin/ralbum-reorder.rb +0 -200
  107. data/lib/ralbum/album.rb +0 -66
  108. data/lib/ralbum/generate_album_tree_node_visitor.rb +0 -60
  109. data/lib/ralbum/image_file.rb +0 -81
  110. data/lib/ralbum/image_strategy.rb +0 -143
  111. data/lib/ralbum/photo_tree_item.rb +0 -89
  112. data/test/ralbum/cli/test_cli_ralbum.rb +0 -13
  113. data/test/ralbum/tc_02_photo_tree_builder.rb +0 -20
  114. data/test/ralbum/tc_03_album.rb +0 -42
  115. data/test/ralbum/tc_06_image_strategy.rb +0 -21
  116. data/test/test_ralbum.rb +0 -14
  117. data/test_data/ralbum/test_data/is_test/r_photo01_scaled.jpg +0 -0
  118. data/test_data/ralbum/test_data/is_test/r_photo01_sepia_scaled.jpg +0 -0
@@ -1,7 +1,8 @@
1
- # ralbum
2
1
  require 'rubygems'
3
- require 'ralbum-common/object_with_properties'
4
- require 'tree_visitor/tree_node'
2
+ require 'treevisitor/tree_node'
3
+
4
+ # ralbum
5
+ require 'ralbum/object_with_properties'
5
6
 
6
7
 
7
8
  #
@@ -13,10 +14,20 @@ class PhotoTreeNode < TreeNode
13
14
 
14
15
  def initialize( dirname, parentPhotoTreeNode = nil )
15
16
  super( dirname, parentPhotoTreeNode )
16
-
17
17
  init_object_with_properties
18
18
  end
19
-
19
+
20
+ def to_s
21
+ if self['title'] and not self['title'].empty?
22
+ "'#{name}'" + ": '" + self['title'] +"'"
23
+ else
24
+ "'#{name}'"
25
+ end
26
+ end
27
+
28
+ #############################################################################
29
+ # configurations
30
+
20
31
  def write_xml( xml_el )
21
32
  xml_album = xml_el.add_element( "album" )
22
33
  xml_album.add_element("title").text = name
@@ -28,13 +39,5 @@ class PhotoTreeNode < TreeNode
28
39
  xml_album
29
40
  end
30
41
 
31
- def to_str( prefix = "" )
32
- str << ""
33
- str += prefix + name + "\n"
34
- str += prefix + " photoItems: "
35
- @childs.each{ |c| str += c.name }
36
- str
37
- end
38
-
39
42
  end
40
43
 
@@ -2,11 +2,16 @@
2
2
  require 'rubygems'
3
3
  require "rexml/document"
4
4
 
5
+ # treevisitor
6
+ require 'treevisitor/tree_node_visitor'
7
+ require 'treevisitor/dir_tree_walker'
8
+ require 'treevisitor/visitors/callback_tree_node_visitor2'
9
+ require 'treevisitor/visitors/callback_tree_node_visitor'
10
+
5
11
  # ralbum
6
- require 'tree_visitor/tree_node_visitor'
7
- require 'tree_visitor/dir_tree_walker'
8
- require 'ralbum/photo_tree_item'
9
- require 'ralbum/photo_tree_node'
12
+ require 'ralbum/photo_tree/photo_tree_item'
13
+ require 'ralbum/photo_tree/photo_tree_node'
14
+ require 'ralbum/catalog'
10
15
 
11
16
  #
12
17
  # Crea un PhotoTree a partire da una
@@ -15,9 +20,9 @@ require 'ralbum/photo_tree_node'
15
20
  class PhotoTreeBuilder
16
21
 
17
22
  def run( phototree_dirname )
18
- photoTree = buildPhotoTreeFromDirectory( phototree_dirname )
19
- readMetaInfoOldFormat( photoTree )
20
- updateMetaInfo( photoTree )
23
+ photoTree = build_photo_tree_from_directory( phototree_dirname )
24
+ read_meta_info_old_format( photoTree )
25
+ update_meta_info( photoTree )
21
26
  photoTree
22
27
  end
23
28
 
@@ -26,88 +31,102 @@ class PhotoTreeBuilder
26
31
  # build photo tree senza metainfo
27
32
  #
28
33
 
29
- def buildPhotoTreeFromDirectory( phototree_dirname )
34
+ def build_photo_tree_from_directory( phototree_dirname )
30
35
  ralbum_verbose( 1, "phototree - building phototree from #{phototree_dirname}" )
36
+
37
+ dtw = DirTreeWalker.new( phototree_dirname )
38
+
39
+ # TODO: ignorare tutti le directory che iniziano per "." questa deve essere un'opzione di DirTreeWalker
40
+ dtw.add_ignore_dir( ".svn" )
41
+ dtw.add_ignore_dir( ".csv" )
42
+ dtw.add_ignore_dir( ".git" )
43
+
44
+ dtw.add_ignore_dir( Catalog::DEFAULT_CATALOG_DIRNAME )
45
+ dtw.add_inspect_file( /.jpg/ )
46
+ dtw.add_ignore_file( /.xml/ )
47
+ dtw.add_ignore_file( /(ignore)|(orig)/ )
48
+
31
49
  visitor = CallbackTreeNodeVisitor2.new
32
50
 
33
- visitor.onEnterTreeNode { |pathname, parent|
51
+ visitor.on_enter_tree_node { |pathname, parent|
34
52
  if not parent.nil?
35
53
  pathname = File.basename( pathname )
36
54
  end
37
55
  PhotoTreeNode.new( pathname, parent )
38
56
  }
39
57
 
40
- visitor.onVisitLeafNode{ |pathname, parent|
58
+ visitor.on_visit_leaf_node{ |pathname, parent|
41
59
  PhotoTreeItem.new(File.basename( pathname ), parent )
42
60
  }
43
-
44
- dtw = DirTreeWalker.new( phototree_dirname )
45
- dtw.add_ignore_dir( ".svn" )
46
- dtw.add_ignore_dir( "catalog_data" )
47
- dtw.add_inspect_file( /.jpg/ )
48
- dtw.add_ignore_file( /.xml/ )
49
- dtw.add_ignore_file( /(ignore)|(orig)/ )
50
-
51
- photoTree = dtw.run( visitor )
52
- # puts "------------------------------------ PhotoTree"
53
- # photoTree.accept( PrintTreeNodeVisitor.new )
54
- photoTree
61
+
62
+ dtw.run( visitor ).root # return a photo_tree
55
63
  end
56
64
 
57
65
  # ---------------------------------------------------------------------------------------
58
66
  #
59
67
  # Read Metainfo vecchio formato
60
68
  #
61
- def readMetaInfoOldFormat( photoTree )
69
+ def read_meta_info_old_format( photo_tree )
62
70
  ralbum_verbose( 1, "phototree - reading metainfo" )
63
71
  visitor = CallbackTreeNodeVisitor.new
64
- visitor.onEnterTreeNode { |photoTreeNode|
72
+ visitor.on_enter_tree_node { |photoTreeNode|
65
73
  read_photo_tree_node_xml( photoTreeNode )
66
74
  }
67
- visitor.onVisitLeafNode{ |photoTreeItem|
75
+ visitor.on_visit_leaf_node{ |photoTreeItem|
68
76
  read_photo_item_xml( photoTreeItem )
69
77
  }
70
- photoTree.accept( visitor )
78
+ photo_tree.accept( visitor )
71
79
  end
72
80
 
73
81
  #
74
82
  # old metainfo
75
83
  #
76
84
 
77
- def read_photo_item_xml(photoTreeItem)
78
- xml_file = File.join( photoTreeItem.parent.path, photoTreeItem.basename + ".xml" )
85
+ def read_photo_item_xml(photo_tree_item)
86
+ xml_file = File.join( photo_tree_item.parent.path, photo_tree_item.basename + ".xml" )
79
87
 
80
88
  if File.exist?(xml_file)
81
- ralbum_verbose( 2, "NOTE: reading file xml for #{photoTreeItem.name}" )
89
+ ralbum_verbose( 2, "NOTE: reading file xml for #{photo_tree_item.name}" )
82
90
  else
83
- ralbum_verbose( 1, "WARNING: file xml for #{photoTreeItem.name} not exists" )
91
+ ralbum_verbose( 1, "WARNING: file xml for #{photo_tree_item.name} not exists" )
84
92
  return
85
93
  end
86
94
 
87
95
  doc = REXML::Document.new File.new( xml_file )
88
96
  doc.elements["photo"].each_element { |e|
89
- photoTreeItem[e.name.to_s] = e.text.to_s.strip.gsub( /\n/, "" ).gsub( /\s+/, " " )
97
+ #
98
+ # photo_tree_item[e.name.to_s] = e.text.to_s.strip.gsub( /\n/, "" ).gsub( /\s+/, " " )
99
+ #
100
+ key = e.name.to_s
101
+ value = e.text.to_s.strip.gsub( /\n/, "" ).gsub( /\s+/, " " )
102
+ case key
103
+ when "title"
104
+ photo_tree_item.title = value
105
+ when "description"
106
+ photo_tree_item.description = value
107
+ else
108
+ ralbum_verbose(1, "rubyphoto - read_photo_item_xml unknow #{key} found")
109
+ end
90
110
  }
91
111
  end
92
112
 
93
- def read_photo_tree_node_xml( photoTreeNode )
94
- xml_file = File.join(photoTreeNode.path, "album.xml")
113
+ def read_photo_tree_node_xml( photo_tree_node )
114
+ xml_file = File.join(photo_tree_node.path, "album.xml")
95
115
 
96
116
  if File.exist?(xml_file)
97
- ralbum_verbose( 2, "NOTE: reading xml for node '#{photoTreeNode.path_from_root}'" )
117
+ ralbum_verbose( 2, "NOTE: reading xml for node '#{photo_tree_node.path}'" )
98
118
  else
99
- ralbum_verbose( 1, "WARNING: xml for node '#{photoTreeNode.path_from_root}' not exists" )
119
+ ralbum_verbose( 1, "WARNING: xml for node '#{photo_tree_node.path}' not exists" )
100
120
  return
101
121
  end
102
122
 
103
123
  doc = REXML::Document.new File.new( xml_file )
104
124
  doc.elements["album"].each_element { |e|
105
- photoTreeNode[e.name.to_s] = e.text.to_s.strip.gsub( /\n/, "" ).gsub( /\s+/, " " )
125
+ photo_tree_node[e.name.to_s] = e.text.to_s.strip.gsub( /\n/, "" ).gsub( /\s+/, " " )
106
126
  }
107
127
  end
108
128
 
109
- # ---------------------------------------------------------------------------------------
110
- #
129
+ # ---------------------------------------------------------------------------
111
130
  # TODO: read meta info nuovo formato
112
131
 
113
132
  def readMetaInfoNewFormat( photoTree, catalog_dirname )
@@ -122,21 +141,20 @@ class PhotoTreeBuilder
122
141
  end
123
142
 
124
143
  doc = REXML::Document.new File.new( xml_project )
125
-
126
144
  end
127
145
 
128
146
  # ---------------------------------------------------------------------------------------
129
147
  #
130
148
  # check meta info nuovo formato
131
149
  #
132
- def updateMetaInfo( photoTree )
150
+ def update_meta_info( photoTree )
133
151
  ralbum_verbose( 1, "phototree - updating metainfo" )
134
152
  visitor = CallbackTreeNodeVisitor.new
135
- visitor.onVisitLeafNode{ |photoTreeItem|
153
+ visitor.on_visit_leaf_node{ |photoTreeItem|
136
154
  # TODO: updatare metainfo solo se il file della photo e' piu' aggionato del metainfo
137
- if photoTreeItem['file_date'].empty? or photoTreeItem['file_date'] < photoTreeItem.time
138
- photoTreeItem.force_read_metainfo
139
- end
155
+ # if photoTreeItem['file_date'].empty? or photoTreeItem['file_date'] < photoTreeItem.time
156
+ # photoTreeItem.force_read_metainfo
157
+ # end
140
158
  }
141
159
  photoTree.accept( visitor )
142
160
 
@@ -152,10 +170,10 @@ class PhotoTreeBuilder
152
170
  def write_xml( photoTree, xml_project )
153
171
  xml_photo_tree = xml_project.add_element("photo_tree")
154
172
  visitor = CallbackTreeNodeVisitor2.new( xml_photo_tree )
155
- visitor.onEnterTreeNode { |photoTreeNode, xml_el|
173
+ visitor.on_enter_tree_node { |photoTreeNode, xml_el|
156
174
  photoTreeNode.write_xml( xml_el )
157
175
  }
158
- visitor.onVisitLeafNode{ |photoTreeItem, xml_el|
176
+ visitor.on_visit_leaf_node{ |photoTreeItem, xml_el|
159
177
  photoTreeItem.write_xml( xml_el )
160
178
  }
161
179
  photoTree.accept( visitor )
@@ -1,10 +1,19 @@
1
+ require 'ralbum/catalog'
2
+ require 'ralbum/skin_manager'
3
+ require 'ralbum/album_tree/generate_album_tree_node_visitor'
4
+
1
5
  class Project
2
6
 
3
7
  attr_accessor :phototree_dirname
8
+ attr_accessor :photo_tree_type
9
+
4
10
  attr_accessor :album_dirname
5
11
 
6
12
  attr_accessor :skin_names
7
13
 
14
+ attr_accessor :debug_photo_tree
15
+ attr_accessor :debug_album_tree
16
+
8
17
  def initialize(skin_manager)
9
18
  @skin_manager = skin_manager
10
19
  end
@@ -17,7 +26,7 @@ class Project
17
26
 
18
27
  @phototree_dirname = File.expand_path( @phototree_dirname )
19
28
  @album_dirname = File.expand_path( @album_dirname )
20
- catalog_dirname = File.join( @phototree_dirname, "catalog_data" )
29
+ catalog_dirname = File.join( @phototree_dirname, Catalog::DEFAULT_CATALOG_DIRNAME )
21
30
  FileUtils.mkpath( catalog_dirname ) unless File.directory?( catalog_dirname )
22
31
 
23
32
  #
@@ -25,17 +34,36 @@ class Project
25
34
  #
26
35
  skin_name = @skin_names.first
27
36
  skin = @skin_manager.get_skin( skin_name )
28
- skin.skin_engine.album_dirname = @album_dirname
37
+ skin.engine.album_dirname = @album_dirname
29
38
  # TODO: skin.configure( xml_project )
30
39
 
31
40
  #
32
41
  # step 1: reading phototree
33
42
  #
34
-
35
- photoTreeBuilder = PhotoTreeBuilder.new
36
- photoTree = photoTreeBuilder.run( phototree_dirname )
43
+
44
+ case @photo_tree_type
45
+ when "rubyphoto"
46
+ require 'ralbum/photo_tree/rubyphoto_photo_tree'
47
+ photo_tree_builder = PhotoTreeBuilder.new
48
+ when "jalbum"
49
+ require 'ralbum/photo_tree/jalbum_photo_tree'
50
+ photo_tree_builder = JalbumPhotoTreeBuilder.new
51
+ else
52
+ raise RAlbumException.new("photo tree type '#{@photo_tree_type}' unknow" )
53
+ end
54
+ photo_tree = photo_tree_builder.run( phototree_dirname )
37
55
  # TODO: photoTreeBuilder.configure( xml_project )
38
-
56
+
57
+
58
+ if(@debug_photo_tree)
59
+ puts "---------- PhotoTree"
60
+ puts "root is " + photo_tree.path_with_prefix
61
+ puts photo_tree.to_str
62
+ puts "----------"
63
+ end
64
+
65
+
66
+
39
67
  #
40
68
  # step 2: build catalog
41
69
  #
@@ -49,10 +77,15 @@ class Project
49
77
  # step : generate album_tree
50
78
  #
51
79
  # TODO: l'album tree e' generato in base allo skin
52
- generator = GenerateAlbumTreeNodeVisitor.new( album_dirname, catalog, skin.skin_engine.image_strategies )
53
- albumTree = generator.run( photoTree )
54
-
80
+ generator = GenerateAlbumTreeNodeVisitor.new( album_dirname, catalog, skin.engine.image_strategies )
81
+ album_tree = generator.run( photo_tree )
55
82
 
83
+ if(@debug_album_tree)
84
+ puts "---------- AlbumTree"
85
+ puts "root is " + album_tree.path_with_prefix
86
+ puts album_tree.to_str
87
+ puts "----------"
88
+ end
56
89
 
57
90
  #
58
91
  # step 3: generate albums
@@ -70,8 +103,10 @@ class Project
70
103
  # albumTree.accept( PrintTreeNodeVisitor.new )
71
104
 
72
105
  # TODO: se generare l'album nella directory "skin_name" oppure nella root
73
- skin.create( albumTree )
106
+ skin.create( album_tree )
74
107
 
108
+ retun 0
109
+
75
110
  #
76
111
  # save project
77
112
  #
@@ -79,11 +114,12 @@ class Project
79
114
  doc = REXML::Document.new
80
115
  doc << REXML::XMLDecl.new
81
116
  xml_project = doc.add_element( "project" )
82
- photoTreeBuilder.write_xml(photoTree, xml_project)
117
+ photo_tree_builder.write_xml(photo_tree, xml_project)
83
118
  xml_project = File.join( catalog_dirname, "project.xml")
84
119
  File.open( xml_project, "w") {|f|
85
120
  doc.write( f, 0 )
86
- }
121
+ }
122
+ return 0
87
123
  end
88
124
 
89
125
  end
@@ -2,7 +2,7 @@
2
2
  require 'rubygems'
3
3
 
4
4
  #ralbum
5
- require 'gf_utility/file_utilities'
5
+ require 'gf_utilities/file_utilities'
6
6
  require 'ralbum/skin_engine'
7
7
 
8
8
  class Skin
@@ -14,8 +14,8 @@ class Skin
14
14
  attr_reader :skin_author
15
15
 
16
16
  def initialize( skin_name, skin_dirname )
17
- @metainfo = nil
18
- @skin_engine = nil
17
+ @metainfo = {}
18
+ @engine = nil
19
19
  @skin_dirname = skin_dirname
20
20
 
21
21
  @skin_name = skin_name
@@ -26,48 +26,55 @@ class Skin
26
26
 
27
27
  def load_info
28
28
  info_filename = File.join( @skin_dirname, "info.yml" )
29
- if File.exist?( info_filename )
30
- info = YAML::load( File.read(info_filename) )
31
- if not info.kind_of?(Hash)
32
- ralbum_verbose(1, "description skin file '#{info_filename}' is incorrect")
33
- else
34
- @metainfo = info
35
- @skin_author = info["author"]
36
- @skin_description = info["description"]
37
- end
29
+
30
+ unless File.exist?( info_filename )
31
+ ralbum_verbose(1, "information file for skin '#{@skin_name}' doesn't exist")
32
+ return
33
+ end
34
+ info = YAML::load( File.read(info_filename) )
35
+ if not info.kind_of?(Hash)
36
+ ralbum_verbose(1, "description skin file '#{info_filename}' is incorrect")
37
+ else
38
+ @metainfo = info
39
+ @skin_author = info["author"]
40
+ @skin_description = info["description"]
38
41
  end
39
42
  end
40
43
 
41
- def create( albumTree )
42
- skin_engine.create( albumTree )
44
+ def create( album_tree )
45
+ engine.create( album_tree )
43
46
  end
44
47
 
45
- def skin_engine
46
- if @skin_engine
47
- return @skin_engine
48
- end
48
+ def compile
49
+ engine.compile
50
+ end
51
+
52
+ def engine
53
+ return @engine if @engine
49
54
 
50
- skin_engine_rb = File.join( @skin_dirname, @skin_name + "_skin.rb" )
51
- if File.exist?( skin_engine_rb )
52
- require skin_engine_rb
53
- clss = get_constant( @skin_name.capitalize + "SkinEngine" )
54
- @skin_engine = clss.new( self )
55
- return @skin_engine
55
+ engine_rb = File.join( @skin_dirname, @skin_name + "_skin_engine.rb" )
56
+ if File.exist?( engine_rb )
57
+ require engine_rb
58
+ engine_class_name = @skin_name.capitalize + "SkinEngine"
59
+ clss = Class.const_get( engine_class_name.to_sym )
60
+ @engine = clss.new( self )
61
+ return @engine
56
62
  end
57
63
 
58
64
  engine = @metainfo['engine']
59
65
  unless engine
60
- puts "warning non engine defined for skin #{skin_name} using erb engine"
66
+ msg = "warning no engine defined for skin '#{skin_name}': I will be use ErbSkinEngine"
67
+ ralbum_verbose(0, msg)
61
68
  engine = 'erb'
62
69
  end
63
70
 
64
71
  case engine
65
72
  when 'erb' then
66
73
  require 'ralbum/skin_engines/erb_skin_engine'
67
- @skin_engine = ErbSkinEngine.new( self )
74
+ @engine = ErbSkinEngine.new( self )
68
75
  when 'kwartz' then
69
76
  require 'ralbum/skin_engines/kwartz_skin_engine'
70
- @skin_engine = KwartzSkinEngine.new( self )
77
+ @engine = KwartzSkinEngine.new( self )
71
78
  else
72
79
  raise RAlbumException.new, "skin engine #{engine} unknow"
73
80
  end