| #pragma once |
| |
| #include <MixedMode.h> |
| #include <Dialogs.h> |
| #include <Files.h> |
| #include <Windows.h> |
| #include <AppleEvents.h> |
| #include <StandardFile.h> |
| |
| #if defined(powerc) || defined (__powerc) |
| #pragma options align=mac68k |
| #endif |
| |
| typedef struct |
| { |
| FSSpec spec; // designates file on disk |
| long key; // reserved for future expansion |
| |
| char tree; // 0 for absolute, 1 for project, 2 for system |
| Boolean found; // FALSE if file couldn't be located; if so, all other info is moot |
| |
| OSType type; // file type of found file |
| OSType crtr; // signature of found file's creator |
| |
| short spare0; // reserved for future expansion |
| long spare1; |
| } ProjectEntry; |
| |
| enum |
| { |
| kNeitherTree, |
| kProjectTree, |
| kSystemTree |
| }; |
| |
| enum |
| { |
| kTHINKCProject, |
| kTHINKPascalProject, |
| kCodeWarriorProject |
| }; |
| |
| // masks for the "flags" argument to new-convention interfaces |
| |
| #define xfWindowOpen 0x00000001 |
| #define xfWindowChangeable 0x00000002 |
| #define xfHasSelection 0x00000004 |
| #define xfUseDefaults 0x00000008 |
| #define xfIsBBEditLite 0x00000040 |
| #define xfIsBBEditDemo 0x00000080 |
| |
| typedef struct |
| { |
| FSSpec spec; |
| OSType key; |
| |
| short error_kind; |
| long line_number; |
| |
| Str255 message; |
| } ErrorEntry; |
| |
| typedef enum |
| { |
| kNote = 0, |
| kError, |
| kWarning |
| } ErrorKind; |
| |
| #define kCurrentExternalVersion 5 // current version of callbacks |
| |
| // Universal callback interfaces |
| |
| #if USESROUTINEDESCRIPTORS |
| |
| #define ExtensionUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ExternalCallbackBlock *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr)))) |
| |
| #define NewExtensionUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ExternalCallbackBlock *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(AppleEvent *))) \ |
| | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(AppleEvent *)))) |
| |
| #define GetWindowContentsUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) |
| |
| #define GetSelectionUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *)))) |
| |
| #define SetSelectionUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))) |
| |
| #define GetDocInfoUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned char *))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short *))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long *)))) |
| |
| #define GetModDateUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) |
| |
| #define CopyUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Handle)))) |
| |
| #define PasteUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle)))) |
| |
| #define GetLastLineUPPInfo (kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(long)))) |
| |
| #define GetLineNumberUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) |
| |
| #define GetLineStartUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) |
| |
| #define GetLineEndUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) |
| |
| #define GetLinePosUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) |
| |
| #define InsertUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(char *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))) |
| |
| #define DeleteUPPInfo (kPascalStackBased) |
| |
| #define SetWindowContentsUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Handle)))) |
| |
| #define ContentsChangedUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))) |
| |
| #define GetFileTextUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(unsigned char *))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Boolean *)))) |
| |
| #define GetFolderUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *)))) |
| |
| #define OpenSeveralUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(StandardFileReply ***)))) |
| |
| #define CenterDialogUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(DialogPtr))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))) |
| |
| #define StandardFilterUPPInfo uppModalFilterProcInfo |
| |
| #define FrameDialogItemUPPInfo uppUserItemProcInfo |
| |
| #define NewDocumentUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(WindowPtr)))) |
| |
| #define OpenDocumentUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(WindowPtr)))) |
| |
| #define AllocateUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Handle))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean)))) |
| |
| #define FindPatternUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(char *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(char *))) \ |
| | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(Boolean)))) |
| |
| #define ReportOSErrorUPPInfo (kPascalStackBased) |
| |
| #define GetPreferenceUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ResType))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short *)))) |
| |
| #define SetPreferenceUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ResType))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short *)))) |
| |
| #define StartProgressUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean)))) |
| |
| #define DoProgressUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) |
| |
| #define DoneProgressUPPInfo (kPascalStackBased) |
| |
| #define GetProjectListUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short *))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short *))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ProjectEntry***)))) |
| |
| #define ProjectTextListUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Handle *)))) |
| |
| #define PresetUndoUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))) |
| |
| #define SetUndoUPPInfo (kPascalStackBased) |
| |
| #define OpenFileUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowPtr *)))) |
| |
| #define PrepareUndoUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))) |
| |
| #define CommitUndoUPPInfo (kPascalStackBased \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))) |
| |
| #define CreateResultsUPPInfo (kPascalStackBased \ |
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) \ |
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(unsigned char *))) \ |
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) \ |
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Handle))) \ |
| | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(WindowPtr *)))) |
| |
| typedef UniversalProcPtr GetWindowContentsProc; |
| typedef UniversalProcPtr GetSelectionProc; |
| typedef UniversalProcPtr SetSelectionProc; |
| typedef UniversalProcPtr GetDocInfoProc; |
| typedef UniversalProcPtr GetModDateProc; |
| typedef UniversalProcPtr CopyProc; |
| typedef UniversalProcPtr PasteProc; |
| |
| typedef UniversalProcPtr GetLastLineProc; |
| typedef UniversalProcPtr GetLineNumberProc; |
| typedef UniversalProcPtr GetLineStartProc; |
| typedef UniversalProcPtr GetLineEndProc; |
| typedef UniversalProcPtr GetLinePosProc; |
| |
| typedef UniversalProcPtr InsertProc; |
| typedef UniversalProcPtr DeleteProc; |
| |
| typedef UniversalProcPtr SetWindowContentsProc; |
| typedef UniversalProcPtr ContentsChangedProc; |
| |
| typedef UniversalProcPtr GetFileTextProc; |
| |
| typedef UniversalProcPtr GetFolderProc; |
| typedef UniversalProcPtr OpenSeveralProc; |
| |
| typedef UniversalProcPtr CenterDialogProc; |
| typedef UniversalProcPtr StandardFilterProc; |
| typedef UniversalProcPtr FrameDialogItemProc; |
| |
| typedef UniversalProcPtr NewDocumentProc; |
| typedef UniversalProcPtr OpenDocumentProc; |
| |
| typedef UniversalProcPtr AllocateProc; |
| typedef UniversalProcPtr FindPatternProc; |
| |
| typedef UniversalProcPtr ReportOSErrorProc; |
| |
| typedef UniversalProcPtr GetPreferenceProc; |
| typedef UniversalProcPtr SetPreferenceProc; |
| |
| typedef UniversalProcPtr StartProgressProc; |
| typedef UniversalProcPtr DoProgressProc; |
| typedef UniversalProcPtr DoneProgressProc; |
| |
| typedef UniversalProcPtr GetProjectListProc; |
| typedef UniversalProcPtr ProjectTextListProc; |
| |
| typedef UniversalProcPtr PresetUndoProc; |
| typedef UniversalProcPtr SetUndoProc; |
| |
| typedef UniversalProcPtr OpenFileProc; |
| |
| typedef UniversalProcPtr PrepareUndoProc; |
| typedef UniversalProcPtr CommitUndoProc; |
| |
| typedef UniversalProcPtr CreateResultsProc; |
| |
| #define CallGetWindowContents(proc, w) \ |
| (Handle)(CallUniversalProc(proc, GetWindowContentsUPPInfo, (w))) |
| |
| #define CallGetSelection(proc, selStart, selEnd, firstChar) \ |
| (CallUniversalProc(proc, GetSelectionUPPInfo, (selStart), (selEnd), (firstChar))) |
| |
| #define CallSetSelection(proc, selStart, selEnd, firstChar) \ |
| (CallUniversalProc(proc, SetSelectionUPPInfo, (selStart), (selEnd), (firstChar))) |
| |
| #define CallGetDocInfo(proc, w, name, vRefNum, dirID) \ |
| (CallUniversalProc(proc, GetDocInfoUPPInfo, (w), (name), (vRefNum), (dirID))) |
| |
| #define CallGetModDate(proc, w) \ |
| (CallUniversalProc(proc, GetModDateUPPInfo, (w))) |
| |
| #define CallCopy(proc) \ |
| (Handle)(CallUniversalProc(proc, CopyUPPInfo)) |
| |
| #define CallPaste(proc, h) \ |
| (CallUniversalProc(proc, PasteUPPInfo, (h))) |
| |
| #define CallGetLastLine(proc) \ |
| (CallUniversalProc(proc, GetLastLineUPPInfo)) |
| |
| #define CallGetLineNumber(proc, sel) \ |
| (CallUniversalProc(proc, GetLineNumberUPPInfo, (sel))) |
| |
| #define CallGetLineStart(proc, sel) \ |
| (CallUniversalProc(proc, GetLineStartUPPInfo, (sel))) |
| |
| #define CallGetLineEnd(proc, sel) \ |
| (CallUniversalProc(proc, GetLineEndUPPInfo, (sel))) |
| |
| #define CallGetLinePos(proc, sel) \ |
| (CallUniversalProc(proc, GetLinePosUPPInfo, (sel))) |
| |
| #define CallInsert(proc, text, len) \ |
| (CallUniversalProc(proc, InsertUPPInfo, (text), (len))) |
| |
| #define CallDelete(proc) \ |
| (CallUniversalProc(proc, DeleteUPPInfo)) |
| |
| #define CallSetWindowContents(proc, w, h) \ |
| (CallUniversalProc(proc, SetWindowContentsUPPInfo, (w), (h))) |
| |
| #define CallContentsChanged(proc, w) \ |
| (CallUniversalProc(proc, ContentsChangedUPPInfo, (w))) |
| |
| #define CallGetFileText(proc, vRefNum, dirID, name, canDispose) \ |
| (Handle)(CallUniversalProc(proc, GetFileTextUPPInfo, (vRefNum), (dirID), (name), (canDispose))) |
| |
| #define CallGetFolder(proc, prompt, vRefNum, dirID) \ |
| (Boolean)(CallUniversalProc(proc, GetFolderUPPInfo, (prompt), (vRefNum), (dirID))) |
| |
| #define CallOpenSeveral(proc, sort, file_count, files) \ |
| (Boolean)(CallUniversalProc(proc, OpenSeveralUPPInfo, (sort), (file_count), (files))) |
| |
| #define CallCenterDialog(proc, dialogID) \ |
| (DialogPtr)(CallUniversalProc(proc, CenterDialogUPPInfo, (dialogID))) |
| |
| #define CallStandardFilter(proc, d, event, item) \ |
| CallModalFilterProc(proc, (d), (event), (item)) |
| |
| #define CallFrameDialogItem(proc, d, item) \ |
| CallUserItemProc(proc, (d), (item)) |
| |
| #define CallNewDocument(proc) \ |
| (WindowPtr)(CallUniversalProc(proc, NewDocumentUPPInfo)) |
| |
| #define CallOpenDocument(proc) \ |
| (WindowPtr)(CallUniversalProc(proc, OpenDocumentUPPInfo)) |
| |
| #define CallAllocate(proc, size, clear) \ |
| (Handle)(CallUniversalProc(proc, AllocateUPPInfo, (size), (clear))) |
| |
| #define CallFindPattern(proc, text, text_len, text_offset, pat, pat_len, case_sens) \ |
| (CallUniversalProc(proc, FindPatternUPPInfo, (text), (text_len), (text_offset), \ |
| (pat), (pat_len), (case_sens))) |
| |
| #define CallReportOSError(proc, code) \ |
| (CallUniversalProc(proc, ReportOSErrorUPPInfo, (code))) |
| |
| #define CallGetPreference(proc, prefType, req_len, buffer, act_len) \ |
| (CallUniversalProc(proc, GetPreferenceUPPInfo, (prefType), (req_len), (buffer), (act_len))) |
| |
| #define CallSetPreference(proc, prefType, req_len, buffer, act_len) \ |
| (CallUniversalProc(proc, SetPreferenceUPPInfo, (prefType), (req_len), (buffer), (act_len))) |
| |
| #define CallStartProgress(proc, str, total, cancel_allowed) \ |
| (CallUniversalProc(proc, StartProgressUPPInfo, (str), (total), (cancel_allowed))) |
| |
| #define CallDoProgress(proc, done) \ |
| (Boolean)(CallUniversalProc(proc, DoProgressUPPInfo, (done))) |
| |
| #define CallDoneProgress(proc) \ |
| (CallUniversalProc(proc, DoneProgressUPPInfo)) |
| |
| #define CallGetProjectList(proc, spec, kind, count, entries) \ |
| (Boolean)(CallUniversalProc(proc, GetProjectListUPPInfo, (spec), (kind), (count), (entries))) |
| |
| #define CallProjectTextList(proc, spec, text) \ |
| (Boolean)(CallUniversalProc(proc, ProjectTextListUPPInfo, (spec), (text))) |
| |
| #define CallPresetUndo(proc) \ |
| (Boolean)(CallUniversalProc(proc, PresetUndoUPPInfo)) |
| |
| #define CallSetUndo(proc) \ |
| (CallUniversalProc(proc, SetUndoUPPInfo)) |
| |
| #define CallOpenFile(proc, spec, w) \ |
| (Boolean)(CallUniversalProc(proc, OpenFileUPPInfo, (spec), (w))) |
| |
| #define CallPrepareUndo(proc, undo_start, undo_end, sel_start, sel_end) \ |
| (Boolean)(CallUniversalProc(proc, PrepareUndoUPPInfo, (undo_start), (undo_end), \ |
| (sel_start), (sel_end))) |
| |
| #define CallCommitUndo(proc, new_end) \ |
| (CallUniversalProc(proc, CommitUndoUPPInfo, (new_end))) |
| |
| #define CallCreateResults(proc, title, count, results, w) \ |
| (Boolean)(CallUniversalProc(proc, CreateResultsUPPInfo, (title), (count), (results), (w))) |
| |
| #else |
| |
| typedef pascal Handle (*GetWindowContentsProc)(WindowPtr w); |
| typedef pascal void (*GetSelectionProc)(long *selStart, long *selEnd, long *firstChar); |
| typedef pascal void (*SetSelectionProc)(long selStart, long selEnd, long firstChar); |
| typedef pascal void (*GetDocInfoProc)(WindowPtr w, Str255 fName, short *vRefNum, long *dirID); |
| typedef pascal long (*GetModDateProc)(WindowPtr w); |
| typedef pascal Handle (*CopyProc)(void); |
| typedef pascal void (*PasteProc)(Handle pasteText); |
| |
| typedef pascal long (*GetLastLineProc)(void); |
| typedef pascal long (*GetLineNumberProc)(long selection); |
| typedef pascal long (*GetLineStartProc)(long selection); |
| typedef pascal long (*GetLineEndProc)(long selection); |
| typedef pascal long (*GetLinePosProc)(long line); |
| |
| typedef pascal void (*InsertProc)(char *text, long len); |
| typedef pascal void (*DeleteProc)(void); |
| |
| typedef pascal void (*SetWindowContentsProc)(WindowPtr w, Handle h); |
| typedef pascal void (*ContentsChangedProc)(WindowPtr w); |
| |
| typedef pascal Handle (*GetFileTextProc)(short vRefNum, long dirID, Str255 fName, Boolean *canDispose); |
| |
| typedef pascal Boolean (*GetFolderProc)(Str255 prompt, short *vRefNum, long *dirID); |
| typedef pascal Boolean (*OpenSeveralProc)(Boolean sort, short *file_count, StandardFileReply ***files); |
| |
| typedef pascal DialogPtr (*CenterDialogProc)(short dialogID); |
| typedef pascal Boolean (*StandardFilterProc)(DialogPtr d, EventRecord *event, short *item); |
| typedef pascal void (*FrameDialogItemProc)(DialogPtr d, short item); |
| |
| typedef pascal WindowPtr (*NewDocumentProc)(void); |
| typedef pascal WindowPtr (*OpenDocumentProc)(void); |
| |
| typedef pascal Handle (*AllocateProc)(long size, Boolean clear); |
| typedef pascal long (*FindPatternProc)(char *text, long text_len, long text_offset, |
| char *pat, long pat_len, |
| Boolean case_sensitive); |
| |
| typedef pascal void (*ReportOSErrorProc)(short code); |
| |
| typedef pascal void (*GetPreferenceProc)(ResType prefType, short req_len, void *buffer, short *act_len); |
| typedef pascal void (*SetPreferenceProc)(ResType prefType, short req_len, void *buffer, short *act_len); |
| |
| typedef pascal void (*StartProgressProc)(Str255 str, long total, Boolean cancel_allowed); |
| typedef pascal Boolean (*DoProgressProc)(long done); |
| typedef pascal void (*DoneProgressProc)(void); |
| |
| typedef pascal Boolean (*GetProjectListProc)(FSSpec *spec, short *kind, short *count, ProjectEntry ***entries); |
| typedef pascal Boolean (*ProjectTextListProc)(FSSpec *spec, Handle *text); |
| |
| typedef pascal Boolean (*PresetUndoProc)(void); |
| typedef pascal void (*SetUndoProc)(void); |
| |
| typedef pascal Boolean (*OpenFileProc)(FSSpec *spec, WindowPtr *w); |
| |
| typedef pascal Boolean (*PrepareUndoProc)(long undo_start, long undo_end, |
| long sel_start, long sel_end); |
| typedef pascal void (*CommitUndoProc)(long new_end); |
| |
| typedef pascal Boolean (*CreateResultsProc)(Str255 title, short count, Handle results, WindowPtr *w); |
| |
| #define CallGetWindowContents(proc, w) \ |
| ((proc))((w)) |
| |
| #define CallGetSelection(proc, selStart, selEnd, firstChar) \ |
| ((proc))((selStart), (selEnd), (firstChar)) |
| |
| #define CallSetSelection(proc, selStart, selEnd, firstChar) \ |
| ((proc))((selStart), (selEnd), (firstChar)) |
| |
| #define CallGetDocInfo(proc, w, name, vRefNum, dirID) \ |
| ((proc))((w), (name), (vRefNum), (dirID)) |
| |
| #define CallGetModDate(proc, w) \ |
| ((proc))((w)) |
| |
| #define CallCopy(proc) \ |
| ((proc))() |
| |
| #define CallPaste(proc, h) \ |
| ((proc))((h)) |
| |
| #define CallGetLastLine(proc) \ |
| ((proc))() |
| |
| #define CallGetLineNumber(proc, sel) \ |
| ((proc))((sel)) |
| |
| #define CallGetLineStart(proc, sel) \ |
| ((proc))((sel)) |
| |
| #define CallGetLineEnd(proc, sel) \ |
| ((proc))((sel)) |
| |
| #define CallGetLinePos(proc, sel) \ |
| ((proc))((sel)) |
| |
| #define CallInsert(proc, text, len) \ |
| ((proc))((text), (len)) |
| |
| #define CallDelete(proc) \ |
| ((proc))() |
| |
| #define CallSetWindowContents(proc, w, h) \ |
| ((proc))((w), (h)) |
| |
| #define CallContentsChanged(proc, w) \ |
| ((proc))((w)) |
| |
| #define CallGetFileText(proc, vRefNum, dirID, name, canDispose) \ |
| ((proc))((vRefNum), (dirID), (name), (canDispose)) |
| |
| #define CallGetFolder(proc, prompt, vRefNum, dirID) \ |
| ((proc))((prompt), (vRefNum), (dirID)) |
| |
| #define CallOpenSeveral(proc, sort, file_count, files) \ |
| ((proc))((sort), (file_count), (files)) |
| |
| #define CallCenterDialog(proc, dialogID) \ |
| ((proc))((dialogID)) |
| |
| #define CallStandardFilter(proc, d, event, item) \ |
| ((proc))((d), (event), (item)) |
| |
| #define CallFrameDialogItem(proc, d, item) \ |
| ((proc))((d), (item)) |
| |
| #define CallNewDocument(proc) \ |
| ((proc))() |
| |
| #define CallOpenDocument(proc) \ |
| ((proc))() |
| |
| #define CallAllocate(proc, size, clear) \ |
| ((proc))((size), (clear)) |
| |
| #define CallFindPattern(proc, text, text_len, text_offset, pat, pat_len, case_sens) \ |
| ((proc))((text), (text_len), (text_offset), (pat), (pat_len), (case_sens)) |
| |
| #define CallReportOSError(proc, code) \ |
| ((proc))((code)) |
| |
| #define CallGetPreference(proc, prefType, req_len, buffer, act_len) \ |
| ((proc))((prefType), (req_len), (buffer), (act_len)) |
| |
| #define CallSetPreference(proc, prefType, req_len, buffer, act_len) \ |
| ((proc))((prefType), (req_len), (buffer), (act_len)) |
| |
| #define CallStartProgress(proc, str, total, cancel_allowed) \ |
| ((proc))((str), (total), (cancel_allowed)) |
| |
| #define CallDoProgress(proc, done) \ |
| ((proc))((done)) |
| |
| #define CallDoneProgress(proc) \ |
| ((proc))() |
| |
| #define CallGetProjectList(proc, spec, kind, count, entries) \ |
| ((proc))((spec), (kind), (count), (entries)) |
| |
| #define CallProjectTextList(proc, spec, text) \ |
| ((proc))((spec), (text)) |
| |
| #define CallPresetUndo(proc) \ |
| ((proc))() |
| |
| #define CallSetUndo(proc) \ |
| ((proc))() |
| |
| #define CallOpenFile(proc, spec, w) \ |
| ((proc))((spec), (w)) |
| |
| #define CallPrepareUndo(proc, undo_start, undo_end, sel_start, sel_end) \ |
| ((proc))((undo_start), (undo_end), (sel_start), (sel_end)) |
| |
| #define CallCommitUndo(proc, new_end) \ |
| ((proc))((new_end)) |
| |
| #define CallCreateResults(proc, title, count, results, w) \ |
| ((proc))((title), (count), (results), (w)) |
| |
| #endif |
| |
| |
| typedef struct |
| { |
| short version; |
| |
| // version 1 callbacks |
| |
| GetWindowContentsProc GetWindowContents; |
| GetSelectionProc GetSelection; |
| SetSelectionProc SetSelection; |
| GetDocInfoProc GetDocInfo; |
| GetModDateProc GetModDate; |
| CopyProc Copy; |
| PasteProc Paste; |
| |
| // version 2 callbacks |
| |
| /* Text-Editing stuff */ |
| GetLastLineProc GetLastLine; |
| GetLineNumberProc GetLineNumber; |
| GetLineStartProc GetLineStart; |
| GetLineEndProc GetLineEnd; |
| GetLinePosProc GetLinePos; |
| |
| InsertProc Insert; |
| DeleteProc Delete; |
| |
| /* Getting and Setting window text */ |
| SetWindowContentsProc SetWindowContents; |
| ContentsChangedProc ContentsChanged; |
| |
| /* Reading file text */ |
| GetFileTextProc GetFileText; |
| |
| /* Direct user-interface calls */ |
| GetFolderProc GetFolder; |
| OpenSeveralProc OpenSeveral; |
| |
| CenterDialogProc CenterDialog; |
| StandardFilterProc StandardFilter; |
| FrameDialogItemProc FrameDialogItem; |
| |
| NewDocumentProc NewDocument; |
| OpenDocumentProc OpenDocument; |
| |
| /* Utility Routines */ |
| AllocateProc Allocate; |
| FindPatternProc FindPattern; |
| |
| ReportOSErrorProc ReportOSError; |
| |
| /* Preference routines */ |
| GetPreferenceProc GetPreference; |
| SetPreferenceProc SetPreference; |
| |
| /* Progress routines */ |
| StartProgressProc StartProgress; |
| DoProgressProc DoProgress; |
| DoneProgressProc DoneProgress; |
| |
| // Version 3 callbacks |
| GetProjectListProc GetProjectList; |
| ProjectTextListProc ProjectTextList; |
| |
| // version 4 callbacks |
| |
| PresetUndoProc PresetUndo; |
| SetUndoProc SetUndo; |
| |
| OpenFileProc OpenFile; |
| |
| // version 5 callbacks |
| |
| PrepareUndoProc PrepareUndo; |
| CommitUndoProc CommitUndo; |
| |
| CreateResultsProc CreateResults; |
| |
| } ExternalCallbackBlock; |
| |
| #if defined(powerc) || defined (__powerc) |
| #pragma options align=reset |
| #endif |
| |
| /* |
| 'main' for a BBXT is declared: |
| |
| pascal void main(ExternalCallbackBlock *callbacks, WindowPtr w); [C] |
| |
| The 'new' calling convention, which passes more information |
| and allows scriptability, is this: |
| |
| pascal OSErr main(ExternalCallbackBlock *callbacks, WindowPtr w, long flags, AppleEvent *event, AppleEvent *reply); |
| */ |