Class: MIDIEye::Event
- Inherits:
-
Object
- Object
- MIDIEye::Event
- Extended by:
- Forwardable
- Defined in:
- lib/midi-eye/event.rb
Overview
User defined callbacks for input events
Instance Method Summary collapse
-
#add(options = {}, &callback) ⇒ Hash
Add a user-defined input callback.
-
#clear ⇒ Boolean
Clear the collection of events.
-
#delete(name) ⇒ Object
Delete an event by name.
-
#enqueue(action, message) ⇒ Hash
Add an event to the trigger queue.
-
#enqueue_all(message) ⇒ Array<Hash>
Enqueue all events with the given message.
-
#initialize ⇒ Event
constructor
A new instance of Event.
-
#trigger_enqueued ⇒ Fixnum
Trigger all enqueued events.
Constructor Details
#initialize ⇒ Event
Returns a new instance of Event.
10 11 12 13 |
# File 'lib/midi-eye/event.rb', line 10 def initialize @event = [] @queue = Queue.new end |
Instance Method Details
#add(options = {}, &callback) ⇒ Hash
Add a user-defined input callback
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/midi-eye/event.rb', line 33 def add( = {}, &callback) name = [:listener_name] .delete(:listener_name) event = { :conditions => , :proc => callback, :listener_name => name } @event << event event end |
#clear ⇒ Boolean
Clear the collection of events
23 24 25 26 27 |
# File 'lib/midi-eye/event.rb', line 23 def clear @event.clear @queue.clear true end |
#delete(name) ⇒ Object
Delete an event by name
17 18 19 |
# File 'lib/midi-eye/event.rb', line 17 def delete(name) @event.delete_if { |event| event[:listener_name].to_s == name.to_s } end |
#enqueue(action, message) ⇒ Hash
Add an event to the trigger queue
64 65 66 67 68 69 70 71 |
# File 'lib/midi-eye/event.rb', line 64 def enqueue(action, ) event = { :action => action, :message => } @queue << event event end |
#enqueue_all(message) ⇒ Array<Hash>
Enqueue all events with the given message
58 59 60 |
# File 'lib/midi-eye/event.rb', line 58 def enqueue_all() @event.map { |action| enqueue(action, ) } end |
#trigger_enqueued ⇒ Fixnum
Trigger all enqueued events
47 48 49 50 51 52 53 54 |
# File 'lib/midi-eye/event.rb', line 47 def trigger_enqueued counter = 0 while !@queue.empty? do counter += 1 trigger(@queue.shift) end counter end |