limelight 0.2.0-java → 0.2.1-java
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/limelight +2 -3
- data/lib/limelight.jar +0 -0
- data/lib/limelight/animation.rb +32 -12
- data/lib/limelight/build_exception.rb +3 -0
- data/lib/limelight/builtin/players/button.rb +17 -2
- data/lib/limelight/builtin/players/check_box.rb +21 -2
- data/lib/limelight/builtin/players/combo_box.rb +31 -3
- data/lib/limelight/builtin/players/combo_box_popup_list.rb +1 -1
- data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +1 -1
- data/lib/limelight/builtin/players/curtains.rb +1 -1
- data/lib/limelight/builtin/players/radio_button.rb +27 -3
- data/lib/limelight/builtin/players/text_area.rb +11 -2
- data/lib/limelight/builtin/players/text_box.rb +11 -2
- data/lib/limelight/button_group_cache.rb +2 -2
- data/lib/limelight/casting_director.rb +6 -1
- data/lib/limelight/commands.rb +10 -24
- data/lib/limelight/file_chooser.rb +16 -3
- data/lib/limelight/file_filter.rb +10 -3
- data/lib/limelight/java_couplings.rb +11 -10
- data/lib/limelight/java_util.rb +36 -3
- data/lib/limelight/limelight_exception.rb +3 -1
- data/lib/limelight/loaders/file_scene_loader.rb +1 -1
- data/lib/limelight/main.rb +108 -0
- data/lib/limelight/menu_bar.rb +31 -12
- data/lib/limelight/paint_action.rb +4 -2
- data/lib/limelight/pen.rb +39 -9
- data/lib/limelight/producer.rb +35 -7
- data/lib/limelight/production.rb +18 -9
- data/lib/limelight/production_builder.rb +22 -5
- data/lib/limelight/prop.rb +127 -45
- data/lib/limelight/prop_builder.rb +70 -11
- data/lib/limelight/scene.rb +25 -21
- data/lib/limelight/stage.rb +68 -18
- data/lib/limelight/stage_builder.rb +68 -27
- data/lib/limelight/styles.rb +327 -30
- data/lib/limelight/styles_builder.rb +91 -21
- data/lib/limelight/theater.rb +23 -11
- data/lib/limelight/util.rb +28 -6
- data/lib/limelight/version.rb +1 -1
- data/productions/startup/players/browse_button.rb +1 -1
- data/spec/builtin/players/check_box_spec.rb +1 -1
- data/spec/builtin/players/radio_button_spec.rb +2 -2
- data/spec/builtin/players/text_area_spec.rb +1 -1
- data/spec/builtin/players/text_box_spec.rb +1 -1
- data/spec/commands_spec.rb +4 -3
- data/spec/prop_builder_spec.rb +40 -29
- data/spec/prop_spec.rb +5 -1
- data/spec/stage_spec.rb +15 -15
- data/spec/styles_spec.rb +36 -0
- data/spec/theater_spec.rb +8 -8
- metadata +6 -3
data/bin/limelight
CHANGED
data/lib/limelight.jar
CHANGED
Binary file
|
data/lib/limelight/animation.rb
CHANGED
@@ -1,20 +1,40 @@
|
|
1
1
|
#- Copyright 2008 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
|
-
|
4
|
+
module Limelight
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
# An object to manage a seqeunce of changes, assuably to a prop. The Animation object is constructed with options
|
7
|
+
# and a block. Once the Animation is started, the block is invoked repeatedly until the Animation is stopped.
|
8
|
+
#
|
9
|
+
# Although, this object does not update the screen, it provides a means to perform sequential updates in evenly
|
10
|
+
# spaced time frames.
|
11
|
+
#
|
12
|
+
class Animation < Limelight::AnimationTask
|
13
|
+
|
14
|
+
# A Prop and block are required to construct an Animation. Options may include :name (string), :updates_per_second
|
15
|
+
# (int defaults to 60)
|
16
|
+
#
|
17
|
+
# animation = Animation.new(prop, Proc.new { "do something"}, :updates_per_second => 20)
|
18
|
+
# animation.start
|
19
|
+
# # time passes
|
20
|
+
# animation.stop
|
21
|
+
#
|
22
|
+
def initialize(prop, block, options={})
|
23
|
+
@block = block
|
24
|
+
name = options[:name] || "#{prop.to_s} animation"
|
25
|
+
updates_per_second = options[:updates_per_second] || 60
|
26
|
+
super(name, updates_per_second, prop.panel)
|
27
|
+
end
|
12
28
|
|
13
|
-
|
14
|
-
|
15
|
-
|
29
|
+
def doPerform #:nodoc:
|
30
|
+
@block.call
|
31
|
+
end
|
16
32
|
|
17
|
-
|
18
|
-
|
33
|
+
# Lets you know if the animation is currently running or not.
|
34
|
+
#
|
35
|
+
def running?
|
36
|
+
return is_running
|
37
|
+
end
|
19
38
|
end
|
39
|
+
|
20
40
|
end
|
@@ -2,6 +2,9 @@
|
|
2
2
|
#- Limelight and all included source files are distributed under terms of the GNU LGPL.
|
3
3
|
|
4
4
|
module Limelight
|
5
|
+
|
6
|
+
# An Exception used by many of the DSL Builders. Allows nice errors messages, with line numbers, to be printed.
|
7
|
+
#
|
5
8
|
class BuildException < Exception
|
6
9
|
|
7
10
|
attr_reader :filename, :line_number
|
@@ -5,17 +5,32 @@ module Limelight
|
|
5
5
|
module Builtin
|
6
6
|
module Players
|
7
7
|
|
8
|
+
# A Builtin Player that adds the look and behavior of a native button. It may be applied in the PropBuilder DSL
|
9
|
+
# like so:
|
10
|
+
#
|
11
|
+
# my_button :players => "button"
|
12
|
+
#
|
13
|
+
# Props including this Player should implement the button_pressed hook.
|
14
|
+
#
|
15
|
+
# def button_pressed(e)
|
16
|
+
# # do something
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# Props including this Player may implement any of the key and focus event hooks:
|
20
|
+
#
|
21
|
+
# key_pressed, key_typed, key_released, focus_gained, focus_lost
|
22
|
+
#
|
8
23
|
module Button
|
9
24
|
class << self
|
10
25
|
|
11
|
-
def extended(prop)
|
26
|
+
def extended(prop) #:nodoc:
|
12
27
|
button = Limelight::UI::Model::Inputs::ButtonPanel.new
|
13
28
|
prop.panel.add(button)
|
14
29
|
prop.button = button.button
|
15
30
|
end
|
16
31
|
end
|
17
32
|
|
18
|
-
attr_accessor :button
|
33
|
+
attr_accessor :button #:nodoc:
|
19
34
|
|
20
35
|
end
|
21
36
|
|
@@ -5,21 +5,40 @@ module Limelight
|
|
5
5
|
module Builtin
|
6
6
|
module Players
|
7
7
|
|
8
|
+
# A Builtin Player that adds the look and behavior of a native check box. It may be applied in the PropBuilder DSL
|
9
|
+
# like so:
|
10
|
+
#
|
11
|
+
# my_check_box :players => "check_box"
|
12
|
+
#
|
13
|
+
# Props including this Player may implement the button_pressed hook.
|
14
|
+
#
|
15
|
+
# def button_pressed(e)
|
16
|
+
# # do something
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# Props including this Player may implement any of the key and focus event hooks:
|
20
|
+
#
|
21
|
+
# key_pressed, key_typed, key_released, focus_gained, focus_lost
|
22
|
+
#
|
8
23
|
module CheckBox
|
9
24
|
class << self
|
10
|
-
def extended(prop)
|
25
|
+
def extended(prop) #:nodoc:
|
11
26
|
check_box = Limelight::UI::Model::Inputs::CheckBoxPanel.new
|
12
27
|
prop.panel.add(check_box)
|
13
28
|
prop.check_box = check_box.check_box
|
14
29
|
end
|
15
30
|
end
|
16
31
|
|
17
|
-
attr_accessor :check_box
|
32
|
+
attr_accessor :check_box #:nodoc:
|
18
33
|
|
34
|
+
# Will place or remove a check mark in the check box.
|
35
|
+
#
|
19
36
|
def checked=(value)
|
20
37
|
check_box.selected = value
|
21
38
|
end
|
22
39
|
|
40
|
+
# Returns true if the check box is checked.
|
41
|
+
#
|
23
42
|
def checked
|
24
43
|
return check_box.selected?
|
25
44
|
end
|
@@ -5,17 +5,41 @@ module Limelight
|
|
5
5
|
module Builtin
|
6
6
|
module Players
|
7
7
|
|
8
|
+
# A Builtin Player that adds the look and behavior of a native combo box. It may be applied in the PropBuilder DSL
|
9
|
+
# like so:
|
10
|
+
#
|
11
|
+
# my_button :players => "combo_box"
|
12
|
+
#
|
13
|
+
# Props including this Player must not override the mouse_pressed event.
|
14
|
+
#
|
15
|
+
# Props including this Player may implement an additional hook:
|
16
|
+
#
|
17
|
+
# def value_changed(e)
|
18
|
+
# # do something
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# Props including this Player may implement any of the key and focus event hooks:
|
22
|
+
#
|
23
|
+
# key_pressed, key_typed, key_released, focus_gained, focus_lost
|
24
|
+
#
|
8
25
|
module ComboBox
|
26
|
+
|
9
27
|
class << self
|
10
|
-
def extended(prop)
|
28
|
+
def extended(prop) #:nodoc:
|
11
29
|
combo_box = Limelight::UI::Model::Inputs::ComboBoxPanel.new
|
12
30
|
prop.panel.add(combo_box)
|
13
31
|
prop.combo_box = combo_box.combo_box
|
14
32
|
end
|
15
33
|
end
|
16
34
|
|
17
|
-
attr_accessor :combo_box
|
35
|
+
attr_accessor :combo_box #:nodoc:
|
18
36
|
|
37
|
+
# Sets the choices listed in the combo_box. The value parameter should an Array or a String that
|
38
|
+
# can be evalulated into an Array. All choices in a combo_box are strings.
|
39
|
+
#
|
40
|
+
# combo_box.choices = ["one", "two", "three"]
|
41
|
+
# combo_box.choices = "['one', 'two', 'three']"
|
42
|
+
#
|
19
43
|
def choices=(value)
|
20
44
|
value = eval(value) if value.is_a? String
|
21
45
|
raise "Invalid choices type: #{value.class}. Choices have to be an array." if !value.is_a?(Array)
|
@@ -24,15 +48,19 @@ module Limelight
|
|
24
48
|
value.each { |choice| combo_box.add_item(choice) }
|
25
49
|
end
|
26
50
|
|
51
|
+
# Sets the value of the combo box. The value provided should be one choices in the combo box.
|
52
|
+
#
|
27
53
|
def value=(text)
|
28
54
|
self.text = text
|
29
55
|
end
|
30
56
|
|
57
|
+
# Returns the value of the currently selected choice.
|
58
|
+
#
|
31
59
|
def value
|
32
60
|
return self.text
|
33
61
|
end
|
34
62
|
|
35
|
-
def mouse_pressed(e)
|
63
|
+
def mouse_pressed(e) #:nodoc:
|
36
64
|
curtains = Limelight::Prop.new(:name => "limelight_builtin_players_curtains", :players => "curtains")
|
37
65
|
|
38
66
|
popup_list = Limelight::Prop.new(:name => "limelight_builtin_players_combo_box_popup_list", :players => "combo_box_popup_list", :curtains => curtains)
|
@@ -5,28 +5,52 @@ module Limelight
|
|
5
5
|
module Builtin
|
6
6
|
module Players
|
7
7
|
|
8
|
+
# A Builtin Player that adds the look and behavior of a native radio button. It may be applied in the PropBuilder DSL
|
9
|
+
# like so:
|
10
|
+
#
|
11
|
+
# my_radio_button :players => "radio_button", :id => "radio1", :group => "my_radio_button_group"
|
12
|
+
#
|
13
|
+
# When including this Player, it's important to specify a group and id. All radio buttons in the same group will
|
14
|
+
# be mutually exclusive. The value of a radio button group will be the id of the selected radio button.
|
15
|
+
#
|
16
|
+
# Props including this Player may implement the button_pressed hook.
|
17
|
+
#
|
18
|
+
# def button_pressed(e)
|
19
|
+
# # do something
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# Props including this Player may implement any of the key and focus event hooks:
|
23
|
+
#
|
24
|
+
# key_pressed, key_typed, key_released, focus_gained, focus_lost
|
25
|
+
#
|
8
26
|
module RadioButton
|
9
27
|
class << self
|
10
|
-
def extended(prop)
|
28
|
+
def extended(prop) #:nodoc:
|
11
29
|
radio_button = Limelight::UI::Model::Inputs::RadioButtonPanel.new
|
12
30
|
prop.panel.add(radio_button)
|
13
31
|
prop.radio_button = radio_button.radio_button
|
14
32
|
end
|
15
33
|
end
|
16
34
|
|
17
|
-
attr_accessor :radio_button
|
18
|
-
attr_reader :button_group
|
35
|
+
attr_accessor :radio_button #:nodoc:
|
36
|
+
attr_reader :button_group #:nodoc:
|
19
37
|
|
38
|
+
# Sets the radio button group to which this radio button belongs.
|
39
|
+
#
|
20
40
|
def group=(group_name)
|
21
41
|
@button_group = scene.button_groups[group_name]
|
22
42
|
@button_group.add(@radio_button)
|
23
43
|
end
|
24
44
|
|
45
|
+
# Checks or unchecks this radio button.
|
46
|
+
#
|
25
47
|
def checked=(value)
|
26
48
|
@radio_button.selected = value
|
27
49
|
end
|
28
50
|
alias :selected= :checked=
|
29
51
|
|
52
|
+
# Returns true is this radio is button is checked.
|
53
|
+
#
|
30
54
|
def checked
|
31
55
|
return @radio_button.is_selected
|
32
56
|
end
|
@@ -5,10 +5,19 @@ module Limelight
|
|
5
5
|
module Builtin
|
6
6
|
module Players
|
7
7
|
|
8
|
+
# A Builtin Player that adds the look and behavior of a native text area. It may be applied in the PropBuilder DSL
|
9
|
+
# like so:
|
10
|
+
#
|
11
|
+
# my_text_area :players => "text_area"
|
12
|
+
#
|
13
|
+
# Props including this Player may implement any of the key and focus event hooks:
|
14
|
+
#
|
15
|
+
# key_pressed, key_typed, key_released, focus_gained, focus_lost
|
16
|
+
#
|
8
17
|
module TextArea
|
9
18
|
class << self
|
10
19
|
|
11
|
-
def extended(prop)
|
20
|
+
def extended(prop) #:nodoc:
|
12
21
|
text_area = Limelight::UI::Model::Inputs::TextAreaPanel.new
|
13
22
|
prop.panel.add(text_area)
|
14
23
|
prop.text_area = text_area.text_area
|
@@ -16,7 +25,7 @@ module Limelight
|
|
16
25
|
|
17
26
|
end
|
18
27
|
|
19
|
-
attr_accessor :text_area
|
28
|
+
attr_accessor :text_area #:nodoc:
|
20
29
|
|
21
30
|
end
|
22
31
|
|
@@ -5,10 +5,19 @@ module Limelight
|
|
5
5
|
module Builtin
|
6
6
|
module Players
|
7
7
|
|
8
|
+
# A Builtin Player that adds the look and behavior of a native text box. It may be applied in the PropBuilder DSL
|
9
|
+
# like so:
|
10
|
+
#
|
11
|
+
# my_text_box :players => "text_box"
|
12
|
+
#
|
13
|
+
# Props including this Player may implement any of the key and focus event hooks:
|
14
|
+
#
|
15
|
+
# key_pressed, key_typed, key_released, focus_gained, focus_lost
|
16
|
+
#
|
8
17
|
module TextBox
|
9
18
|
class << self
|
10
19
|
|
11
|
-
def extended(prop)
|
20
|
+
def extended(prop) #:nodoc:
|
12
21
|
text_box = Limelight::UI::Model::Inputs::TextBoxPanel.new
|
13
22
|
prop.panel.add(text_box)
|
14
23
|
prop.text_box = text_box.text_box
|
@@ -16,7 +25,7 @@ module Limelight
|
|
16
25
|
|
17
26
|
end
|
18
27
|
|
19
|
-
attr_accessor :text_box
|
28
|
+
attr_accessor :text_box #:nodoc:
|
20
29
|
|
21
30
|
end
|
22
31
|
|
@@ -2,8 +2,8 @@
|
|
2
2
|
#- Limelight and all included source files are distributed under terms of the GNU LGPL.
|
3
3
|
|
4
4
|
module Limelight
|
5
|
-
ButtonGroupCache = UI::ButtonGroupCache
|
6
|
-
class ButtonGroupCache
|
5
|
+
ButtonGroupCache = UI::ButtonGroupCache #:nodoc:
|
6
|
+
class ButtonGroupCache #:nodoc:
|
7
7
|
def [](key)
|
8
8
|
return self.get(key)
|
9
9
|
end
|
@@ -4,7 +4,12 @@
|
|
4
4
|
require 'limelight/builtin/players'
|
5
5
|
|
6
6
|
module Limelight
|
7
|
-
|
7
|
+
|
8
|
+
# The CastingDirector is responsible for finding Players for Props within a Production.
|
9
|
+
# Each Producer has an instance of a CastingDirector
|
10
|
+
#
|
11
|
+
# Users of Limelight need not be concerned with this class.
|
12
|
+
#
|
8
13
|
class CastingDirector
|
9
14
|
|
10
15
|
def initialize(loader)
|
data/lib/limelight/commands.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
#- Copyright 2008 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
|
-
require 'optparse'
|
5
|
-
|
6
4
|
module Limelight
|
7
5
|
|
8
6
|
DEFAULT_PRODUCTION = File.expand_path(File.dirname(__FILE__) + "/../../productions/startup")
|
9
7
|
|
8
|
+
# Commands used in the Main method.
|
9
|
+
#
|
10
10
|
module Commands
|
11
11
|
|
12
|
+
# Opens a Production
|
13
|
+
#
|
14
|
+
# jruby -S limelight open <production_name>
|
15
|
+
#
|
12
16
|
class OpenProduction
|
13
17
|
def self.description
|
14
18
|
return "Open a limelight production or scene."
|
@@ -22,6 +26,10 @@ module Limelight
|
|
22
26
|
end
|
23
27
|
end
|
24
28
|
|
29
|
+
# Compresses the specified Production into a single .llp file.
|
30
|
+
#
|
31
|
+
# jruby -S limelight pack <production_name>
|
32
|
+
#
|
25
33
|
class PackProduction
|
26
34
|
def self.description
|
27
35
|
return "Pack the designated limelight production into a .llp file."
|
@@ -38,28 +46,6 @@ module Limelight
|
|
38
46
|
"pack" => PackProduction
|
39
47
|
}
|
40
48
|
|
41
|
-
class << self
|
42
|
-
def run(args)
|
43
|
-
command_name = args.shift
|
44
|
-
command = COMMANDS[command_name]
|
45
|
-
if command
|
46
|
-
command.new.run(args)
|
47
|
-
else
|
48
|
-
usage
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def usage
|
53
|
-
puts "Usage: limelight <command> [options] [params]"
|
54
|
-
puts "commands:"
|
55
|
-
COMMANDS.keys.sort.each do |key|
|
56
|
-
command = COMMANDS[key]
|
57
|
-
puts "\t#{key}\t\t#{command.description}"
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
|
63
49
|
end
|
64
50
|
|
65
51
|
|