class Alfred::Handler::Callback
Constants
- ENTRIES_KEY
Public Class Methods
new(alfred, opts = {})
click to toggle source
Calls superclass method
Alfred::Handler::Base::new
# File lib/alfred/handler/callback.rb, line 23 def initialize(alfred, opts = {}) super @settings = { :handler => 'Callback' , :exclusive? => true , :backend_dir => @core.volatile_storage_path , :backend_file => 'callback.yaml' , :handler_order => ( Base_Invoke_Order / 12 ) }.update(opts) @order = @settings[:handler_order] end
Public Instance Methods
add_entry(entry, feedback_items)
click to toggle source
# File lib/alfred/handler/callback.rb, line 95 def add_entry(entry, feedback_items) entry.merge!(:timestamp => Time.now) key = entry[:key] new_entries = entries.merge(key => entry) backend[ENTRIES_KEY] = new_entries backend[key] = feedback_items end
backend()
click to toggle source
# File lib/alfred/handler/callback.rb, line 116 def backend @backend ||= Moneta.new(:YAML, :file => File.join(@settings[:backend_dir], @settings[:backend_file])) unless @backend.key?(ENTRIES_KEY) @backend[ENTRIES_KEY] = {} end @backend end
entries()
click to toggle source
# File lib/alfred/handler/callback.rb, line 111 def entries backend[ENTRIES_KEY] end
feedback?()
click to toggle source
# File lib/alfred/handler/callback.rb, line 43 def feedback? options.callback end
on_callback(keyword, entry, feedback_items)
click to toggle source
# File lib/alfred/handler/callback.rb, line 87 def on_callback(keyword, entry, feedback_items) add_entry(entry, feedback_items) Alfred::Util.notify("#{keyword} --callback '#{entry[:key]}'", entry[:title] || entry[:key], entry) end
on_close()
click to toggle source
# File lib/alfred/handler/callback.rb, line 82 def on_close backend.close end
on_feedback()
click to toggle source
# File lib/alfred/handler/callback.rb, line 47 def on_feedback return unless feedback? if entries[options.callback] feedback.merge! backend[options.callback] @status = :exclusive if @settings[:exclusive?] elsif entries.empty? # show a warn feedback item feedback.add_item( { :title => 'No available callback!' , :valid => 'no' , :autocomplete => '' , :subtitle => 'Please check it later. Background task may still be running.', :icon => ::Alfred::Feedback.CoreServicesIcon('Unsupported') , } ) else # list available callbacks entries.each do |key, entry| feedback.add_item( { :title => "Feedback Callback: #{key}" , :subtitle => "#{entry[:timestamp]}", :valid => 'no' , :autocomplete => "--callback '#{key}'" , :icon => ::Alfred::Feedback.CoreServicesIcon('AliasBadgeIcon') , }.merge(entry) ) end @status = :exclusive if @settings[:exclusive?] end end
on_parser()
click to toggle source
# File lib/alfred/handler/callback.rb, line 37 def on_parser parser.on("--callback [CALLBACK]", "Alfred callback feedback") do |v| options.callback = v || '' end end
remove_entry(key)
click to toggle source
# File lib/alfred/handler/callback.rb, line 103 def remove_entry(key) new_entries = entries.delete(key) backend[ENTRIES_KEY] = new_entries backend.delete(key) end