topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-LocationManager.h / h
/*
File: LocationManager.h
Contains: LocationManager (manages groups of settings)
Version: Technology: Mac OS 8
Release: QuickTime 6.0.2
Copyright: (c) 1995-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 __LOCATIONMANAGER__
define __LOCATIONMANAGER__
ifndef __APPLEEVENTS__
include <AppleEvents.h>
endif
ifndef __COMPONENTS__
include <Components.h>
endif
ifndef __DIALOGS__
include <Dialogs.h>
endif
ifndef __PROCESSES__
include <Processes.h>
endif
ifndef __STANDARDFILE__
include <StandardFile.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
/* Location Manager API Support -------------------------------------------------------------------- */
/* A Location Token uniquely identifies a Location on a machine... */
typedef struct OpaqueALMToken* ALMToken;
define kALMNoLocationToken ((ALMToken)(-1)) // ALMToken of "off" Location...
enum {
kALMLocationNameMaxLen = 31, /* name (actually imposed by file system)... */
kALMNoLocationIndex = -1 /* index for the "off" Location (kALMNoLocationToken)... */
};
typedef Str31 ALMLocationName;
/* Returned from ALMConfirmName... */
typedef SInt16 ALMConfirmChoice;
enum {
kALMConfirmRename = 1,
kALMConfirmReplace = 2
};
/* ALMConfirmName dialog item numbers for use in callbacks (ALM 2.0)... */
enum {
kALMDuplicateRenameButton = 1, /* if Window refcon is kALMDuplicateDialogRefCon... */
kALMDuplicateReplaceButton = 2,
kALMDuplicateCancelButton = 3,
kALMDuplicatePromptText = 5
};
enum {
kALMRenameRenameButton = 1, /* if Window refcon is kALMRenameDialogRefCon... */
kALMRenameCancelButton = 2,
kALMRenameEditText = 3,
kALMRenamePromptText = 4
};
/* Refcons of two windows in ALMConfirmName (ALM 2.0)... */
enum {
kALMDuplicateDialogRefCon = FOUR_CHAR_CODE('dupl'),
kALMRenameDialogRefCon = FOUR_CHAR_CODE('rnam')
};
/* Callback routine for Location awareness (mimics AppleEvents) in non-application code... */
typedef CALLBACK_API( void , ALMNotificationProcPtr )(AppleEvent *theEvent);
typedef STACK_UPP_TYPE(ALMNotificationProcPtr) ALMNotificationUPP;
if OPAQUE_UPP_TYPES
if CALL_NOT_IN_CARBON
EXTERN_API(ALMNotificationUPP)
NewALMNotificationUPP (ALMNotificationProcPtr userRoutine);
EXTERN_API(void)
DisposeALMNotificationUPP (ALMNotificationUPP userUPP);
EXTERN_API(void)
InvokeALMNotificationUPP (AppleEvent * theEvent,
ALMNotificationUPP userUPP);
endif /* CALL_NOT_IN_CARBON */
else
enum { uppALMNotificationProcInfo = 0x000000C0 }; /* pascal no_return_value Func(4_bytes) */
#define NewALMNotificationUPP(userRoutine) (ALMNotificationUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppALMNotificationProcInfo, GetCurrentArchitecture())
#define DisposeALMNotificationUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeALMNotificationUPP(theEvent, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppALMNotificationProcInfo, (theEvent))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
define NewALMNotificationProc(userRoutine) NewALMNotificationUPP(userRoutine)
define CallALMNotificationProc(userRoutine, theEvent) InvokeALMNotificationUPP(theEvent, userRoutine)
/* Notification AppleEvents sent to apps/registered code... */
enum {
kAELocationChangedNoticeKey = FOUR_CHAR_CODE('walk'), /* Current Location changed... */
kAELocationRescanNoticeKey = FOUR_CHAR_CODE('trip') /* Location created/renamed/deleted... */
};
/* ALMSwitchToLocation masks... */
typedef SInt32 ALMSwitchActionFlags;
enum {
kALMDefaultSwitchFlags = 0x00000000, /* No special action to take... */
kALMDontShowStatusWindow = 0x00000001, /* Suppress "switching" window... */
kALMSignalViaAE = 0x00000002 /* Switch by sending Finder AppleEvent... */
};
/* Parameters for Get/Put/Merge Location calls... */
typedef const OSType * ConstALMModuleTypeListPtr;
enum {
kALMAddAllOnSimple = 0, /* Add all single-instance, non-action modules... */
kALMAddAllOff = -1 /* Add all modules but turn them off... */
};
/* Item numbers for use in Get/Put/Merge Location filters... */
enum {
kALMLocationSelectButton = 1,
kALMLocationCancelButton = 2,
kALMLocationBalloonHelp = 3,
kALMLocationLocationList = 7,
kALMLocationLocationNameEdit = 10,
kALMLocationPromptText = 11
};
enum {
kALMLocationSaveButton = kALMLocationSelectButton
};
/* Location Manager Module API Support ------------------------------------------------------------- */
/* ALMGetScriptInfo stuff... */
enum {
kALMScriptInfoVersion = 2 /* Customarily put in resource for localization... */
};
struct ALMScriptManagerInfo {
SInt16 version; /* Set to kALMScriptInfoVersion... */
SInt16 scriptCode;
SInt16 regionCode;
SInt16 langCode;
SInt16 fontNum;
SInt16 fontSize;
};
typedef struct ALMScriptManagerInfo ALMScriptManagerInfo;
typedef ALMScriptManagerInfo * ALMScriptManagerInfoPtr;
/*
Alternate form of ScriptInfo is easier to localize in resources; it is used extensively in
samples and internally, so....
*/
struct ALMAltScriptManagerInfo {
SInt16 version;
SInt16 scriptCode;
SInt16 regionCode;
SInt16 langCode;
SInt16 fontSize;
Str63 fontName;
};
typedef struct ALMAltScriptManagerInfo ALMAltScriptManagerInfo;
typedef ALMAltScriptManagerInfo * ALMAltScriptManagerInfoPtr;
typedef ALMAltScriptManagerInfoPtr * ALMAltScriptManagerInfoHandle;
enum {
kALMAltScriptManagerInfoRsrcType = FOUR_CHAR_CODE('trip'),
kALMAltScriptManagerInfoRsrcID = 0
};
/* Reboot information used on ALMSetCurrent (input/output parameter)... */
typedef UInt32 ALMRebootFlags;
enum {
kALMNoChange = 0,
kALMAvailableNow = 1,
kALMFinderRestart = 2,
kALMProcesses = 3,
kALMExtensions = 4,
kALMWarmBoot = 5,
kALMColdBoot = 6,
kALMShutdown = 7
};
/*
File types and signatures...
Note: auto-routing of modules will not be supported for 'thng' files...
*/
enum {
kALMFileCreator = FOUR_CHAR_CODE('fall'), /* Creator of Location Manager files... */
kALMComponentModuleFileType = FOUR_CHAR_CODE('thng'), /* Type of a Component Manager Module file [v1.0]... */
kALMComponentStateModuleFileType = FOUR_CHAR_CODE('almn'), /* Type of a CM 'state' Module file... */
kALMComponentActionModuleFileType = FOUR_CHAR_CODE('almb'), /* Type of a CM 'action' Module file... */
kALMCFMStateModuleFileType = FOUR_CHAR_CODE('almm'), /* Type of a CFM 'state' Module file... */
kALMCFMActionModuleFileType = FOUR_CHAR_CODE('alma') /* Type of a CFM 'action' Module file... */
};
/* Component Manager 'thng' info... */
enum {
kALMComponentRsrcType = FOUR_CHAR_CODE('thng'),
kALMComponentType = FOUR_CHAR_CODE('walk')
};
/* CFM Modules require a bit of information (replacing some of the 'thng' resource)... */
enum {
kALMModuleInfoRsrcType = FOUR_CHAR_CODE('walk'),
kALMModuleInfoOriginalVersion = 0
};
/* These masks apply to the "Flags" field in the 'thng' or 'walk' resource... */
enum {
kALMMultiplePerLocation = 0x00000001, /* Module can be added more than once to a Location... */
kALMDescriptionGetsStale = 0x00000002 /* Descriptions may change though the setting didn't... */
};
/* Misc stuff for older implementations ------------------------------------------------------------ */
if OLDROUTINENAMES
/* Old error codes for compatibility - new names are in Errors interface... */
enum {
ALMInternalErr = -30049, /* use kALMInternalErr */
ALMLocationNotFound = -30048, /* use kALMLocationNotFoundErr */
ALMNoSuchModuleErr = -30047, /* use kALMNoSuchModuleErr */
ALMModuleCommunicationErr = -30046, /* use kALMModuleCommunicationErr */
ALMDuplicateModuleErr = -30045, /* use kALMDuplicateModuleErr */
ALMInstallationErr = -30044, /* use kALMInstallationErr */
ALMDeferSwitchErr = -30043 /* use kALMDeferSwitchErr */
};
/* Old ALMConfirmName constants... */
enum {
ALMConfirmRenameConfig = kALMConfirmRename,
ALMConfirmReplaceConfig = kALMConfirmReplace
};
/* Old AppleEvents... */
enum {
kAELocationNotice = kAELocationChangedNoticeKey
};
typedef ALMScriptManagerInfo ALMScriptMgrInfo;
typedef UInt32 ALMComponentFlagsEnum;
endif /* OLDROUTINENAMES */
/* Location Manager API ---------------------------------------------------------------------------- */
/* The following 7 routines are present if gestaltALMAttr has bit gestaltALMPresent set... */
if CALL_NOT_IN_CARBON
EXTERN_API( OSErr )
ALMGetCurrentLocation (SInt16 * index,
ALMToken * token,
ALMLocationName name) THREEWORDINLINE(0x303C, 0x0600, 0xAAA4);
EXTERN_API( OSErr )
ALMGetIndLocation (SInt16 index,
ALMToken * token,
ALMLocationName name) THREEWORDINLINE(0x303C, 0x0501, 0xAAA4);
EXTERN_API( OSErr )
ALMCountLocations (SInt16 * locationCount) THREEWORDINLINE(0x303C, 0x0202, 0xAAA4);
EXTERN_API( OSErr )
ALMSwitchToLocation (ALMToken newLocation,
ALMSwitchActionFlags switchFlags) THREEWORDINLINE(0x303C, 0x0403, 0xAAA4);
EXTERN_API( OSErr )
ALMRegisterNotifyProc (ALMNotificationUPP notificationProc,
const ProcessSerialNumber * whichPSN) THREEWORDINLINE(0x303C, 0x0404, 0xAAA4);
EXTERN_API( OSErr )
ALMRemoveNotifyProc (ALMNotificationUPP notificationProc,
const ProcessSerialNumber * whichPSN) THREEWORDINLINE(0x303C, 0x0405, 0xAAA4);
EXTERN_API( OSErr )
ALMConfirmName (ConstStr255Param message,
Str255 theName,
ALMConfirmChoice * choice,
ModalFilterUPP filter) THREEWORDINLINE(0x303C, 0x0806, 0xAAA4);
/* The following 3 routines are present if gestaltALMAttr has bit gestaltALMHasSFLocation set... */
EXTERN_API( OSErr )
ALMPutLocation (ConstStr255Param prompt,
ALMLocationName name,
SInt16 numTypes,
ConstALMModuleTypeListPtr typeList,
ModalFilterYDUPP filter,
void * yourDataPtr) THREEWORDINLINE(0x303C, 0x0B07, 0xAAA4);
EXTERN_API( OSErr )
ALMGetLocation (ConstStr255Param prompt,
ALMLocationName name,
ModalFilterYDUPP filter,
void * yourDataPtr) THREEWORDINLINE(0x303C, 0x0808, 0xAAA4);
EXTERN_API( OSErr )
ALMMergeLocation (ConstStr255Param prompt,
ALMLocationName name,
SInt16 numTypes,
ConstALMModuleTypeListPtr typeList,
ModalFilterYDUPP filter,
void * yourDataPtr) THREEWORDINLINE(0x303C, 0x0B09, 0xAAA4);
endif /* CALL_NOT_IN_CARBON */
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 /* __LOCATIONMANAGER__ */
(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.