epall-limelight 0.5.0-java

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 (282) hide show
  1. data/bin/icons/icon.ico +0 -0
  2. data/bin/icons/icon_48.gif +0 -0
  3. data/bin/icons/limelight.icns +0 -0
  4. data/bin/limelight +5 -0
  5. data/bin/ll +10 -0
  6. data/bin/ll.bat +5 -0
  7. data/lib/init.rb +16 -0
  8. data/lib/limelight.jar +0 -0
  9. data/lib/limelight/animation.rb +41 -0
  10. data/lib/limelight/builtin/players.rb +16 -0
  11. data/lib/limelight/builtin/players/button.rb +39 -0
  12. data/lib/limelight/builtin/players/check_box.rb +50 -0
  13. data/lib/limelight/builtin/players/combo_box.rb +89 -0
  14. data/lib/limelight/builtin/players/combo_box_popup_list.rb +19 -0
  15. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +21 -0
  16. data/lib/limelight/builtin/players/curtains.rb +23 -0
  17. data/lib/limelight/builtin/players/image.rb +54 -0
  18. data/lib/limelight/builtin/players/password_box.rb +34 -0
  19. data/lib/limelight/builtin/players/radio_button.rb +65 -0
  20. data/lib/limelight/builtin/players/stage_mover.rb +31 -0
  21. data/lib/limelight/builtin/players/stage_sizer.rb +34 -0
  22. data/lib/limelight/builtin/players/text_area.rb +34 -0
  23. data/lib/limelight/builtin/players/text_box.rb +34 -0
  24. data/lib/limelight/builtin/styles.rb +35 -0
  25. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +11 -0
  26. data/lib/limelight/builtin/utilities_production/alert/props.rb +8 -0
  27. data/lib/limelight/builtin/utilities_production/alert/styles.rb +14 -0
  28. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +20 -0
  29. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +12 -0
  30. data/lib/limelight/builtin/utilities_production/production.rb +62 -0
  31. data/lib/limelight/builtin/utilities_production/stages.rb +12 -0
  32. data/lib/limelight/builtin/utilities_production/styles.rb +53 -0
  33. data/lib/limelight/button_group_cache.rb +11 -0
  34. data/lib/limelight/casting_director.rb +112 -0
  35. data/lib/limelight/client/playbills.rb +86 -0
  36. data/lib/limelight/commands/command.rb +168 -0
  37. data/lib/limelight/commands/create_command.rb +98 -0
  38. data/lib/limelight/commands/freeze_command.rb +131 -0
  39. data/lib/limelight/commands/help_command.rb +61 -0
  40. data/lib/limelight/commands/open_command.rb +60 -0
  41. data/lib/limelight/commands/pack_command.rb +45 -0
  42. data/lib/limelight/commands/unpack_command.rb +44 -0
  43. data/lib/limelight/commands/version_command.rb +31 -0
  44. data/lib/limelight/data.rb +37 -0
  45. data/lib/limelight/dsl/build_exception.rb +55 -0
  46. data/lib/limelight/dsl/menu_bar.rb +71 -0
  47. data/lib/limelight/dsl/prop_builder.rb +155 -0
  48. data/lib/limelight/dsl/stage_builder.rb +105 -0
  49. data/lib/limelight/dsl/styles_builder.rb +157 -0
  50. data/lib/limelight/file_chooser.rb +68 -0
  51. data/lib/limelight/file_filter.rb +33 -0
  52. data/lib/limelight/file_loader.rb +46 -0
  53. data/lib/limelight/gems.rb +51 -0
  54. data/lib/limelight/java_couplings.rb +66 -0
  55. data/lib/limelight/java_util.rb +49 -0
  56. data/lib/limelight/limelight_exception.rb +24 -0
  57. data/lib/limelight/main.rb +108 -0
  58. data/lib/limelight/paint_action.rb +27 -0
  59. data/lib/limelight/pen.rb +83 -0
  60. data/lib/limelight/producer.rb +179 -0
  61. data/lib/limelight/production.rb +169 -0
  62. data/lib/limelight/prop.rb +367 -0
  63. data/lib/limelight/scene.rb +151 -0
  64. data/lib/limelight/specs/spec_helper.rb +87 -0
  65. data/lib/limelight/specs/test_scene_opener.rb +60 -0
  66. data/lib/limelight/stage.rb +292 -0
  67. data/lib/limelight/string.rb +38 -0
  68. data/lib/limelight/studio.rb +185 -0
  69. data/lib/limelight/styles.rb +347 -0
  70. data/lib/limelight/templates/production_templater.rb +49 -0
  71. data/lib/limelight/templates/scene_templater.rb +47 -0
  72. data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
  73. data/lib/limelight/templates/sources/production/init.rb.template +15 -0
  74. data/lib/limelight/templates/sources/production/production.rb.template +49 -0
  75. data/lib/limelight/templates/sources/production/spec/spec_helper.rb.template +12 -0
  76. data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
  77. data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
  78. data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
  79. data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
  80. data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +13 -0
  81. data/lib/limelight/templates/templater.rb +131 -0
  82. data/lib/limelight/templates/templater_logger.rb +39 -0
  83. data/lib/limelight/theater.rb +77 -0
  84. data/lib/limelight/util.rb +65 -0
  85. data/lib/limelight/util/downloader.rb +115 -0
  86. data/lib/limelight/version.rb +20 -0
  87. data/productions/examples/8thlight.com/about/about.txt +24 -0
  88. data/productions/examples/8thlight.com/about/props.rb +11 -0
  89. data/productions/examples/8thlight.com/about/styles.rb +2 -0
  90. data/productions/examples/8thlight.com/footer.rb +6 -0
  91. data/productions/examples/8thlight.com/home/props.rb +28 -0
  92. data/productions/examples/8thlight.com/home/styles.rb +2 -0
  93. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  94. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  95. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  96. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  97. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  98. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  99. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  100. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  101. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  102. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  103. data/productions/examples/8thlight.com/menu.rb +11 -0
  104. data/productions/examples/8thlight.com/services/props.rb +11 -0
  105. data/productions/examples/8thlight.com/services/services.txt +8 -0
  106. data/productions/examples/8thlight.com/services/styles.rb +2 -0
  107. data/productions/examples/8thlight.com/stages.rb +8 -0
  108. data/productions/examples/8thlight.com/styles.rb +210 -0
  109. data/productions/examples/calculator/players/button.rb +24 -0
  110. data/productions/examples/calculator/players/calculator.rb +15 -0
  111. data/productions/examples/calculator/players/calculator_model.rb +13 -0
  112. data/productions/examples/calculator/props.rb +23 -0
  113. data/productions/examples/calculator/styles.rb +36 -0
  114. data/productions/examples/langstons_ant/html_javascript/ant.css +39 -0
  115. data/productions/examples/langstons_ant/html_javascript/ant.html +22 -0
  116. data/productions/examples/langstons_ant/html_javascript/ant.js +23 -0
  117. data/productions/examples/langstons_ant/init.rb +4 -0
  118. data/productions/examples/langstons_ant/players/ant.rb +103 -0
  119. data/productions/examples/langstons_ant/players/log.rb +29 -0
  120. data/productions/examples/langstons_ant/players/start_stop_button.rb +37 -0
  121. data/productions/examples/langstons_ant/players/world.rb +35 -0
  122. data/productions/examples/langstons_ant/props.rb +22 -0
  123. data/productions/examples/langstons_ant/styles.rb +104 -0
  124. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +10 -0
  125. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +32 -0
  126. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +52 -0
  127. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +16 -0
  128. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +8 -0
  129. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +20 -0
  130. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +15 -0
  131. data/productions/examples/sandbox/alerts/players/alerts.rb +17 -0
  132. data/productions/examples/sandbox/alerts/props.rb +10 -0
  133. data/productions/examples/sandbox/alerts/styles.rb +46 -0
  134. data/productions/examples/sandbox/background_images/props.rb +22 -0
  135. data/productions/examples/sandbox/background_images/styles.rb +40 -0
  136. data/productions/examples/sandbox/click_me/players/chromaton.rb +52 -0
  137. data/productions/examples/sandbox/click_me/props.rb +8 -0
  138. data/productions/examples/sandbox/click_me/styles.rb +11 -0
  139. data/productions/examples/sandbox/floaters/players/floater.rb +108 -0
  140. data/productions/examples/sandbox/floaters/players/surface.rb +21 -0
  141. data/productions/examples/sandbox/floaters/props.rb +10 -0
  142. data/productions/examples/sandbox/floaters/styles.rb +24 -0
  143. data/productions/examples/sandbox/frameing/players/sandbox.rb +17 -0
  144. data/productions/examples/sandbox/frameing/props.rb +35 -0
  145. data/productions/examples/sandbox/frameing/styles.rb +45 -0
  146. data/productions/examples/sandbox/gradients/players/spinner.rb +20 -0
  147. data/productions/examples/sandbox/gradients/players/teaser.rb +19 -0
  148. data/productions/examples/sandbox/gradients/players/wave.rb +19 -0
  149. data/productions/examples/sandbox/gradients/players/waves.rb +19 -0
  150. data/productions/examples/sandbox/gradients/props.rb +13 -0
  151. data/productions/examples/sandbox/gradients/styles.rb +47 -0
  152. data/productions/examples/sandbox/header.rb +22 -0
  153. data/productions/examples/sandbox/homer/players/homer.rb +24 -0
  154. data/productions/examples/sandbox/homer/props.rb +10 -0
  155. data/productions/examples/sandbox/homer/styles.rb +16 -0
  156. data/productions/examples/sandbox/images/arch.jpg +0 -0
  157. data/productions/examples/sandbox/images/beach.jpg +0 -0
  158. data/productions/examples/sandbox/images/homer.jpg +0 -0
  159. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  160. data/productions/examples/sandbox/images/logo.png +0 -0
  161. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  162. data/productions/examples/sandbox/images/space.png +0 -0
  163. data/productions/examples/sandbox/images_scene/props.rb +36 -0
  164. data/productions/examples/sandbox/images_scene/styles.rb +34 -0
  165. data/productions/examples/sandbox/inputs/players/button_input.rb +48 -0
  166. data/productions/examples/sandbox/inputs/players/check_box_input.rb +40 -0
  167. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +41 -0
  168. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +43 -0
  169. data/productions/examples/sandbox/inputs/players/text_area_input.rb +36 -0
  170. data/productions/examples/sandbox/inputs/players/text_box_input.rb +36 -0
  171. data/productions/examples/sandbox/inputs/props.rb +40 -0
  172. data/productions/examples/sandbox/inputs/styles.rb +39 -0
  173. data/productions/examples/sandbox/kiosk/players/kiosk.rb +39 -0
  174. data/productions/examples/sandbox/kiosk/props.rb +9 -0
  175. data/productions/examples/sandbox/kiosk/styles.rb +37 -0
  176. data/productions/examples/sandbox/players/sandbox.rb +11 -0
  177. data/productions/examples/sandbox/rounded_corners/players/box.rb +11 -0
  178. data/productions/examples/sandbox/rounded_corners/props.rb +22 -0
  179. data/productions/examples/sandbox/rounded_corners/styles.rb +17 -0
  180. data/productions/examples/sandbox/scrolling/players/add_button.rb +19 -0
  181. data/productions/examples/sandbox/scrolling/players/cell.rb +15 -0
  182. data/productions/examples/sandbox/scrolling/props.rb +45 -0
  183. data/productions/examples/sandbox/scrolling/styles.rb +33 -0
  184. data/productions/examples/sandbox/sketching/players/sketchpad.rb +46 -0
  185. data/productions/examples/sandbox/sketching/props.rb +25 -0
  186. data/productions/examples/sandbox/sketching/styles.rb +35 -0
  187. data/productions/examples/sandbox/sounds/bird.au +0 -0
  188. data/productions/examples/sandbox/sounds/cat.au +0 -0
  189. data/productions/examples/sandbox/sounds/cow.au +0 -0
  190. data/productions/examples/sandbox/sounds/dog.au +0 -0
  191. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  192. data/productions/examples/sandbox/sounds/duck.au +0 -0
  193. data/productions/examples/sandbox/sounds/players/clip.rb +10 -0
  194. data/productions/examples/sandbox/sounds/props.rb +10 -0
  195. data/productions/examples/sandbox/sounds/styles.rb +17 -0
  196. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +16 -0
  197. data/productions/examples/sandbox/stage_handles/players/sizer.rb +35 -0
  198. data/productions/examples/sandbox/stage_handles/props.rb +17 -0
  199. data/productions/examples/sandbox/stage_handles/styles.rb +58 -0
  200. data/productions/examples/sandbox/stages.rb +8 -0
  201. data/productions/examples/sandbox/styles.rb +35 -0
  202. data/productions/examples/sandbox/teaser/players/fader.rb +58 -0
  203. data/productions/examples/sandbox/teaser/props.rb +14 -0
  204. data/productions/examples/sandbox/teaser/styles.rb +21 -0
  205. data/productions/examples/tutorials/tutorial_1/players/sample.rb +11 -0
  206. data/productions/examples/tutorials/tutorial_1/props.rb +9 -0
  207. data/productions/examples/tutorials/tutorial_1/styles.rb +25 -0
  208. data/productions/playbills.lll +1 -0
  209. data/productions/stage_composer/init.rb +10 -0
  210. data/productions/stage_composer/inspector/players/inspector.rb +80 -0
  211. data/productions/stage_composer/inspector/players/prop_row.rb +12 -0
  212. data/productions/stage_composer/inspector/players/prop_tree.rb +33 -0
  213. data/productions/stage_composer/inspector/players/style_table.rb +12 -0
  214. data/productions/stage_composer/inspector/players/style_value.rb +16 -0
  215. data/productions/stage_composer/inspector/props.rb +19 -0
  216. data/productions/stage_composer/inspector/styles.rb +71 -0
  217. data/productions/stage_composer/lib/init.rb +5 -0
  218. data/productions/stage_composer/lib/limelight/composer/controller.rb +51 -0
  219. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +24 -0
  220. data/productions/stage_composer/production.rb +6 -0
  221. data/productions/stage_composer/stages.rb +15 -0
  222. data/productions/startup/images/logo.png +0 -0
  223. data/productions/startup/images/splash.png +0 -0
  224. data/productions/startup/production.rb +52 -0
  225. data/productions/startup/spec/default_scene/default_scene_spec.rb +16 -0
  226. data/productions/startup/spec/spec_helper.rb +8 -0
  227. data/productions/startup/stages.rb +9 -0
  228. data/productions/startup/styles.rb +15 -0
  229. data/productions/startup/welcome/players/browse_button.rb +10 -0
  230. data/productions/startup/welcome/players/download_button.rb +17 -0
  231. data/productions/startup/welcome/players/sandbox_button.rb +11 -0
  232. data/productions/startup/welcome/props.rb +23 -0
  233. data/productions/startup/welcome/styles.rb +103 -0
  234. data/spec/limelight/builtin/players/button_spec.rb +20 -0
  235. data/spec/limelight/builtin/players/check_box_spec.rb +29 -0
  236. data/spec/limelight/builtin/players/combo_box_spec.rb +29 -0
  237. data/spec/limelight/builtin/players/image_spec.rb +43 -0
  238. data/spec/limelight/builtin/players/password_box_spec.rb +27 -0
  239. data/spec/limelight/builtin/players/radio_button_spec.rb +64 -0
  240. data/spec/limelight/builtin/players/stage_mover_spec.rb +36 -0
  241. data/spec/limelight/builtin/players/stage_sizer_spec.rb +40 -0
  242. data/spec/limelight/builtin/players/text_area_spec.rb +27 -0
  243. data/spec/limelight/builtin/players/text_box_spec.rb +27 -0
  244. data/spec/limelight/builtin/utilities_production/spec_helper.rb +7 -0
  245. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +146 -0
  246. data/spec/limelight/casting_director_spec.rb +164 -0
  247. data/spec/limelight/client/playbills_spec.rb +79 -0
  248. data/spec/limelight/commands/command_spec.rb +26 -0
  249. data/spec/limelight/commands/create_command_spec.rb +108 -0
  250. data/spec/limelight/commands/freeze_command_spec.rb +143 -0
  251. data/spec/limelight/commands/help_command_spec.rb +42 -0
  252. data/spec/limelight/commands/open_command_spec.rb +52 -0
  253. data/spec/limelight/commands/pack_command_spec.rb +26 -0
  254. data/spec/limelight/commands/unpack_command_spec.rb +47 -0
  255. data/spec/limelight/data_spec.rb +36 -0
  256. data/spec/limelight/dsl/prop_builder_spec.rb +245 -0
  257. data/spec/limelight/dsl/stage_builder_spec.rb +90 -0
  258. data/spec/limelight/dsl/styles_builder_spec.rb +194 -0
  259. data/spec/limelight/file_chooser_spec.rb +64 -0
  260. data/spec/limelight/file_filter_spec.rb +29 -0
  261. data/spec/limelight/file_loader_spec.rb +28 -0
  262. data/spec/limelight/gems_spec.rb +92 -0
  263. data/spec/limelight/java_util_spec.rb +37 -0
  264. data/spec/limelight/main_spec.rb +40 -0
  265. data/spec/limelight/paint_action_spec.rb +30 -0
  266. data/spec/limelight/pen_spec.rb +62 -0
  267. data/spec/limelight/producer_spec.rb +210 -0
  268. data/spec/limelight/production_spec.rb +100 -0
  269. data/spec/limelight/prop_spec.rb +431 -0
  270. data/spec/limelight/scene_spec.rb +173 -0
  271. data/spec/limelight/stage_spec.rb +202 -0
  272. data/spec/limelight/string_spec.rb +38 -0
  273. data/spec/limelight/studio_spec.rb +157 -0
  274. data/spec/limelight/styles_spec.rb +53 -0
  275. data/spec/limelight/templates/production_templater_spec.rb +66 -0
  276. data/spec/limelight/templates/scene_templater_spec.rb +51 -0
  277. data/spec/limelight/templates/templater_logger_spec.rb +41 -0
  278. data/spec/limelight/templates/templater_spec.rb +107 -0
  279. data/spec/limelight/theater_spec.rb +72 -0
  280. data/spec/limelight/util/downloader_spec.rb +92 -0
  281. data/spec/spec_helper.rb +70 -0
  282. metadata +335 -0
