Class: Cura::Application
- Inherits:
-
Object
- Object
- Cura::Application
- Includes:
- Cura::Attributes::HasAttributes, Cura::Attributes::HasEvents, Cura::Attributes::HasInitialize, Cura::Attributes::HasWindows
- Defined in:
- lib/cura/application.rb
Overview
An application.
Instance Attribute Summary collapse
-
#cursor ⇒ Cursor
readonly
Get the text cursor.
-
#dispatcher ⇒ Event::Dispatcher
readonly
Get the event dispatcher.
-
#pencil ⇒ Pencil
readonly
Get the pencil used for drawing.
Attributes included from Cura::Attributes::HasEvents
Attributes included from Cura::Attributes::HasWindows
Class Method Summary collapse
Instance Method Summary collapse
-
#adapter ⇒ Adapter
Get the adapter used for running this application.
-
#adapter=(adapter) ⇒ Adapter
Set the adapter used for running this application.
-
#add_window(window) ⇒ Window
Add a window to this application.
-
#dispatch_event(event, options = {}) ⇒ Event::Base
Dispatch an event.
-
#draw ⇒ Application
Draw all windows.
-
#focus(component) ⇒ Component::Base
Set focus to a component.
-
#focused ⇒ Component::Base
Get the currently focused component.
-
#initialize(attributes = {}) ⇒ Application
constructor
A new instance of Application.
-
#inspect ⇒ String
Instance inspection.
-
#run ⇒ Application
Run this application.
-
#running? ⇒ Boolean
Check if this application is running.
-
#stop ⇒ Application
Stop the application after the current run cycle.
-
#stop! ⇒ Application
Stop the application immediently.
-
#update ⇒ Application
Update all windows.
Methods included from Cura::Attributes::HasEvents
Methods included from Cura::Attributes::HasWindows
#delete_window, #delete_window_at, #delete_windows
Methods included from Cura::Attributes::HasAttributes
Constructor Details
#initialize(attributes = {}) ⇒ Application
Returns a new instance of Application.
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/cura/application.rb', line 52 def initialize(attributes={}) super @running = false @cursor = Cursor.new(application: self) @pencil = Pencil.new setup_adapter setup_dispatcher end |
Instance Attribute Details
#cursor ⇒ Cursor (readonly)
Get the text cursor.
80 81 82 |
# File 'lib/cura/application.rb', line 80 def cursor @cursor end |
#dispatcher ⇒ Event::Dispatcher (readonly)
Get the event dispatcher.
90 91 92 |
# File 'lib/cura/application.rb', line 90 def dispatcher @dispatcher end |
#pencil ⇒ Pencil (readonly)
Get the pencil used for drawing.
85 86 87 |
# File 'lib/cura/application.rb', line 85 def pencil @pencil end |
Class Method Details
.run(attributes = {}) ⇒ Object
41 42 43 |
# File 'lib/cura/application.rb', line 41 def run(attributes={}) new(attributes).run end |
Instance Method Details
#adapter ⇒ Adapter
Get the adapter used for running this application.
|
|
# File 'lib/cura/application.rb', line 63
|
#adapter=(adapter) ⇒ Adapter
Set the adapter used for running this application. This cannot be set after #run is used.
75 |
# File 'lib/cura/application.rb', line 75 attribute(:adapter) { |adapter| validate_adapter(adapter) } |
#add_window(window) ⇒ Window
Add a window to this application.
167 168 169 170 171 172 173 |
# File 'lib/cura/application.rb', line 167 def add_window(window) super window.application = self window end |
#dispatch_event(event, options = {}) ⇒ Event::Base
Dispatch an event.
159 160 161 |
# File 'lib/cura/application.rb', line 159 def dispatch_event(event, ={}) @dispatcher.dispatch_event(event, ) end |
#draw ⇒ Application
Draw all windows.
188 189 190 191 192 |
# File 'lib/cura/application.rb', line 188 def draw draw_windows self end |
#focus(component) ⇒ Component::Base
Set focus to a component.
There can only be one component focused at a time within an application, if any. All dispatched events are sent to the currently focused component, or the application if no component is focused.
143 144 145 146 147 148 149 150 151 |
# File 'lib/cura/application.rb', line 143 def focus(component) raise TypeError, "component must be nil or be a Cura::Component::Base" unless component.nil? || component.is_a?(Cura::Component::Base) dispatch_event(:unfocus) @dispatcher.target = component dispatch_event(:focus) component end |
#focused ⇒ Component::Base
Get the currently focused component.
132 133 134 |
# File 'lib/cura/application.rb', line 132 def focused @dispatcher.target end |
#inspect ⇒ String
Instance inspection.
197 198 199 |
# File 'lib/cura/application.rb', line 197 def inspect "#<#{self.class}>" end |
#run ⇒ Application
Run this application.
95 96 97 98 99 100 101 |
# File 'lib/cura/application.rb', line 95 def run run_event_loop self ensure @adapter.cleanup end |
#running? ⇒ Boolean
Check if this application is running.
125 126 127 |
# File 'lib/cura/application.rb', line 125 def running? @running end |
#stop ⇒ Application
Stop the application after the current run cycle.
106 107 108 109 110 |
# File 'lib/cura/application.rb', line 106 def stop @running = false self end |
#stop! ⇒ Application
Stop the application immediently.
115 116 117 118 119 120 |
# File 'lib/cura/application.rb', line 115 def stop! stop @adapter.cleanup self end |
#update ⇒ Application
Update all windows.
178 179 180 181 182 183 |
# File 'lib/cura/application.rb', line 178 def update update_windows cursor.update self end |