mirror of
https://github.com/elliotnunn/boot3.git
synced 2024-12-28 20:29:26 +00:00
5b0f0cc134
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
179 lines
5.4 KiB
OpenEdge ABL
179 lines
5.4 KiB
OpenEdge ABL
{
|
|
File: AppleEventsInternal.p
|
|
|
|
Contains: Types and Records for using standard six AppleEvents.
|
|
|
|
Written by: Nick Kledzik
|
|
|
|
Copyright: © 1990 by Apple Computer, Inc., all rights reserved.
|
|
|
|
Change History (most recent first):
|
|
|
|
<4> 2/1/91 DFH stb,WS#DFH-910131c:Added Process Mgr defined AppleEvent codes
|
|
under their old names (for compatibility for now).
|
|
<3> 2/1/91 DFH BAC,WS#DFH-910131c:Replaced aeErrorValueKeyword ('errv') with
|
|
aeErrorNumberKeyword ('errn').
|
|
<2> 9/5/90 ngk Fix auto-include name
|
|
<1> 9/5/90 ngk first checked in
|
|
<0> 9/05/90 ngk moved from [PInterfaces]AppleEvents.p to here
|
|
----------------------------------------------------
|
|
<12> DFH 16 Apr 90 Removed aeProcessParamType.
|
|
<11> DFH 16 Apr 90 Changed saeOpenDocumentMsgID to 'odoc', saePrintDocumentMsgID
|
|
to 'pdoc'. Added saeLaunchedWithoutDocs, saeAnswer,
|
|
aeErrorValueKeyword, and AppleEventReply.
|
|
<10> ngk 3/22/90 Changed AETFDescriptor AETFParameter in regular expr.
|
|
<9> ngk 3/20/90 Changed PACKED ARRAY [0..3] to [1..4]
|
|
<8> ngk 3/20/90 fix comments
|
|
<7> ngk 3/20/90 Changed for 7.0a8 AppleEvents format
|
|
<6> DFH 12 Mar 90 Removed aeDebuggerNotify
|
|
<5> ngk 3/10/90 Big change for 7.0a8 AppleEvents format
|
|
<3> ngk 2/06/90 clean up standard header records
|
|
|
|
1.1 ngk 12/01/1989 Renamed aeUnexpectedQuit to aeApplicationDied, and
|
|
refcon to amsRefcon
|
|
1.0 ngk 11/01/1989 initial EASE release
|
|
|
|
To Do:
|
|
}
|
|
|
|
|
|
{$IFC UNDEFINED UsingIncludes}
|
|
{$SETC UsingIncludes := 0}
|
|
{$ENDC}
|
|
|
|
|
|
{$IFC NOT UsingIncludes}
|
|
UNIT AppleEventsInternal;
|
|
INTERFACE
|
|
{$ENDC}
|
|
|
|
{$IFC UNDEFINED UsingAppleEventsInternal}
|
|
{$SETC UsingAppleEventsInternal := 1}
|
|
|
|
{$I+}
|
|
{$SETC AppleEventsIncludes := UsingIncludes}
|
|
{$SETC UsingIncludes := 1}
|
|
{$IFC UNDEFINED UsingTypes}
|
|
{$I Types.p}
|
|
{$ENDC}
|
|
{$SETC UsingIncludes := AppleEventsIncludes}
|
|
|
|
TYPE
|
|
MsgClass = PACKED ARRAY [1..4] OF CHAR;
|
|
MsgID = PACKED ARRAY [1..4] OF CHAR;
|
|
KeyWord = PACKED ARRAY [1..4] OF CHAR;
|
|
ParamType = ResType; { superset of resources types and new ones }
|
|
|
|
{ this template is used to extract the MsgClass and MsgID }
|
|
{ fields from a highlevel event }
|
|
HighLevelEventRecord = RECORD
|
|
what: INTEGER; { always kHighLevelEvent }
|
|
class: MsgClass;
|
|
reserved1: LONGINT;
|
|
ID: MsgID;
|
|
reserved2: INTEGER;
|
|
END;
|
|
|
|
{ standard AppleEvent Message class and IDs }
|
|
CONST
|
|
standardAppleEventMsgClass = 'aevt';
|
|
|
|
saeLaunchedWithoutDocs = 'oapp'; { no direct object }
|
|
saeNewDocumentMsgID = 'new '; { no direct object }
|
|
saeOpenDocumentMsgID = 'odoc'; { direct object is file or list of files }
|
|
saePrintDocumentMsgID = 'pdoc'; { direct object is file or list of files }
|
|
saeQuitMsgID = 'quit'; { no direct object }
|
|
saeSetUpMenusMsgID = 'mens'; { no direct object }
|
|
saeGetPropertyMsgID = 'getp';
|
|
saeAnswer = 'ansr';
|
|
aeCreatorType = 'crea';
|
|
aeQuitAll = 'quia';
|
|
aeShutDown = 'shut';
|
|
aeRestart = 'rest';
|
|
aeApplicationDied = 'obit';
|
|
aeProcessKeyword = 'psn ';
|
|
aeProcessParamType = 'psn ';
|
|
|
|
|
|
|
|
{
|
|
After receiving a high level event, you can get its message buffer by calling
|
|
AcceptHighLevelEvent. The format of the buffer as a regular expression is:
|
|
|
|
AETFHeader (AETFParameter)* aeEndOfMetaDataKeyword (AETFParameter)*
|
|
|
|
The header tells you the protocol and version. We recommend that everyone uses
|
|
the AppleEvent Transport Format (AETF) protocol. Following the header is zero
|
|
or more "meta-parameters" (For the short term, you may ignore them).
|
|
Following them is an end of metaparameters keyword (';;;;') and then zero or
|
|
more "regular parameters". The most important regular parameter is
|
|
the "direct object". It is distinguished by the keyword of '----'. It is the
|
|
object of the message (e.g. which document to open).
|
|
|
|
You will probably want to write a routine that can walk the parameters
|
|
and find a descriptor by keyword.
|
|
|
|
}
|
|
|
|
|
|
TYPE
|
|
AETFHeaderPtr = ^AETFHeader;
|
|
AETFHeader = RECORD
|
|
signature: LONGINT; { always 'aevt' }
|
|
majorVersion: INTEGER; { always 1 (for now) }
|
|
minorVersion: INTEGER; { always 1 (for now) }
|
|
END;
|
|
|
|
{ A Descriptor is chunk of data that has a type and length. }
|
|
AETFDescriptorPtr = ^AETFDescriptor;
|
|
AETFDescriptor = RECORD
|
|
dataType: ParamType;
|
|
dataLength: LONGINT;
|
|
{data: ARRAY [0..dataLength] OF Bytes;} { start of actual data }
|
|
END;
|
|
|
|
{ A Parameter is a Keyword and Descriptor. }
|
|
AETFParameterPtr = ^AETFParameter;
|
|
AETFParameter = RECORD
|
|
key: KeyWord;
|
|
descriptor: AETFDescriptor;
|
|
END;
|
|
|
|
{ standard keywords (used to distinguish Parameters) }
|
|
CONST
|
|
aeEndOfMetaDataKeyword = ';;;;';
|
|
aeDirectObjectKeyword = '----';
|
|
aeErrorNumberKeyword = 'errn';
|
|
|
|
|
|
{ standard parameter types }
|
|
CONST
|
|
aeListParamType = 'list';
|
|
aeAliasParamType = 'alis';
|
|
aeTemporaryIDParamType = 'tid ';
|
|
aeLongintParamType = 'long';
|
|
aeIntegerParamType = 'shor';
|
|
aeTextParamType = 'TEXT';
|
|
aeBooleanParamType = 'bool';
|
|
aeTrueParamType = 'true';
|
|
aeFalseParamType = 'fals';
|
|
aePropertyParamType = 'prop';
|
|
aeEnumerateParamType = 'enum';
|
|
|
|
|
|
{ Standard reply message }
|
|
TYPE
|
|
AppleEventReply = RECORD
|
|
messageHeader: AETFHeader; { == saeAnswer }
|
|
metaDataMark: KeyWord;
|
|
errorCodeHdr: AETFParameter; { == aeErrorNumberKeyword, aeLongintParamType }
|
|
errorValue: LONGINT; { sign-extended OSErr }
|
|
END;
|
|
|
|
|
|
{$ENDC} { UsingAppleEventsInternal }
|
|
|
|
{$IFC NOT UsingIncludes}
|
|
END.
|
|
{$ENDC}
|