home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / MacPerl 5.1.3 / Mac_Perl_513_src / MacPerl5 / MercutioAPI.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-14  |  3.1 KB  |  107 lines  |  [TEXT/MMCC]

  1. /***********************************************************************************
  2. **
  3. **       Developer's Programming Interface for Mercutio Menu Definition Function
  4. **               © 1992-1994 Ramon M. Felciano, All Rights Reserved
  5. **                         C port -- January 17, 1994
  6. **
  7. ************************************************************************************/
  8.  
  9. #include <Menus.h>
  10. #include <QuickDraw.h>
  11. #include <Events.h>
  12.  
  13. #define        customDefProcSig    'CUST'
  14. #define        areYouCustomMsg        (short) ('*' * 256 + '*')
  15. #define        getVersionMsg        (short) ('*' * 256 + 'v')
  16. #define        getCopyrightMsg        (short) ('*' * 256 + '©')
  17. #define        setCallbackMsg        (short) ('*' * 256 + 'c')
  18. #define        stripCustomDataMsg    (short) ('*' * 256 + 'd')
  19. #define        setPrefsMsg            (short) ('*' * 256 + 'p')
  20. #define        mMenuKeyMsg            (short) ('S' * 256 + 'K')
  21. #define        mDrawItemStateMsg    (short) ('S' * 256 + 'D')
  22. #define        mCountItemMsg        (short) ('S' * 256 + 'C')
  23.  
  24. #define        cbBasicDataOnlyMsg    1
  25. #define        cbIconOnlyMsg        2
  26. #define        cbGetLongestItemMsg 3
  27.  
  28. typedef struct {
  29.         Style    isDynamicFlag;
  30.         Style    forceNewGroupFlag;
  31.         Style    useCallbackFlag;
  32.         Style    controlKeyFlag;
  33.         Style    optionKeyFlag;
  34.         Style    shiftKeyFlag;
  35.         Style    cmdKeyFlag;
  36.         Style    unusedFlag;
  37.         short    requiredModifiers;
  38.     } MenuPrefsRec, *MenuPrefsPtr;
  39.  
  40. typedef    struct    {
  41.         short    version;
  42.         MenuPrefsRec    thePrefs;
  43.     } MenuResPrefs, *MenuResPrefsPtr, **MenuResPrefsHandle;
  44.     
  45.  
  46. typedef    struct    {    // PACKED RECORD
  47.         char    iconID;
  48.         char    keyEq;
  49.         char    mark;
  50.         Style    textStyle;
  51.     } StdItemData, *StdItemDataPtr;
  52.  
  53.  
  54.  
  55. // ItemFlagsRec is a 2-byte sequence of 1-bit flags. It is defined
  56. // as a short here; use these constants to set the flags.
  57.  
  58. // high byte
  59. #define    kForceNewGroup    0x8000
  60. #define    kIsDynamic        0x4000
  61. #define    kUseCallback    0x2000
  62. #define    kControlKey        0x1000
  63. #define    kOptionKey        0x0800
  64. #define    kUnused10        0x0400
  65. #define kShiftKey        0x0200
  66. #define    kCmdKey            0x0100
  67. // low byte
  68. #define    kIsHier            0x0080
  69. #define    kChangedByCallback    0x0040
  70. #define    kEnabled        0x0020
  71. #define    kHilited        0x0010
  72. #define    kSmallIcon        0x0008
  73. #define    kHasIcon        0x0004
  74. #define    kUnused1        0x0002
  75. #define    kUnused0        0x0001
  76.  
  77. typedef    struct    {
  78.         char    iconID;
  79.         char    keyEq;
  80.         char    mark;
  81.         Style    textStyle;
  82.         short    itemID;
  83.         Rect    itemRect;
  84.         short    flags;
  85.         ResType    iconType;
  86.         Handle    hIcon;
  87.         StringPtr pString;
  88.         Str255    itemStr;
  89.         short    cbMsg;
  90.     } RichItemData, *RichItemPtr;
  91.  
  92.     
  93. extern pascal long MDEF_GetVersion(MenuHandle menu);
  94. extern pascal StringHandle MDEF_GetCopyright(MenuHandle menu);
  95. extern pascal Boolean    MDEF_IsCustomMenu(MenuHandle menu);
  96.  
  97. extern pascal long    MDEF_MenuKey(long theMessage, short theModifiers, MenuHandle hMenu);
  98.                     
  99. extern pascal void    MDEF_CalcItemSize(MenuHandle hMenu, short item, Rect *destRect);
  100. extern pascal void    MDEF_DrawItem(MenuHandle hMenu, short item, Rect destRect);
  101. extern pascal void    MDEF_DrawItemState(MenuHandle hMenu, short item, Rect destRect, Boolean isHilited, Boolean isEnabled);
  102.  
  103. extern pascal void    MDEF_StripCustomData(MenuHandle hMenu);
  104.  
  105. extern pascal void    MDEF_SetCallbackProc(MenuHandle hMenu, ProcPtr theProc);
  106. extern pascal void    MDEF_SetMenuPrefs(MenuHandle hMenu, MenuPrefsRec *thePrefs);
  107.