|
17 Mar 2010, 18:07
Todd Burch
(3 posts)
|
Hi. I’m working page 18 – the speaking-statusbar.rb script.
Everything was working fine until I added the SpeechController.alloc.init.add_menu_to method.
Here’s my code:
#!/usr/bin/env ruby
require 'osx/cocoa'
include OSX
class App < NSObject
def applicationDidFinishLaunching(aNotification)
statusbar = NSStatusBar.systemStatusBar
status_item = statusbar.statusItemWithLength(NSVariableStatusItemLength)
image = NSImage.alloc.initWithContentsOfFile("stretch.tiff")
raise "Icon file (stretch.tiff) is missing" unless image
status_item.setImage(image)
SpeechController.alloc.init.add_menu_to(status_item)
end
end
class SpeechController < NSObject
def init
super_init
@synthesizer = NSSpeechSynthesizer.alloc.init
return self
end
end
NSApplication.sharedApplication
NSApp.setDelegate(App.alloc.init)
NSApp.run
And here’s the output I get, also showing my ruby load path and RubyCocoa version.
~/Documents/myruby toddburch $ ruby statusbar-item.rb
2010-03-17 12:48:56.227 ruby[27434:10b] App#applicationDidFinishLaunching: OSX::OCMessageSendException: Can't get Objective-C method signature for selector 'add:menu:to:' of receiver #<SpeechController:0x228eae class='SpeechController' id=0x53ca60>
/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `ocm_send'
/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `method_missing'
statusbar-item.rb:13:in `applicationDidFinishLaunching'
/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `ocm_send'
/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `method_missing'
statusbar-item.rb:28
2010-03-17 12:48:56.229 ruby[27434:10b] Can't get Objective-C method signature for selector 'add:menu:to:' of receiver #<SpeechController:0x228eae class='SpeechController' id=0x53ca60>
^C/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:55:in `ocm_send': Interrupt
from /System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `method_missing'
from statusbar-item.rb:28
~/Documents/myruby toddburch $ /usr/bin/which ruby
/usr/bin/ruby
~/Documents/myruby toddburch $ irb
>> require 'osx/cocoa'
=> true
>> OSX::RUBYCOCOA_VERSION
=> "0.13.1"
>> quit
~/Documents/myruby toddburch $
Any ideas? Thanks, Todd
|
|
17 Mar 2010, 18:09
Todd Burch
(3 posts)
|
Well, that’s doesn’t look too nice. Let me try that again.
Code:
#!/usr/bin/env ruby
require 'osx/cocoa'
include OSX
class App < NSObject
def applicationDidFinishLaunching(aNotification)
statusbar = NSStatusBar.systemStatusBar
status_item = statusbar.statusItemWithLength(NSVariableStatusItemLength)
image = NSImage.alloc.initWithContentsOfFile("stretch.tiff")
raise "Icon file (stretch.tiff) is missing" unless image
status_item.setImage(image)
SpeechController.alloc.init.add_menu_to(status_item)
end
end
class SpeechController < NSObject
def init
super_init
@synthesizer = NSSpeechSynthesizer.alloc.init
return self
end
end
NSApplication.sharedApplication
NSApp.setDelegate(App.alloc.init)
NSApp.run
and here’s my output:
~/Documents/myruby toddburch $ ruby statusbar-item.rb
2010-03-17 12:48:56.227 ruby[27434:10b] App#applicationDidFinishLaunching: OSX::OCMessageSendException: Can't get Objective-C method signature for selector 'add:menu:to:' of receiver #<SpeechController:0x228eae class='SpeechController' id=0x53ca60>
/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `ocm_send'
/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `method_missing'
statusbar-item.rb:13:in `applicationDidFinishLaunching'
/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `ocm_send'
/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `method_missing'
statusbar-item.rb:28
2010-03-17 12:48:56.229 ruby[27434:10b] Can't get Objective-C method signature for selector 'add:menu:to:' of receiver #<SpeechController:0x228eae class='SpeechController' id=0x53ca60>
^C/System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:55:in `ocm_send': Interrupt
from /System/Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `method_missing'
from statusbar-item.rb:28
~/Documents/myruby toddburch $ /usr/bin/which ruby
/usr/bin/ruby
~/Documents/myruby toddburch $ irb
>> require 'osx/cocoa'
=> true
>> OSX::RUBYCOCOA_VERSION
=> "0.13.1"
>> quit
~/Documents/myruby toddburch $
|
|
18 Mar 2010, 05:05
Todd Burch
(3 posts)
|
Nevermind. I turned the page and there it was. duh.
|
| |
You must be logged in to comment
|