home *** CD-ROM | disk | FTP | other *** search
- /*
- File: ScriptableObjects.h
-
- Contains: Script handling & OSA interface
-
-
- Developed by:
-
- Paul G Smith (commstalk hq & Full Moon Software, Inc)
-
- you can leave messages at (UK): 0727 844232; (US): 408 253 7199
- BUT I prefer to be contacted by e-mail
- AppleLink: COMMSTALK.HQ
- Internet: COMMSTALK.HQ@applelink.apple.com
-
- "SimpliFace2" Sample code to accompany develop article
- on techniques for controlling script inheritance.
-
-
-
-
-
-
- */
-
-
- #ifndef __SCRIPTOBJECTS__
- #define __SCRIPTOBJECTS__
-
-
- #ifndef __APPLEEVENTS__
- #include "AppleEvents.h"
- #endif
-
- #ifndef __PASCALSTRING__
- #include <PascalString.h>
- #endif
-
- #ifndef __AERegistry__
- #include <AERegistry.h>
- #endif
-
- #ifndef __OSA__
- #include <OSA.h>
- #endif
-
- #ifndef __LISTOFLONGS__
- #include "ListOfLongs.h"
- #endif
-
-
-
-
- class TScriptableObject : HandleObject
- {
- public:
- // Our constructor & destructor
- TScriptableObject(TScriptableObject* curParent = NULL);
- virtual ~TScriptableObject();
-
- virtual OSErr CountElements (DescType desiredClass,
- long *result);
-
- virtual OSErr CompareWith (DescType comparisonOperator,
- const TScriptableObject *objToCompare,
- Boolean *result);
-
- virtual OSErr ResolveContainer (TScriptableObject **theContainerObj);
-
- virtual OSErr ResolveElementByName(DescType desiredClass,
- CStr255& nameStr,
- TScriptableObject **theResultObj);
-
- virtual OSErr ResolveElementByIndex(DescType desiredClass,
- short theIndex,
- TScriptableObject **theResultObj);
-
- virtual OSErr OpenObject (void);
-
- virtual OSErr CloseObject (void);
-
- virtual OSErr GetData (AEDesc *result);
-
- virtual OSErr SetData (const AEDesc *theData);
-
- virtual OSErr GetProperty (DescType propertyID, DescType wantType, AEDesc *result);
-
- virtual OSErr SetProperty (DescType propertyID, const AEDesc *theData);
-
- virtual OSErr CreateNewElement (DescType desiredClass,
- DescType position,
- AEDesc *theData,
- AERecord *theProperties,
- TScriptableObject *theContainerObj,
- TScriptableObject **theNewObj);
-
- virtual OSErr DeleteObject (void);
-
- virtual OSErr GetObjectSpecifier (AEDesc *result);
- virtual OSAID GetObjectSpecifierAsScriptValue (void);
-
- virtual OSErr GetTargetObjectSpecifier (EventRecord& theEvent, AEDesc *result);
-
- virtual void FixUpScriptReferences(TScriptableObject* theParent);
-
- virtual OSAError SetCurParent(TScriptableObject* theParent = NULL);
-
- virtual OSAError StartUsing(TScriptableObject* newParent, TScriptableObject* &oldParent);
- // start using script (sets parent of script)
-
- virtual OSAError StopUsing(TScriptableObject* oldParent);
- // stop using script (resets parent of script to previous value)
-
- virtual TScriptableObject* GetParentObj();
- virtual OSAID GetParentScript();
-
- virtual void WalkContextChain(short depth = 0);
-
- OSAID GetObjScript(void) { return fAttachedScript; };
-
- protected:
- OSAID fAttachedScript; // script ID of our script
- TScriptableObject* fParentObj; // object that is current parent
- // if fParentObj is null, parent script is shared handlers
- };
-
-
- class TScriptAdministrator : public TScriptableObject // <- because global vars script is
- { // 'attached' to this object
- public:
- // Our constructor & destructor
- TScriptAdministrator();
- virtual ~TScriptAdministrator();
-
- virtual OSAError GetAttachedScript(TScriptableObject* theObj,
- TScriptableObject* &useObject,
- TScriptableObject* &savedParent);
-
- virtual OSAError ReleaseAttachedScript(TScriptableObject* theObj,
- TScriptableObject* savedParent);
-
- virtual OSAID GetParentScript();
-
- void LoadGlobalVariables(void);
- void SaveGlobalVariables(void);
- void RunStartupScript(void);
-
- OSAError DoScript(AEDesc *scriptDesc, AEDesc *resultDesc);
-
- OSAError SetScriptParent(ComponentInstance scriptingComponent,
- OSAID contextID, OSAID newParentID);
-
- void SetSharedScript(OSAID theScriptID);
- OSAID GetSharedScript(void) { return fSharedScript; };
-
- OSAError LoadScriptFromFile(FSSpec *fileSpec, OSAID *theScriptID);
- OSAError SaveScriptToFile(FSSpec *fileSpec, OSAID theScriptID);
-
- Boolean StartupScriptIsRunning(void) { return fStartupScriptRunning; };
-
- protected: // inherited fAttachedScript is
- // the 'global variables' script.
- OSAID fSharedScript; // 'shared handlers' script for app
- FSSpec fPrefsFileSpec;
- Boolean fStartupScriptRunning; // we must not run it recursively
- };
-
-
-
- // globals & global routines
-
- extern TScriptAdministrator* gScriptAdministrator;
- extern ComponentInstance gScriptingComponent;
- extern AEAddressDesc gSelfAddress;
- extern ProcessSerialNumber gSelfPSN;
-
-
- OSAError StartScriptAdministrator(void);
-
- OSAError StopScriptAdministrator(Boolean saveGlobals);
-
-
- #endif
-