mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
420 lines
15 KiB
420 lines
15 KiB
/*
|
|
File: Editions.h
|
|
|
|
Contains: Edition Manager Interfaces.
|
|
|
|
Version: Technology: System 7.5
|
|
Package: Universal Interfaces 2.1 in ÒMPW LatestÓ on ETO #18
|
|
|
|
Copyright: © 1984-1995 by Apple Computer, Inc.
|
|
All rights reserved.
|
|
|
|
Bugs?: If you find a problem with this file, use the Apple Bug Reporter
|
|
stack. Include the file and version information (from above)
|
|
in the problem description and send to:
|
|
Internet: [email protected]
|
|
AppleLink: APPLE.BUGS
|
|
|
|
*/
|
|
|
|
#ifndef __EDITIONS__
|
|
#define __EDITIONS__
|
|
|
|
|
|
#ifndef __MEMORY__
|
|
#include <Memory.h>
|
|
#endif
|
|
/* #include <Types.h> */
|
|
/* #include <ConditionalMacros.h> */
|
|
/* #include <MixedMode.h> */
|
|
|
|
#ifndef __TYPES__
|
|
#include <Types.h>
|
|
#endif
|
|
|
|
#ifndef __FILES__
|
|
#include <Files.h>
|
|
#endif
|
|
/* #include <OSUtils.h> */
|
|
/* #include <Finder.h> */
|
|
|
|
#ifndef __ALIASES__
|
|
#include <Aliases.h>
|
|
#endif
|
|
/* #include <AppleTalk.h> */
|
|
|
|
#ifndef __DIALOGS__
|
|
#include <Dialogs.h>
|
|
#endif
|
|
/* #include <Errors.h> */
|
|
/* #include <Menus.h> */
|
|
/* #include <Quickdraw.h> */
|
|
/* #include <QuickdrawText.h> */
|
|
/* #include <Controls.h> */
|
|
/* #include <Windows.h> */
|
|
/* #include <Events.h> */
|
|
/* #include <TextEdit.h> */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if PRAGMA_ALIGN_SUPPORTED
|
|
#pragma options align=mac68k
|
|
#endif
|
|
|
|
#if PRAGMA_IMPORT_SUPPORTED
|
|
#pragma import on
|
|
#endif
|
|
|
|
|
|
enum {
|
|
/* resource types */
|
|
rSectionType = 'sect', /* ResType of saved SectionRecords */
|
|
/* Finder types for edition files */
|
|
kPICTEditionFileType = 'edtp',
|
|
kTEXTEditionFileType = 'edtt',
|
|
ksndEditionFileType = 'edts',
|
|
kUnknownEditionFileType = 'edtu',
|
|
kPublisherDocAliasFormat = 'alis',
|
|
kPreviewFormat = 'prvw',
|
|
kFormatListFormat = 'fmts'
|
|
};
|
|
|
|
enum {
|
|
/* section types */
|
|
stSubscriber = 0x01,
|
|
stPublisher = 0x0A,
|
|
sumAutomatic = 0, /* subscriber update mode - Automatically */
|
|
sumManual = 1, /* subscriber update mode - Manually */
|
|
pumOnSave = 0, /* publisher update mode - OnSave */
|
|
pumManual = 1, /* publisher update mode - Manually */
|
|
kPartsNotUsed = 0,
|
|
kPartNumberUnknown = -1, /* misc */
|
|
kPreviewWidth = 120,
|
|
kPreviewHeight = 120,
|
|
/* bits for formatsMask */
|
|
kPICTformatMask = 1,
|
|
kTEXTformatMask = 2,
|
|
ksndFormatMask = 4,
|
|
/* pseudo-item hits for dialogHooks
|
|
the first if for NewPublisher or NewSubscriber Dialogs */
|
|
emHookRedrawPreview = 150,
|
|
/* the following are for SectionOptions Dialog */
|
|
emHookCancelSection = 160,
|
|
emHookGoToPublisher = 161,
|
|
emHookGetEditionNow = 162,
|
|
emHookSendEditionNow = 162,
|
|
emHookManualUpdateMode = 163,
|
|
emHookAutoUpdateMode = 164
|
|
};
|
|
|
|
enum {
|
|
/* the refcon field of the dialog record during a modalfilter
|
|
or dialoghook contains one the following */
|
|
emOptionsDialogRefCon = 'optn',
|
|
emCancelSectionDialogRefCon = 'cncl',
|
|
emGoToPubErrDialogRefCon = 'gerr',
|
|
kFormatLengthUnknown = -1
|
|
};
|
|
|
|
/* one byte, stSubscriber or stPublisher */
|
|
typedef SignedByte SectionType;
|
|
|
|
/* seconds since 1904 */
|
|
typedef unsigned long TimeStamp;
|
|
|
|
/* similar to ResType */
|
|
typedef FourCharCode FormatType;
|
|
|
|
/* used in Edition I/O */
|
|
typedef Handle EditionRefNum;
|
|
|
|
/* update modes */
|
|
/* sumAutomatic, pumSuspend, etc */
|
|
typedef short UpdateMode;
|
|
|
|
typedef struct SectionRecord SectionRecord;
|
|
|
|
typedef SectionRecord *SectionPtr, **SectionHandle;
|
|
|
|
struct SectionRecord {
|
|
SignedByte version; /* always 0x01 in system 7.0 */
|
|
SectionType kind; /* stSubscriber or stPublisher */
|
|
UpdateMode mode; /* auto or manual */
|
|
TimeStamp mdDate; /* last change in document */
|
|
long sectionID; /* app. specific, unique per document */
|
|
long refCon; /* application specific */
|
|
AliasHandle alias; /* handle to Alias Record */
|
|
long subPart; /* which part of container file */
|
|
SectionHandle nextSection; /* for linked list of app's Sections */
|
|
Handle controlBlock; /* used internally */
|
|
EditionRefNum refNum; /* used internally */
|
|
};
|
|
struct EditionContainerSpec {
|
|
FSSpec theFile;
|
|
ScriptCode theFileScript;
|
|
long thePart;
|
|
Str31 thePartName;
|
|
ScriptCode thePartScript;
|
|
};
|
|
typedef struct EditionContainerSpec EditionContainerSpec;
|
|
|
|
typedef EditionContainerSpec *EditionContainerSpecPtr;
|
|
|
|
struct EditionInfoRecord {
|
|
TimeStamp crDate; /* date EditionContainer was created */
|
|
TimeStamp mdDate; /* date of last change */
|
|
OSType fdCreator; /* file creator */
|
|
OSType fdType; /* file type */
|
|
EditionContainerSpec container; /* the Edition */
|
|
};
|
|
typedef struct EditionInfoRecord EditionInfoRecord;
|
|
|
|
struct NewPublisherReply {
|
|
Boolean canceled; /* O */
|
|
Boolean replacing;
|
|
Boolean usePart; /* I */
|
|
SInt8 filler;
|
|
Handle preview; /* I */
|
|
FormatType previewFormat; /* I */
|
|
EditionContainerSpec container; /* I/O */
|
|
};
|
|
typedef struct NewPublisherReply NewPublisherReply;
|
|
|
|
struct NewSubscriberReply {
|
|
Boolean canceled; /* O */
|
|
SignedByte formatsMask;
|
|
EditionContainerSpec container; /*I/O*/
|
|
};
|
|
typedef struct NewSubscriberReply NewSubscriberReply;
|
|
|
|
struct SectionOptionsReply {
|
|
Boolean canceled; /* O */
|
|
Boolean changed; /* O */
|
|
SectionHandle sectionH; /* I */
|
|
ResType action; /* O */
|
|
};
|
|
typedef struct SectionOptionsReply SectionOptionsReply;
|
|
|
|
typedef pascal Boolean (*ExpModalFilterProcPtr)(DialogPtr theDialog, EventRecord *theEvent, short itemOffset, short *itemHit, Ptr yourDataPtr);
|
|
typedef pascal short (*ExpDlgHookProcPtr)(short itemOffset, short itemHit, DialogPtr theDialog, Ptr yourDataPtr);
|
|
|
|
#if USESROUTINEDESCRIPTORS
|
|
typedef UniversalProcPtr ExpModalFilterUPP;
|
|
typedef UniversalProcPtr ExpDlgHookUPP;
|
|
#else
|
|
typedef ExpModalFilterProcPtr ExpModalFilterUPP;
|
|
typedef ExpDlgHookProcPtr ExpDlgHookUPP;
|
|
#endif
|
|
|
|
enum {
|
|
uppExpModalFilterProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogPtr)))
|
|
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*)))
|
|
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short*)))
|
|
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(Ptr))),
|
|
uppExpDlgHookProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(DialogPtr)))
|
|
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Ptr)))
|
|
};
|
|
|
|
#if USESROUTINEDESCRIPTORS
|
|
#define NewExpModalFilterProc(userRoutine) \
|
|
(ExpModalFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppExpModalFilterProcInfo, GetCurrentArchitecture())
|
|
#define NewExpDlgHookProc(userRoutine) \
|
|
(ExpDlgHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppExpDlgHookProcInfo, GetCurrentArchitecture())
|
|
#else
|
|
#define NewExpModalFilterProc(userRoutine) \
|
|
((ExpModalFilterUPP) (userRoutine))
|
|
#define NewExpDlgHookProc(userRoutine) \
|
|
((ExpDlgHookUPP) (userRoutine))
|
|
#endif
|
|
|
|
#if USESROUTINEDESCRIPTORS
|
|
#define CallExpModalFilterProc(userRoutine, theDialog, theEvent, itemOffset, itemHit, yourDataPtr) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppExpModalFilterProcInfo, (theDialog), (theEvent), (itemOffset), (itemHit), (yourDataPtr))
|
|
#define CallExpDlgHookProc(userRoutine, itemOffset, itemHit, theDialog, yourDataPtr) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppExpDlgHookProcInfo, (itemOffset), (itemHit), (theDialog), (yourDataPtr))
|
|
#else
|
|
#define CallExpModalFilterProc(userRoutine, theDialog, theEvent, itemOffset, itemHit, yourDataPtr) \
|
|
(*(userRoutine))((theDialog), (theEvent), (itemOffset), (itemHit), (yourDataPtr))
|
|
#define CallExpDlgHookProc(userRoutine, itemOffset, itemHit, theDialog, yourDataPtr) \
|
|
(*(userRoutine))((itemOffset), (itemHit), (theDialog), (yourDataPtr))
|
|
#endif
|
|
|
|
|
|
enum {
|
|
ioHasFormat,
|
|
ioReadFormat,
|
|
ioNewFormat,
|
|
ioWriteFormat
|
|
};
|
|
|
|
typedef SignedByte FormatIOVerb;
|
|
|
|
|
|
enum {
|
|
eoOpen,
|
|
eoClose,
|
|
eoOpenNew,
|
|
eoCloseNew,
|
|
eoCanSubscribe
|
|
};
|
|
|
|
typedef SignedByte EditionOpenerVerb;
|
|
|
|
struct FormatIOParamBlock {
|
|
long ioRefNum;
|
|
FormatType format;
|
|
long formatIndex;
|
|
unsigned long offset;
|
|
Ptr buffPtr;
|
|
unsigned long buffLen;
|
|
};
|
|
typedef struct FormatIOParamBlock FormatIOParamBlock;
|
|
|
|
typedef struct EditionOpenerParamBlock EditionOpenerParamBlock;
|
|
|
|
typedef pascal short (*FormatIOProcPtr)(FormatIOVerb selector, FormatIOParamBlock *PB);
|
|
typedef pascal short (*EditionOpenerProcPtr)(EditionOpenerVerb selector, EditionOpenerParamBlock *PB);
|
|
|
|
#if USESROUTINEDESCRIPTORS
|
|
typedef UniversalProcPtr FormatIOUPP;
|
|
typedef UniversalProcPtr EditionOpenerUPP;
|
|
#else
|
|
typedef FormatIOProcPtr FormatIOUPP;
|
|
typedef EditionOpenerProcPtr EditionOpenerUPP;
|
|
#endif
|
|
|
|
struct EditionOpenerParamBlock {
|
|
EditionInfoRecord info;
|
|
SectionHandle sectionH;
|
|
const FSSpec *document;
|
|
OSType fdCreator;
|
|
long ioRefNum;
|
|
FormatIOUPP ioProc;
|
|
Boolean success;
|
|
SignedByte formatsMask;
|
|
};
|
|
enum {
|
|
uppFormatIOProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FormatIOVerb)))
|
|
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(FormatIOParamBlock*))),
|
|
uppEditionOpenerProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(EditionOpenerVerb)))
|
|
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EditionOpenerParamBlock*)))
|
|
};
|
|
|
|
#if USESROUTINEDESCRIPTORS
|
|
#define NewFormatIOProc(userRoutine) \
|
|
(FormatIOUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppFormatIOProcInfo, GetCurrentArchitecture())
|
|
#define NewEditionOpenerProc(userRoutine) \
|
|
(EditionOpenerUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppEditionOpenerProcInfo, GetCurrentArchitecture())
|
|
#else
|
|
#define NewFormatIOProc(userRoutine) \
|
|
((FormatIOUPP) (userRoutine))
|
|
#define NewEditionOpenerProc(userRoutine) \
|
|
((EditionOpenerUPP) (userRoutine))
|
|
#endif
|
|
|
|
|
|
enum {
|
|
sectionEventMsgClass = 'sect',
|
|
sectionReadMsgID = 'read',
|
|
sectionWriteMsgID = 'writ',
|
|
sectionScrollMsgID = 'scrl',
|
|
sectionCancelMsgID = 'cncl'
|
|
};
|
|
|
|
enum {
|
|
currentEditionMgrVers = 0x0011
|
|
};
|
|
|
|
#if !CFMSYSTEMCALLS
|
|
extern pascal OSErr InitEditionPack(void)
|
|
FIVEWORDINLINE(0x3F3C, 0x0011, 0x303C, 0x0100, 0xA82D);
|
|
#else
|
|
#define InitEditionPack() InitEditionPackVersion(currentEditionMgrVers)
|
|
extern pascal OSErr InitEditionPackVersion(short curEditionMgrVers)
|
|
THREEWORDINLINE(0x303C, 0x0100, 0xA82D);
|
|
#endif
|
|
extern pascal OSErr NewSection(const EditionContainerSpec *container, ConstFSSpecPtr sectionDocument, SectionType kind, long sectionID, UpdateMode initalMode, SectionHandle *sectionH)
|
|
THREEWORDINLINE(0x303C, 0x0A02, 0xA82D);
|
|
extern pascal OSErr RegisterSection(const FSSpec *sectionDocument, SectionHandle sectionH, Boolean *aliasWasUpdated)
|
|
THREEWORDINLINE(0x303C, 0x0604, 0xA82D);
|
|
extern pascal OSErr UnRegisterSection(SectionHandle sectionH)
|
|
THREEWORDINLINE(0x303C, 0x0206, 0xA82D);
|
|
extern pascal OSErr IsRegisteredSection(SectionHandle sectionH)
|
|
THREEWORDINLINE(0x303C, 0x0208, 0xA82D);
|
|
extern pascal OSErr AssociateSection(SectionHandle sectionH, const FSSpec *newSectionDocument)
|
|
THREEWORDINLINE(0x303C, 0x040C, 0xA82D);
|
|
extern pascal OSErr CreateEditionContainerFile(const FSSpec *editionFile, OSType fdCreator, ScriptCode editionFileNameScript)
|
|
THREEWORDINLINE(0x303C, 0x050E, 0xA82D);
|
|
extern pascal OSErr DeleteEditionContainerFile(const FSSpec *editionFile)
|
|
THREEWORDINLINE(0x303C, 0x0210, 0xA82D);
|
|
extern pascal OSErr OpenEdition(SectionHandle subscriberSectionH, EditionRefNum *refNum)
|
|
THREEWORDINLINE(0x303C, 0x0412, 0xA82D);
|
|
extern pascal OSErr OpenNewEdition(SectionHandle publisherSectionH, OSType fdCreator, ConstFSSpecPtr publisherSectionDocument, EditionRefNum *refNum)
|
|
THREEWORDINLINE(0x303C, 0x0814, 0xA82D);
|
|
extern pascal OSErr CloseEdition(EditionRefNum whichEdition, Boolean successful)
|
|
THREEWORDINLINE(0x303C, 0x0316, 0xA82D);
|
|
extern pascal OSErr EditionHasFormat(EditionRefNum whichEdition, FormatType whichFormat, Size *formatSize)
|
|
THREEWORDINLINE(0x303C, 0x0618, 0xA82D);
|
|
extern pascal OSErr ReadEdition(EditionRefNum whichEdition, FormatType whichFormat, void *buffPtr, Size *buffLen)
|
|
THREEWORDINLINE(0x303C, 0x081A, 0xA82D);
|
|
extern pascal OSErr WriteEdition(EditionRefNum whichEdition, FormatType whichFormat, const void *buffPtr, Size buffLen)
|
|
THREEWORDINLINE(0x303C, 0x081C, 0xA82D);
|
|
extern pascal OSErr GetEditionFormatMark(EditionRefNum whichEdition, FormatType whichFormat, unsigned long *currentMark)
|
|
THREEWORDINLINE(0x303C, 0x061E, 0xA82D);
|
|
extern pascal OSErr SetEditionFormatMark(EditionRefNum whichEdition, FormatType whichFormat, unsigned long setMarkTo)
|
|
THREEWORDINLINE(0x303C, 0x0620, 0xA82D);
|
|
extern pascal OSErr GetEditionInfo(SectionHandle sectionH, EditionInfoRecord *editionInfo)
|
|
THREEWORDINLINE(0x303C, 0x0422, 0xA82D);
|
|
extern pascal OSErr GoToPublisherSection(const EditionContainerSpec *container)
|
|
THREEWORDINLINE(0x303C, 0x0224, 0xA82D);
|
|
extern pascal OSErr GetLastEditionContainerUsed(EditionContainerSpec *container)
|
|
THREEWORDINLINE(0x303C, 0x0226, 0xA82D);
|
|
extern pascal OSErr GetStandardFormats(const EditionContainerSpec *container, FormatType *previewFormat, Handle preview, Handle publisherAlias, Handle formats)
|
|
THREEWORDINLINE(0x303C, 0x0A28, 0xA82D);
|
|
extern pascal OSErr GetEditionOpenerProc(EditionOpenerUPP *opener)
|
|
THREEWORDINLINE(0x303C, 0x022A, 0xA82D);
|
|
extern pascal OSErr SetEditionOpenerProc(EditionOpenerUPP opener)
|
|
THREEWORDINLINE(0x303C, 0x022C, 0xA82D);
|
|
extern pascal OSErr CallEditionOpenerProc(EditionOpenerVerb selector, EditionOpenerParamBlock *PB, EditionOpenerUPP routine)
|
|
THREEWORDINLINE(0x303C, 0x052E, 0xA82D);
|
|
extern pascal OSErr CallFormatIOProc(FormatIOVerb selector, FormatIOParamBlock *PB, FormatIOUPP routine)
|
|
THREEWORDINLINE(0x303C, 0x0530, 0xA82D);
|
|
extern pascal OSErr NewSubscriberDialog(NewSubscriberReply *reply)
|
|
THREEWORDINLINE(0x303C, 0x0232, 0xA82D);
|
|
extern pascal OSErr NewSubscriberExpDialog(NewSubscriberReply *reply, Point where, short expansionDITLresID, ExpDlgHookUPP dlgHook, ExpModalFilterUPP filter, void *yourDataPtr)
|
|
THREEWORDINLINE(0x303C, 0x0B34, 0xA82D);
|
|
extern pascal OSErr NewPublisherDialog(NewPublisherReply *reply)
|
|
THREEWORDINLINE(0x303C, 0x0236, 0xA82D);
|
|
extern pascal OSErr NewPublisherExpDialog(NewPublisherReply *reply, Point where, short expansionDITLresID, ExpDlgHookUPP dlgHook, ExpModalFilterUPP filter, void *yourDataPtr)
|
|
THREEWORDINLINE(0x303C, 0x0B38, 0xA82D);
|
|
extern pascal OSErr SectionOptionsDialog(SectionOptionsReply *reply)
|
|
THREEWORDINLINE(0x303C, 0x023A, 0xA82D);
|
|
extern pascal OSErr SectionOptionsExpDialog(SectionOptionsReply *reply, Point where, short expansionDITLresID, ExpDlgHookUPP dlgHook, ExpModalFilterUPP filter, void *yourDataPtr)
|
|
THREEWORDINLINE(0x303C, 0x0B3C, 0xA82D);
|
|
|
|
#if PRAGMA_IMPORT_SUPPORTED
|
|
#pragma import off
|
|
#endif
|
|
|
|
#if PRAGMA_ALIGN_SUPPORTED
|
|
#pragma options align=reset
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __EDITIONS__ */
|