topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-StandardFile.h / h



  /*
       File:       StandardFile.h
   
       Contains:   Standard File package Interfaces.
   
       Version:    Technology: System 7.5
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1990-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 __STANDARDFILE__
  define __STANDARDFILE__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __DIALOGS__
  include <Dialogs.h>
  endif
  
  ifndef __FILES__
  include <Files.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 {
                                                                  /* resource IDs of pre-7.0 get and put dialogs */
      putDlgID                    = -3999,
      getDlgID                    = -4000
  };
  
  enum {
                                                                  /* item offsets of pre-7.0 get and put dialogs */
      putSave                     = 1,
      putCancel                   = 2,
      putEject                    = 5,
      putDrive                    = 6,
      putName                     = 7,
      getOpen                     = 1,
      getCancel                   = 3,
      getEject                    = 5,
      getDrive                    = 6,
      getNmList                   = 7,
      getScroll                   = 8
  };
  
  enum {
                                                                  /* resource IDs of 7.0 get and put dialogs */
      sfPutDialogID               = -6043,
      sfGetDialogID               = -6042
  };
  
  enum {
                                                                  /* item offsets of 7.0 get and put dialogs */
      sfItemOpenButton            = 1,
      sfItemCancelButton          = 2,
      sfItemBalloonHelp           = 3,
      sfItemVolumeUser            = 4,
      sfItemEjectButton           = 5,
      sfItemDesktopButton         = 6,
      sfItemFileListUser          = 7,
      sfItemPopUpMenuUser         = 8,
      sfItemDividerLinePict       = 9,
      sfItemFileNameTextEdit      = 10,
      sfItemPromptStaticText      = 11,
      sfItemNewFolderUser         = 12
  };
  
  enum {
                                                                  /* pseudo-item hits for use in DlgHook */
      sfHookFirstCall             = -1,
      sfHookCharOffset            = 0x1000,
      sfHookNullEvent             = 100,
      sfHookRebuildList           = 101,
      sfHookFolderPopUp           = 102,
      sfHookOpenFolder            = 103,                          /* the following are only in system 7.0+ */
      sfHookLastCall              = -2,
      sfHookOpenAlias             = 104,
      sfHookGoToDesktop           = 105,
      sfHookGoToAliasTarget       = 106,
      sfHookGoToParent            = 107,
      sfHookGoToNextDrive         = 108,
      sfHookGoToPrevDrive         = 109,
      sfHookChangeSelection       = 110,
      sfHookSetActiveOffset       = 200
  };
  
  /* the refcon field of the dialog record during a
   modalfilter or dialoghook contains one of the following */
  enum {
      sfMainDialogRefCon          = FOUR_CHAR_CODE('stdf'),
      sfNewFolderDialogRefCon     = FOUR_CHAR_CODE('nfdr'),
      sfReplaceDialogRefCon       = FOUR_CHAR_CODE('rplc'),
      sfStatWarnDialogRefCon      = FOUR_CHAR_CODE('stat'),
      sfLockWarnDialogRefCon      = FOUR_CHAR_CODE('lock'),
      sfErrorDialogRefCon         = FOUR_CHAR_CODE('err ')
  };
  
  struct SFReply {
      Boolean                         good;
      Boolean                         copy;
      OSType                          fType;
      short                           vRefNum;
      short                           version;
      StrFileName                     fName;                      /* a Str63 on MacOS */
  };
  typedef struct SFReply                  SFReply;
  
  struct StandardFileReply {
      Boolean                         sfGood;
      Boolean                         sfReplacing;
      OSType                          sfType;
      FSSpec                          sfFile;
      ScriptCode                      sfScript;
      short                           sfFlags;
      Boolean                         sfIsFolder;
      Boolean                         sfIsVolume;
      long                            sfReserved1;
      short                           sfReserved2;
  };
  typedef struct StandardFileReply        StandardFileReply;
  /* for CustomXXXFile, ActivationOrderListPtr parameter is a pointer to an array of item numbers */
  
  typedef const short *                   ActivationOrderListPtr;
  typedef CALLBACK_API( short , DlgHookProcPtr )(short item, DialogPtr theDialog);
  typedef CALLBACK_API( Boolean , FileFilterProcPtr )(CInfoPBPtr pb);
  /* the following also include an extra parameter of "your data pointer" */
  typedef CALLBACK_API( short , DlgHookYDProcPtr )(short item, DialogPtr theDialog, void *yourDataPtr);
  typedef CALLBACK_API( Boolean , ModalFilterYDProcPtr )(DialogPtr theDialog, EventRecord *theEvent, short *itemHit, void *yourDataPtr);
  typedef CALLBACK_API( Boolean , FileFilterYDProcPtr )(CInfoPBPtr pb, void *yourDataPtr);
  typedef CALLBACK_API( void , ActivateYDProcPtr )(DialogPtr theDialog, short itemNo, Boolean activating, void *yourDataPtr);
  typedef STACK_UPP_TYPE(DlgHookProcPtr)                          DlgHookUPP;
  typedef STACK_UPP_TYPE(FileFilterProcPtr)                       FileFilterUPP;
  typedef STACK_UPP_TYPE(DlgHookYDProcPtr)                        DlgHookYDUPP;
  typedef STACK_UPP_TYPE(ModalFilterYDProcPtr)                    ModalFilterYDUPP;
  typedef STACK_UPP_TYPE(FileFilterYDProcPtr)                     FileFilterYDUPP;
  typedef STACK_UPP_TYPE(ActivateYDProcPtr)                       ActivateYDUPP;
  if OPAQUE_UPP_TYPES
  if CALL_NOT_IN_CARBON
      EXTERN_API(DlgHookUPP)
      NewDlgHookUPP                  (DlgHookProcPtr          userRoutine);
  
      EXTERN_API(FileFilterUPP)
      NewFileFilterUPP               (FileFilterProcPtr       userRoutine);
  
      EXTERN_API(DlgHookYDUPP)
      NewDlgHookYDUPP                (DlgHookYDProcPtr        userRoutine);
  
      EXTERN_API(ModalFilterYDUPP)
      NewModalFilterYDUPP            (ModalFilterYDProcPtr    userRoutine);
  
      EXTERN_API(FileFilterYDUPP)
      NewFileFilterYDUPP             (FileFilterYDProcPtr     userRoutine);
  
      EXTERN_API(ActivateYDUPP)
      NewActivateYDUPP               (ActivateYDProcPtr       userRoutine);
  
      EXTERN_API(void)
      DisposeDlgHookUPP              (DlgHookUPP              userUPP);
  
      EXTERN_API(void)
      DisposeFileFilterUPP           (FileFilterUPP           userUPP);
  
      EXTERN_API(void)
      DisposeDlgHookYDUPP            (DlgHookYDUPP            userUPP);
  
      EXTERN_API(void)
      DisposeModalFilterYDUPP        (ModalFilterYDUPP        userUPP);
  
      EXTERN_API(void)
      DisposeFileFilterYDUPP         (FileFilterYDUPP         userUPP);
  
      EXTERN_API(void)
      DisposeActivateYDUPP           (ActivateYDUPP           userUPP);
  
      EXTERN_API(short)
      InvokeDlgHookUPP               (short                   item,
                                      DialogPtr               theDialog,
                                      DlgHookUPP              userUPP);
  
      EXTERN_API(Boolean)
      InvokeFileFilterUPP            (CInfoPBPtr              pb,
                                      FileFilterUPP           userUPP);
  
      EXTERN_API(short)
      InvokeDlgHookYDUPP             (short                   item,
                                      DialogPtr               theDialog,
                                      void *                  yourDataPtr,
                                      DlgHookYDUPP            userUPP);
  
      EXTERN_API(Boolean)
      InvokeModalFilterYDUPP         (DialogPtr               theDialog,
                                      EventRecord *           theEvent,
                                      short *                 itemHit,
                                      void *                  yourDataPtr,
                                      ModalFilterYDUPP        userUPP);
  
      EXTERN_API(Boolean)
      InvokeFileFilterYDUPP          (CInfoPBPtr              pb,
                                      void *                  yourDataPtr,
                                      FileFilterYDUPP         userUPP);
  
      EXTERN_API(void)
      InvokeActivateYDUPP            (DialogPtr               theDialog,
                                      short                   itemNo,
                                      Boolean                 activating,
                                      void *                  yourDataPtr,
                                      ActivateYDUPP           userUPP);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  else
      enum { uppDlgHookProcInfo = 0x000003A0 };                       /* pascal 2_bytes Func(2_bytes, 4_bytes) */
      enum { uppFileFilterProcInfo = 0x000000D0 };                    /* pascal 1_byte Func(4_bytes) */
      enum { uppDlgHookYDProcInfo = 0x00000FA0 };                     /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
      enum { uppModalFilterYDProcInfo = 0x00003FD0 };                 /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
      enum { uppFileFilterYDProcInfo = 0x000003D0 };                  /* pascal 1_byte Func(4_bytes, 4_bytes) */
      enum { uppActivateYDProcInfo = 0x000036C0 };                    /* pascal no_return_value Func(4_bytes, 2_bytes, 1_byte, 4_bytes) */
      #define NewDlgHookUPP(userRoutine)                              (DlgHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDlgHookProcInfo, GetCurrentArchitecture())
      #define NewFileFilterUPP(userRoutine)                           (FileFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileFilterProcInfo, GetCurrentArchitecture())
      #define NewDlgHookYDUPP(userRoutine)                            (DlgHookYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDlgHookYDProcInfo, GetCurrentArchitecture())
      #define NewModalFilterYDUPP(userRoutine)                        (ModalFilterYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppModalFilterYDProcInfo, GetCurrentArchitecture())
      #define NewFileFilterYDUPP(userRoutine)                         (FileFilterYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileFilterYDProcInfo, GetCurrentArchitecture())
      #define NewActivateYDUPP(userRoutine)                           (ActivateYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppActivateYDProcInfo, GetCurrentArchitecture())
      #define DisposeDlgHookUPP(userUPP)                              DisposeRoutineDescriptor(userUPP)
      #define DisposeFileFilterUPP(userUPP)                           DisposeRoutineDescriptor(userUPP)
      #define DisposeDlgHookYDUPP(userUPP)                            DisposeRoutineDescriptor(userUPP)
      #define DisposeModalFilterYDUPP(userUPP)                        DisposeRoutineDescriptor(userUPP)
      #define DisposeFileFilterYDUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
      #define DisposeActivateYDUPP(userUPP)                           DisposeRoutineDescriptor(userUPP)
      #define InvokeDlgHookUPP(item, theDialog, userUPP)              (short)CALL_TWO_PARAMETER_UPP((userUPP), uppDlgHookProcInfo, (item), (theDialog))
      #define InvokeFileFilterUPP(pb, userUPP)                        (Boolean)CALL_ONE_PARAMETER_UPP((userUPP), uppFileFilterProcInfo, (pb))
      #define InvokeDlgHookYDUPP(item, theDialog, yourDataPtr, userUPP)  (short)CALL_THREE_PARAMETER_UPP((userUPP), uppDlgHookYDProcInfo, (item), (theDialog), (yourDataPtr))
      #define InvokeModalFilterYDUPP(theDialog, theEvent, itemHit, yourDataPtr, userUPP)  (Boolean)CALL_FOUR_PARAMETER_UPP((userUPP), uppModalFilterYDProcInfo, (theDialog), (theEvent), (itemHit), (yourDataPtr))
      #define InvokeFileFilterYDUPP(pb, yourDataPtr, userUPP)         (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppFileFilterYDProcInfo, (pb), (yourDataPtr))
      #define InvokeActivateYDUPP(theDialog, itemNo, activating, yourDataPtr, userUPP)  CALL_FOUR_PARAMETER_UPP((userUPP), uppActivateYDProcInfo, (theDialog), (itemNo), (activating), (yourDataPtr))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewDlgHookProc(userRoutine)                             NewDlgHookUPP(userRoutine)
  define NewFileFilterProc(userRoutine)                          NewFileFilterUPP(userRoutine)
  define NewDlgHookYDProc(userRoutine)                           NewDlgHookYDUPP(userRoutine)
  define NewModalFilterYDProc(userRoutine)                       NewModalFilterYDUPP(userRoutine)
  define NewFileFilterYDProc(userRoutine)                        NewFileFilterYDUPP(userRoutine)
  define NewActivateYDProc(userRoutine)                          NewActivateYDUPP(userRoutine)
  define CallDlgHookProc(userRoutine, item, theDialog)           InvokeDlgHookUPP(item, theDialog, userRoutine)
  define CallFileFilterProc(userRoutine, pb)                     InvokeFileFilterUPP(pb, userRoutine)
  define CallDlgHookYDProc(userRoutine, item, theDialog, yourDataPtr) InvokeDlgHookYDUPP(item, theDialog, yourDataPtr, userRoutine)
  define CallModalFilterYDProc(userRoutine, theDialog, theEvent, itemHit, yourDataPtr) InvokeModalFilterYDUPP(theDialog, theEvent, itemHit, yourDataPtr, userRoutine)
  define CallFileFilterYDProc(userRoutine, pb, yourDataPtr)      InvokeFileFilterYDUPP(pb, yourDataPtr, userRoutine)
  define CallActivateYDProc(userRoutine, theDialog, itemNo, activating, yourDataPtr) InvokeActivateYDUPP(theDialog, itemNo, activating, yourDataPtr, userRoutine)
  typedef OSType                          SFTypeList[4];
  /*
      The GetFile "typeList" parameter type has changed from "SFTypeList" to "ConstSFTypeListPtr".
      For C, this will add "const" and make it an in-only parameter.
      For Pascal, this will require client code to use the @ operator, but make it easier to specify long lists.
  
      ConstSFTypeListPtr is a pointer to an array of OSTypes.
  */
  typedef const OSType *                  ConstSFTypeListPtr;
  if CALL_NOT_IN_CARBON
  if CALL_NOT_IN_CARBON
  EXTERN_API( void )
  SFPutFile                       (Point                  where,
                                   ConstStr255Param       prompt, /* can be NULL */
                                   ConstStr255Param       origName,
                                   DlgHookUPP             dlgHook, /* can be NULL */
                                   SFReply *              reply)                              THREEWORDINLINE(0x3F3C, 0x0001, 0xA9EA);
  
  EXTERN_API( void )
  SFGetFile                       (Point                  where,
                                   ConstStr255Param       prompt,
                                   FileFilterUPP          fileFilter, /* can be NULL */
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList, /* can be NULL */
                                   DlgHookUPP             dlgHook, /* can be NULL */
                                   SFReply *              reply)                              THREEWORDINLINE(0x3F3C, 0x0002, 0xA9EA);
  
  EXTERN_API( void )
  SFPPutFile                      (Point                  where,
                                   ConstStr255Param       prompt, /* can be NULL */
                                   ConstStr255Param       origName,
                                   DlgHookUPP             dlgHook,
                                   SFReply *              reply,
                                   short                  dlgID,
                                   ModalFilterUPP         filterProc) /* can be NULL */       THREEWORDINLINE(0x3F3C, 0x0003, 0xA9EA);
  
  EXTERN_API( void )
  SFPGetFile                      (Point                  where,
                                   ConstStr255Param       prompt,
                                   FileFilterUPP          fileFilter, /* can be NULL */
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList, /* can be NULL */
                                   DlgHookUPP             dlgHook, /* can be NULL */
                                   SFReply *              reply,
                                   short                  dlgID,
                                   ModalFilterUPP         filterProc) /* can be NULL */       THREEWORDINLINE(0x3F3C, 0x0004, 0xA9EA);
  
  EXTERN_API( void )
  StandardPutFile                 (ConstStr255Param       prompt, /* can be NULL */
                                   ConstStr255Param       defaultName,
                                   StandardFileReply *    reply)                              THREEWORDINLINE(0x3F3C, 0x0005, 0xA9EA);
  
  EXTERN_API( void )
  StandardGetFile                 (FileFilterUPP          fileFilter, /* can be NULL */
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList, /* can be NULL */
                                   StandardFileReply *    reply)                              THREEWORDINLINE(0x3F3C, 0x0006, 0xA9EA);
  
  EXTERN_API( void )
  CustomPutFile                   (ConstStr255Param       prompt, /* can be NULL */
                                   ConstStr255Param       defaultName,
                                   StandardFileReply *    reply,
                                   short                  dlgID,
                                   Point                  where,
                                   DlgHookYDUPP           dlgHook, /* can be NULL */
                                   ModalFilterYDUPP       filterProc, /* can be NULL */
                                   ActivationOrderListPtr  activeList, /* can be NULL */
                                   ActivateYDUPP          activate, /* can be NULL */
                                   void *                 yourDataPtr)                        THREEWORDINLINE(0x3F3C, 0x0007, 0xA9EA);
  
  EXTERN_API( void )
  CustomGetFile                   (FileFilterYDUPP        fileFilter, /* can be NULL */
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList, /* can be NULL */
                                   StandardFileReply *    reply,
                                   short                  dlgID,
                                   Point                  where,
                                   DlgHookYDUPP           dlgHook, /* can be NULL */
                                   ModalFilterYDUPP       filterProc, /* can be NULL */
                                   ActivationOrderListPtr  activeList, /* can be NULL */
                                   ActivateYDUPP          activate, /* can be NULL */
                                   void *                 yourDataPtr)                        THREEWORDINLINE(0x3F3C, 0x0008, 0xA9EA);
  
  EXTERN_API( OSErr )
  StandardOpenDialog              (StandardFileReply *    reply);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( void )
  sfpputfile                      (Point *                where,
                                   const char *           prompt,
                                   const char *           origName,
                                   DlgHookUPP             dlgHook, /* can be NULL */
                                   SFReply *              reply,
                                   short                  dlgID,
                                   ModalFilterUPP         filterProc) /* can be NULL */;
  
  EXTERN_API_C( void )
  sfgetfile                       (Point *                where,
                                   const char *           prompt,
                                   FileFilterUPP          fileFilter, /* can be NULL */
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList, /* can be NULL */
                                   DlgHookUPP             dlgHook, /* can be NULL */
                                   SFReply *              reply);
  
  EXTERN_API_C( void )
  sfpgetfile                      (Point *                where,
                                   const char *           prompt,
                                   FileFilterUPP          fileFilter, /* can be NULL */
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList, /* can be NULL */
                                   DlgHookUPP             dlgHook, /* can be NULL */
                                   SFReply *              reply,
                                   short                  dlgID,
                                   ModalFilterUPP         filterProc) /* can be NULL */;
  
  EXTERN_API_C( void )
  sfputfile                       (Point *                where,
                                   const char *           prompt,
                                   const char *           origName,
                                   DlgHookUPP             dlgHook, /* can be NULL */
                                   SFReply *              reply);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  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 /* __STANDARDFILE__ */
  
  


(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.