limelight 0.5.1-java → 0.5.2-java
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/limelight.jar +0 -0
- data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +4 -1
- data/lib/limelight/builtin/utilities_production/production.rb +2 -2
- data/lib/limelight/dsl/styles_builder.rb +5 -0
- data/lib/limelight/java_couplings.rb +2 -2
- data/lib/limelight/main.rb +43 -46
- data/lib/limelight/producer.rb +21 -0
- data/lib/limelight/production.rb +18 -11
- data/lib/limelight/specs/test_scene_opener.rb +3 -0
- data/lib/limelight/stage.rb +62 -9
- data/lib/limelight/studio.rb +12 -143
- data/lib/limelight/styles/style.rb +288 -0
- data/lib/limelight/theater.rb +17 -2
- data/lib/limelight/version.rb +1 -1
- data/productions/examples/sandbox/stage_handles/players/sizer.rb +3 -0
- data/spec/limelight/builtin/players/combo_box_spec.rb +1 -1
- data/spec/limelight/builtin/players/radio_button_spec.rb +1 -1
- data/spec/limelight/casting_director_spec.rb +1 -1
- data/spec/limelight/commands/create_command_spec.rb +3 -3
- data/spec/limelight/commands/pack_command_spec.rb +1 -1
- data/spec/limelight/commands/unpack_command_spec.rb +1 -1
- data/spec/limelight/dsl/prop_builder_spec.rb +6 -6
- data/spec/limelight/file_chooser_spec.rb +1 -1
- data/spec/limelight/file_filter_spec.rb +2 -2
- data/spec/limelight/main_spec.rb +2 -2
- data/spec/limelight/paint_action_spec.rb +1 -1
- data/spec/limelight/pen_spec.rb +1 -1
- data/spec/limelight/producer_spec.rb +21 -8
- data/spec/limelight/production_spec.rb +4 -7
- data/spec/limelight/prop_spec.rb +2 -2
- data/spec/limelight/scene_spec.rb +1 -1
- data/spec/limelight/stage_spec.rb +32 -3
- data/spec/limelight/templates/templater_spec.rb +1 -1
- data/spec/limelight/theater_spec.rb +27 -0
- data/spec/spec_helper.rb +0 -6
- metadata +5 -4
- data/lib/limelight/styles.rb +0 -347
data/lib/limelight.jar
CHANGED
Binary file
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
require 'monitor'
|
5
5
|
|
6
|
-
module Production
|
6
|
+
module Production #:nodoc:
|
7
7
|
|
8
8
|
def production_opening
|
9
9
|
@monitor = Monitor.new
|
@@ -44,7 +44,7 @@ module Production
|
|
44
44
|
|
45
45
|
def alert(message)
|
46
46
|
@alert_monitor = @monitor.new_cond
|
47
|
-
load_alert_scene(message)
|
47
|
+
load_alert_scene(message.to_s)
|
48
48
|
@monitor.synchronize{ @alert_monitor.wait }
|
49
49
|
@alert_stage.close
|
50
50
|
return @alert_response
|
@@ -143,6 +143,11 @@ module Limelight
|
|
143
143
|
raise StyleBuilderException.new("'#{sym}' is not a valid style") if !@__style.respond_to?(setter_sym)
|
144
144
|
@__style.send(setter_sym, value.to_s)
|
145
145
|
end
|
146
|
+
|
147
|
+
# Kernel.y was added by the yaml library in JRuby 1.4. Not sure what to do about this type of problem.
|
148
|
+
def y(*args) #:nodoc:
|
149
|
+
method_missing(:y, *args)
|
150
|
+
end
|
146
151
|
end
|
147
152
|
|
148
153
|
# Exception thrown by StyleBuilder when an error is encountered.
|
@@ -1,12 +1,12 @@
|
|
1
1
|
#- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
|
2
2
|
#- Limelight and all included source files are distributed under terms of the GNU LGPL.
|
3
3
|
|
4
|
-
module Limelight
|
4
|
+
module Limelight
|
5
5
|
|
6
6
|
Main = Java::limelight.Main
|
7
7
|
ResourceLoader = Java::limelight.ResourceLoader
|
8
8
|
Context = Java::limelight.Context
|
9
|
-
Studio = Java::limelight.
|
9
|
+
Studio = Java::limelight.Studio
|
10
10
|
|
11
11
|
module Background
|
12
12
|
Animation = Java::limelight.background.Animation
|
data/lib/limelight/main.rb
CHANGED
@@ -5,31 +5,59 @@ require 'limelight/commands/command'
|
|
5
5
|
|
6
6
|
module Limelight
|
7
7
|
|
8
|
-
#
|
8
|
+
# Limelight::Main is used, when installed as a gem, to work with Limelight production. It provides
|
9
|
+
# a handful of utilities to create, bundle, and develop with Limelight.
|
9
10
|
#
|
10
|
-
#
|
11
|
+
# For example, running the following command will generate a new Limelight production for you.
|
11
12
|
#
|
12
|
-
#
|
13
|
+
# jruby -S limelight create production <production name>
|
13
14
|
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
# | - <player_name>.rb
|
19
|
-
# | - *
|
15
|
+
# Assuming you used "sandbox" as the name or your production, you'd end up with the following directory structure
|
16
|
+
# generated for you.
|
17
|
+
#
|
18
|
+
# - sandbox
|
20
19
|
# | - stages.rb
|
20
|
+
# | - styles.rb
|
21
21
|
# | - production.rb
|
22
|
+
# | - default_scene
|
23
|
+
# | - props.rb
|
24
|
+
# | - styles.rb
|
25
|
+
# | - players
|
26
|
+
# | - <player_name>.rb
|
27
|
+
# | - spec
|
28
|
+
# | - spec_helper.rb
|
29
|
+
# | - default_scene
|
30
|
+
# | - default_scene_spec.rb
|
22
31
|
#
|
23
|
-
# In
|
24
|
-
#
|
32
|
+
# In this case, you've just created a production called "Sandbox". By convention, the name of the production matches the name of the root directory.
|
33
|
+
# Notice that there are 3 files and 2 directories. Let's start by talking about the files.
|
34
|
+
#
|
35
|
+
# == stages.rb
|
36
|
+
# This file uses a DSL to configure the stages that will be used in the production.
|
37
|
+
# See Limelight::StagesBuilder
|
38
|
+
#
|
39
|
+
# == styles.rb
|
40
|
+
# This file defines production level styles. Each scene may have their own styles but styles defined here will be avaiable to all scenes.
|
41
|
+
# See Limelight::StylesBuilder
|
42
|
+
#
|
43
|
+
# == production.rb
|
44
|
+
# This file defines a module names Production where you can defined hooks and behavior for your production.
|
45
|
+
# See Limelight::Production
|
46
|
+
#
|
47
|
+
# For the most part, each directory inside the root directory is a scene. This production has one scene named "default_scene" (this is the default name).
|
48
|
+
# Each scene starts out containing 2 file and a directory. Let's look at those..
|
25
49
|
#
|
26
50
|
# == props.rb
|
27
|
-
# This file defines the
|
51
|
+
# This file defines the structure of your scene. Scenes are composed of Props. In this file you use the Prop DSL to
|
52
|
+
# specify all the components of your scene.
|
28
53
|
# See Limelight::PropBuilder
|
54
|
+
# See Limelight::Prop
|
29
55
|
#
|
30
56
|
# == styles.rb
|
31
|
-
#
|
57
|
+
# Similar to the styles.rb file located in the root directory, this file contains definitions of styles. However,
|
58
|
+
# all styles defined here are only available to the containgin scene. Styles define the look and feel of your scenes.
|
32
59
|
# See Limelight::StylesBuilder
|
60
|
+
# See Limelight::Style
|
33
61
|
#
|
34
62
|
# == players
|
35
63
|
# A directory containing all the players used in the scene. Players are modules that are included by Prop objects.
|
@@ -37,40 +65,9 @@ module Limelight
|
|
37
65
|
# Inside 'wall.rb' you would define a module named 'Wall'. All behavior defined in the Wall modules will automatically be included
|
38
66
|
# in every prop named 'wall'.
|
39
67
|
#
|
40
|
-
#
|
41
|
-
# This file uses a DSL to configure the stages that will be used in the production.
|
42
|
-
# See Limelight::StagesBuilder
|
43
|
-
#
|
44
|
-
# == production.rb
|
45
|
-
# This file uses a DSL to configure the current Production.
|
46
|
-
# See Limelight::ProductionBuilder
|
47
|
-
#
|
48
|
-
# Multiple-Scene Production Directory Structure:
|
49
|
-
#
|
50
|
-
# - sandbox
|
51
|
-
# | - stages.rb
|
52
|
-
# | - production.rb
|
53
|
-
# | - styles.rb
|
54
|
-
# | - players
|
55
|
-
# | - <player_name>.rb
|
56
|
-
# | - fader
|
57
|
-
# | - props.rb
|
58
|
-
# | - styles.rb
|
59
|
-
# | - players
|
60
|
-
# | - <player_name>.rb
|
61
|
-
# | - floater
|
62
|
-
# | - props.rb
|
63
|
-
# | - styles.rb
|
64
|
-
# | - players
|
65
|
-
# | - <player_name>.rb
|
66
|
-
#
|
67
|
-
# In a Multiple-Scene production, the production acquires that name of the root directory. In this case the production is named 'sandbox'.
|
68
|
-
# Each directory inside the root directory is a scene. This production has two scenes named 'fader' and 'floater'. Each scene is structured
|
69
|
-
# the same as in a Single-Scene production with the exception of the 'stages.rb' file. This file is specific to the production. The production
|
70
|
-
# may contain a 'styles.rb' which contains styles used by multiple scenes. If some players are used in multiple Scenes, then it is useful to
|
71
|
-
# to create a players directory in the Production root to hold the common players. Other files may exist in the directory structure and they will not
|
72
|
-
# conflict with Limelight.
|
68
|
+
# So there's a brief overview for you. Besure to check out the Limelight Docs production. You can find it by installing Limelight and starting it up.
|
73
69
|
#
|
70
|
+
# For more info on available commands:
|
74
71
|
# See Limelight::Commands
|
75
72
|
#
|
76
73
|
class Main
|
data/lib/limelight/producer.rb
CHANGED
@@ -170,6 +170,27 @@ module Limelight
|
|
170
170
|
return extendable_styles.merge(new_styles)
|
171
171
|
end
|
172
172
|
|
173
|
+
# Closes the specified production. The producer will trigger the hook, production_closing and production_closed,
|
174
|
+
# to keep the production aware of it's status. The Studio will also be informed of the closure. If no
|
175
|
+
# production remain opened, then the Limelight runtine will exit.
|
176
|
+
#
|
177
|
+
def close(production)
|
178
|
+
return if production.closed?
|
179
|
+
production.closed = true
|
180
|
+
return Thread.new do
|
181
|
+
begin
|
182
|
+
Thread.pass
|
183
|
+
production.production_closing
|
184
|
+
production.theater.close
|
185
|
+
production.production_closed
|
186
|
+
Context.instance.studio.production_closed(production)
|
187
|
+
rescue StandardError => e
|
188
|
+
puts e
|
189
|
+
puts e.backtrace
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
173
194
|
def establish_production #:nodoc:
|
174
195
|
@production.producer = self
|
175
196
|
@production.theater = @theater
|
data/lib/limelight/production.rb
CHANGED
@@ -3,8 +3,10 @@
|
|
3
3
|
|
4
4
|
require 'limelight/limelight_exception'
|
5
5
|
require 'limelight/file_loader'
|
6
|
+
require 'limelight/dsl/styles_builder'
|
6
7
|
require 'drb'
|
7
8
|
|
9
|
+
|
8
10
|
module Limelight
|
9
11
|
|
10
12
|
# The root object of Limelight Production. Every Prop in a production has access to its Production object.
|
@@ -26,6 +28,7 @@ module Limelight
|
|
26
28
|
|
27
29
|
attr_reader :name, :root
|
28
30
|
attr_accessor :producer, :theater
|
31
|
+
attr_accessor :closed #:nodoc:
|
29
32
|
|
30
33
|
|
31
34
|
# Users typically need not create Production objects.
|
@@ -77,7 +80,7 @@ module Limelight
|
|
77
80
|
def gems_directory
|
78
81
|
return @root.path_to("__resources/gems/gems")
|
79
82
|
end
|
80
|
-
|
83
|
+
|
81
84
|
# Returns the path to the productions gems root
|
82
85
|
#
|
83
86
|
def gems_root
|
@@ -88,7 +91,7 @@ module Limelight
|
|
88
91
|
#
|
89
92
|
def scene_directory(name)
|
90
93
|
return @root.root if name == :root
|
91
|
-
|
94
|
+
return @root.path_to(name)
|
92
95
|
end
|
93
96
|
|
94
97
|
# Returns the minimum version of limelight required to run this production. Default: "0.0.0"
|
@@ -137,22 +140,24 @@ module Limelight
|
|
137
140
|
def production_closed
|
138
141
|
end
|
139
142
|
|
143
|
+
# returns true if the production has been closed.
|
144
|
+
#
|
145
|
+
def closed?
|
146
|
+
return @closed
|
147
|
+
end
|
148
|
+
|
140
149
|
# Closes the production. If there are no more productions open, the Limelight runtime will shutdown.
|
150
|
+
# The production will actually delegate to it's producer and the producer will close the production down.
|
141
151
|
#
|
142
152
|
def close
|
143
|
-
|
144
|
-
self.production_closing
|
145
|
-
@theater.close
|
146
|
-
@closed = true
|
147
|
-
self.production_closed
|
148
|
-
Context.instance.studio.production_closed(self)
|
153
|
+
@producer.close(self)
|
149
154
|
end
|
150
155
|
|
151
156
|
# Called when the last stage in this production's theater is closed. If the allow_close? returns true
|
152
157
|
# this production will be closed.
|
153
158
|
#
|
154
|
-
def theater_empty!
|
155
|
-
close if allow_close?
|
159
|
+
def theater_empty!
|
160
|
+
close if allow_close? && !closed?
|
156
161
|
end
|
157
162
|
|
158
163
|
# Returned the name of the default scene. This is only used when there are not stages defined in the production.
|
@@ -180,7 +185,9 @@ module Limelight
|
|
180
185
|
alias :setName :name= #:nodoc:
|
181
186
|
alias :allowClose :allow_close? #:nodoc:
|
182
187
|
|
183
|
-
def callMethod(name,
|
188
|
+
def callMethod(name, java_obj_array) #:nodoc:
|
189
|
+
args = []
|
190
|
+
java_obj_array.length.times { |i| args << java_obj_array[i] }
|
184
191
|
send(name.to_sym, *args)
|
185
192
|
end
|
186
193
|
|
data/lib/limelight/stage.rb
CHANGED
@@ -199,15 +199,6 @@ module Limelight
|
|
199
199
|
#
|
200
200
|
def close
|
201
201
|
@frame.close
|
202
|
-
closed
|
203
|
-
end
|
204
|
-
|
205
|
-
# Invoked when the stage has been closed. Users need not call it.
|
206
|
-
#
|
207
|
-
def closed
|
208
|
-
@current_scene.visible = false if @current_scene
|
209
|
-
@current_scene = nil
|
210
|
-
@theater.stage_closed(self)
|
211
202
|
end
|
212
203
|
|
213
204
|
# Loads a scene on the Stage. If the Stage is currently hosting a Scene, the original Scene will be removed and
|
@@ -261,6 +252,68 @@ module Limelight
|
|
261
252
|
@current_scene = scene
|
262
253
|
end
|
263
254
|
|
255
|
+
# returns true if the stage has been closed. Closed stages may not be reopened.
|
256
|
+
#
|
257
|
+
def closed?
|
258
|
+
return @frame.closed?
|
259
|
+
end
|
260
|
+
|
261
|
+
# Invoked when the stage is being closed.
|
262
|
+
# System hook that should NOT be called by you.
|
263
|
+
#
|
264
|
+
def closing(e)
|
265
|
+
end
|
266
|
+
|
267
|
+
# Invoked when the stage has been closed.
|
268
|
+
# System hook that should NOT be called by you.
|
269
|
+
#
|
270
|
+
def closed(e)
|
271
|
+
@current_scene.visible = false if @current_scene
|
272
|
+
@current_scene = nil
|
273
|
+
@theater.stage_closed(self)
|
274
|
+
end
|
275
|
+
|
276
|
+
# Invoked when the stage has gained focus on the desktop. Only 1 stage my have focus at a time.
|
277
|
+
# System hook that should NOT be called by you.
|
278
|
+
#
|
279
|
+
def focus_gained(e)
|
280
|
+
@theater.stage_activated(self)
|
281
|
+
end
|
282
|
+
|
283
|
+
# Invoked when the stage has lost focus on the desktop. Only 1 stage my have focus at a time.
|
284
|
+
# System hook that should NOT be called by you.
|
285
|
+
#
|
286
|
+
def focus_lost(e)
|
287
|
+
end
|
288
|
+
|
289
|
+
# Invoked when the stage has been iconified. This occurs when the stage is no longer visible on the desktop
|
290
|
+
# and an icon for the stage has been added to the OS's taskbar or dock.
|
291
|
+
# System hook that should NOT be called by you.
|
292
|
+
#
|
293
|
+
def iconified(e)
|
294
|
+
end
|
295
|
+
|
296
|
+
# Invoked when the stage has been deiconified. This occurs when the icon for the stage has been removed from the
|
297
|
+
# taskbar or dock, and the stage is again visible on the desktop.
|
298
|
+
# System hook that should NOT be called by you.
|
299
|
+
#
|
300
|
+
def deiconified(e)
|
301
|
+
end
|
302
|
+
|
303
|
+
# Invoked when the stage has become the active stage on the desktop. Only 1 stage my be active at a time.
|
304
|
+
# System hook that should NOT be called by you.
|
305
|
+
#
|
306
|
+
def activated(e)
|
307
|
+
@theater.stage_activated(self)
|
308
|
+
end
|
309
|
+
|
310
|
+
# Invoked when the stage has lost status as the active stage. Only 1 stage my have focus at a time.
|
311
|
+
# System hook that should NOT be called by you.
|
312
|
+
#
|
313
|
+
def deactivated(e)
|
314
|
+
@theater.stage_deactivated(self)
|
315
|
+
end
|
316
|
+
|
264
317
|
protected #############################################
|
265
318
|
|
266
319
|
def new_frame
|
data/lib/limelight/studio.rb
CHANGED
@@ -1,185 +1,54 @@
|
|
1
1
|
#- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
|
2
2
|
#- Limelight and all included source files are distributed under terms of the GNU LGPL.
|
3
|
-
|
4
|
-
require 'limelight/producer'
|
3
|
+
raise "studio.rb is present for solely to document it's Java counterpart limelight.Studio. This file should NOT be loaded in the Ruby runtime."
|
5
4
|
|
6
5
|
module Limelight
|
7
6
|
|
8
7
|
# A Studio creates Productions. There is only one instance of Studio per Limelight runtime. All open productions
|
9
|
-
# are opened by the studio.
|
8
|
+
# are opened and tracked by the studio.
|
10
9
|
#
|
11
10
|
class Studio
|
12
11
|
|
13
|
-
class << self
|
14
|
-
|
15
|
-
def install #:nodoc:
|
16
|
-
Context.instance.studio = instance
|
17
|
-
return instance
|
18
|
-
end
|
19
|
-
|
20
|
-
def instance #:nodoc:
|
21
|
-
@studio = self.new if @studio.nil?
|
22
|
-
return @studio
|
23
|
-
end
|
24
|
-
|
25
|
-
def reset #:nodoc:
|
26
|
-
@studio = nil
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
def index(production) #:nodoc:
|
32
|
-
@index = [] if @index.nil?
|
33
|
-
if name_taken?(production.name)
|
34
|
-
assign_unique_name(production)
|
35
|
-
elsif production.name.nil?
|
36
|
-
assign_name_to(production)
|
37
|
-
else
|
38
|
-
error_if_duplicate_name(production.name)
|
39
|
-
end
|
40
|
-
@index << production
|
41
|
-
end
|
42
|
-
|
43
|
-
# Returns the production with the specified name that was previously opened but the Studio.
|
44
|
-
#
|
45
|
-
def [](name)
|
46
|
-
return nil if @index.nil?
|
47
|
-
return @index.find { |production| production.name == name }
|
48
|
-
end
|
49
|
-
|
50
|
-
def name_taken?(name) #:nodoc:
|
51
|
-
return self[name] != nil
|
52
|
-
end
|
53
|
-
|
54
|
-
def error_if_duplicate_name(name) #:nodoc:
|
55
|
-
raise Limelight::LimelightException.new("Production name '#{name}' is already taken") if name_taken?(name)
|
56
|
-
end
|
57
|
-
|
58
12
|
# Opens the production at the specified path.
|
59
13
|
#
|
60
14
|
def open(production_path)
|
61
|
-
begin
|
62
|
-
src = <<END
|
63
|
-
#begin
|
64
|
-
puts "$:: \#{$:.join(", ")}"
|
65
|
-
puts "__FILE__: \#{__FILE__}"
|
66
|
-
require 'limelight/limelight_init'
|
67
|
-
require 'limelight/producer'
|
68
|
-
producer = Limelight::Producer.new("#{production_path}")
|
69
|
-
production = producer.production
|
70
|
-
Java::java.lang.Thread.currentThread.handle = production
|
71
|
-
producer.open
|
72
|
-
#rescue Exception => e
|
73
|
-
# raise e
|
74
|
-
#end
|
75
|
-
END
|
76
|
-
production = Context.instance().runtimeFactory.spawn(src)
|
77
|
-
index(production)
|
78
|
-
return production
|
79
|
-
rescue StandardError => e
|
80
|
-
alert_and_shutdown(e)
|
81
|
-
end
|
82
15
|
end
|
83
16
|
|
84
|
-
#
|
85
|
-
#
|
86
|
-
#
|
87
|
-
|
88
|
-
|
89
|
-
# producer.open
|
90
|
-
# return production
|
91
|
-
# rescue StandardError => e
|
92
|
-
# alert_and_shutdown(e)
|
93
|
-
# end
|
94
|
-
# end
|
17
|
+
# Returns the production with the specified name. If the studio never opened a production by that name, nil
|
18
|
+
# will be returned.
|
19
|
+
#
|
20
|
+
def get(name)
|
21
|
+
end
|
95
22
|
|
96
23
|
# Returns true if all of the open productions allow closing.
|
97
24
|
#
|
98
25
|
def should_allow_shutdown
|
99
|
-
return true if @index.nil?
|
100
|
-
return @index.all? { |production| production.allow_close? }
|
101
26
|
end
|
102
27
|
|
103
28
|
# If allowed (should_allow_shutdown), this will close all open productions and shutdown the limelight runtime.
|
104
29
|
#
|
105
30
|
def shutdown
|
106
|
-
return if @is_shutdown || @is_shutting_down
|
107
|
-
return unless should_allow_shutdown
|
108
|
-
@is_shutting_down = true
|
109
|
-
@index.each { |production| production.close } if @index
|
110
|
-
@utilities_production.close if @utilities_production
|
111
|
-
@is_shutdown = true
|
112
|
-
Thread.new { Context.instance().shutdown }
|
113
31
|
end
|
114
32
|
|
115
|
-
# Called when a production is closed to notify the studio of the event.
|
33
|
+
# Called when a production is closed to notify the studio of the event. Developers should not need to call this method.
|
116
34
|
#
|
117
35
|
def production_closed(production)
|
118
|
-
puts "Studio.production_closed @index: #{@index}"
|
119
|
-
if @index
|
120
|
-
@index.delete(production)
|
121
|
-
puts "closing production: #{production}"
|
122
|
-
production.audit
|
123
|
-
Context.instance().runtimeFactory.terminate(production)
|
124
|
-
puts "index.inspect: #{@index.inspect}"
|
125
|
-
end
|
126
|
-
shutdown if @index && @index.empty?
|
127
36
|
end
|
128
37
|
|
129
|
-
# Returns
|
38
|
+
# Returns a list of all the productions
|
130
39
|
#
|
131
40
|
def productions
|
132
|
-
return @index.nil? ? [] : @index.dup
|
133
|
-
end
|
134
|
-
|
135
|
-
# Publish the Studio, using DRb, on the specified port.
|
136
|
-
#
|
137
|
-
def publish_on_drb(port)
|
138
|
-
@drb_server = DRb.start_service("druby://0.0.0.0:#{port}", self)
|
139
41
|
end
|
140
42
|
|
141
43
|
# Returns the utilities production; a production used by limelight.
|
142
44
|
#
|
143
45
|
def utilities_production
|
144
|
-
if @utilities_production == nil
|
145
|
-
producer = Producer.new(File.join($LIMELIGHT_LIB, "limelight", "builtin", "utilities_production"))
|
146
|
-
@utilities_production = producer.production
|
147
|
-
producer.open
|
148
|
-
end
|
149
|
-
return @utilities_production
|
150
46
|
end
|
151
47
|
|
152
|
-
|
153
|
-
|
154
|
-
def
|
155
|
-
count = 2
|
156
|
-
name = production.name
|
157
|
-
while name_taken?(name)
|
158
|
-
name = "#{production.name}_#{count}"
|
159
|
-
count += 1
|
160
|
-
end
|
161
|
-
production.name = name
|
162
|
-
end
|
163
|
-
|
164
|
-
def assign_name_to(production) #:nodoc:
|
165
|
-
count = @index.length + 1
|
166
|
-
while name_taken?(count.to_s)
|
167
|
-
count += 1
|
168
|
-
end
|
169
|
-
production.name = count.to_s
|
170
|
-
end
|
171
|
-
|
172
|
-
def alert_and_shutdown(e)
|
173
|
-
begin
|
174
|
-
message = "#{e}\n#{e.backtrace.join("\n")}"
|
175
|
-
utilities_production.alert(message)
|
176
|
-
shutdown if @index.nil? || @index.empty?
|
177
|
-
rescue Exception => e
|
178
|
-
puts e
|
179
|
-
puts e.backtrace
|
180
|
-
end
|
48
|
+
# Returns true if the Studio has been shutdown. ie. The procees is exiting.
|
49
|
+
#
|
50
|
+
def shutdown?
|
181
51
|
end
|
182
|
-
|
183
52
|
end
|
184
53
|
|
185
54
|
end
|