topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-Navigation.h / h
/*
File: Navigation.h
Contains: Navigation Services Interfaces
Version: Technology: Navigation 2.0
Release: QuickTime 6.0.2
Copyright: (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 __APPLEEVENTS__
include <AppleEvents.h>
endif
ifndef __TRANSLATION__
include <Translation.h>
endif
ifndef __MACWINDOWS__
include <MacWindows.h>
endif
ifndef __CODEFRAGMENTS__
include <CodeFragments.h>
endif
ifndef __MACERRORS__
include <MacErrors.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
enum {
kNavDialogOptionsVersion = 0,
kNavReplyRecordVersion = 0,
kNavCBRecVersion = 0,
kNavFileOrFolderVersion = 1,
kNavMenuItemSpecVersion = 0
};
typedef UInt16 NavDataVersion;
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 */
};
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;
OSType folderCreator;
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;
typedef UInt32 NavContext;
struct NavCBRec {
UInt16 version;
NavContext context; /* used by customization code to call Navigation Services */
WindowPtr window; /* the dialog */
Rect customRect; /* local coordinate rectangle of customization area */
Rect previewRect; /* local coordinate rectangle of the preview area */
NavEventData eventData;
char reserved[222];
};
typedef struct NavCBRec NavCBRec;
typedef NavCBRec * NavCBRecPtr;
enum {
kNavCBEvent = 0, /* an event has occurred (update, idle events, etc.) */
kNavCBCustomize = 1, /* protocol for negotiating customization space */
kNavCBStart = 2, /* the navigation dialog is starting up */
kNavCBTerminate = 3, /* the navigation dialog is closing down */
kNavCBAdjustRect = 4, /* the navigation dialog is being resized */
kNavCBNewLocation = 5, /* user has chosen a new location in the browser */
kNavCBShowDesktop = 6, /* user has navigated to the desktop */
kNavCBSelectEntry = 7, /* user has made a selection in the browser */
kNavCBPopupMenuSelect = 8, /* signifies that a popup menu selection was made */
kNavCBAccept = 9, /* user has accepted the navigation dialog */
kNavCBCancel = 10, /* user has cancelled the navigation dialog */
kNavCBAdjustPreview = 11, /* preview button was clicked or the preview was resized */
kNavCBOpenSelection = (long)0x80000000 /* user has opened or chosen an object, v2.0 or greater */
};
typedef SInt32 NavEventCallbackMessage;
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;
if OPAQUE_UPP_TYPES
EXTERN_API(NavEventUPP)
NewNavEventUPP (NavEventProcPtr userRoutine);
EXTERN_API(NavPreviewUPP)
NewNavPreviewUPP (NavPreviewProcPtr userRoutine);
EXTERN_API(NavObjectFilterUPP)
NewNavObjectFilterUPP (NavObjectFilterProcPtr userRoutine);
EXTERN_API(void)
DisposeNavEventUPP (NavEventUPP userUPP);
EXTERN_API(void)
DisposeNavPreviewUPP (NavPreviewUPP userUPP);
EXTERN_API(void)
DisposeNavObjectFilterUPP (NavObjectFilterUPP userUPP);
EXTERN_API(void)
InvokeNavEventUPP (NavEventCallbackMessage callBackSelector,
NavCBRecPtr callBackParms,
void * callBackUD,
NavEventUPP userUPP);
EXTERN_API(Boolean)
InvokeNavPreviewUPP (NavCBRecPtr callBackParms,
void * callBackUD,
NavPreviewUPP userUPP);
EXTERN_API(Boolean)
InvokeNavObjectFilterUPP (AEDesc * theItem,
void * info,
void * callBackUD,
NavFilterModes filterMode,
NavObjectFilterUPP userUPP);
else
enum { uppNavEventProcInfo = 0x00000FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
enum { uppNavPreviewProcInfo = 0x000003D0 }; /* pascal 1_byte Func(4_bytes, 4_bytes) */
enum { uppNavObjectFilterProcInfo = 0x00002FD0 }; /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
#define NewNavEventUPP(userRoutine) (NavEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavEventProcInfo, GetCurrentArchitecture())
#define NewNavPreviewUPP(userRoutine) (NavPreviewUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavPreviewProcInfo, GetCurrentArchitecture())
#define NewNavObjectFilterUPP(userRoutine) (NavObjectFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavObjectFilterProcInfo, GetCurrentArchitecture())
#define DisposeNavEventUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeNavPreviewUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeNavObjectFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeNavEventUPP(callBackSelector, callBackParms, callBackUD, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppNavEventProcInfo, (callBackSelector), (callBackParms), (callBackUD))
#define InvokeNavPreviewUPP(callBackParms, callBackUD, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppNavPreviewProcInfo, (callBackParms), (callBackUD))
#define InvokeNavObjectFilterUPP(theItem, info, callBackUD, filterMode, userUPP) (Boolean)CALL_FOUR_PARAMETER_UPP((userUPP), uppNavObjectFilterProcInfo, (theItem), (info), (callBackUD), (filterMode))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
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)
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 add the bevelled custom frame, v2.0 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) */
};
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;
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;
/* data returned by the utility dialogs: */
struct NavReplyRecord {
UInt16 version;
Boolean validRecord; /* open/save: true if the user confirmed a selection, false on cancel */
Boolean replacing; /* save: true if the user is overwriting an existing object for save */
Boolean isStationery; /* save: true if the user wants to save an object as stationery */
Boolean translationNeeded; /* save: translation is 'needed', open: translation 'has taken place' */
AEDescList selection; /* open/save: list of AppleEvent descriptors of the chosen object(s) */
ScriptCode keyScript; /* open/save: script in which the name of each item in 'selection' is to be displayed */
FileTranslationSpecArrayHandle fileTranslation; /* open/save: list of file translation specs of the chosen object(s), if translation is needed */
UInt32 reserved1;
char reserved[231];
};
typedef struct NavReplyRecord NavReplyRecord;
EXTERN_API( OSErr )
NavLoad (void);
EXTERN_API( OSErr )
NavUnload (void);
EXTERN_API( UInt32 )
NavLibraryVersion (void);
EXTERN_API( OSErr )
NavGetDefaultDialogOptions (NavDialogOptions * dialogOptions);
EXTERN_API( OSErr )
NavGetFile (AEDesc * defaultLocation, /* can be NULL */
NavReplyRecord * reply,
NavDialogOptions * dialogOptions,
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 */;
EXTERN_API( OSErr )
NavPutFile (AEDesc * defaultLocation, /* can be NULL */
NavReplyRecord * reply,
NavDialogOptions * dialogOptions,
NavEventUPP eventProc, /* can be NULL */
OSType fileType,
OSType fileCreator,
void * callBackUD) /* can be NULL */;
EXTERN_API( OSErr )
NavAskSaveChanges (NavDialogOptions * dialogOptions,
NavAskSaveChangesAction action,
NavAskSaveChangesResult * reply,
NavEventUPP eventProc, /* can be NULL */
void * callBackUD) /* can be NULL */;
EXTERN_API( OSErr )
NavCustomAskSaveChanges (NavDialogOptions * dialogOptions,
NavAskSaveChangesResult * reply,
NavEventUPP eventProc, /* can be NULL */
void * callBackUD) /* can be NULL */;
EXTERN_API( OSErr )
NavAskDiscardChanges (NavDialogOptions * dialogOptions,
NavAskDiscardChangesResult * reply,
NavEventUPP eventProc, /* can be NULL */
void * callBackUD) /* can be NULL */;
EXTERN_API( OSErr )
NavChooseFile (AEDesc * defaultLocation, /* can be NULL */
NavReplyRecord * reply,
NavDialogOptions * dialogOptions,
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 */;
EXTERN_API( OSErr )
NavChooseFolder (AEDesc * defaultLocation, /* can be NULL */
NavReplyRecord * reply,
NavDialogOptions * dialogOptions,
NavEventUPP eventProc, /* can be NULL */
NavObjectFilterUPP filterProc, /* can be NULL */
void * callBackUD) /* can be NULL */;
EXTERN_API( OSErr )
NavChooseVolume (AEDesc * defaultSelection, /* can be NULL */
NavReplyRecord * reply,
NavDialogOptions * dialogOptions,
NavEventUPP eventProc, /* can be NULL */
NavObjectFilterUPP filterProc, /* can be NULL */
void * callBackUD) /* can be NULL */;
EXTERN_API( OSErr )
NavChooseObject (AEDesc * defaultLocation, /* can be NULL */
NavReplyRecord * reply,
NavDialogOptions * dialogOptions,
NavEventUPP eventProc, /* can be NULL */
NavObjectFilterUPP filterProc, /* can be NULL */
void * callBackUD) /* can be NULL */;
EXTERN_API( OSErr )
NavNewFolder (AEDesc * defaultLocation, /* can be NULL */
NavReplyRecord * reply,
NavDialogOptions * dialogOptions,
NavEventUPP eventProc, /* can be NULL */
void * callBackUD) /* can be NULL */;
EXTERN_API( OSErr )
NavTranslateFile (NavReplyRecord * reply,
NavTranslationOptions howToTranslate);
EXTERN_API( OSErr )
NavCompleteSave (NavReplyRecord * reply,
NavTranslationOptions howToTranslate);
EXTERN_API( OSErr )
NavCustomControl (NavContext context,
NavCustomControlMessage selector,
void * parms);
EXTERN_API( OSErr )
NavCreatePreview (AEDesc * theObject,
OSType previewDataType,
const void * previewData,
Size previewDataSize);
EXTERN_API( OSErr )
NavDisposeReply (NavReplyRecord * reply);
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
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__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.