@@ -0,0 +1,49 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/templates/templater'
5
+ require 'limelight/string'
6
+ require 'limelight/version'
7
+
8
+ module Limelight
9
+ module Templates
10
+
11
+ # A Templater that creates all the files and directories for a production. When used with "love_story" as
12
+ # the production_path, the following will be the result.
13
+ #
14
+ # creating directory: ./love_story
15
+ # creating file: ./love_story/production.rb
16
+ # creating file: ./love_story/stages.rb
17
+ # creating file: ./love_story/styles.rb
18
+ #
19
+ class ProductionTemplater < Templater
20
+
21
+ attr_reader :tokens
22
+
23
+ # To create a ProductionTemplater, provide a production_path and the name of the default scene.
24
+ #
25
+ def initialize(options)
26
+ production_path = options[:production_path]
27
+ default_scene_name = options[:scene_path]
28
+ super(File.dirname(production_path), Templater.source_dir)
29
+ @production_path = File.basename(production_path)
30
+ @spec_path = File.join(@production_path, options[:spec_path])
31
+ @tokens = {}
32
+ @tokens[:DEFAULT_SCENE_NAME] = default_scene_name
33
+ @tokens[:PRODUCTION_NAME] = File.basename(production_path).titleized
34
+ @tokens[:CURRENT_VERSION] = Limelight::VERSION::STRING
35
+ end
36
+
37
+ # Generates the files
38
+ #
39
+ def generate
40
+ file(File.join(@production_path, "production.rb"), "production/production.rb.template", @tokens)
41
+ file(File.join(@production_path, "stages.rb"), "production/stages.rb.template", @tokens)
42
+ file(File.join(@production_path, "styles.rb"), "production/styles.rb.template", @tokens)
43
+ file(File.join(@spec_path, "spec_helper.rb"), "production/spec/spec_helper.rb.template", @tokens)
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,47 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/templates/templater'
5
+ require 'limelight/string'
6
+
7
+ module Limelight
8
+ module Templates
9
+
10
+ # A derivative of Templater that generates all the files for a scene.
11
+ # When created with the path "midnight_romance" the following will result:
12
+ #
13
+ # creating directory: ./midnight_romance
14
+ # creating file: ./midnight_romance/props.rb
15
+ # creating file: ./midnight_romance/styles.rb
16
+ # creating directory: ./midnight_romance/players
17
+ #
18
+ class SceneTemplater < Templater
19
+
20
+ attr_reader :tokens
21
+
22
+ # The scene_path should be path to a desired scene inside a production directory.
23
+ #
24
+ def initialize(options)
25
+ @production_path = options[:production_path]
26
+ @scene_path = options[:scene_path]
27
+ @spec_path = options[:spec_path]
28
+ super(@production_path, Templater.source_dir)
29
+ @scene_name = File.basename(@scene_path)
30
+ @tokens = {}
31
+ @tokens[:SCENE_NAME] = @scene_name
32
+ @tokens[:SCENE_TITLE] = @scene_name.titleized
33
+ end
34
+
35
+ # Generates the files
36
+ #
37
+ def generate
38
+ file(File.join(@scene_path, "props.rb"), "scene/props.rb.template", @tokens)
39
+ file(File.join(@scene_path, "styles.rb"), "scene/styles.rb.template", @tokens)
40
+ directory(File.join(@scene_path, "players"))
41
+ file(File.join(@spec_path, @scene_path, "#{@scene_name}_spec.rb"), "scene_spec/scene_spec.rb.template", @tokens)
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,5 @@
1
+ # This file was generated by Limelight.
2
+ # It is automtically added to frozen gems. When Limelight loads a production, it will load all 'limelight_init.rb'
3
+ # files, like this one, in each of the frozen gems.
4
+
5
+ Limelight::Gems.install('!-GEM_NAME-!', !-PATHS-!)
@@ -0,0 +1,15 @@
1
+ # This file (init.rb) is the second file loaded (after production.rb) when a production is loaded.
2
+ # Initialization code for the production should go here.
3
+
4
+ # If your production is using external ruby source code that will be required in player modules, you may
5
+ # add the path to $: here.
6
+ #$: << File.expand_path(File.dirname(__FILE__) + "/lib")
7
+
8
+ # Acquires a reference to the production.
9
+ production = Limelight::Production["!-PRODUCTION_NAME-!"]
10
+
11
+ # Require any source code that will be used by the production.
12
+ #require 'seomthing'
13
+
14
+ # This is the ideal place to assign values to production attributes.
15
+ #production.something = MySource::Something.new
@@ -0,0 +1,49 @@
1
+ # This file (production.rb) is the first file loaded opening a production. It must define a module named 'Production'.
2
+ # The containing production will acquire all the behavior defined in this module.
3
+ # You may define serveral hooks and initialization steps here.
4
+
5
+ module Production
6
+
7
+ # # Define this method if you want the production name to be different from the default, directory name.
8
+ # def name
9
+ # return !-PRODUCTION_NAME-!
10
+ # end
11
+ #
12
+ # # Returns the minimum version of limelight required to run this production. Default: "0.0.0"
13
+ # # If the version of limelight used to open this production is less than the minimum,
14
+ # # an error will be displayed (starting with version 0.4.0).
15
+ # #
16
+ # def minimum_limelight_version
17
+ # return "!-CURRENT_VERSION-!"
18
+ # end
19
+ #
20
+ # # Hook #1. Called when the production is newly created, before any loading has been done.
21
+ # # This is a good place to require needed files and instantiate objects in the business layer.
22
+ # def production_opening
23
+ # end
24
+ #
25
+ # # Hook #2. Called after internal gems have been loaded and stages have been instantiated, yet before
26
+ # # any scenes have been opened.
27
+ # def production_loaded
28
+ # end
29
+ #
30
+ # # Hook #3. Called when the production, and all the scenes, have fully opened.
31
+ # def production_opened
32
+ # end
33
+ #
34
+ # # The system will call this methods when it wishes to close the production, perhaps when the user quits the
35
+ # # application. By default the production will always return true. You may override this behavior by re-implenting
36
+ # # the methods here.
37
+ # def allow_close?
38
+ # return true
39
+ # end
40
+ #
41
+ # # Called when the production is about to be closed.
42
+ # def production_closing
43
+ # end
44
+ #
45
+ # # Called when the production is fully closed.
46
+ # def production_closed
47
+ # end
48
+
49
+ end
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require 'limelight/specs/spec_helper'
4
+
5
+ # Set the Gem home to the frozen gems
6
+ $PRODUCTION_PATH = File.expand_path(File.dirname(__FILE__) + "/../")
7
+ Gem.use_paths(File.join($PRODUCTION_PATH , "__resources", "gems"), Gem.default_path)
8
+
9
+
10
+ Dir.glob(File.join("__resources", "gems", "gems", "**", "lib")).each do |dir|
11
+ $: << dir
12
+ end
@@ -0,0 +1,17 @@
1
+ # This file (stages.rb) is used to define the stages within your production.
2
+ #
3
+ # Below is an example statge configuration.
4
+ #
5
+ # stage "center_stage" do
6
+ # default_scene "main"
7
+ # title "Limelight Center Stage"
8
+ # location [0, 0]
9
+ # size [300, 800]
10
+ # end
11
+
12
+ stage "default" do
13
+ default_scene "!-DEFAULT_SCENE_NAME-!"
14
+ title "Limelight"
15
+ location [200, 25]
16
+ size [800, 800]
17
+ end
@@ -0,0 +1,12 @@
1
+ # This file, (styles.rb) in the root directory of the production, should define any styles that are used in multiple
2
+ # scenes. It makes use of the StyleBuilder DSL.
3
+ #
4
+ # For more information see: http://limelightwiki.8thlight.com/index.php/A_Cook%27s_Tour_of_Limelight#Styling_with_styles.rb
5
+ # For a complete listing of style attributes see: http://limelightwiki.8thlight.com/index.php/Style_Attributes
6
+
7
+ # An example style definition
8
+ #foo {
9
+ # width 100
10
+ # height 100
11
+ # background_color :blue
12
+ #}
@@ -0,0 +1,6 @@
1
+ # This file (props.rb) defines all the props that appear in a scene when loaded. It makes use of the
2
+ # PropBuilder DSL.
3
+ #
4
+ # For more information see: http://limelightwiki.8thlight.com/index.php/A_Cook%27s_Tour_of_Limelight#PropBuilder_DSL
5
+
6
+ root :text => "This is the !-SCENE_TITLE-! scene."
@@ -0,0 +1,18 @@
1
+ # This file, (styles.rb) inside a scene, should define any styles specific to the containing scene.
2
+ # It makes use of the StyleBuilder DSL.
3
+ #
4
+ # For more information see: http://limelightwiki.8thlight.com/index.php/A_Cook%27s_Tour_of_Limelight#Styling_with_styles.rb
5
+ # For a complete listing of style attributes see: http://limelightwiki.8thlight.com/index.php/Style_Attributes
6
+
7
+ !-SCENE_NAME-! {
8
+ background_color :black
9
+ horizontal_alignment :center
10
+ vertical_alignment :center
11
+ width "100%"
12
+ height "100%"
13
+ }
14
+
15
+ root {
16
+ text_color :white
17
+ font_size 18
18
+ }
@@ -0,0 +1,13 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe "!-SCENE_TITLE-!" do
4
+
5
+ uses_scene "!-SCENE_NAME-!", :hidden => true
6
+
7
+ it "should have default text" do
8
+ scene.children.size.should == 1
9
+ root = scene.children[0]
10
+ root.text.should == "This is the !-SCENE_TITLE-! scene."
11
+ end
12
+
13
+ end
@@ -0,0 +1,131 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/templates/templater_logger'
5
+
6
+ module Limelight
7
+ module Templates
8
+
9
+ # A class to create directories and file templates. An instance of Templater must be provided with
10
+ # a target_root and a source_root. The target_root designates a root directory in which all directories and
11
+ # files will be created. The source_root designated a directory where all the file template can be found.
12
+ #
13
+ # A file template is a plain text file. It may optionally contain token markers in the format !-TOKEN_NAME-!.
14
+ # When a file template is installed by the templater, all the token margers will be replaced by tokens provided
15
+ # in a hash.
16
+ #
17
+ class Templater
18
+
19
+ # Return the default source_root for Limelight related file templates.
20
+ #
21
+ # $LIMELIGHT_LIB$/limelight/templates/sources
22
+ #
23
+ def self.source_dir
24
+ return File.join(File.dirname(__FILE__), "sources")
25
+ end
26
+
27
+ # Carifies a path as relative or absolute. Essentially if makes sure a path begins with a . if it's not
28
+ # an absolute path.
29
+ #
30
+ # Templater.clarity('some/path') -> './some/path'
31
+ # Templater.clarity('/root/path') -> '/root/path'
32
+ #
33
+ def self.clarify(path)
34
+ return path if path[0..0] == '.'
35
+ return path if path == File.expand_path(path)
36
+ return File.join(".", path)
37
+ end
38
+
39
+ attr_reader :target_root, :source_root
40
+
41
+ # See TemplaterLogger
42
+ #
43
+ attr_accessor :logger
44
+
45
+ # New instances Templater require a target_root. The source_root may optionally be provided. source_root
46
+ # defaults to Templater.source_dir
47
+ #
48
+ # The logger is initializes as a TemplaterLogger
49
+ #
50
+ def initialize(target_root, source_root=Templater.source_dir)
51
+ @logger = TemplaterLogger.new
52
+ @target_root = Templater.clarify(target_root)
53
+ @source_root = source_root
54
+ end
55
+
56
+ # Creates a deirectory. If the specified directory's parent directory is missing, it will be created as will its
57
+ # parent directory, and so on.
58
+ #
59
+ # After the following call,
60
+ #
61
+ # templater.directory("dir1/dir2/dir3/dir4")
62
+ #
63
+ # The following directories will exist, inside the target_root, whether they existed prior to the call or not.
64
+ #
65
+ # dir1
66
+ # dir1/dir2
67
+ # dir1/dir2/dir3
68
+ # dir1/dir2/dir3/dir4
69
+ #
70
+ def directory(path)
71
+ full_path = File.join(@target_root, path)
72
+ establish_directory(full_path)
73
+ end
74
+
75
+ # Creates the specified file from the specified file template. The file will be created within the target_root.
76
+ # All parent diretories will be created if needed. The source paramter should be a path pointing to a
77
+ # file template in the source_root directory.
78
+ #
79
+ # Assume the the file <code>src/default.txt.template</code> exists in the source_root with the following content.
80
+ #
81
+ # !-SCORES-! score and !-YEARS-! years ago, ...
82
+ #
83
+ # When the following command is executed,
84
+ #
85
+ # templater.file('dir/foo.txt', 'src/default.txt.template', :SCORES => "Four", :YEARS => "seven")
86
+ #
87
+ # The file <code>dir/foo.txt</code> will exist in the target_root with the following content.
88
+ #
89
+ # Four score and seven years ago, ...
90
+ #
91
+ def file(target, source, tokens = {})
92
+ target_path = File.join(@target_root, target)
93
+ source_source = File.join(@source_root, source)
94
+
95
+ establish_directory(File.dirname(target_path))
96
+
97
+ if File.exists?(target_path)
98
+ @logger.file_already_exists(target_path)
99
+ else
100
+ @logger.creating_file(target_path)
101
+ content = IO.read(source_source)
102
+ content = replace_tokens(content, tokens)
103
+ File.open(target_path, 'w') { |file| file.write content }
104
+ end
105
+ end
106
+
107
+ private
108
+
109
+ def establish_directory(full_path)
110
+ return if File.exists?(full_path)
111
+ parent_path = File.dirname(full_path)
112
+ while (!File.exists?(parent_path))
113
+ establish_directory(parent_path)
114
+ end
115
+
116
+ @logger.creating_directory(full_path)
117
+ Dir.mkdir(full_path)
118
+ end
119
+
120
+ def replace_tokens(content, tokens)
121
+ return content.gsub(/!-(\w+)-!/) do |value|
122
+ token_name = value[2...-2]
123
+ token = tokens[token_name] || tokens[token_name.to_sym] || "UNKNOWN TOKEN"
124
+ token
125
+ end
126
+ end
127
+
128
+ end
129
+
130
+ end
131
+ end
@@ -0,0 +1,39 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ module Limelight
5
+ module Templates
6
+
7
+ # Templaters uses this class to log activity.
8
+ #
9
+ class TemplaterLogger
10
+
11
+ # An accessor to the output IO. Defaults to STDOUT
12
+ #
13
+ attr_accessor :output
14
+
15
+ def initialize
16
+ @output = STDOUT
17
+ end
18
+
19
+ def creating_directory(name)
20
+ @output.puts "\tcreating directory: #{name}"
21
+ end
22
+
23
+ def creating_file(name)
24
+ @output.puts "\tcreating file: #{name}"
25
+ end
26
+
27
+ def file_already_exists(name)
28
+ @output.puts "\tfile already exists: #{name}"
29
+ end
30
+
31
+ def log(message, name)
32
+ spaces = 21 - message.length - 1
33
+ @output.puts "\t#{message}:#{' '*spaces}#{name}"
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,77 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/limelight_exception'
5
+
6
+ module Limelight
7
+
8
+ # A Theater represents a group of Stages. Productions require a Theater in which to open.
9
+ #
10
+ class Theater
11
+
12
+ include UI::Api::Theater
13
+
14
+ # Returns the theater's active stage. i.e. the stage most recently used.
15
+ #
16
+ attr_reader :active_stage
17
+
18
+ def initialize
19
+ @stages = {}
20
+ end
21
+
22
+ # Returns an Array of Stages that belong to this Theater.
23
+ #
24
+ def stages
25
+ return @stages.values
26
+ end
27
+
28
+ # Returns true if the theater has at least one stage
29
+ #
30
+ def has_stages?
31
+ return stages.length > 0
32
+ end
33
+
34
+ # Returns the Stage with the spcified name, nil if none exist with the specified name.
35
+ #
36
+ def [](stage_name)
37
+ return @stages[stage_name]
38
+ end
39
+
40
+ # Adds a Stage to the Theater. Raises an exception is the name of the Stage is duplicated.
41
+ #
42
+ def add_stage(name, options = {})
43
+ raise LimelightException.new("Duplicate stage name: '#{name}'") if @stages[name]
44
+ stage = build_stage(name, options)
45
+ @stages[name] = stage
46
+ return stage
47
+ end
48
+
49
+ # Lets the Theater know which stage has the limelight (currently active).
50
+ #
51
+ def stage_activated(stage)
52
+ @active_stage = stage
53
+ end
54
+
55
+ # Removes the stage from this theater.
56
+ #
57
+ def stage_closed(stage)
58
+ @stages.delete(stage.name)
59
+ @active_stage = nil if @active_stage == stage
60
+ end
61
+
62
+ # If no Stages are added, the Theater will provide a default Stage named "Limelight".
63
+ #
64
+ def default_stage
65
+ add_stage("Limelight") if self["Limelight"].nil?
66
+ return self["Limelight"]
67
+ end
68
+
69
+ protected #############################################
70
+
71
+ def build_stage(name, options)
72
+ return Limelight::Stage.new(self, name, options)
73
+ end
74
+
75
+ end
76
+
77
+ end