Module: ADesklets::EventHandler
- Included in:
- BaseDesklets, BaseEventHandler
- Defined in:
- lib/adesklets/base.rb
Overview
Client
Instance Method Summary collapse
- #define_callbacks ⇒ Object
-
#event_loop(new_callbacks = @default_callbacks) ⇒ Object
sta soluzione nun me piace.
Instance Method Details
#define_callbacks ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/adesklets/base.rb', line 53 def define_callbacks @default_callbacks = {} @default_callbacks["Ready!"] = proc { |args | ready args } if respond_to?(:ready) @default_callbacks["BackgroundGrab"] = proc { |args| bg_grab args } if respond_to?(:bg_grab) @default_callbacks["MenuFire"] = proc { |args| args } if respond_to?(:menu) @default_callbacks["MotionNotify"] = proc { |args| motion args } if respond_to?(:motion) @default_callbacks["EnterNotify"] = proc { |args| enter args } if respond_to?(:enter) @default_callbacks["LeaveNotify"] = proc { |args| leave args } if respond_to?(:leave) @default_callbacks["ButtonPress"] = proc { |args| args } if respond_to?(:button_pressed) @default_callbacks["ButtonRelease"] = proc { |args| args } if respond_to?(:button_released) end |
#event_loop(new_callbacks = @default_callbacks) ⇒ Object
sta soluzione nun me piace
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/adesklets/base.rb', line 66 def event_loop( new_callbacks = @default_callbacks ) session = ADesklets::Client.instance.session new_callbacks.each do |key, proc| session.command("event_catch #{key}") end while true do events_io = select( [session.stderr], nil, nil, 1.5 ) if (not events_io.nil?) line = events_io[0][0].gets if line =~ /\s*event: (.*)$/ then name, *args = $1.split new_callbacks.each do |key, callback| callback.call(args) if ( name == key.downcase and not callback.nil? ) end end end end end |