OCETemplates.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:115k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       OCETemplates.h
  3.  
  4.      Contains:   Apple Open Collaboration Environment Templates Interfaces.
  5.  
  6.      Version:    Technology: AOCE Toolbox 1.02
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1994-2001 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __OCETEMPLATES__
  18. #define __OCETEMPLATES__
  19. #ifndef REZ
  20. #ifndef __MACTYPES__
  21. #include "MacTypes.h"
  22. #endif
  23. #ifndef __EVENTS__
  24. #include "Events.h"
  25. #endif
  26. #endif /* REZ */
  27. #ifndef __OCE__
  28. #include "OCE.h"
  29. #endif
  30. #ifndef REZ
  31. #ifndef __OCESTANDARDMAIL__
  32. #include "OCEStandardMail.h"
  33. #endif
  34. #if PRAGMA_ONCE
  35. #pragma once
  36. #endif
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40. #if PRAGMA_IMPORT
  41. #pragma import on
  42. #endif
  43. #if PRAGMA_STRUCT_ALIGN
  44.     #pragma options align=mac68k
  45. #elif PRAGMA_STRUCT_PACKPUSH
  46.     #pragma pack(push, 2)
  47. #elif PRAGMA_STRUCT_PACK
  48.     #pragma pack(2)
  49. #endif
  50. #endif /* REZ */
  51. /************************************************************************************************
  52.  ********************************* Template Resource Constants: *********************************
  53.  ************************************************************************************************/
  54. /* Current versions of all the different template types: */
  55. #define kDETAspectVersion        -976
  56. #define kDETInfoPageVersion        -976
  57. #define kDETKillerVersion      -976
  58. #define kDETForwarderVersion   -976
  59. #define kDETFileTypeVersion        -976
  60. /*   'Normal' separation for template IDs within the file (this is just a suggestion; you can use whatever
  61.   separation you like, so long as two separate templates don't have overlapping resources): */
  62. #define kDETIDSep 250
  63. /* A few predefined base IDs (again, just suggestions): */
  64. #define kDETFirstID      (1000)
  65. #define kDETSecondID (1000+kDETIDSep)
  66. #define kDETThirdID        (1000+2*kDETIDSep)
  67. #define kDETFourthID (1000+3*kDETIDSep)
  68. #define kDETFifthID      (1000+4*kDETIDSep)
  69. /* Templates consist of a set of associated resources, at constant offsets from a 'base ID' set by the
  70.     signature resource of the template. In the case of aspect templates, most of the resources in the
  71.   template are accessible from the template as property default values. The property number is the same
  72.   as the offset from the base ID of the resource. In describing the resources which make up templates,
  73.    we give the type, the offset, and a description. For aspect templates, the offset is also the property #. 
  74.  
  75.    All templates include the following resource fork resources:
  76.    Type   Offset                      Description
  77.      ----   ------                      -----------
  78.     'rstr'  kDETTemplateName            Contains the name of the template
  79. */
  80. #define kDETTemplateName 0
  81. /*   Aspects, info-pages, and forwarders include the following as well:
  82.      Type   Offset                      Description
  83.      ----   ------                      -----------
  84.     'rstr'  kDETRecordType              Contains the type of record this applies to
  85.     'rstr'  kDETAttributeType           Contains the type of attribute this applies to
  86.  'detn'  kDETAttributeValueTag       Contains the tag of the attribute values this applies to
  87. */
  88. #define kDETRecordType                1
  89. #define kDETAttributeType         2
  90. #define kDETAttributeValueTag     3
  91. /* ************************************ Aspects */
  92. /*    In the case of aspects, property numbers and resource id offsets are the same. Therefore, some of the following
  93.     defines are used for resource offsets, some are used for dynamically generated properties, and some are used for
  94.    both (i.e., properties which may be dynamically generated, but if they aren't, then they're taken from the
  95.  resource). Resource types are given in all cases below; even if there is no actual resource (for example in
  96.     the case of kDETAspectName), it indicates the type for the dynamically generated property. A resource type of
  97.   'rstr' corresponds to a property type of kDETPrTypeString; type 'detn' corresponds to kDETPrTypeNumber; and
  98.     'detb' corresponds to kDETPrTypeBinary.
  99.     Type   Offset                      Description
  100.      ----   ------                      -----------
  101.     'deta'  0                           Identifies the type of resource
  102.     'detc'  kDETCode                    Is the code resource, if any is used
  103.    'ICN#'  kDETAspectMainBitmap
  104.    'icl8'  kDETAspectMainBitmap
  105.    'icl4'  kDETAspectMainBitmap
  106.    'ics#'  kDETAspectMainBitmap
  107.    'ics8'  kDETAspectMainBitmap
  108.    'ics4'  kDETAspectMainBitmap
  109.    'sicn'  kDETAspectMainBitmap        Is the icon suite to display for this item type (main aspect only)
  110.  'rstr'  kDETAspectName              Contains the name of the item (attribute main aspect only)
  111.  'rst#'  kDETAspectCategory          Contains the internal categories for the record type (main aspect only)
  112.     'rst#'  kDETAspectExternalCategory  Contains the external (user-visible) names which correspond to the categories in
  113.                                        kDETAspectCategory; if this resource is not present, external names are taken from
  114.                                      another template; if no other template provides an external name for a given internal
  115.                                       category, the internal name is used as the external name (main aspect only)
  116.     'rstr'  kDETAspectKind              Is the item kind to display (main aspect only)
  117.  'detn'  kDETAspectGender            Is the gender of this kind of object for internationalization (main aspect only)
  118.    'rstr'  kDETAspectWhatIs            Is the string for balloon help when item is in sublist (main aspect only)
  119.   'rstr'  kDETAspectAliasKind         Is the item kind to display for aliases to this type of item (main aspect only)
  120.     'detn'  kDETAspectAliasGender       Is the gender of an alias to this kind of object for internationalization (main aspect only)
  121.    'rstr'  kDETAspectAliasWhatIs       Is the string for balloon help when an alias to the item is in sublist (main aspect only)
  122.   'rst#'  kDETAspectBalloons          Is a list of strings for balloon help; for each item in an info-page, it's
  123.                                      property # times 2 is used as an index into this array; if the item is not editable,
  124.                                        then the property # times 2 plus 1 is used
  125.    'rstr'  kDETAspectNewMenuName       Is the string to be used for the user to select new item creation; for records, the
  126.                                         string is used as a menu entry in the Catalogs menu; for attributes, the string
  127.                                         is used in a selection dialog invoked by an 'Add...' button
  128.     'rstr'  kDETAspectNewEntryName      Is the name to be used for new records (with a digit appended if not unique)
  129.    'detb'  kDETAspectNewValue          Is the value to use when creating a new attribute value; the first four bytes
  130.                                       is the tag; the rest is the attribute value contents
  131.    'detn'  kDETAspectSublistOpenOnNew  If true (non-zero), automatically open newly created entries (property can be set
  132.                                       from a code resource, or via a default value in a resource)
  133.     'dett'  kDETAspectLookup            Is the attribute-to-property translation table
  134.  'rstr'  kDETAspectDragInString      Is a string describing the action of dragging into this aspect (if any)
  135.     'rstr'  kDETAspectDragInVerb        Is a single, short word that's the verb of the action (like 'add' or 'drop'; if
  136.                                         there's any doubt, use 'OK')
  137.    'rstr'  kDETAspectDragInSummary     Is a short phrase that describes the action, suitable to be included in a selection list
  138.    'rst#'  kDETAspectRecordDragIn      Is a list of type pairs; in each pair, the first is the type of a record which
  139.                                      can be dragged into this aspect, and the second is the attribute type to store
  140.                                      the reference in
  141.    'rst#'  kDETAspectRecordCatDragIn   Is a list of category/attribute type pairs; in each pair, the first is the
  142.                                      category of records which can be dragged in, and the second is the type of
  143.                                      attribute to place the alias in
  144.     'rst#'  kDETAspectAttrDragIn        Is a list of type triples; in each triple, the first is the record type which can be
  145.                                        dragged from (or '' for any), the second is the attribute type which can be dragged
  146.                                         in, and the third is the attribute type to store the new attribute in
  147.    'rst#'  kDETAspectDragOut           Is a list of attribute types which can be dragged out of this aspect (an 'rst#'
  148.                                         resource with no entries means nothing can be dragged out; no 'rst#' resource means
  149.                                         everything can be dragged out)
  150.  'detm'  kDETAspectViewMenu          Is a table to fill in the view menu from
  151.    'detp'  kDETAspectReverseSort       Is a table listing which properties to sort in reverse order
  152.    'detw'  kDETAspectInfoPageCustomWindow  Is a specification of a custom window size/placement & whether to use the
  153.                                           page-selector (main aspect only)
  154.    'detv'  kDETAspectInfoPageCustomWindow  Is a view list which is common to all info-pages (main aspect only)
  155. */
  156. #define kDETAspectCode                  4
  157. #define kDETAspectMainBitmap          5
  158. #define kDETAspectName                    6
  159. #define kDETAspectCategory                7
  160. #define kDETAspectExternalCategory        8
  161. #define kDETAspectKind                    9
  162. #define kDETAspectGender             10
  163. #define kDETAspectWhatIs             11
  164. #define kDETAspectAliasKind              12
  165. #define kDETAspectAliasGender            13
  166. #define kDETAspectAliasWhatIs            14
  167. #define kDETAspectBalloons               15
  168. #define kDETAspectNewMenuName            16
  169. #define kDETAspectNewEntryName           17
  170. #define kDETAspectNewValue               18
  171. #define kDETAspectSublistOpenOnNew       19
  172. #define kDETAspectLookup             20
  173. #define kDETAspectDragInString           21
  174. #define kDETAspectDragInVerb         22
  175. #define kDETAspectDragInSummary          23
  176. #define kDETAspectRecordDragIn           24
  177. #define kDETAspectRecordCatDragIn        25
  178. #define kDETAspectAttrDragIn         26
  179. #define kDETAspectAttrDragOut            27
  180. #define kDETAspectViewMenu               28
  181. #define kDETAspectReverseSort            29
  182. #define kDETAspectInfoPageCustomWindow   30
  183. /* Properties: */
  184. #define kDETNoProperty             -1
  185. /* Each aspect has 250 attribute properties in this range: */
  186. #define kDETFirstLocalProperty        0
  187. #define kDETLastLocalProperty         (kDETFirstLocalProperty+249)
  188. /* Developers should use property numbers starting at this point: */
  189. #define kDETFirstDevProperty     40
  190. /* The following range provides constant numeric properties for use in patterns and comparisons (constant n is
  191.    given by kDETFirstConstantProperty+n): */
  192. #define kDETFirstConstantProperty   250
  193. #define kDETLastConstantProperty    (kDETFirstConstantProperty+249)
  194. /* To convert a number into a constant property, add this: */
  195. #define kDETConstantProperty     kDETFirstConstantProperty
  196. #define kDETZeroProperty         (kDETConstantProperty+0)
  197. #define kDETOneProperty                (kDETConstantProperty+1)
  198. #define kDETFalseProperty          (kDETConstantProperty+0)
  199. #define kDETTrueProperty           (kDETConstantProperty+1)
  200. /* The following apply to records, attributes, or aliases; they are the name and kind, as they appear in icon lists: */
  201. #define kDETPrName                    3050
  202. #define kDETPrKind                     3051
  203. /* Access mask properties: */
  204. #define kDETDNodeAccessMask         25825   /* The DNode access mask */
  205. #define kDETRecordAccessMask        25826   /* The record access mask */
  206. #define kDETAttributeAccessMask        25827   /* The attribute access mask */
  207. #define kDETPrimaryMaskByBit        25828   /* A set of sixteen properties to access all bits of the primary mask */
  208. /* See AOCE documentation for details definitions of each of these bits: */
  209. #define kDETPrimarySeeMask         kDETPrimaryMaskByBit
  210. #define kDETPrimaryAddMask         (kDETPrimaryMaskByBit+1)
  211. #define kDETPrimaryDeleteMask      (kDETPrimaryMaskByBit+2)
  212. #define kDETPrimaryChangeMask      (kDETPrimaryMaskByBit+3)
  213. #define kDETPrimaryRenameMask      (kDETPrimaryMaskByBit+4)
  214. #define kDETPrimaryChangePrivsMask (kDETPrimaryMaskByBit+5)
  215. #define kDETPrimaryTopMaskBit      (kDETPrimaryMaskByBit+15)
  216. /* The following property is zero until we've completed the first catalog lookup; from then on it's 1 */
  217. #define kDETPastFirstLookup         26550
  218. /* The following property is the page number; issuing a property command with this property will flip info-pages */
  219. #define kDETInfoPageNumber           27050
  220. /* The value of the following properties contains the template number of the targeted aspect's template, and the
  221.    currently open info-page (if any). These values can be used with kDETAspectTemplate and kDETInfoPageTemplate
  222.    target selectors. */
  223. #define kDETAspectTemplateNumber    26551
  224. #define kDETInfoPageTemplateNumber    26552
  225. /* Properties for property commands to deal with sublist items: */
  226. #define kDETOpenSelectedItems     26553   /* Open selected sublist items */
  227. #define kDETAddNewItem                26554   /* Add new sublist item */
  228. #define kDETRemoveSelectedItems      26555   /* Remove selected sublist items */
  229. /* Property types are used to specify types of properties and conversions between types (zero and negative numbers
  230.    are reserved for Apple; developer code resources can use positive numbers): */
  231. #define kDETPrTypeNumber          -1  /* A number */
  232. #define kDETPrTypeString         -2  /* A string */
  233. #define kDETPrTypeBinary         -3  /* A binary block */
  234. /* Rez-compatible tag definitions (These are the same as in OCE.h, but they're enums there and can't be rezedゥ