diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/Navigation.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/Navigation.h')
| -rw-r--r-- | common/quicktime_win32/Navigation.h | 1256 |
1 files changed, 1256 insertions, 0 deletions
diff --git a/common/quicktime_win32/Navigation.h b/common/quicktime_win32/Navigation.h new file mode 100644 index 0000000..beefd00 --- /dev/null +++ b/common/quicktime_win32/Navigation.h @@ -0,0 +1,1256 @@ +/* + File: Navigation.h + + Contains: Navigation Services Interfaces + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1996-2001 by Apple Computer, Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __NAVIGATION__ +#define __NAVIGATION__ + +#ifndef __MACTYPES__ +#include <MacTypes.h> +#endif + +#ifndef __MACERRORS__ +#include <MacErrors.h> +#endif + +#ifndef __CODEFRAGMENTS__ +#include <CodeFragments.h> +#endif + +#ifndef __TRANSLATION__ +#include <Translation.h> +#endif + +#ifndef __MACWINDOWS__ +#include <MacWindows.h> +#endif + + + + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + +typedef UInt32 NavAskSaveChangesAction; +enum { + /* input action codes for NavAskSaveChanges() */ + kNavSaveChangesClosingDocument = 1, + kNavSaveChangesQuittingApplication = 2, + kNavSaveChangesOther = 0 +}; + + +typedef UInt32 NavAskSaveChangesResult; +enum { + /* result codes for NavAskSaveChanges() */ + kNavAskSaveChangesSave = 1, + kNavAskSaveChangesCancel = 2, + kNavAskSaveChangesDontSave = 3 +}; + + +typedef UInt32 NavAskDiscardChangesResult; +enum { + /* result codes for NavAskDiscardChanges() */ + kNavAskDiscardChanges = 1, + kNavAskDiscardChangesCancel = 2 +}; + + +typedef SInt16 NavFilterModes; +enum { + /* which elements are being filtered for objects: */ + kNavFilteringBrowserList = 0, + kNavFilteringFavorites = 1, + kNavFilteringRecents = 2, + kNavFilteringShortCutVolumes = 3, + kNavFilteringLocationPopup = 4 /* for v1.1 or greater */ +}; + + +enum { + kNavFileOrFolderVersion = 1 +}; + +struct NavFileOrFolderInfo { + UInt16 version; + Boolean isFolder; + Boolean visible; + UInt32 creationDate; + UInt32 modificationDate; + union { + struct { + Boolean locked; /* file is locked */ + Boolean resourceOpen; /* resource fork is opened */ + Boolean dataOpen; /* data fork is opened */ + Boolean reserved1; + UInt32 dataSize; /* size of the data fork */ + UInt32 resourceSize; /* size of the resource fork */ + FInfo finderInfo; /* more file info: */ + FXInfo finderXInfo; + } fileInfo; + struct { + Boolean shareable; + Boolean sharePoint; + Boolean mounted; + Boolean readable; + Boolean writeable; + Boolean reserved2; + UInt32 numberOfFiles; + DInfo finderDInfo; + DXInfo finderDXInfo; + OSType folderType; /* package type, For struct version >= 1 */ + OSType folderCreator; /* package creator, For struct version >= 1 */ + char reserved3[206]; + } folderInfo; + + } fileAndFolder; +}; +typedef struct NavFileOrFolderInfo NavFileOrFolderInfo; +union NavEventDataInfo { + EventRecord * event; /* for event processing */ + void * param; /* points to event specific data */ +}; +typedef union NavEventDataInfo NavEventDataInfo; +struct NavEventData { + NavEventDataInfo eventDataParms; /* the event data */ + SInt16 itemHit; /* the dialog item number, for v1.1 or greater */ +}; +typedef struct NavEventData NavEventData; + +/* + * NavDialogRef + * + * Summary: + * Opaque Navigation Services dialog identifier + * + * Discussion: + * A NavDialogRef is an opaque reference to an instance of a + * Navigation Services dialog. A new NavDialogRef is returned from + * any of the NavCreate*Dialog functions and is later disposed with + * the NavDialogDispose function. NavDialogRef is the new name for + * the NavContext type, and thus when a client's event proc is + * called, the value of the NavCBRec.context field is the same as + * the NavDialogRef returned from the corresponding + * NavCreate*Dialog. A NavDialogRef is distinct from, and is not + * interchangable with, a Dialog Manager DialogRef. + */ +typedef struct __NavDialog* NavDialogRef; +#if CALL_NOT_IN_CARBON +/* NavContext is the old name for NavDialogRef */ + +typedef NavDialogRef NavContext; +#endif /* CALL_NOT_IN_CARBON */ + + +/* + * NavUserAction + * + * Summary: + * Indicates an action taken by the user + * + * Discussion: + * When the user clicks a button at the bottom of a Nav Services + * dialog (or makes an equivalent mouse or key gesture), a + * kNavCBUserAction event is sent to the client's event proc + * indicating which action was taken. Often, the action also + * dismisses the dialog. User action events are only generated when + * using dialogs created from a NavCreate*Dialog function. In the + * special case of a modeless GetFile dialog (supported only on Mac + * OS X), the user can option-click on the open button to keep the + * dialog from being dismissed, but the kNavCBUserAction event is + * sent so the client can get the reply record and open the selected + * files. + */ +typedef UInt32 NavUserAction; +enum { + + /* + * No action taken. The dialog is still running or was terminated + * programmatically. + */ + kNavUserActionNone = 0, + + /* + * The user cancelled the dialog. + */ + kNavUserActionCancel = 1, + + /* + * The user clicked the Open button in the GetFile dialog. + */ + kNavUserActionOpen = 2, + + /* + * The user clicked the Save button in the PutFile dialog. + */ + kNavUserActionSaveAs = 3, + + /* + * The user clicked the Choose button in the ChooseFile, + * ChooseFolder, ChooseVolume or ChooseObject dialogs. + */ + kNavUserActionChoose = 4, + + /* + * The user clicked the New Folder button in the New Folder dialog. + */ + kNavUserActionNewFolder = 5, + + /* + * The user clicked the Save button in an AskSaveChanges dialog. + */ + kNavUserActionSaveChanges = 6, + + /* + * The user clicked the Don't Save button in an AskSaveChanges dialog. + */ + kNavUserActionDontSaveChanges = 7, + + /* + * The user clicked the Discard button in the AskDiscardChanges + * dialog. + */ + kNavUserActionDiscardChanges = 8, + + /* + * The user clicked the Review Unsaved button in the + * AskReviewDocuments dialog (used only on Mac OS X). + */ + kNavUserActionReviewDocuments = 9, + + /* + * The user clicked the Discard Changes button in the + * AskReviewDocuments dialog (used only on Mac OS X). + */ + kNavUserActionDiscardDocuments = 10 +}; + + + +enum { + kNavCBRecVersion = 1 +}; + + +/* + * NavCBRec + * + * Summary: + * A structure passed to event and preview callbacks + * + * Discussion: + * The NavCBRec structure is passed to the client's event proc or + * custom preview proc. It provides information that is specific to + * each event type. New for Carbon: the userAction field. + */ +struct NavCBRec { + + /* + * The version of the struct (currently 1) + */ + UInt16 version; + + /* + * The NavDialogRef this callback with which this call is associated + */ + NavDialogRef context; + + /* + * The dialog's window + */ + WindowRef window; + + /* + * The custom control area rectangle (window coordinates) + */ + Rect customRect; + + /* + * The custom preview area rectangle (window coordinates) + */ + Rect previewRect; + + /* + * The event-specific data, including the EventRecord, if any + */ + NavEventData eventData; + + /* + * The action taken by the user that generated a kNavCBUserAction + * event (Carbon dialogs only) + */ + NavUserAction userAction; + + /* + * Reserved for future use + */ + char reserved[218]; +}; +typedef struct NavCBRec NavCBRec; +typedef NavCBRec * NavCBRecPtr; + +/* + * NavEventCallbackMessage + * + * Summary: + * Identifies the message type being sent to the client's event proc + */ +typedef SInt32 NavEventCallbackMessage; +enum { + + /* + * An OS event has occurred. A pointer to the EventRecord is in the + * eventData.eventDataParms.event field of the NavCBRec. + */ + kNavCBEvent = 0, + + /* + * Negotiate for custom control space. Client can set change the + * customRect field in the NavCBRec to create space for a custom + * area. Nav Services will continue to send the kNavCBCustomize + * message until the client leaves the customRect field unchanged. + */ + kNavCBCustomize = 1, + + /* + * This message is sent after custom area negotiation, just before + * the dialog is made visible. Add your custom controls when you + * receive this message. + */ + kNavCBStart = 2, + + /* + * This is the last message sent, after the dialog has been hidden. + */ + kNavCBTerminate = 3, + + /* + * Sent when the dialog has been resized. Check the customRect and or + * previewRect values to see if any relayout is needed. Nav Services + * automatically moves controls in the custom area. + */ + kNavCBAdjustRect = 4, + + /* + * The target folder of the dialog has changed. The + * NavCBRec.eventData.eventDataParms.param field is an AEDesc* + * containing an descriptor of the new location (ususally an FSSpec + * or an FSRef). + */ + kNavCBNewLocation = 5, + + /* + * The target folder has changed to the user's desktop folder. + */ + kNavCBShowDesktop = 6, + + /* + * The user has selected or deselected a file or folder. The + * NavCBRec.eventData.eventDataParms.param field is an AEDescList* + * identifying the currently selected items. + */ + kNavCBSelectEntry = 7, + + /* + * The value of the Show/Format popup menu has changed. The + * NavCBRec.eventData.eventDataParms.param is a NavMenuItemSpec* + * identifying the menu item selected. If the dialog was created + * using the Carbon-only NavCreate*Dialog APIs, then the menuType + * field of the NavMenuItemSpec is set to the index into the client's + * CFArray of popupExtension strings (see NavDialogCreationOptions). + */ + kNavCBPopupMenuSelect = 8, + + /* + * Sent when the user has accepted (Open, Save, etc.). + */ + kNavCBAccept = 9, + + /* + * Sent when the user has cancelled the dialog. + */ + kNavCBCancel = 10, + + /* + * The custom preview area state has changed. The + * NavCBRec.eventData.eventDataParms.param is a Boolean* set to true + * if the preview area is visible or false if it is not. + */ + kNavCBAdjustPreview = 11, + + /* + * The user has taken one of the actions described in the + * NavUserAction definition. The action may or may not dismiss the + * dialog. The NavCBRec.userAction field indicates which action was + * taken (Carbon dialogs only). + */ + kNavCBUserAction = 12, + + /* + * The user has opened a folder or chosen a file. The client can + * block navigation or dismissal by setting the appropriate action + * state with the kNavCtlSetActionState NavCustomControl selector. + */ + kNavCBOpenSelection = (long)0x80000000 +}; + + +typedef void * NavCallBackUserData; +/* for events and customization: */ +typedef CALLBACK_API( void , NavEventProcPtr )(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, void *callBackUD); +/* for preview support: */ +typedef CALLBACK_API( Boolean , NavPreviewProcPtr )(NavCBRecPtr callBackParms, void *callBackUD); +/* filtering callback information: */ +typedef CALLBACK_API( Boolean , NavObjectFilterProcPtr )(AEDesc *theItem, void *info, void *callBackUD, NavFilterModes filterMode); +typedef STACK_UPP_TYPE(NavEventProcPtr) NavEventUPP; +typedef STACK_UPP_TYPE(NavPreviewProcPtr) NavPreviewUPP; +typedef STACK_UPP_TYPE(NavObjectFilterProcPtr) NavObjectFilterUPP; +/* + * NewNavEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( NavEventUPP ) +NewNavEventUPP(NavEventProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppNavEventProcInfo = 0x00000FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(NavEventUPP) NewNavEventUPP(NavEventProcPtr userRoutine) { return (NavEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavEventProcInfo, GetCurrentArchitecture()); } + #else + #define NewNavEventUPP(userRoutine) (NavEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavEventProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewNavPreviewUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( NavPreviewUPP ) +NewNavPreviewUPP(NavPreviewProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppNavPreviewProcInfo = 0x000003D0 }; /* pascal 1_byte Func(4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(NavPreviewUPP) NewNavPreviewUPP(NavPreviewProcPtr userRoutine) { return (NavPreviewUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavPreviewProcInfo, GetCurrentArchitecture()); } + #else + #define NewNavPreviewUPP(userRoutine) (NavPreviewUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavPreviewProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewNavObjectFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( NavObjectFilterUPP ) +NewNavObjectFilterUPP(NavObjectFilterProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppNavObjectFilterProcInfo = 0x00002FD0 }; /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(NavObjectFilterUPP) NewNavObjectFilterUPP(NavObjectFilterProcPtr userRoutine) { return (NavObjectFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavObjectFilterProcInfo, GetCurrentArchitecture()); } + #else + #define NewNavObjectFilterUPP(userRoutine) (NavObjectFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavObjectFilterProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeNavEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeNavEventUPP(NavEventUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeNavEventUPP(NavEventUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeNavEventUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeNavPreviewUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeNavPreviewUPP(NavPreviewUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeNavPreviewUPP(NavPreviewUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeNavPreviewUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeNavObjectFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeNavObjectFilterUPP(NavObjectFilterUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeNavObjectFilterUPP(NavObjectFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeNavObjectFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeNavEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeNavEventUPP( + NavEventCallbackMessage callBackSelector, + NavCBRecPtr callBackParms, + void * callBackUD, + NavEventUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeNavEventUPP(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, void * callBackUD, NavEventUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppNavEventProcInfo, callBackSelector, callBackParms, callBackUD); } + #else + #define InvokeNavEventUPP(callBackSelector, callBackParms, callBackUD, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppNavEventProcInfo, (callBackSelector), (callBackParms), (callBackUD)) + #endif +#endif + +/* + * InvokeNavPreviewUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +InvokeNavPreviewUPP( + NavCBRecPtr callBackParms, + void * callBackUD, + NavPreviewUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(Boolean) InvokeNavPreviewUPP(NavCBRecPtr callBackParms, void * callBackUD, NavPreviewUPP userUPP) { return (Boolean)CALL_TWO_PARAMETER_UPP(userUPP, uppNavPreviewProcInfo, callBackParms, callBackUD); } + #else + #define InvokeNavPreviewUPP(callBackParms, callBackUD, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppNavPreviewProcInfo, (callBackParms), (callBackUD)) + #endif +#endif + +/* + * InvokeNavObjectFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +InvokeNavObjectFilterUPP( + AEDesc * theItem, + void * info, + void * callBackUD, + NavFilterModes filterMode, + NavObjectFilterUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(Boolean) InvokeNavObjectFilterUPP(AEDesc * theItem, void * info, void * callBackUD, NavFilterModes filterMode, NavObjectFilterUPP userUPP) { return (Boolean)CALL_FOUR_PARAMETER_UPP(userUPP, uppNavObjectFilterProcInfo, theItem, info, callBackUD, filterMode); } + #else + #define InvokeNavObjectFilterUPP(theItem, info, callBackUD, filterMode, userUPP) (Boolean)CALL_FOUR_PARAMETER_UPP((userUPP), uppNavObjectFilterProcInfo, (theItem), (info), (callBackUD), (filterMode)) + #endif +#endif + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewNavEventProc(userRoutine) NewNavEventUPP(userRoutine) + #define NewNavPreviewProc(userRoutine) NewNavPreviewUPP(userRoutine) + #define NewNavObjectFilterProc(userRoutine) NewNavObjectFilterUPP(userRoutine) + #define CallNavEventProc(userRoutine, callBackSelector, callBackParms, callBackUD) InvokeNavEventUPP(callBackSelector, callBackParms, callBackUD, userRoutine) + #define CallNavPreviewProc(userRoutine, callBackParms, callBackUD) InvokeNavPreviewUPP(callBackParms, callBackUD, userRoutine) + #define CallNavObjectFilterProc(userRoutine, theItem, info, callBackUD, filterMode) InvokeNavObjectFilterUPP(theItem, info, callBackUD, filterMode, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + +typedef SInt32 NavCustomControlMessage; +enum { + kNavCtlShowDesktop = 0, /* show desktop, parms = nil */ + kNavCtlSortBy = 1, /* sort key field, parms->NavSortKeyField */ + kNavCtlSortOrder = 2, /* sort order, parms->NavSortOrder */ + kNavCtlScrollHome = 3, /* scroll list home, parms = nil */ + kNavCtlScrollEnd = 4, /* scroll list end, parms = nil */ + kNavCtlPageUp = 5, /* page list up, parms = nil */ + kNavCtlPageDown = 6, /* page list down, parms = nil */ + kNavCtlGetLocation = 7, /* get current location, parms<-AEDesc* */ + kNavCtlSetLocation = 8, /* set current location, parms->AEDesc* */ + kNavCtlGetSelection = 9, /* get current selection, parms<-AEDescList* */ + kNavCtlSetSelection = 10, /* set current selection, parms->AEDescList* */ + kNavCtlShowSelection = 11, /* make selection visible, parms = nil */ + kNavCtlOpenSelection = 12, /* open view of selection, parms = nil */ + kNavCtlEjectVolume = 13, /* eject volume, parms->vRefNum */ + kNavCtlNewFolder = 14, /* create a new folder, parms->StringPtr */ + kNavCtlCancel = 15, /* cancel dialog, parms = nil */ + kNavCtlAccept = 16, /* accept dialog default, parms = nil */ + kNavCtlIsPreviewShowing = 17, /* query preview status, parms<-Boolean */ + kNavCtlAddControl = 18, /* add one control to dialog, parms->ControlHandle */ + kNavCtlAddControlList = 19, /* add control list to dialog, parms->Handle (DITL rsrc) */ + kNavCtlGetFirstControlID = 20, /* get 1st control ID, parms<-UInt16 */ + kNavCtlSelectCustomType = 21, /* select a custom menu item parms->NavMenuItemSpec* */ + kNavCtlSelectAllType = 22, /* select an "All" menu item parms->SInt16 */ + kNavCtlGetEditFileName = 23, /* get save dlog's file name parms<-StringPtr */ + kNavCtlSetEditFileName = 24, /* set save dlog's file name parms->StringPtr */ + kNavCtlSelectEditFileName = 25, /* select save dlog file name parms->ControlEditTextSelectionRec*, v1.1 or greater */ + kNavCtlBrowserSelectAll = 26, /* re-scan the browser list parms = nil, v2.0 or greater */ + kNavCtlGotoParent = 27, /* navigate to parent parms = nil, v2.0 or greater */ + kNavCtlSetActionState = 28, /* restrict navigation parms->NavActionState (flags), v2.0 or greater */ + kNavCtlBrowserRedraw = 29, /* rescan browser list parms = nil, v2.0 or greater */ + kNavCtlTerminate = 30 /* terminate/dismiss dialog parms = nil, v2.0 or greater */ +}; + +typedef UInt32 NavActionState; +enum { + kNavNormalState = 0x00000000, /* normal/default state */ + kNavDontOpenState = 0x00000001, /* disallow opening files/folders */ + kNavDontSaveState = 0x00000002, /* disallow saving files */ + kNavDontChooseState = 0x00000004, /* disallow choosing objects */ + kNavDontNewFolderState = 0x00000010 /* disallow creating new folders */ +}; + +typedef UInt16 NavPopupMenuItem; +enum { + kNavAllKnownFiles = 0, + kNavAllReadableFiles = 1, + kNavAllFiles = 2 +}; + +typedef UInt16 NavSortKeyField; +enum { + kNavSortNameField = 0, + kNavSortDateField = 1 +}; + + +typedef UInt16 NavSortOrder; +enum { + kNavSortAscending = 0, + kNavSortDescending = 1 +}; + + +typedef UInt32 NavDialogOptionFlags; +enum { + kNavDefaultNavDlogOptions = 0x000000E4, /* use defaults for all the options */ + kNavNoTypePopup = 0x00000001, /* don't show file type/extension popup on Open/Save */ + kNavDontAutoTranslate = 0x00000002, /* don't automatically translate on Open */ + kNavDontAddTranslateItems = 0x00000004, /* don't add translation choices on Open/Save */ + kNavAllFilesInPopup = 0x00000010, /* "All Files" menu item in the type popup on Open */ + kNavAllowStationery = 0x00000020, /* allow saving of stationery files */ + kNavAllowPreviews = 0x00000040, /* allow preview to show */ + kNavAllowMultipleFiles = 0x00000080, /* allow multiple items to be selected */ + kNavAllowInvisibleFiles = 0x00000100, /* allow invisible items to be shown */ + kNavDontResolveAliases = 0x00000200, /* don't resolve aliases */ + kNavSelectDefaultLocation = 0x00000400, /* make the default location the browser selection */ + kNavSelectAllReadableItem = 0x00000800, /* make the dialog select "All Readable Documents" on open */ + kNavSupportPackages = 0x00001000, /* recognize file system packages, v2.0 or greater */ + kNavAllowOpenPackages = 0x00002000, /* allow opening of packages, v2.0 or greater */ + kNavDontAddRecents = 0x00004000, /* don't add chosen objects to the recents list, v2.0 or greater */ + kNavDontUseCustomFrame = 0x00008000, /* don't draw the custom area bevel frame, v2.0 or greater */ + kNavDontConfirmReplacement = 0x00010000, /* don't show the "Replace File?" alert on save conflict, v3.0 or greater */ + kNavPreserveSaveFileExtension = 0x00020000 /* extension in default file name is preserved and initially hidden, v3.1 or greater */ +}; + + +typedef UInt32 NavTranslationOptions; +enum { + kNavTranslateInPlace = 0, /* translate in place, replacing translation source file (default for Save) */ + kNavTranslateCopy = 1 /* translate to a copy of the source file (default for Open) */ +}; + + +enum { + kNavMenuItemSpecVersion = 0 +}; + +struct NavMenuItemSpec { + UInt16 version; + OSType menuCreator; + OSType menuType; + Str255 menuItemName; + char reserved[245]; +}; +typedef struct NavMenuItemSpec NavMenuItemSpec; +typedef NavMenuItemSpec * NavMenuItemSpecArrayPtr; +typedef NavMenuItemSpecArrayPtr * NavMenuItemSpecArrayHandle; +typedef NavMenuItemSpecArrayPtr NavMenuItemSpecPtr; +typedef NavMenuItemSpecArrayHandle NavMenuItemSpecHandle; +enum { + kNavGenericSignature = FOUR_CHAR_CODE('****') +}; + +struct NavTypeList { + OSType componentSignature; + short reserved; + short osTypeCount; + OSType osType[1]; +}; +typedef struct NavTypeList NavTypeList; +typedef NavTypeList * NavTypeListPtr; +typedef NavTypeListPtr * NavTypeListHandle; +enum { + kNavDialogOptionsVersion = 0 +}; + +struct NavDialogOptions { + UInt16 version; + NavDialogOptionFlags dialogOptionFlags; /* option flags for affecting the dialog's behavior */ + Point location; /* top-left location of the dialog, or {-1,-1} for default position */ + Str255 clientName; + Str255 windowTitle; + Str255 actionButtonLabel; /* label of the default button (or null string for default) */ + Str255 cancelButtonLabel; /* label of the cancel button (or null string for default) */ + Str255 savedFileName; /* default name for text box in NavPutFile (or null string for default) */ + Str255 message; /* custom message prompt (or null string for default) */ + UInt32 preferenceKey; /* a key for to managing preferences for using multiple utility dialogs */ + NavMenuItemSpecArrayHandle popupExtension; /* extended popup menu items, an array of NavMenuItemSpecs */ + char reserved[494]; +}; +typedef struct NavDialogOptions NavDialogOptions; +enum { + kNavReplyRecordVersion = 2 +}; + + +/* + * NavReplyRecord + * + * Summary: + * A structure describing the results of a Nav Services dialog + * + * Discussion: + * A reply record is the result of a Nav Services file dialog. Using + * the older API, which is always modal, the client passes the + * address of a reply record when invoking the dialog. In the Carbon + * API, dialogs may also be window modal or modeless, so the client + * requests the reply record by calling NavDialogGetReply when a + * kNavCBUserAction event is received. Either way, a reply record + * should be disposed of using NavDisposeReply. + */ +struct NavReplyRecord { + + /* + * The version of the structure. The first public version of the + * structure was version 0. Fields added after version 0, starting + * with the saveFileName field, are noted below. + */ + UInt16 version; + + /* + * True if the reply contains a non-null selection + */ + Boolean validRecord; + + /* + * True if this reply is from a PutFile dialog and the file to be + * saved already exists and needs to be replaced. The user has + * already been warned unless the kNavDontConfirmReplacement option + * flag is used. + */ + Boolean replacing; + + /* + * True if this reply is from a PutFile dialog and the user wants to + * save the file as stationery. + */ + Boolean isStationery; + + /* + * True if translation was performed on the file(s) to be opened or + * if transtlation will be needed on the file to be saved. + */ + Boolean translationNeeded; + + /* + * For GetFile or Choose dialogs, a list of items chosen by the user. + * For the older NavPutFile dialog, a list containing one item: an + * FSSpec of the file to be saved. ** IMPORTANT NOTE *** For the new + * Carbon-only PutFile dialog created with NavCreatePutFileDialog, + * the selection is a list containing one item: the DIRECTORY where + * the file is to be saved. The file name is obtained from the + * saveFileName field. When using the original modal API, each + * descriptor will contain an FSSpec (typeFSS). When using the new + * Carbon-only dialogs created via the NavCreate*Dialog functions, + * each descriptor could contain either an FSSpec (typeFSS, used on + * Mac OS 8 or 9) or an FSRef (typeFSRef, used on Mac OS X). This + * divergence is caused by the need to use FSRef (for Unicode/HFS+ + * support) on Mac OS X, while being unable to provide FSRefs on Mac + * OS 8.6. + */ + AEDescList selection; + + /* + * For NavPutFile: the script system associated with the name of the + * file to be saved. + */ + ScriptCode keyScript; + + /* + * A handle to an array of type FileTranslationSpec. Each array entry + * corresponds to an item in the selection and describes the + * translation that was performed (GetFile) or needs to be performed + * (PutFile) on that item. + */ + FileTranslationSpecArrayHandle fileTranslation; + + /* + * Reserved for private use. + */ + UInt32 reserved1; + + /* + * Carbon PutFile dialog only: the name of the file to be saved. This + * field contains the true file name to saved, even if the extension + * will be hidden from the user. This field was added in structure + * version 1. + */ + CFStringRef saveFileName; + + /* + * The extension on the name of the saved file should be hidden. Once + * the file has been saved, the client should call NavCompleteSave. + * NavCompleteSave will take care of hiding the extension on the + * file. However, the client needs to know that the extension is + * hidden so that it can display the document name correctly in the + * UI, such as in window titles and menus. This field is only used if + * the client has r equested extension preservation using the + * kNavPreserveSaveFileExtension dialog option flag. This field was + * added in structure version 2. + */ + Boolean saveFileExtensionHidden; + + /* + * Reserved for future use. + */ + UInt8 reserved2; + + /* + * Reserved for future use. + */ + char reserved[225]; +}; +typedef struct NavReplyRecord NavReplyRecord; +/* + * NavLoad() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: not available + */ +EXTERN_API( OSErr ) +NavLoad(void); + + +/* + * NavUnload() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: not available + */ +EXTERN_API( OSErr ) +NavUnload(void); + + +/* + * NavLibraryVersion() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( UInt32 ) +NavLibraryVersion(void); + + +/* + * NavGetDefaultDialogOptions() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavGetDefaultDialogOptions(NavDialogOptions * dialogOptions); + + + +/* + * NavGetFile() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavGetFile( + AEDesc * defaultLocation, /* can be NULL */ + NavReplyRecord * reply, + NavDialogOptions * dialogOptions, /* can be NULL */ + NavEventUPP eventProc, /* can be NULL */ + NavPreviewUPP previewProc, /* can be NULL */ + NavObjectFilterUPP filterProc, /* can be NULL */ + NavTypeListHandle typeList, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavPutFile() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavPutFile( + AEDesc * defaultLocation, /* can be NULL */ + NavReplyRecord * reply, + NavDialogOptions * dialogOptions, /* can be NULL */ + NavEventUPP eventProc, /* can be NULL */ + OSType fileType, + OSType fileCreator, + void * callBackUD); /* can be NULL */ + + +/* + * NavAskSaveChanges() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavAskSaveChanges( + NavDialogOptions * dialogOptions, + NavAskSaveChangesAction action, + NavAskSaveChangesResult * reply, + NavEventUPP eventProc, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavCustomAskSaveChanges() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavCustomAskSaveChanges( + NavDialogOptions * dialogOptions, + NavAskSaveChangesResult * reply, + NavEventUPP eventProc, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavAskDiscardChanges() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavAskDiscardChanges( + NavDialogOptions * dialogOptions, + NavAskDiscardChangesResult * reply, + NavEventUPP eventProc, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavChooseFile() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavChooseFile( + AEDesc * defaultLocation, /* can be NULL */ + NavReplyRecord * reply, + NavDialogOptions * dialogOptions, /* can be NULL */ + NavEventUPP eventProc, /* can be NULL */ + NavPreviewUPP previewProc, /* can be NULL */ + NavObjectFilterUPP filterProc, /* can be NULL */ + NavTypeListHandle typeList, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavChooseFolder() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavChooseFolder( + AEDesc * defaultLocation, /* can be NULL */ + NavReplyRecord * reply, + NavDialogOptions * dialogOptions, /* can be NULL */ + NavEventUPP eventProc, /* can be NULL */ + NavObjectFilterUPP filterProc, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavChooseVolume() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavChooseVolume( + AEDesc * defaultSelection, /* can be NULL */ + NavReplyRecord * reply, + NavDialogOptions * dialogOptions, /* can be NULL */ + NavEventUPP eventProc, /* can be NULL */ + NavObjectFilterUPP filterProc, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavChooseObject() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavChooseObject( + AEDesc * defaultLocation, /* can be NULL */ + NavReplyRecord * reply, + NavDialogOptions * dialogOptions, /* can be NULL */ + NavEventUPP eventProc, /* can be NULL */ + NavObjectFilterUPP filterProc, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavNewFolder() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavNewFolder( + AEDesc * defaultLocation, /* can be NULL */ + NavReplyRecord * reply, + NavDialogOptions * dialogOptions, /* can be NULL */ + NavEventUPP eventProc, /* can be NULL */ + void * callBackUD); /* can be NULL */ + + +/* + * NavTranslateFile() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavTranslateFile( + NavReplyRecord * reply, + NavTranslationOptions howToTranslate); + + +/* + * NavCompleteSave() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavCompleteSave( + NavReplyRecord * reply, + NavTranslationOptions howToTranslate); + + +/* + * NavCustomControl() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavCustomControl( + NavDialogRef dialog, + NavCustomControlMessage selector, + void * parms); + + +/* + * NavCreatePreview() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 2.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavCreatePreview( + AEDesc * theObject, + OSType previewDataType, + const void * previewData, + Size previewDataSize); + + +/* + * NavDisposeReply() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NavDisposeReply(NavReplyRecord * reply); + + +/* + * NavServicesCanRun() + * + * Availability: + * Non-Carbon CFM: in NavigationLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: not available + */ +EXTERN_API( Boolean ) +NavServicesCanRun(void); + + + +#if TARGET_RT_MAC_CFM +#ifdef __cplusplus + inline pascal Boolean NavServicesAvailable() { return ((NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress) && NavServicesCanRun()); } +#else + #define NavServicesAvailable() ((NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress) && NavServicesCanRun()) +#endif +#elif TARGET_RT_MAC_MACHO +/* Navigation is always available on OS X */ +#ifdef __cplusplus + inline pascal Boolean NavServicesAvailable() { return true; } +#else + #define NavServicesAvailable() (true) +#endif +#else +/* NavServicesAvailable() is implemented in Navigation.o for classic 68K clients*/ +#if CALL_NOT_IN_CARBON +/* + * NavServicesAvailable() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( Boolean ) +NavServicesAvailable(void); + + +#endif /* CALL_NOT_IN_CARBON */ + +#endif /* */ + + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __NAVIGATION__ */ + |