home *** CD-ROM | disk | FTP | other *** search
/ Dream 44 / Amiga_Dream_44.iso / Amiga / programmation / pmdev.lha / include / libraries / pm.h
C/C++ Source or Header  |  1997-08-22  |  10KB  |  265 lines

  1. //
  2. //    $VER: pm.h 5.1 (15.8.97)
  3. //
  4. //    Library base, tags and macro definitions
  5. //    for popupmenu.library.
  6. //
  7. //    ⌐1996-1997 Henrik Isaksson
  8. //    All Rights Reserved.
  9. //
  10.  
  11. #ifndef LIBRARIES_POPUPMENU_H
  12. #define LIBRARIES_POPUPMENU_H
  13.  
  14. #ifndef EXEC_TYPES_H
  15. #include <exec/types.h>
  16. #endif
  17.  
  18. #ifndef EXEC_LIBRARIES_H
  19. #include <exec/libraries.h>
  20. #endif
  21.  
  22. #ifndef UTILITY_TAGITEM_H
  23. #include <utility/tagitem.h>
  24. #endif
  25.  
  26. //
  27. // Tags passed to OpenPopupMenu
  28. //
  29.  
  30. #define PM_SubMenuTimer        (TAG_USER+1)    // OBSOLETE!
  31. #define PM_RecessSelected    (TAG_USER+2)    // OBSOLETE!
  32. #define PM_WideSelectBar    (TAG_USER+3)    // OBSOLETE!
  33. #define PM_Menu            (TAG_USER+4)    // Pointer to menulist initialized by MakeMenu()
  34. #define PM_Top            (TAG_USER+12)    // Top (Y) position
  35. #define PM_Left            (TAG_USER+13)    // Left (X) position
  36. #define PM_Code            (TAG_USER+14)    // The contents of the code field of IntuiMessage (ALWAYS!)
  37. //#define PM_Right        (TAG_USER+15)
  38. //#define PM_Bottom        (TAG_USER+16)
  39. //#define PM_MinWidth        (TAG_USER+17)
  40. //#define PM_MinHeight        (TAG_USER+18)
  41. //#define PM_ForceFont        (TAG_USER+19)
  42. #define PM_PullDown        (TAG_USER+90)    // Lots of bugs still! Works best in window mode.
  43.  
  44. //
  45. // Tags passed to MakeItem
  46. //
  47.  
  48. #define PM_Title        (TAG_USER+20)    // Item title
  49. #define PM_UserData        (TAG_USER+21)    // Anything, returned by OpenPopupMenu when this item is selected
  50. #define PM_ID            (TAG_USER+22)    // ID number, if you want to access this item later
  51. #define PM_Sub            (TAG_USER+23)    // Pointer to submenu list (from MakeMenu)
  52. #define PM_Flags        (TAG_USER+24)    // For internal use
  53. #define PM_NoSelect        (TAG_USER+25)    // Make the item unselectable
  54. #define PM_FillPen        (TAG_USER+26)    // Make the item appear in FILLPEN
  55. #define PM_Checkit        (TAG_USER+27)    // Leave space for a checkmark
  56. #define PM_Checked        (TAG_USER+28)    // Make this item is checked
  57. #define PM_Italic        (TAG_USER+29)    // Italic text
  58. #define PM_Bold            (TAG_USER+30)    // Bold text
  59. #define PM_Underlined        (TAG_USER+31)    // Underlined text
  60. #define PM_TitleBar        (TAG_USER+32)    // Horizontal separator bar
  61. #define PM_WideTitleBar        (TAG_USER+33)    // Same as above, but full width
  62. #define PM_ShadowPen        (TAG_USER+34)    // Draw text in SHADOWPEN
  63. #define PM_ShinePen        (TAG_USER+35)    // Draw text in SHINEPEN
  64. //#define PM_CenterText        (TAG_USER+36)
  65. #define PM_Exclude        (TAG_USER+37)    // Items to unselect (or select) when this gets selected
  66. #define PM_Disabled        (TAG_USER+38)    // Disable an item
  67. #define PM_ImageSelected    (TAG_USER+39)    // Image when selected, PM_Title will be render on top of the image
  68. #define PM_ImageUnselected    (TAG_USER+40)    // Image when unselected
  69. #define PM_IconSelected        (TAG_USER+41)    // Icon when selected
  70. #define PM_IconUnselected    (TAG_USER+42)    // Icon when unselected
  71. //#define PM_ImageMode        (TAG_USER+43)
  72. #define PM_AutoStore        (TAG_USER+44)    // Pointer to BOOL reflecting the current state of the item
  73. #define PM_TextPen        (TAG_USER+45)    // Pen number for text colour of this item, if you want to allocate a pen yourself
  74. #define PM_ItemIcon        (TAG_USER+46)    // Add a built-in/user selectable icon to this item, se below for defines.
  75.                         // (Not implemented yet)
  76. #define PM_CommKey        (TAG_USER+47)
  77. #define PM_Shadowed        (TAG_USER+48)
  78.  
  79. //
  80. // Tags passed to MakeMenu
  81. //
  82.  
  83. #define PM_Item            (TAG_USER+50)    // Item pointer from MakeItem
  84. #define PM_Dummy        (TAG_USER+51)    // Sometimes very useful
  85.  
  86. //
  87. // Tags passed to MakeIDList
  88. //
  89.  
  90. #define PM_ExcludeID        (TAG_USER+55)    // ID number of menu to deselect when this gets selected
  91. #define PM_IncludeID        (TAG_USER+56)    // ID number of menu to select when this gets selected
  92. #define PM_ReflectID        (TAG_USER+57)    // ID number of menu that should reflect the state of this one
  93. #define PM_InverseID        (TAG_USER+58)    // ID number of menu to inverse reflect the state of this one
  94.  
  95. //
  96. // Built-in Images
  97. //
  98.  
  99.                         //              /
  100. #define IMG_CHECKMARK        (0x10L)        // Checkmark        \/
  101. #define IMG_RIGHTARROW        (0x0CL)        // SysIClass Arrow    |>|
  102. #define IMG_MXIMAGE        (0x0FL)        // SysIClass MX        (*)
  103. #define IMG_CHECKIMAGE        (0x0EL)        // SysIClass Checkbox    | |
  104. #define IMG_AMIGAKEY        (0x11L)        // Amiga Key Image    |A|
  105.  
  106. #define IMG_MMCHECK        (0x7000L)    // MagicMenu CheckMark
  107. #define IMG_MMAMIGA        (0x7001L)    // MagicMenu AmigaKey
  108. #define IMG_MMSUB        (0x7002L)    // MagicMenu Submenu arrow
  109. #define IMG_MMEXCLUDE        (0x7003L)    // MagicMenu MX Image
  110.  
  111. #define    IMG_BULLET_A        (0x8000L)    // bullet        ╖
  112. #define    IMG_BULLET_B        (0x8100L)    // 3d bullet        ╖
  113. #define    IMG_ARROW_A        (0x8200L)    // Arrow        >
  114. #define IMG_ARROW_B        (0x8300L)    // 3d arrow        >
  115. #define IMG_ARROW_C        (0x8400L)    // Arrow        ->
  116.  
  117. enum PM_Icons {                    // Icons for PM_ItemIcon
  118.     IMG_NEW,    IMG_LOAD,    IMG_SAVE,    IMG_SAVEAS,
  119.     IMG_PRINT,    IMG_ABOUT,    IMG_QUIT,
  120.     IMG_COPY,    IMG_CUT,    IMG_PASTE,    IMG_DELETE,
  121.     IMG_UNDO,    IMG_REDO,
  122.     IMG_SCREENMODE
  123. };
  124.  
  125. //
  126. // ImageMode flags (not implemented yet!)
  127. //
  128.  
  129. #define PMIM_PLANAR        0
  130. #define PMIM_CHUNKY        1
  131. #define PMIM_VECTOR        2
  132.  
  133. //
  134. // PM_AlterState "action" values
  135. //
  136.  
  137. #define    PMACT_DESELECT        2    // Deselect the item
  138. #define PMACT_SELECT        3    // Select the item
  139.  
  140. //
  141. // Macros
  142. //
  143.  
  144. #define PMMenu(t)    PM_MakeMenu(PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, PM_Shadowed, TRUE, TAG_DONE),\
  145.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  146. #define PMSubMenu(t)    PM_Sub, PM_MakeMenu(PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  147.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  148. #define PMSimpleSub    PM_Sub, PM_MakeMenu(PM_Dummy, 0
  149. #define PMItem(t)    PM_Item, PM_MakeItem(PM_Title, t
  150. #define PMBar        PM_Item, PM_MakeItem(PM_TitleBar, TRUE
  151. #define PMTitleBar    PMBar
  152. #define PMNarrowBar    PM_Item, PM_MakeItem(PM_TitleBar, TRUE
  153. #define PMNarrowTitleBar    PMNarrowBar
  154. #define PMMenuTitle(t)    PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  155.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  156. #define PMExcl        PM_Exclude, PM_MakeIDList(
  157. #define ExID(id)    PM_ExcludeID, id
  158. #define InID(id)    PM_IncludeID, id
  159. #define RefID(id)    PM_ReflectID, id
  160. #define InvID(id)    PM_InverseID, id
  161. #define PMCheckItem(t,id)    PM_Item, PM_MakeItem(PM_Title, t, PM_ID, id, PM_Checkit, TRUE
  162.  
  163. #define PMEnd        TAG_DONE)
  164.  
  165. #ifndef End
  166. #define End        TAG_DONE)
  167. #endif
  168.  
  169. #define PMERR        (-5L)
  170.  
  171.  
  172. #ifndef LIBRARIES_BGUI_H
  173. //
  174. // WARNING! Theese macros are obsolete due to interference with macros
  175. // declared by BGUI!
  176. // The new macros are defined above
  177. //
  178. #define Menu(t)        MakeMenu(PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  179.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  180. #define SubMenu(t)    PM_Sub, MakeMenu(PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  181.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  182. #define Item(t)        PM_Item, MakeItem(PM_Title, t
  183. #define TitleBar    PM_Item, MakeItem(PM_WideTitleBar, TRUE
  184. #define NarrowTitleBar    PM_Item, MakeItem(PM_TitleBar, TRUE
  185. #define MenuTitle(t)    PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  186.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  187. #define Excl        PM_Exclude, MakeIDList(
  188. #define ExID(id)    PM_ExcludeID, id
  189. #define InID(id)    PM_IncludeID, id
  190. #define RefID(id)    PM_ReflectID, id
  191. #define InvID(id)    PM_InverseID, id
  192. #define CheckItem(t,id)    PM_Item, MakeItem(PM_Title, t, PM_ID, id, PM_Checkit, TRUE
  193. #endif    /* LIBRARIES_BGUI_H */
  194.  
  195. //
  196. // Library base
  197. //
  198.  
  199. struct PopupMenuBase {
  200.     struct Library        pmb_Library;
  201.     ULONG            pmb_SegList;
  202.     ULONG            pmb_Flags;
  203.     struct Library        *pmb_ExecBase;
  204.     struct Library        *pmb_UtilityBase;
  205.     struct Library        *pmb_IntuitionBase;
  206.     struct Library        *pmb_GfxBase;
  207.     struct Library        *pmb_DOSBase;
  208.     BOOL            pmb_NewPrefs;
  209.     struct Library        *pmb_CxBase;
  210. };
  211.  
  212. #define POPUPMENU_VERSION    5L
  213. #define POPUPMENU_NAME        "popupmenu.library"
  214.  
  215. //
  216. // Obsolete stuff follows....
  217. //
  218.  
  219. #ifndef PM_NEWNAMES    // The naming has changed from V2, this should provide
  220.             // backwards compatibility. (disable with #define PM_NEWNAMES)
  221. #define MakeItem    PM_MakeItem
  222. #define MakeMenu    PM_MakeMenu
  223. #define MakeItemA    PM_MakeItemA
  224. #define MakeMenuA    PM_MakeMenuA
  225. #define FreePopupMenu    PM_FreePopupMenu
  226. #define OpenPopupMenu    PM_OpenPopupMenu
  227. #define OpenPopupMenuA    PM_OpenPopupMenuA
  228. #define MakeIDList    PM_MakeIDList
  229. #define MakeIDListA    PM_MakeIDListA
  230. #define ItemChecked    PM_ItemChecked
  231. #endif
  232.  
  233. #define PM_Compact        (TAG_USER+5)    // OBSOLETE!
  234. #define PM_OldLook        (TAG_USER+6)    // OBSOLETE!
  235. #define PM_SameHeight        (TAG_USER+7)    // OBSOLETE!
  236. #define PM_CheckMark        (TAG_USER+8)    // OBSOLETE!
  237. #define PM_ExcludeMark        (TAG_USER+9)    // OBSOLETE!
  238. #define PM_SubMenuMark        (TAG_USER+10)    // OBSOLETE!
  239. #define PM_SmartRefresh        (TAG_USER+11)    // OBSOLETE!
  240.  
  241. #ifndef LIBRARIES_BGUI_H
  242. //
  243. // WARNING! Theese macros are obsolete due to interference with macros
  244. // declared by BGUI!
  245. // The new macros are defined above
  246. //
  247. #define Menu(t)        MakeMenu(PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  248.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  249. #define SubMenu(t)    PM_Sub, MakeMenu(PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  250.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  251. #define Item(t)        PM_Item, MakeItem(PM_Title, t
  252. #define TitleBar    PM_Item, MakeItem(PM_WideTitleBar, TRUE
  253. #define NarrowTitleBar    PM_Item, MakeItem(PM_TitleBar, TRUE
  254. #define MenuTitle(t)    PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  255.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  256. #define Excl        PM_Exclude, MakeIDList(
  257. #define ExID(id)    PM_ExcludeID, id
  258. #define InID(id)    PM_IncludeID, id
  259. #define RefID(id)    PM_ReflectID, id
  260. #define InvID(id)    PM_InverseID, id
  261. #define CheckItem(t,id)    PM_Item, MakeItem(PM_Title, t, PM_ID, id, PM_Checkit, TRUE
  262. #endif    /* LIBRARIES_BGUI_H */
  263.  
  264. #endif
  265.