limelight 0.2.0-java → 0.2.1-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.
- 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/lib/limelight/producer.rb
CHANGED
@@ -14,8 +14,15 @@ require 'limelight/production'
|
|
14
14
|
|
15
15
|
module Limelight
|
16
16
|
|
17
|
+
# A Producer has the hefty responsibility of producing Productions. Given a directory, it will load the neccessary
|
18
|
+
# files and create all the neccessary objects to bring a Production to life.
|
19
|
+
#
|
20
|
+
# For directory structures, see Limelight::Main
|
21
|
+
#
|
17
22
|
class Producer
|
18
23
|
|
24
|
+
# Creates a new Producer and has it open a Production by specified name.
|
25
|
+
#
|
19
26
|
def self.open(production_name)
|
20
27
|
producer = new(production_name)
|
21
28
|
producer.open
|
@@ -23,7 +30,10 @@ module Limelight
|
|
23
30
|
|
24
31
|
attr_reader :loader, :theater, :production
|
25
32
|
attr_writer :builtin_styles
|
26
|
-
|
33
|
+
|
34
|
+
# A Production name, or root directory, must be provided. If not Theater is provided, one will be created.
|
35
|
+
# You may also provide an existing Production for which this Producer will interact.
|
36
|
+
#
|
27
37
|
def initialize(root_path, theater=nil, production=nil)
|
28
38
|
if(root_path[-4..-1] == ".llp")
|
29
39
|
root_path = unpack_production(root_path)
|
@@ -32,12 +42,17 @@ module Limelight
|
|
32
42
|
@theater = theater.nil? ? Theater.new : theater
|
33
43
|
@production = production
|
34
44
|
end
|
35
|
-
|
45
|
+
|
46
|
+
# Returns the CastingDirector for this Production.
|
47
|
+
#
|
36
48
|
def casting_director
|
37
49
|
@casting_director = CastingDirector.new(loader) if not @casting_director
|
38
50
|
return @casting_director
|
39
51
|
end
|
40
|
-
|
52
|
+
|
53
|
+
# Opens the Production specified during construction. If the file 'init.rb' exists in the root directory of the
|
54
|
+
# Production, it will be loaded before anything else.
|
55
|
+
#
|
41
56
|
def open()
|
42
57
|
establish_production
|
43
58
|
Kernel.load(@loader.path_to("init.rb")) if @loader.exists?("init.rb")
|
@@ -49,6 +64,8 @@ module Limelight
|
|
49
64
|
@casting_director = nil
|
50
65
|
end
|
51
66
|
|
67
|
+
# Opens the specified Scene onto the Spcified Stage.
|
68
|
+
#
|
52
69
|
def open_scene(path, stage)
|
53
70
|
styles = load_styles(path)
|
54
71
|
merge_with_root_styles(styles)
|
@@ -57,7 +74,9 @@ module Limelight
|
|
57
74
|
|
58
75
|
stage.open(scene)
|
59
76
|
end
|
60
|
-
|
77
|
+
|
78
|
+
# Loads the 'stages.rb' file and configures all the Stages in the Production.
|
79
|
+
#
|
61
80
|
def load_stages
|
62
81
|
content = @loader.load("stages.rb")
|
63
82
|
stages = Limelight.build_stages(@theater) do
|
@@ -69,7 +88,9 @@ module Limelight
|
|
69
88
|
end
|
70
89
|
return stages
|
71
90
|
end
|
72
|
-
|
91
|
+
|
92
|
+
# Loads of the 'props.rb' file for a particular Scene and creates all the Prop objects and Scene.
|
93
|
+
#
|
73
94
|
def load_props(path, options = {})
|
74
95
|
return Scene.new(options) if path.nil?
|
75
96
|
filename = File.join(path, "props.rb")
|
@@ -83,7 +104,9 @@ module Limelight
|
|
83
104
|
end
|
84
105
|
end
|
85
106
|
end
|
86
|
-
|
107
|
+
|
108
|
+
# Loads the specified 'styles.rb' file and created a Hash of Styles.
|
109
|
+
#
|
87
110
|
def load_styles(path)
|
88
111
|
styles = builtin_styles
|
89
112
|
return styles if path.nil?
|
@@ -98,7 +121,9 @@ module Limelight
|
|
98
121
|
end
|
99
122
|
end
|
100
123
|
end
|
101
|
-
|
124
|
+
|
125
|
+
# Loads the 'production.rb' file if it exists and configures the Production.
|
126
|
+
#
|
102
127
|
def establish_production
|
103
128
|
return if @production
|
104
129
|
if @loader.exists?("production.rb")
|
@@ -115,6 +140,9 @@ module Limelight
|
|
115
140
|
end
|
116
141
|
end
|
117
142
|
|
143
|
+
# A production with multiple Scenes may have a 'styles.rb' file in the root directory. This is called the
|
144
|
+
# root_style. This method loads the root_styles, if they haven't already been loaded, and returns them.
|
145
|
+
#
|
118
146
|
def root_styles
|
119
147
|
return @root_syles if @root_syles
|
120
148
|
if @loader.exists?('styles.rb')
|
data/lib/limelight/production.rb
CHANGED
@@ -4,12 +4,17 @@
|
|
4
4
|
require 'limelight/limelight_exception'
|
5
5
|
|
6
6
|
module Limelight
|
7
|
-
|
7
|
+
|
8
|
+
# The root object of Limelight Production. Every Prop in a production has access to its Production object.
|
9
|
+
# Therefore it is typical to store reasources in the Production.
|
10
|
+
#
|
11
|
+
# Productions are configured, and attributes are added, by the ProductionBuilder.
|
12
|
+
#
|
8
13
|
class Production
|
9
14
|
|
10
15
|
class << self
|
11
16
|
|
12
|
-
def index(production)
|
17
|
+
def index(production) #:nodoc:
|
13
18
|
@index = [] if @index.nil?
|
14
19
|
if production.name.nil?
|
15
20
|
assign_name_to(production)
|
@@ -19,12 +24,12 @@ module Limelight
|
|
19
24
|
@index << production
|
20
25
|
end
|
21
26
|
|
22
|
-
def [](name)
|
27
|
+
def [](name) #:nodoc:
|
23
28
|
return nil if @index.nil?
|
24
29
|
return @index.find { |production| production.name == name }
|
25
30
|
end
|
26
31
|
|
27
|
-
def assign_name_to(production)
|
32
|
+
def assign_name_to(production) #:nodoc:
|
28
33
|
count = @index.length + 1
|
29
34
|
while name_taken?(count.to_s)
|
30
35
|
count += 1
|
@@ -32,28 +37,32 @@ module Limelight
|
|
32
37
|
production.name = count.to_s
|
33
38
|
end
|
34
39
|
|
35
|
-
def name_taken?(name)
|
40
|
+
def name_taken?(name) #:nodoc:
|
36
41
|
return self[name] != nil
|
37
42
|
end
|
38
43
|
|
39
|
-
def clear_index
|
44
|
+
def clear_index #:nodoc:
|
40
45
|
@index = []
|
41
46
|
end
|
42
47
|
|
43
|
-
def error_if_duplicate_name(name)
|
48
|
+
def error_if_duplicate_name(name) #:nodoc:
|
44
49
|
raise Limelight::LimelightException.new("Production name '#{name}' is already taken") if name_taken?(name)
|
45
50
|
end
|
46
51
|
|
47
52
|
end
|
48
53
|
|
49
54
|
attr_reader :producer, :theater, :name
|
50
|
-
|
55
|
+
|
56
|
+
# Users typically need not create Production objects.
|
57
|
+
#
|
51
58
|
def initialize(producer, theater)
|
52
59
|
@producer = producer
|
53
60
|
@theater = theater
|
54
61
|
self.class.index(self)
|
55
62
|
end
|
56
|
-
|
63
|
+
|
64
|
+
# Sets the name of the Production. The name must be unique amongst all Productions in memory.
|
65
|
+
#
|
57
66
|
def name=(value)
|
58
67
|
self.class.error_if_duplicate_name(value)
|
59
68
|
@name = value
|
@@ -5,13 +5,26 @@ require 'limelight/production'
|
|
5
5
|
require 'limelight/limelight_exception'
|
6
6
|
|
7
7
|
module Limelight
|
8
|
-
|
8
|
+
|
9
|
+
# A trigger to configure Production objects using the ProductionBuilder DSL.
|
10
|
+
#
|
11
|
+
# See Limelight::ProductionBuilder
|
12
|
+
#
|
9
13
|
def self.build_production(producer, theater, &block)
|
10
14
|
builder = ProductionBuilder.new(producer, theater)
|
11
15
|
builder.instance_eval(&block) if block
|
12
16
|
return builder.__production__
|
13
17
|
end
|
14
|
-
|
18
|
+
|
19
|
+
# The basis of the DSL for building Style objects.
|
20
|
+
#
|
21
|
+
# name "Stage Composer"
|
22
|
+
# attribute :controller
|
23
|
+
# attribute :inspector
|
24
|
+
#
|
25
|
+
# The above example names the Production 'Stage Composer' and creates two attributes on the Production: 'controller'
|
26
|
+
# and 'inspector'
|
27
|
+
#
|
15
28
|
class ProductionBuilder
|
16
29
|
|
17
30
|
class << self
|
@@ -26,12 +39,14 @@ module Limelight
|
|
26
39
|
@__production__ = Production.new(producer, theater)
|
27
40
|
end
|
28
41
|
|
29
|
-
def method_missing(sym, value)
|
42
|
+
def method_missing(sym, value) #:nodoc:
|
30
43
|
setter_sym = "#{sym}=".to_s
|
31
44
|
raise ProductionBuilderException.new(sym) if !@__production__.respond_to?(setter_sym)
|
32
45
|
@__production__.send(setter_sym, value)
|
33
46
|
end
|
34
|
-
|
47
|
+
|
48
|
+
# Creates an attribute on the Production
|
49
|
+
#
|
35
50
|
def attribute(sym)
|
36
51
|
ProductionBuilder.current_attribute = sym
|
37
52
|
class << @__production__
|
@@ -39,7 +54,9 @@ module Limelight
|
|
39
54
|
end
|
40
55
|
end
|
41
56
|
end
|
42
|
-
|
57
|
+
|
58
|
+
# Thrown if there is an error in the ProductionBuilder DSL
|
59
|
+
#
|
43
60
|
class ProductionBuilderException < LimelightException
|
44
61
|
def initialize(name)
|
45
62
|
super("'#{name}' is not a valid production property")
|
data/lib/limelight/prop.rb
CHANGED
@@ -7,16 +7,22 @@ require 'limelight/paint_action'
|
|
7
7
|
require 'limelight/animation'
|
8
8
|
|
9
9
|
module Limelight
|
10
|
+
|
11
|
+
# Prop is the fundamental building block of a scene. A prop represents a rectangular area in the scene, of almost any dimension.
|
12
|
+
# It may have borders, backgrounds, margin, padding, and it may contain other props or text. However it is the props'
|
13
|
+
# Styles that determine their size and appearance.
|
14
|
+
#
|
15
|
+
# A Prop may have one parent and many children. Hense, when put together, they form a tree structure. The Scene is
|
16
|
+
# the root Prop of a tree.
|
17
|
+
#
|
10
18
|
class Prop
|
11
19
|
|
12
20
|
class << self
|
13
21
|
|
14
|
-
def event(
|
22
|
+
def event(event_symbol)
|
15
23
|
@events ||= []
|
16
|
-
|
17
|
-
|
18
|
-
define_method(sym) { |event| } # do nothing by default
|
19
|
-
end
|
24
|
+
@events << event_symbol unless @events.include?(event_symbol)
|
25
|
+
define_method(event_symbol) { |event| } # do nothing by default
|
20
26
|
end
|
21
27
|
|
22
28
|
def events
|
@@ -27,72 +33,100 @@ module Limelight
|
|
27
33
|
|
28
34
|
include UI::Api::Prop
|
29
35
|
|
30
|
-
attr_reader :panel
|
31
|
-
attr_reader :name, :id, :players
|
32
|
-
getters :panel, :style, :hover_style, :scene, :name, :text
|
33
|
-
setters :text
|
34
|
-
|
36
|
+
attr_reader :panel #:nodoc:
|
37
|
+
attr_reader :style, :hover_style, :children, :scene, :parent, :name, :id, :players
|
38
|
+
getters :panel, :style, :hover_style, :scene, :name, :text #:nodoc:
|
39
|
+
setters :text #:nodoc:
|
40
|
+
|
41
|
+
# When creating a Prop, an optional Hash is accepted. These are called initialization options.
|
42
|
+
# The key/value pairs in the initialiaztion options will be used to
|
43
|
+
# set properties on the Prop, it Style, or included Player properties. These properties are not set
|
44
|
+
# until the prop is added to a Prop tree with a Scene.
|
45
|
+
#
|
35
46
|
def initialize(hash = {})
|
36
47
|
@options = hash
|
37
48
|
@children = []
|
38
49
|
@style = Styles::ScreenableStyle.new
|
39
50
|
@panel = UI::Model::Panel.new(self)
|
40
51
|
end
|
41
|
-
|
52
|
+
|
53
|
+
# Add a Prop as a child of this Prop.
|
54
|
+
#
|
42
55
|
def add(child)
|
43
56
|
child.set_parent(self)
|
44
57
|
@children << child
|
45
58
|
@panel.add(child.panel)
|
46
59
|
end
|
47
|
-
|
60
|
+
|
61
|
+
# Same as add. Returns self so adding may be chained.
|
62
|
+
#
|
63
|
+
# prop << child1 << child2 << child3
|
64
|
+
#
|
48
65
|
def <<(child)
|
49
66
|
add(child)
|
50
67
|
return self
|
51
68
|
end
|
52
|
-
|
69
|
+
|
70
|
+
# Allows the adding of child Props using the PropBuilder DSL.
|
71
|
+
#
|
72
|
+
# prop.build do
|
73
|
+
# child1 do
|
74
|
+
# grand_child
|
75
|
+
# end
|
76
|
+
# child2
|
77
|
+
# end
|
78
|
+
#
|
53
79
|
def build(&block)
|
54
80
|
require 'limelight/prop_builder'
|
55
81
|
builder = Limelight::PropBuilder.new(self)
|
56
82
|
builder.instance_eval(&block)
|
57
83
|
end
|
58
|
-
|
84
|
+
|
85
|
+
# Removes a child Prop. The child Prop will be parentless after removal.
|
86
|
+
#
|
59
87
|
def remove(child)
|
60
88
|
if children.delete(child)
|
61
89
|
@panel.remove(child.panel)
|
62
90
|
end
|
63
91
|
end
|
64
|
-
|
92
|
+
|
93
|
+
# Removes all child Props.
|
94
|
+
#
|
65
95
|
def remove_all
|
66
96
|
@panel.remove_all
|
67
97
|
@children = []
|
68
98
|
end
|
69
|
-
|
70
|
-
|
71
|
-
|
99
|
+
|
100
|
+
# Injects the behavior of the specified Player into the Prop. The Player must be a Module.
|
101
|
+
#
|
102
|
+
def include_player(player_module)
|
103
|
+
extend player_module unless self.is_a?(player_module)
|
72
104
|
end
|
73
105
|
|
74
|
-
|
75
|
-
|
76
|
-
def update
|
106
|
+
def update #:nodoc:
|
77
107
|
return if(@scene.nil? || !@scene.visible)
|
78
108
|
@panel.doLayout
|
79
109
|
@panel.repaint
|
80
110
|
end
|
81
111
|
|
82
|
-
def update_now
|
112
|
+
def update_now #:nodoc:
|
83
113
|
return if(@scene.nil? || !@scene.visible)
|
84
114
|
@panel.doLayout()
|
85
115
|
@panel.paintImmediately(0, 0, @panel.width, @panel.height)
|
86
116
|
end
|
87
|
-
|
117
|
+
|
118
|
+
# A hook to invoke behavior after a Prop is painted.
|
119
|
+
#
|
88
120
|
def after_painting(flag = true, &block)
|
89
121
|
if flag
|
90
122
|
@panel.after_paint_action = PaintAction.new(&block)
|
91
123
|
else
|
92
124
|
@panel.after_paint_action = nil
|
93
125
|
end
|
94
|
-
end
|
95
|
-
|
126
|
+
end
|
127
|
+
|
128
|
+
# Searches all children for a Prop with the given id. Returns the desired Prop if found, nil otherwise.
|
129
|
+
#
|
96
130
|
def find(id)
|
97
131
|
return self if @id == id
|
98
132
|
@children.each do |child|
|
@@ -101,73 +135,111 @@ module Limelight
|
|
101
135
|
end
|
102
136
|
return nil
|
103
137
|
end
|
104
|
-
|
138
|
+
|
139
|
+
# Searches all children for Props with the specified name. Returns an Array of matching Props. Returns an
|
140
|
+
# empty Array is none are found.
|
141
|
+
#
|
105
142
|
def find_by_name(name, results = [])
|
106
143
|
results << self if @name == name
|
107
144
|
@children.each { |child| child.find_by_name(name, results) }
|
108
145
|
return results
|
109
146
|
end
|
110
|
-
|
147
|
+
|
148
|
+
# Sets the text of this Prop. If a prop is given text, it will become sterilized (it may not have any more children).
|
149
|
+
# Some Players such as text_box, will cause the text to appear in the text_box.
|
150
|
+
#
|
111
151
|
def text=(value)
|
112
|
-
@panel.text = value
|
152
|
+
@panel.text = value.to_s
|
113
153
|
end
|
114
|
-
|
154
|
+
|
155
|
+
# Returns the text of the Prop.
|
156
|
+
#
|
115
157
|
def text
|
116
158
|
return panel.text
|
117
159
|
end
|
118
160
|
|
119
161
|
#TODO - MDM - DELETE ME
|
120
|
-
def stage
|
162
|
+
def stage #:nodoc:
|
121
163
|
return scene.stage
|
122
164
|
end
|
123
|
-
|
165
|
+
|
166
|
+
# Returns the current Production this Prop lives in.
|
167
|
+
#
|
124
168
|
def production
|
125
169
|
return scene.production
|
126
170
|
end
|
127
171
|
|
128
|
-
def to_s
|
172
|
+
def to_s #:nodoc:
|
129
173
|
return "#{self.class.name}[id: #{@id}, name: #{@name}]"
|
130
174
|
end
|
131
175
|
|
132
|
-
def inspect
|
176
|
+
def inspect #:nodoc:
|
133
177
|
return self.to_s
|
134
178
|
end
|
135
179
|
|
136
180
|
# unusual name because it's not part of public api
|
137
|
-
def set_parent(parent)
|
181
|
+
def set_parent(parent) #:nodoc:
|
138
182
|
@parent = parent
|
139
183
|
set_scene parent.scene
|
140
184
|
end
|
141
185
|
|
142
186
|
# unusual name because it's not part of public api
|
143
|
-
def set_scene(scene)
|
187
|
+
def set_scene(scene) #:nodoc:
|
144
188
|
return if scene == @scene || scene.nil?
|
145
189
|
@scene = scene
|
146
190
|
illuminate
|
147
191
|
children.each { |child| child.set_scene(scene) }
|
148
192
|
end
|
149
|
-
|
193
|
+
|
194
|
+
# Allows the addition of extra initialization options. Will raise an exception if the Prop has already been
|
195
|
+
# illuminated (added to a scene).
|
196
|
+
#
|
150
197
|
def add_options(more_options)
|
151
198
|
raise "Too late to add options" if @options.nil?
|
152
199
|
@options.merge!(more_options)
|
153
200
|
end
|
154
|
-
|
201
|
+
|
202
|
+
# Returns a Box representing the relative bounds of the Prop. Is useful with usign the Pen.
|
203
|
+
#
|
204
|
+
# box = prop.area
|
205
|
+
# box.x, box.y # represents the Prop's location within its parent Prop
|
206
|
+
# box.width, box.height # represents the Prop's dimensions
|
207
|
+
#
|
155
208
|
def area
|
156
209
|
return panel.get_box.clone
|
157
210
|
end
|
158
|
-
|
211
|
+
|
212
|
+
# Returns a Box representing the bounds inside the borders of the prop. If the Prop's style has no margin or
|
213
|
+
# border_width, then this will be equivalant to area.
|
214
|
+
#
|
159
215
|
def bordered_area
|
160
216
|
return panel.get_box_inside_borders.clone
|
161
217
|
end
|
162
|
-
|
218
|
+
|
219
|
+
# Returns a Pen object. Pen objects allow to you to draw directly on the screen, withing to bounds of this Prop.
|
220
|
+
#
|
163
221
|
def pen
|
164
222
|
return Pen.new(panel.getGraphics)
|
165
223
|
end
|
166
|
-
|
224
|
+
|
225
|
+
# Plays a sound on the computers audio output. The parameter is the filename of a .au sound file.
|
226
|
+
# This filename should relative to the root directory of the current Production, or an absolute path.
|
227
|
+
#
|
167
228
|
def play_sound(filename)
|
168
229
|
@panel.play_sound(@scene.loader.path_to(filename))
|
169
230
|
end
|
170
231
|
|
232
|
+
# Initiate an animation loop. Options may include :name (string), :updates_per_second (int: defaults to 60)
|
233
|
+
# An Animation object is returned.
|
234
|
+
# The provided block will be invoked :updates_per_second times per second until the Animation is stopped.
|
235
|
+
#
|
236
|
+
# @animation = prop.animate(:updates_per_second => 20) do
|
237
|
+
# prop.style.border_width = (prop.style.top_border_width.to_i + 1).to_s
|
238
|
+
# @animation.stop if prop.style.top_border_width.to_i > 60
|
239
|
+
# end
|
240
|
+
#
|
241
|
+
# This above example will cause the Prop's border to grow until it is 60 pixels wide.
|
242
|
+
#
|
171
243
|
def animate(options={}, &block)
|
172
244
|
animation = Animation.new(self, block, options)
|
173
245
|
animation.start
|
@@ -175,11 +247,21 @@ module Limelight
|
|
175
247
|
end
|
176
248
|
|
177
249
|
# GUI Events ##########################################
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
event
|
250
|
+
|
251
|
+
event :mouse_clicked
|
252
|
+
event :mouse_entered
|
253
|
+
event :mouse_exited
|
254
|
+
event :mouse_pressed
|
255
|
+
event :mouse_released
|
256
|
+
event :mouse_dragged
|
257
|
+
event :mouse_moved
|
258
|
+
event :key_typed
|
259
|
+
event :key_pressed
|
260
|
+
event :key_released
|
261
|
+
event :focus_gained
|
262
|
+
event :focus_lost
|
263
|
+
event :button_pressed
|
264
|
+
event :value_changed
|
183
265
|
|
184
266
|
private ###############################################
|
185
267
|
|