Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [q] scriptSuite conflict problems (code included)



On Thursday, July 19, 2001, at 12:16 AM, cocoa-dev-
email@hidden wrote:

I am trying to implement a minimal scripting suite into a Cocoa App. The
goal is to be able to do the following calls in an AppleScript:

tell application "JPSB"
set programState to 5
set localVar to programState
end tell

Where programState is an instance variable (with accessors) within my
Controller class. (Apparently, it shouldn't make a difference if I
attach it to a Model class or a controller class)

I think your problem here is that the programState is a property of your controller object, but you haven't exposed the controller object itself to Applescript. There are two ways of going about this. You can either a) expose the controller object as an element of NSApplication or b) expose any sort of global properties, such as programState in your example, directly as properties/elements of the NSApplication. I tend to prefer the latter, since it's somewhat cleaner from the scripter's point of view, but in either case, you'll need to add an entry for NSApplication in your script suite. Then, you'll need to either write a category(ies) on NSApplication to implement the functionality, or implement the scripting delegate method (application:delegateHandlesKey: or something along those lines - it's in the docs under protocols).

This suite exposes the property: (typed in Mail, errors probable)

{
Classes = {
NSApplication = {
Superclass = NSCoreSuite.NSApplication;
Attributes = {
programState = {
Type = NSNumber;
AppleEventCode = prst;
};
};
};
};
}

And BTW, you should be able to store your state as a plain int, and the scripting framework will handle the translation automatically.

--
Brian Webster
email@hidden
http://www.owlnet.rice.edu/~bwebster




Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.