On Sep 19, 2008, at 6:22 AM, Richard Kilmer wrote:
I added the ability to easily support notification posting and subscribing in HotCocoa:
[...] Great! $ cat t2.rb require 'hotcocoa' include HotCocoa application do on_notification :distributed => true do |note| puts note.description end end $ ./miniruby -I./lib t2.rb NSConcreteNotification 0x185f9b0 {name = O3EngineChanged; object = brte*04271800; userInfo = { DisplayID = 69670912; EngineType = 1651668069; }} [...] NSConcreteNotification 0x16cb8e0 {name = com.apple.iTunes.playerInfo; object = com.apple.iTunes.player; userInfo = { Album = Damnation; Artist = Opeth; Genre = "Death Metal"; Location = "file://localhost/Volumes/Data/music/Opeth/Damnation/03%20Death%20whispered%20a%20lullaby.mp3 "; Name = "Death whispered a lullaby"; "Player State" = Playing; "Store URL" = "itms://itunes.com/link?n=Death%20whispered%20a%20lullaby&an=Opeth&pn=Damnation "; "Total Time" = 349805; "Track Count" = 8; "Track Number" = 3; Year = 2003; }} [...] I also checked that posting a distributed notification works. $ cat t3.rb require 'hotcocoa' include HotCocoa application do notification :name => ARGV.first, :info => {'123' => '456'}, :distributed => true end Note, I had to apply the following patch before. Index: lib/hotcocoa/mappings/notification.rb =================================================================== --- lib/hotcocoa/mappings/notification.rb (revision 608) +++ lib/hotcocoa/mappings/notification.rb (working copy) @@ -5,12 +5,12 @@ def alloc_with_options(options) if options.delete(:post) if options.delete(:distributed) - NSDistributedNotificationCenter.defaultCenter.postNotificationWithName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info), deliverImmediately: (options.delete(:immediately) == true) + NSDistributedNotificationCenter.defaultCenter.postNotificationName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info), deliverImmediately: (options.delete(:immediately) == true) else - NSNotificationCenter.defaultCenter.postNotificationWithName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info) + NSNotificationCenter.defaultCenter.postNotificationName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info) end else - NSNotification.notificationWithName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info) + NSNotification.notificationName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info) end end Great work! Laurent