home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / SDKs / Now Utilities Plug Ins 6.0 / API Stuff / Plug In Defines.h
Encoding:
Text File  |  1996-03-04  |  7.3 KB  |  172 lines  |  [TEXT/KAHL]

  1.  
  2. /// Defines used in common between Instant Access and Plug Ins
  3.  
  4. #ifndef __PlugInDefines__
  5. #define    __PlugInDefines__
  6.  
  7. // error codes
  8.  
  9. enum
  10.     {
  11.     kPlugInNotFoundError = -1000,
  12.     kMenuItemNotFoundError,
  13.     kNilSelectedItemReferenceError
  14.     };
  15.  
  16. // Classifications of menu items
  17.  
  18. #define    kMiscellaneousClassification            'Misc'
  19. #define    kFileOperationClassification            'File'
  20. #define    kContainerOperationClassification        'Fldr'
  21.  
  22. // Defines and macros for easy interpretation of Catalog Information
  23.  
  24. #define    kIsLockedBit                            (1 << 0)
  25. #define    kIsResourceForkOpenBit                    (1 << 2)
  26. #define    kIsDataForkOpenBit                        (1 << 3)
  27. #define    kIsFolderBit                            (1 << 4)
  28. #define    kIsOpenBit                                (1 << 7)
  29. #define    kIsAliasBit                                (1 << 15)
  30.  
  31. #define    ItemIsFolder(info)                        (info.hFileInfo.ioFlAttrib & kIsFolderBit && info.dirInfo.ioDrDirID != 2)
  32. #define    ItemIsVolume(info)                        (info.hFileInfo.ioFlAttrib & kIsFolderBit && info.dirInfo.ioDrDirID == 2)
  33.  
  34. #define    ItemIsContainer(info)                    (ItemIsFolder(info) || ItemIsVolume(info))
  35.  
  36. #define    ItemIsAlias(info)                        (!(info.hFileInfo.ioFlAttrib & kIsFolderBit) && info.hFileInfo.ioFlFndrInfo.fdFlags & kIsAliasBit)
  37. #define    ItemIsApplication(info)                    (!(info.hFileInfo.ioFlAttrib & kIsFolderBit) && info.hFileInfo.ioFlFndrInfo.fdType == 'APPL')
  38. #define    ItemIsDocument(info)                    (!(info.hFileInfo.ioFlAttrib & kIsFolderBit) && !(info.hFileInfo.ioFlFndrInfo.fdFlags & kIsAliasBit) && info.hFileInfo.ioFlFndrInfo.fdType != 'APPL')
  39.  
  40. #define    ItemIsFile(info)                        (ItemIsAlias(info) || ItemIsApplication(info) || ItemIsDocument(info))
  41.  
  42. // Flag Defines for filtering out selected item is a DoForEachSelectedItem CallBack
  43. // Note that we are defining these finder item groups to be mutually exclusive.  So while
  44. // normally you'd think of a Volume as a certain type of folder, here we treat them
  45. // as independent entities.  So, if you wanted to include access to both, you'd
  46. // use kIncludeAllContainers.  A folder is not a volume.  A volume is not a folder.
  47. // Same thing goes for files: a document is not an application, nor an alias.  An alias is not
  48. // an application nor a document and an application is not a document nor an alias.
  49.  
  50. #define    kIncludeFolders                            (1 << 0)
  51. #define    kIncludeVolumes                            (1 << 1)
  52. #define    kIncludeApplications                    (1 << 2)
  53. #define    kIncludeDocuments                        (1 << 3)
  54. #define    kIncludeAliases                            (1 << 4)
  55.  
  56. #define    kIncludeAllFiles                        kIncludeDocuments | kIncludeApplications | kIncludeAliases
  57. #define    kIncludeAllSelectedItems                kIncludeAllFiles | kIncludeFolders | kIncludeVolumes
  58. #define    kIncludeAllContainers                    kIncludeFolders | kIncludeVolumes
  59.  
  60. // Definition of a menu item
  61.  
  62. #define    kMenuItemTextSize                        128
  63.  
  64. #define    kMenuItemInformationVersionOne            1
  65. #define    kPlugInInformationVersionOne            1
  66. #define    kSelectedItemVersionOne                    1
  67.  
  68. typedef struct
  69. {
  70.     short            version;
  71.     OSType            classification,
  72.                     owningPlugInType;
  73.     unsigned char    text[kMenuItemTextSize];
  74.     short            type,
  75.                     id,
  76.                     enabled,
  77.                     style,
  78.                     mark,
  79.                     hasSubMenu;
  80.     MenuHandle        subMenu;
  81.     long            refCon;
  82. } MenuItemInformation;
  83.  
  84. // Opaque Definition of a selected item
  85.  
  86. typedef void    SelectedItemReference;
  87.  
  88. // Miscellaneous Defines
  89.  
  90. enum
  91.     {
  92.     kTextMenuItemType,
  93.     kDividerMenuItemType
  94.     };
  95.     
  96. // communication structures
  97.  
  98. typedef struct
  99. {
  100.     short    menuID,
  101.             itemNumber;
  102. } MenuSelectResultSubStructure;
  103.  
  104. typedef union
  105. {
  106.     long                            longResult;
  107.     MenuSelectResultSubStructure    wordResult;
  108. } MenuSelectResultStructure;
  109.  
  110. typedef pascal void                            (*AddMenuItemProcedurePtr)(MenuItemInformation *menuItem);
  111. typedef pascal short                        (*GetPlugInFileSpecProcedurePtr)(OSType plugInType, FSSpec *fileSpec);
  112. typedef pascal short                        (*CountSelectedItemsProcedurePtr)(void);
  113. typedef pascal SelectedItemReference        *(*GetNthSelectedItemReferenceProcedurePtr)(short index);
  114. typedef pascal short                        (*SelectFinderMenuItemProcedurePtr)(unsigned char *menuTitle, unsigned char *menuItemText);
  115. typedef pascal short                        (*GetAvailableSubMenuIDProcedurePtr)(void);
  116. typedef pascal MenuHandle                    (*FindMenuProcedurePtr)(unsigned char *menuTitle);
  117. typedef pascal MenuSelectResultStructure    (*FindMenuItemProcedurePtr)(unsigned char *menuTitle, unsigned char *menuItemText);
  118. typedef pascal short                        (*GetSelectedItemCatalogInformationProcedurePtr)(SelectedItemReference *reference, CInfoPBRec *information);
  119. typedef pascal short                        (*GetSelectedItemFileSpecProcedurePtr)(SelectedItemReference *reference, FSSpec *fileSpec);
  120. typedef pascal void                            (*DoForEachSelectedItemProcedurePtr)(ProcPtr doForSelectedItem, long iterationFlags, long userInformation);
  121. typedef pascal short                        (*RevealFileInFinderProcedurePtr)(FSSpec *fileSpec);
  122. typedef pascal short                        (*OpenFileProcedurePtr)(FSSpec *fileSpec);
  123. typedef pascal short                        (*DisplayMessageProcedurePtr)(unsigned char *message);
  124. typedef pascal void                            (*ForceRedrawOfContainingFinderWindowProcedurePtr)(FSSpec *fileSpec);
  125. typedef pascal short                        (*ReportErrorProcedurePtr)(short error);
  126.  
  127. typedef struct
  128. {
  129.     AddMenuItemProcedurePtr                            AddMenuItem;
  130.     GetPlugInFileSpecProcedurePtr                    GetPlugInFileSpec;
  131.     CountSelectedItemsProcedurePtr                    CountSelectedItems;
  132.     GetNthSelectedItemReferenceProcedurePtr            GetNthSelectedItemReference;
  133.     SelectFinderMenuItemProcedurePtr                SelectFinderMenuItem;
  134.     GetAvailableSubMenuIDProcedurePtr                GetAvailableSubMenuID;
  135.     FindMenuProcedurePtr                            FindMenu;
  136.     FindMenuItemProcedurePtr                        FindMenuItem;
  137.     GetSelectedItemCatalogInformationProcedurePtr    GetSelectedItemCatalogInformation;
  138.     GetSelectedItemFileSpecProcedurePtr                GetSelectedItemFileSpec;
  139.     DoForEachSelectedItemProcedurePtr                DoForEachSelectedItem;
  140.     RevealFileInFinderProcedurePtr                    RevealFileInFinder;
  141.     DisplayMessageProcedurePtr                        DisplayMessage;
  142.     ForceRedrawOfContainingFinderWindowProcedurePtr    ForceRedrawOfContainingFinderWindow;
  143.     ReportErrorProcedurePtr                            ReportError;
  144.     OpenFileProcedurePtr                            OpenFile;
  145. } InstantAccessInformation, *InstantAccessInformationPtr;
  146.  
  147. typedef pascal void     (*InitializeAtIdleProcedurePtr)(InstantAccessInformation *information);
  148. typedef pascal void     (*PrepareMenuProcedurePtr)(InstantAccessInformation *information, short asPreview);
  149. typedef pascal void        (*CleanUpAfterMenuSelectProcedurePtr)(InstantAccessInformation *information, short fromPreview);
  150. typedef pascal void     (*HandleMenuItemSelectedProcedurePtr)(InstantAccessInformation *information, MenuItemInformation *menuItem);
  151. typedef pascal void     (*HandleSubMenuItemSelectedProcedurePtr)(InstantAccessInformation *information, short menuID, short menuItemNumber);
  152. typedef pascal void     (*HandleIdleProcedurePtr)(InstantAccessInformation *information);
  153. typedef pascal short    (*DoForSelectedItemProcedurePtr)(InstantAccessInformationPtr information, SelectedItemReference *reference, long userInformation);
  154. typedef pascal void        (*DisplayAboutBoxProcedurePtr)(InstantAccessInformationPtr information);
  155. typedef pascal void        (*ConfigureProcedurePtr)(InstantAccessInformationPtr information);
  156.  
  157. typedef struct
  158. {
  159.     short                                    version;
  160.     OSType                                    plugInType;
  161.     InitializeAtIdleProcedurePtr            InitializeAtIdle;
  162.     PrepareMenuProcedurePtr                    PrepareMenu;
  163.     CleanUpAfterMenuSelectProcedurePtr        CleanUpAfterMenuSelect;
  164.     HandleMenuItemSelectedProcedurePtr        HandleMenuItemSelected;
  165.     HandleSubMenuItemSelectedProcedurePtr    HandleSubMenuItemSelected;
  166.     HandleIdleProcedurePtr                    HandleIdle;
  167.     DisplayAboutBoxProcedurePtr                DisplayAboutBox;
  168.     ConfigureProcedurePtr                    Configure;
  169. } PlugInInformation;
  170.  
  171.  
  172. #endif