AppleScripting Cocoa a little
So, you want to make your Cocoa application scriptable? You have a complex object model? You read Apple's excellent documentation, but need code to fill in some blanks? You can't find your way in Apple's sample code? Well, here's a few spots I found really helpful:
- Matt Neuburg's Getting started with Cocoa Scripting A wonderful walkthrough on how to get started, how to get the application to ask your delegate for some AppleScript properties exposed through AppleScript's application object, and to expose custom objects as AppleScript classes, and provides lots of sample code snippets.
- Apple's SimpleScriptingObjects Sample Code Shows how to use XInclude to get the standard suites, and also shows how to do more complex object hierarchies in a complete, working application.
- Apple's ScriptingDefinitions Sample Code Not really sample code, but that's what they filed it under. It's two example scripting definitions that you can base your app's on.
A few notes that might help you:
- The -objectSpecifier method is very important on your objects. Object specifiers are the only things that actually end up outside your app. If you don't provide that method for your objects, nothing will work.
- Since Object Specifiers are the only thing that ends up outside your app, you can create temporary, different objects as stand-ins for objects in your app. You can expose a group of objects as one nice object to AppleScript users.
- If you get the errAEBadKeyForm error, "bad key form" -10002, check whether any other dictionary defines the same property name as you do. AppleScript expects a one-to-one mapping of one string (e.g. "name") to one Four-character-code (e.g. 'pnam'), across all Applications' dictionaries. This also includes AppleScript's built-in identifiers. So be sure you use Apple's identifiers.