home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / BGUI / bgui_e / sources / emodules / libraries / bguim.e < prev   
Encoding:
Text File  |  1999-08-28  |  34.9 KB  |  945 lines

  1. OPT MODULE
  2. OPT EXPORT
  3. OPT PREPROCESS
  4.  
  5. /*
  6.  * $VER: libraries/bguim.e 41.10 (28.11.98)
  7.  * bgui.library macros.
  8.  *
  9.  * (C) Copyright 1998 Manuel Lemos.
  10.  * (C) Copyright 1996-1997 Ian J. Einman.
  11.  * (C) Copyright 1993-1996 Jaba Development.
  12.  * (C) Copyright 1993-1996 Jan van den Baard.
  13.  * (C) Copyright 1996-1998 Dominique Dutoit.
  14.  * All Rights Reserved.
  15.  *
  16.  */
  17.  
  18. MODULE  'libraries/bgui',
  19.         'bgui/bgui_asl',
  20.         'bgui/bgui_image'
  21.  
  22. CONST   BGUIMACROVERSION        = 41
  23. CONST   MACROS4BGUIVERSION      = 41
  24. /*      General object creation macros.   */
  25. #define LabelObject             BgUI_NewObjectA( BGUI_LABEL_IMAGE,      [ TAG_IGNORE, 0
  26. #define FrameObject             BgUI_NewObjectA( BGUI_FRAME_IMAGE,      [ TAG_IGNORE, 0
  27. #define VectorObject            BgUI_NewObjectA( BGUI_VECTOR_IMAGE,     [ TAG_IGNORE, 0
  28.  
  29. #define HGroupObject            BgUI_NewObjectA( BGUI_GROUP_GADGET,     [ TAG_IGNORE, 0
  30. #define VGroupObject            BgUI_NewObjectA( BGUI_GROUP_GADGET,     [ GROUP_Style, GRSTYLE_VERTICAL
  31. #define ButtonObject            BgUI_NewObjectA( BGUI_BUTTON_GADGET,    [ TAG_IGNORE, 0
  32. #define ToggleObject            BgUI_NewObjectA( BGUI_BUTTON_GADGET,    [ GA_TOGGLESELECT, TRUE
  33. #define CycleObject             BgUI_NewObjectA( BGUI_CYCLE_GADGET,     [ TAG_IGNORE, 0
  34. #define CheckBoxObject          BgUI_NewObjectA( BGUI_CHECKBOX_GADGET,  [ TAG_IGNORE, 0
  35. #define InfoObject              BgUI_NewObjectA( BGUI_INFO_GADGET,      [ TAG_IGNORE, 0
  36. #define StringObject            BgUI_NewObjectA( BGUI_STRING_GADGET,    [ TAG_IGNORE, 0
  37. #define PropObject              BgUI_NewObjectA( BGUI_PROP_GADGET,      [ TAG_IGNORE, 0
  38. #define IndicatorObject         BgUI_NewObjectA( BGUI_INDICATOR_GADGET, [ TAG_IGNORE, 0
  39. #define ProgressObject          BgUI_NewObjectA( BGUI_PROGRESS_GADGET,  [ TAG_IGNORE, 0
  40. #define SliderObject            BgUI_NewObjectA( BGUI_SLIDER_GADGET,    [ TAG_IGNORE, 0
  41. #define PageObject              BgUI_NewObjectA( BGUI_PAGE_GADGET,      [ TAG_IGNORE, 0
  42. #define MxObject                BgUI_NewObjectA( BGUI_MX_GADGET,        [ TAG_IGNORE, 0
  43. #define ListviewObject          BgUI_NewObjectA( BGUI_LISTVIEW_GADGET,  [ TAG_IGNORE, 0
  44. #define ExternalObject          BgUI_NewObjectA( BGUI_EXTERNAL_GADGET,  [ GA_LEFT, 0, GA_TOP, 0, GA_WIDTH, 0, GA_HEIGHT, 0
  45. #define SeparatorObject         BgUI_NewObjectA( BGUI_SEPARATOR_GADGET, [ TAG_IGNORE, 0
  46. #define AreaObject              BgUI_NewObjectA( BGUI_AREA_GADGET,      [ TAG_IGNORE, 0
  47. #define ViewObject              BgUI_NewObjectA(BGUI_VIEW_GADGET,       [ TAG_IGNORE, 0
  48. #define PaletteObject           BgUI_NewObjectA(BGUI_PALETTE_GADGET,    [ TAG_IGNORE, 0
  49. #define PopButtonObject         BgUI_NewObjectA(BGUI_POPBUTTON_GADGET,  [ TAG_IGNORE, 0
  50.  
  51. #define WindowObject            BgUI_NewObjectA( BGUI_WINDOW_OBJECT,    [ TAG_IGNORE, 0
  52. #define FileReqObject           BgUI_NewObjectA( BGUI_FILEREQ_OBJECT,   [ TAG_IGNORE, 0
  53. #define FontReqObject           BgUI_NewObjectA( BGUI_FONTREQ_OBJECT,   [ TAG_IGNORE, 0
  54. #define ScreenReqObject         BgUI_NewObjectA( BGUI_SCREENREQ_OBJECT, [ TAG_IGNORE, 0
  55. #define CommodityObject         BgUI_NewObjectA( BGUI_COMMODITY_OBJECT, [ TAG_IGNORE, 0
  56. #define ARexxObject             BgUI_NewObjectA( BGUI_AREXX_OBJECT,     [ TAG_IGNORE, 0
  57. #define EndObject               TAG_END ] )
  58.  
  59. /* Typo */
  60. #define SeperatorObject         SeparatorObject
  61.  
  62. /* Label Creation */
  63. #define Label( l )              LAB_Label, l
  64. #define UScoreLabel( l, u )     LAB_Label, l, LAB_Underscore, u
  65. #define Style( s )              LAB_Style, s
  66. #define Place( p )              LAB_Place, p
  67.  
  68. /* Frames */
  69. #define ButtonFrame             FRM_Type, FRTYPE_BUTTON
  70. #define RidgeFrame              FRM_Type, FRTYPE_RIDGE
  71. #define DropBoxFrame            FRM_Type, FRTYPE_DROPBOX
  72. #define NeXTFrame               FRM_Type, FRTYPE_NEXT
  73. #define RadioFrame              FRM_Type, FRTYPE_RADIOBUTTON
  74. #define XenFrame                FRM_Type, FRTYPE_XEN_BUTTON
  75. #define TabAboveFrame           FRM_Type, FRTYPE_TAB_ABOVE
  76. #define TabBelowFrame           FRM_Type, FRTYPE_TAB_BELOW
  77. #define BorderFrame             FRM_Type, FRTYPE_BORDER
  78. #define FuzzButtonFrame         FRM_Type, FRTYPE_FUZZ_BUTTON
  79. #define FuzzRidgeFrame          FRM_Type, FRTYPE_FUZZ_RIDGE
  80. #define NoFrame                 FRM_Type, FRTYPE_NONE
  81. #define DefaultFrame            FRM_Type, FRTYPE_DEFAULT
  82.  
  83. /* For clarity */
  84. #define StringFrame             RidgeFrame
  85. #define MxFrame                 RadioFrame
  86.  
  87. #define FrameTitle(t)           FRM_Title, t
  88.  
  89. /* Built-in back fills */
  90. #define ShineRaster             FRM_BackFill, SHINE_RASTER
  91. #define ShadowRaster            FRM_BackFill, SHADOW_RASTER
  92. #define ShineShadowRaster       FRM_BackFill, SHINE_SHADOW_RASTER
  93. #define FillRaster              FRM_BackFill, FILL_RASTER
  94. #define ShineFillRaster         FRM_BackFill, SHINE_FILL_RASTER
  95. #define ShadowFillRaster        FRM_BackFill, SHADOW_FILL_RASTER
  96. #define ShineBlock              FRM_BackFill, SHINE_BLOCK
  97. #define ShadowBlock             FRM_BackFill, SHADOW_BLOCK
  98.  
  99. /* Vector image */
  100. #define GetPath                 VIT_BuiltIn, BUILTIN_GETPATH
  101. #define GetFile                 VIT_BuiltIn, BUILTIN_GETFILE
  102. #define CheckMark               VIT_BuiltIn, BUILTIN_CHECKMARK
  103. #define PopUp                   VIT_BuiltIn, BUILTIN_POPUP
  104. #define ArrowUp                 VIT_BuiltIn, BUILTIN_ARROW_UP
  105. #define ArrowDown               VIT_BuiltIn, BUILTIN_ARROW_DOWN
  106. #define ArrowLeft               VIT_BuiltIn, BUILTIN_ARROW_LEFT
  107. #define ArrowRight              VIT_BuiltIn, BUILTIN_ARROW_RIGHT
  108.  
  109. /* Group class macros */
  110. #define StartMember             GROUP_Member
  111. #define EndMember               TAG_END, 0
  112. #define Spacing(p)              GROUP_Spacing, p
  113. #define Offset(p)               GROUP_Offset, p
  114. #define HOffset(p)              GROUP_HorizOffset, p
  115. #define VOffset(p)              GROUP_VertOffset, p
  116. #define LOffset(p)              GROUP_LeftOffset, p
  117. #define ROffset(p)              GROUP_RightOffset, p
  118. #define TOffset(p)              GROUP_TopOffset, p
  119. #define BOffset(p)              GROUP_BottomOffset, p
  120. #define VarSpace(w)             GROUP_SpaceObject, w
  121. #define EqualWidth              GROUP_EqualWidth, TRUE
  122. #define EqualHeight             GROUP_EqualHeight, TRUE
  123. #define Rows(n)                 GROUP_Rows, n
  124. #define Columns(n)              GROUP_Columns, n
  125.  
  126. #define NormalSpacing           GROUP_Spacing, GRSPACE_NORMAL
  127. #define NormalHOffset           GROUP_HorizOffset, GRSPACE_NORMAL
  128. #define NormalVOffset           GROUP_VertOffset, GRSPACE_NORMAL
  129. #define NarrowSpacing           GROUP_Spacing, GRSPACE_NARROW
  130. #define NarrowHOffset           GROUP_HorizOffset, GRSPACE_NARROW
  131. #define NarrowVOffset           GROUP_VertOffset, GRSPACE_NARROW
  132. #define WideSpacing             GROUP_Spacing, GRSPACE_WIDE
  133. #define WideHOffset             GROUP_HorizOffset, GRSPACE_WIDE
  134. #define WideVOffset             GROUP_VertOffset, GRSPACE_WIDE
  135. #define NormalOffset            NormalHOffset, NormalVOffset
  136.  
  137. /* Layout macros */
  138. #define FixMinWidth             LGO_FixMinWidth, TRUE
  139. #define FixMinHeight            LGO_FixMinHeight, TRUE
  140. #define Weight(w)               LGO_Weight, w
  141. #define FixWidth(w)             LGO_FixWidth, w
  142. #define FixHeight(h)            LGO_FixHeight, h
  143. #define Align                   LGO_Align, TRUE
  144. #define AlignTop                LGO_VAlign, GRALIGN_TOP
  145. #define AlignBottom             LGO_VAlign, GRALIGN_BOTTOM
  146. #define AlignCenterV            LGO_VAlign, GRALIGN_CENTER
  147. #define AlignLeft               LGO_HAlign, GRALIGN_LEFT
  148. #define AlignRight              LGO_HAlign, GRALIGN_RIGHT
  149. #define AlignCenterH            LGO_HAlign, GRALIGN_CENTER
  150. #define FixMinSize              FixMinWidth, FixMinHeight
  151. #define FixSize(w,h)            FixWidth(w), FixHeight(h)
  152. #define NoAlign                 LGO_NoAlign, TRUE
  153. #define FixAspect(x,y)          LGO_FixAspect, ( (Shl(x,16)) OR (y) )
  154.  
  155. /* Page class macros */
  156. #define PageMember              PAGE_Member
  157.  
  158. /* "Quick" button creation macros */
  159. #define PrefButton(label,id)\
  160.         ButtonObject,\
  161.                 LAB_Label,          label,\
  162.                 GA_ID,              id,\
  163.         EndObject
  164.  
  165. #define Button(label,id)\
  166.         ButtonObject,\
  167.                 LAB_Label,              label,\
  168.                 GA_ID,                  id,\
  169.                 ButtonFrame,\
  170.         EndObject
  171.  
  172. #define GetPathButton(id)\
  173.         ButtonObject,\
  174.                 GetPath,\
  175.                 GA_ID,                  id,\
  176.                 ButtonFrame,\
  177.         EndObject, FixMinWidth
  178.  
  179. #define GetFileButton(id)\
  180.         ButtonObject,\
  181.                 GetFile,\
  182.                 GA_ID,                  id,\
  183.                 ButtonFrame,\
  184.         EndObject, FixMinWidth
  185.  
  186. #define PopupButton(id)\
  187.         ButtonObject,\
  188.                 VIT_BuiltIn,            BUILTIN_POPUP,\
  189.                 GA_ID,                  id,\
  190.                 ButtonFrame,\
  191.         EndObject, FixMinWidth
  192.  
  193. #define KeyButton(label,id)   Button(label,id)
  194.  
  195. #define PrefToggle(label,state,id)\
  196.         ToggleObject,\
  197.                 LAB_Label,              label,\
  198.                 GA_ID,                  id,\
  199.                 GA_SELECTED,            state,\
  200.         EndObject
  201.  
  202. #define Toggle(label,state,id)\
  203.         ToggleObject,\
  204.                 LAB_Label,              label,\
  205.                 GA_ID,                  id,\
  206.                 GA_SELECTED,            state,\
  207.                 ButtonFrame,\
  208.         EndObject
  209.  
  210. #define KeyToggle(label,state,id)   Toggle(label,state,id)
  211.  
  212. #define XenButton(label,id)\
  213.         ButtonObject,\
  214.                 LAB_Label,              label,\
  215.                 GA_ID,                  id,\
  216.                 XenFrame,\
  217.         EndObject
  218.  
  219. #define XenKeyButton(label,id)    XenButton(label,id)
  220.  
  221. #define XenToggle(label,state,id)\
  222.         ToggleObject,\
  223.                 LAB_Label,              label,\
  224.                 GA_ID,                  id,\
  225.                 GA_SELECTED,            state,\
  226.                 XenFrame,\
  227.         EndObject
  228.  
  229. #define XenKeyToggle(label,state,id)    XenToggle(label,state,id)
  230.  
  231. /* "Quick" cycle creation macros. */
  232. #define PrefCycle(label,labels,active,id)\
  233.         CycleObject,\
  234.                 LAB_Label,              label,\
  235.                 GA_ID,                  id,\
  236.                 CYC_Labels,             labels,\
  237.                 CYC_Active,             active,\
  238.         EndObject
  239.  
  240. #define Cycle(label,labels,active,id)\
  241.         CycleObject,\
  242.                 LAB_Label,              label,\
  243.                 GA_ID,                  id,\
  244.                 ButtonFrame,\
  245.                 CYC_Labels,             labels,\
  246.                 CYC_Active,             active,\
  247.                 CYC_Popup,              FALSE,\
  248.         EndObject
  249.  
  250. #define KeyCycle(label,labels,active,id)    Cycle(label,labels,active,id)
  251.  
  252. #define XenCycle(label,labels,active,id)\
  253.         CycleObject,\
  254.                 LAB_Label,              label,\
  255.                 GA_ID,                  id,\
  256.                 XenFrame,\
  257.                 CYC_Labels,             labels,\
  258.                 CYC_Active,             active,\
  259.                 CYC_Popup,              FALSE,\
  260.         EndObject
  261.  
  262. #define XenKeyCycle(label,labels,active,id)     XenCycle(label,labels,active,id)
  263.  
  264. #define PopCycle(label,labels,active,id)\
  265.         CycleObject,\
  266.                 LAB_Label,              label,\
  267.                 GA_ID,                  id,\
  268.                 ButtonFrame,\
  269.                 CYC_Labels,             labels,\
  270.                 CYC_Active,             active,\
  271.                 CYC_Popup,              TRUE,\
  272.         EndObject
  273.  
  274. #define KeyPopCycle(label,labels,active,id)     PopCycle(label,labels,active,id)
  275.  
  276. #define XenPopCycle(label,labels,active,id)\
  277.         CycleObject,\
  278.                 LAB_Label,              label,\
  279.                 GA_ID,                  id,\
  280.                 XenFrame,\
  281.                 CYC_Labels,             labels,\
  282.                 CYC_Active,             active,\
  283.                 CYC_Popup,              TRUE,\
  284.         EndObject
  285.  
  286. #define XenKeyPopCycle(label,labels,active,id)      XenPopCycle(label,labels,active,id)
  287.  
  288. /* "Quick" checkbox creation macros. */
  289. #define PrefCheckBoxNF(label,state,id)\
  290.         CheckBoxObject,\
  291.                 LAB_Label,              label,\
  292.                 GA_ID,                  id,\
  293.                 GA_SELECTED,            state,\
  294.         EndObject, FixMinSize
  295.  
  296. #define CheckBoxNF(label,state,id)\
  297.         CheckBoxObject,\
  298.                 LAB_Label,              label,\
  299.                 GA_ID,                  id,\
  300.                 GA_SELECTED,            state,\
  301.         EndObject, FixMinSize
  302.  
  303. #define XenCheckBoxNF(label,state,id)\
  304.         CheckBoxObject,\
  305.                 LAB_Label,              label,\
  306.                 GA_ID,                  id,\
  307.                 XenFrame,\
  308.                 GA_SELECTED,            state,\
  309.         EndObject, FixMinSize
  310.  
  311. #define PrefCheckBox(label,state,id) PrefCheckBoxNF(label,state,id), FixMinSize
  312. #define CheckBox(label,state,id)     CheckBoxNF(label,state,id), FixMinSize
  313. #define XenCheckBox(label,state,id)  XenCheckBoxNF(label,state,id), FixMinSize
  314.  
  315. #define KeyCheckBoxNF(label,state,id)    CheckBoxNF(label,state,id)
  316. #define XenKeyCheckBoxNF(label,state,id) XenCheckBoxNF(label,state,id)
  317. #define KeyCheckBox(label,state,id)      CheckBox(label,state,id)
  318. #define XenKeyCheckBo(label,state,id)x   XenCheckBox(label,state,id)
  319.  
  320. /* "Quick" info object creation macros. */
  321. #define PrefInfoFixed(label,text,args,numlines)\
  322.         InfoObject,\
  323.                 LAB_Label,              label,\
  324.                 DefaultFrame,\
  325.                 INFO_TextFormat,        text,\
  326.                 INFO_Args,              args,\
  327.                 INFO_MinLines,          numlines,\
  328.                 INFO_FixTextWidth,      TRUE,\
  329.         EndObject
  330.  
  331. #define PrefInfo(label,text,args,numlines)\
  332.         InfoObject,\
  333.                 LAB_Label,              label,\
  334.                 DefaultFrame,\
  335.                 INFO_TextFormat,        text,\
  336.                 INFO_Args,              args,\
  337.                 INFO_MinLines,          numlines,\
  338.         EndObject
  339.  
  340. #define InfoFixed(label,text,args,numlines)\
  341.         InfoObject,\
  342.                 LAB_Label,              label,\
  343.                 ButtonFrame,\
  344.                 FRM_Flags,              FRF_RECESSED,\
  345.                 INFO_TextFormat,        text,\
  346.                 INFO_Args,              args,\
  347.                 INFO_MinLines,          numlines,\
  348.                 INFO_FixTextWidth,      TRUE,\
  349.         EndObject
  350.  
  351. #define InfoObj(label,text,args,numlines)\
  352.         InfoObject,\
  353.                 LAB_Label,              label,\
  354.                 ButtonFrame,\
  355.                 FRM_Flags,              FRF_RECESSED,\
  356.                 INFO_TextFormat,        text,\
  357.                 INFO_Args,              args,\
  358.                 INFO_MinLines,          numlines,\
  359.         EndObject
  360.  
  361. /* "Quick" string/integer creation macros. */
  362.  
  363. #define PrefString(label,contents,maxchars,id)\
  364.         StringObject,\
  365.                 LAB_Label,              label,\
  366.                 STRINGA_TEXTVAL,        contents,\
  367.                 STRINGA_MAXCHARS,       maxchars,\
  368.                 GA_ID,                  id,\
  369.                 GA_TABCYCLE,            TRUE,\
  370.         EndObject
  371.  
  372. #define StringG(label,contents,maxchars,id)\
  373.         StringObject,\
  374.                 LAB_Label,              label,\
  375.                 RidgeFrame,\
  376.                 STRINGA_TEXTVAL,        contents,\
  377.                 STRINGA_MAXCHARS,       maxchars,\
  378.                 GA_ID,                  id,\
  379.         EndObject
  380.  
  381. #define TabString(label,contents,maxchars,id)\
  382.         StringObject,\
  383.                 LAB_Label,              label,\
  384.                 RidgeFrame,\
  385.                 STRINGA_TEXTVAL,        contents,\
  386.                 STRINGA_MAXCHARS,       maxchars,\
  387.                 GA_ID,                  id,\
  388.                 GA_TABCYCLE,            TRUE,\
  389.         EndObject
  390.  
  391. #define PrefInteger(label,contents,maxchars,id)\
  392.         StringObject,\
  393.                 LAB_Label,              label,\
  394.                 STRINGA_LONGVAL,        contents,\
  395.                 STRINGA_MAXCHARS,       maxchars,\
  396.                 GA_ID,                  id,\
  397.                 GA_TABCYCLE,            TRUE,\
  398.         EndObject
  399.  
  400. #define Integer(label,contents,maxchars,id)\
  401.         StringObject,\
  402.                 LAB_Label,              label,\
  403.                 RidgeFrame,\
  404.                 STRINGA_LONGVAL,        contents,\
  405.                 STRINGA_MAXCHARS,       maxchars,\
  406.                 GA_ID,                  id,\
  407.         EndObject
  408.  
  409. #define TabInteger(label,contents,maxchars,id)\
  410.         StringObject,\
  411.                 LAB_Label,              label,\
  412.                 RidgeFrame,\
  413.                 STRINGA_LONGVAL,        contents,\
  414.                 STRINGA_MAXCHARS,       maxchars,\
  415.                 GA_ID,                  id,\
  416.                 GA_TABCYCLE,            TRUE,\
  417.         EndObject
  418.  
  419. #define KeyString(label,contents,maxchars,id)       StringG(label,contents,maxchars,id)
  420. #define TabKeyString(label,contents,maxchars,id)    TabString(label,contents,maxchars,id)
  421. #define KeyInteger(label,contents,maxchars,id)      Integer(label,contents,maxchars,id)
  422. #define TabKeyInteger(label,contents,maxchars,id)   TabInteger(label,contents,maxchars,id)
  423.  
  424. /* STRINGA_PENS & STRINGA_ACTIVEPENS pen-pack macro */
  425. #define PACKPENS( a, b) (((Shl( b, 8) AND $FF00) OR (( a ) AND $00FF))
  426.  
  427. /* "Quick" scroller creation macros. */
  428. #define HorizScroller(label,top,total,visible,id)\
  429.         PropObject,\
  430.                 LAB_Label,              label,\
  431.                 PGA_TOP,                top,\
  432.                 PGA_TOTAL,              total,\
  433.                 PGA_VISIBLE,            visible,\
  434.                 PGA_FREEDOM,            FREEHORIZ,\
  435.                 GA_ID,                  id,\
  436.                 PGA_Arrows,             TRUE,\
  437.         EndObject
  438.  
  439. #define VertScroller(label,top,total,visible,id)\
  440.         PropObject,\
  441.                 LAB_Label,              label,\
  442.                 PGA_TOP,                top,\
  443.                 PGA_TOTAL,              total,\
  444.                 PGA_VISIBLE,            visible,\
  445.                 GA_ID,                  id,\
  446.                 PGA_Arrows,             TRUE,\
  447.         EndObject
  448.  
  449. #define KeyHorizScroller(label,top,total,visible,id)    HorizScroller(label,top,total,visible,id)
  450. #define KeyVertScroller(label,top,total,visible,id)     VertScroller(label,top,total,visible,id)
  451.  
  452. /* "Quick" indicator creation macros. */
  453. #define Indicator(min,max,level,just)\
  454.         IndicatorObject,\
  455.                 INDIC_Min,              min,\
  456.                 INDIC_Max,              max,\
  457.                 INDIC_Level,            level,\
  458.                 INDIC_Justification,    just,\
  459.         EndObject
  460.  
  461. #define IndicatorFormat(min,max,level,just,format)\
  462.         IndicatorObject,\
  463.                 INDIC_Min,              min,\
  464.                 INDIC_Max,              max,\
  465.                 INDIC_Level,            level,\
  466.                 INDIC_Justification,    just,\
  467.                 INDIC_FormatString,     format,\
  468.         EndObject
  469.  
  470. /* "Quick" progress creation macros. */
  471. #define HorizProgress(label,min,max,done)\
  472.         ProgressObject,\
  473.                 LAB_Label,              label,\
  474.                 ButtonFrame,\
  475.                 FRM_Flags,              FRF_RECESSED,\
  476.                 PROGRESS_Min,           min,\
  477.                 PROGRESS_Max,           max,\
  478.                 PROGRESS_Done,          done,\
  479.         EndObject
  480.  
  481. #define VertProgress(label,min,max,done)\
  482.         ProgressObject,\
  483.                 LAB_Label,              label,\
  484.                 ButtonFrame,\
  485.                 FRM_Flags,              FRF_RECESSED,\
  486.                 PROGRESS_Min,           min,\
  487.                 PROGRESS_Max,           max,\
  488.                 PROGRESS_Done,          done,\
  489.                 PROGRESS_Vertical,      TRUE,\
  490.         EndObject
  491.  
  492. #define HorizProgressFS(label,min,max,done,fstr)\
  493.         ProgressObject,\
  494.                 LAB_Label,              label,\
  495.                 ButtonFrame,\
  496.                 FRM_Flags,              FRF_RECESSED,\
  497.                 PROGRESS_Min,           min,\
  498.                 PROGRESS_Max,           max,\
  499.                 PROGRESS_Done,          done,\
  500.                 PROGRESS_FormatString,  fstr,\
  501.         EndObject
  502.  
  503. #define VertProgressFS(label,min,max,done,fstr)\
  504.         ProgressObject,\
  505.                 LAB_Label,              label,\
  506.                 ButtonFrame,\
  507.                 FRM_Flags,              FRF_RECESSED,\
  508.                 PROGRESS_Min,           min,\
  509.                 PROGRESS_Max,           max,\
  510.                 PROGRESS_Done,          done,\
  511.                 PROGRESS_Vertical,      TRUE,\
  512.                 PROGRESS_FormatString,  fstr,\
  513.         EndObject
  514.  
  515. /* "Quick" slider creation macros. */
  516. #define HorizSlider(label,min,max,level,id)\
  517.         SliderObject,\
  518.                 LAB_Label,              label,\
  519.                 SLIDER_Min,             min,\
  520.                 SLIDER_Max,             max,\
  521.                 SLIDER_Level,           level,\
  522.                 GA_ID,                  id,\
  523.         EndObject
  524.  
  525. #define VertSlider(label,min,max,level,id)\
  526.         SliderObject,\
  527.                 LAB_Label,              label,\
  528.                 SLIDER_Min,             min,\
  529.                 SLIDER_Max,             max,\
  530.                 SLIDER_Level,           level,\
  531.                 PGA_FREEDOM,            FREEVERT,\
  532.                 GA_ID,                  id,\
  533.         EndObject
  534.  
  535. #define KeyHorizSlider HorizSlider
  536. #define KeyVertSlider  VertSlider
  537.  
  538. /* "Quick" mx creation macros. */
  539. #define PrefMx(label,labels,active,id)\
  540.         MxObject,\
  541.                 GROUP_Style,            GRSTYLE_VERTICAL,\
  542.                 LAB_Label,              label,\
  543.                 MX_Labels,              labels,\
  544.                 MX_Active,              active,\
  545.                 GA_ID,                  id,\
  546.         EndObject, FixMinSize
  547.  
  548. #define RightMx(label,labels,active,id)\
  549.         MxObject,\
  550.                 GROUP_Style,            GRSTYLE_VERTICAL,\
  551.                 LAB_Label,              label,\
  552.                 MX_Labels,              labels,\
  553.                 MX_Active,              active,\
  554.                 MX_LabelPlace,          PLACE_RIGHT,\
  555.                 GA_ID,                  id,\
  556.         EndObject, FixMinSize
  557.  
  558. #define LeftMx(label,labels,active,id)\
  559.         MxObject,\
  560.                 GROUP_Style,            GRSTYLE_VERTICAL,\
  561.                 LAB_Label,              label,\
  562.                 MX_Labels,              labels,\
  563.                 MX_Active,              active,\
  564.                 MX_LabelPlace,          PLACE_LEFT,\
  565.                 GA_ID,                  id,\
  566.         EndObject, FixMinSize
  567.  
  568. #define Tabs(label,labels,active,id)\
  569.         MxObject,\
  570.                 MX_TabsObject,          TRUE,\
  571.                 LAB_Label,              label,\
  572.                 MX_Labels,              labels,\
  573.                 MX_Active,              active,\
  574.                 GA_ID,                  id,\
  575.         EndObject, FixMinHeight
  576.  
  577.  
  578. #define TabsEqual(label,labels,active,id)\
  579.         MxObject,\
  580.                 GROUP_EqualWidth,       TRUE,\
  581.                 MX_TabsObject,          TRUE,\
  582.                 LAB_Label,              label,\
  583.                 MX_Labels,              labels,\
  584.                 MX_Active,              active,\
  585.                 GA_ID,                  id,\
  586.         EndObject, FixMinHeight
  587.  
  588. #define USDTabs(label,labels,active,id)\
  589.         MxObject,\
  590.                 MX_TabsObject,          TRUE,\
  591.                 LAB_Label,              label,\
  592.                 MX_Labels,              labels,\
  593.                 MX_Active,              active,\
  594.                 MX_TabsUpsideDown,      TRUE,\
  595.                 GA_ID,                  id,\
  596.         EndObject, FixMinHeight
  597.  
  598. #define USDTabsEqual(label,labels,active,id)\
  599.         MxObject,\
  600.                 GROUP_EqualWidth,       TRUE,\
  601.                 MX_TabsObject,          TRUE,\
  602.                 LAB_Label,              label,\
  603.                 MX_Labels,              labels,\
  604.                 MX_Active,              active,\
  605.                 MX_TabsUpsideDown,      TRUE,\
  606.                 GA_ID,                  id,\
  607.         EndObject, FixMinHeight
  608.  
  609. #define RightMxKey(label,labels,active,id)          RightMx(label,labels,active,id)
  610. #define LeftMxKey(label,labels,active,id)           LeftMx(label,labels,active,id)
  611. #define TabsKey(label,labels,active,id)             Tabs(label,labels,active,id)
  612. #define TabsEqualKey(label,labels,active,id)        TabsEqual(label,labels,active,id)
  613. #define USDTabsKey(label,labels,active,id)          USDTabs(label,labels,active,id)
  614. #define USDTabsEqualKey(label,labels,active,id)     USDTabsEqual(label,labels,active,id)
  615.  
  616. /* "Quick" listview creation macros. */
  617. #define StrListview(label,strings,id)\
  618.         ListviewObject,\
  619.                 LAB_Label,              label,\
  620.                 GA_ID,                  id,\
  621.                 LISTV_EntryArray,       strings,\
  622.         EndObject
  623.  
  624. #define StrListviewSorted(label,strings,id)\
  625.         ListviewObject,\
  626.                 LAB_Label,              label,\
  627.                 GA_ID,                  id,\
  628.                 LISTV_EntryArray,       strings,\
  629.                 LISTV_SortEntryArray,   TRUE,\
  630.         EndObject
  631.  
  632. #define ReadStrListview(label,strings)\
  633.         ListviewObject,\
  634.                 LAB_Label,              label,\
  635.                 LISTV_EntryArray,       strings,\
  636.                 LISTV_ReadOnly,         TRUE,\
  637.         EndObject
  638.  
  639. #define ReadStrListviewSorted(label,strings)\
  640.         ListviewObject,\
  641.                 LAB_Label,              label,\
  642.                 LISTV_EntryArray,       strings,\
  643.                 LISTV_SortEntryArray,   TRUE,\
  644.                 LISTV_ReadOnly,         TRUE,\
  645.         EndObject
  646.  
  647. #define MultiStrListview(label,strings,id)\
  648.         ListviewObject,\
  649.                 LAB_Label,              label,\
  650.                 GA_ID,                  id,\
  651.                 LISTV_EntryArray,       strings,\
  652.                 LISTV_MultiSelect,      TRUE,\
  653.         EndObject
  654.  
  655. #define MultiStrListviewSorted(label,strings,id)\
  656.         ListviewObject,\
  657.                 LAB_Label,              label,\
  658.                 GA_ID,                  id,\
  659.                 LISTV_EntryArray,       strings,\
  660.                 LISTV_SortEntryArray,   TRUE,\
  661.                 LISTV_MultiSelect,      TRUE,\
  662.         EndObject
  663.  
  664. /* "Quick" separator bar creation macros. */
  665. #define VertSeparator\
  666.         SeperatorObject,\
  667.         EndObject, FixMinWidth
  668.  
  669. #define VertThinSeparator\
  670.         SeperatorObject,\
  671.                 SEP_Thin,               TRUE,\
  672.         EndObject, FixMinWidth
  673.  
  674. #define HorizSeparator\
  675.         SeperatorObject,\
  676.                 SEP_Horiz,              TRUE,\
  677.         EndObject, FixMinHeight
  678.  
  679. #define TitleSeparator(t)\
  680.         SeperatorObject,\
  681.                 SEP_Horiz,              TRUE,\
  682.                 SEP_Title,              t,\
  683.         EndObject, FixMinHeight
  684.  
  685. #define HTitleSeparator(t)\
  686.         SeperatorObject,\
  687.                 SEP_Horiz,              TRUE,\
  688.                 SEP_Title,              t,\
  689.                 SEP_Highlight,          TRUE,\
  690.         EndObject, FixMinHeight
  691.  
  692. #define CTitleSeparator(t)\
  693.         SeperatorObject,\
  694.                 SEP_Horiz,              TRUE,\
  695.                 SEP_Title,              t,\
  696.                 SEP_CenterTitle,        TRUE,\
  697.         EndObject, FixMinHeight
  698.  
  699. #define CHTitleSeparator(t)\
  700.         SeperatorObject,\
  701.                 SEP_Horiz,              TRUE,\
  702.                 SEP_Title,              t,\
  703.                 SEP_Highlight,          TRUE,\
  704.                 SEP_CenterTitle,        TRUE,\
  705.         EndObject, FixMinHeight
  706.  
  707. #define TitleSeparatorLeft(t)\
  708.         SeperatorObject,\
  709.                 SEP_Horiz,              TRUE,\
  710.                 SEP_Title,              t,\
  711.                 SEP_TitleLeft,          TRUE,\
  712.         EndObject, FixMinHeight
  713.  
  714. #define HTitleSeparatorLeft(t)\
  715.         SeperatorObject,\
  716.                 SEP_Horiz,              TRUE,\
  717.                 SEP_Title,              t,\
  718.                 SEP_Highlight,          TRUE,\
  719.                 SEP_TitleLeft,          TRUE,\
  720.         EndObject, FixMinHeight
  721.  
  722. #define CTitleSeparatorLeft(t)\
  723.         SeperatorObject,\
  724.                 SEP_Horiz,              TRUE,\
  725.                 SEP_Title,              t,\
  726.                 SEP_CenterTitle,        TRUE,\
  727.                 SEP_TitleLeft,          TRUE,\
  728.         EndObject, FixMinHeight
  729.  
  730. #define CHTitleSeparatorLeft(t)\
  731.         SeperatorObject,\
  732.                 SEP_Horiz,              TRUE,\
  733.                 SEP_Title,              t,\
  734.                 SEP_Highlight,          TRUE,\
  735.                 SEP_CenterTitle,        TRUE,\
  736.                 SEP_TitleLeft,          TRUE,\
  737.         EndObject, FixMinHeight
  738.  
  739. /* Typos */
  740. #define VertSeperator           VertSeparator
  741. #define VertThinSeperator       VertThinSeparator
  742. #define HorizSeperator          HorizSeparator
  743. #define TitleSeperator          TitleSeparator
  744. #define HTitleSeperator         HTitleSeparator
  745. #define CTitleSeperator         CTitleSeparator
  746. #define CHTitleSeperator        CHTitleSeparator
  747.  
  748. /* Some simple menu macros */
  749. #define StartMenu              [ NM_IGNORE, 0, 0, NIL, 0, 0, NIL
  750. #define Title(t)                 NM_TITLE, 0, t, NIL, 0, 0, NIL
  751. #define Item(t,s,i)              NM_ITEM, 0, t, s, 0, 0, i
  752. #define ItemBar                  NM_ITEM, 0, NM_BARLABEL, NIL, 0, 0, NIL
  753. #define SubItem(t,s,i)           NM_SUB, 0, t, s, 0, 0, i
  754. #define SubBar                   NM_SUB, 0, NM_BARLABEL, NIL, 0, 0, NIL
  755. #define End                      NM_END, 0, NIL, NIL, 0, 0, NIL ]:newmenu
  756.  
  757. /* Some object macros */
  758. #define AbleObject(win,object,value)\
  759.         SetGadgetAttrsA(object,win,NIL,[GA_DISABLED,value,TAG_DONE])
  760.  
  761. #define DisableObject(win,object)\
  762.         AbleObject(win,object,TRUE)
  763.  
  764. #define EnableObject(win,object)\
  765.         AbleObject(win,object,FALSE)
  766.  
  767. /* Base class method macros. */
  768. #define AddMap(object,target,map)\
  769.         domethod( object, [ BASE_ADDMAP, target, map ] )
  770.  
  771. #define AddCondit(object,target,ttag,tdat,ftag,fdat,stag,sdat)\
  772.         domethod( object, [ BASE_ADDCONDITIONAL, target,\
  773.                   ttag, tdat,\
  774.                   ftag, fdat,\
  775.                   stag, sdat ] )
  776.  
  777. #define AddHook(object,hook)\
  778.         domethod( object, [ BASE_ADDHOOK, hook ] )
  779.  
  780. #define RemMap(object,target)\
  781.         domethod( object, [ BASE_REMMAP, target  ] )
  782.  
  783. #define RemCondit(object,target)\
  784.         domethod( object, [ BASE_REMCONDITIONAL, target ] )
  785.  
  786. #define RemHook( object,hook)\
  787.         domethod( object, [ BASE_REMHOOK, hook ] )
  788.  
  789. /* Listview class method macros. */
  790. #define AddEntry(window,object,entry,how)\
  791.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_ADDSINGLE,\
  792.                              NIL, entry, how, 0 ] )
  793.  
  794. #define AddEntryVisible(window,object,entry,how)\
  795.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_ADDSINGLE,\
  796.                              NIL, entry, how, LVASF_MAKEVISIBLE ] )
  797.  
  798. #define AddEntrySelect(window,object,entry,how)\
  799.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_ADDSINGLE,\
  800.                              NIL, entry, how, LVASF_SELECT ] )
  801.  
  802. #define InsertEntry(window,object,entry,where)\
  803.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_INSERTSINGLE,\
  804.                             NIL, where, entry, 0 ] )
  805.  
  806. #define InsertEntryVisible(window,object,entry,where)\
  807.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_INSERTSINGLE,\
  808.                              NIL, where, entry, LVASF_MAKEVISIBLE ] )
  809.  
  810. #define InsertEntrySelect(window,object,entry,where)\
  811.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_INSERTSINGLE,\
  812.                             NIL, where, entry, LVASF_SELECT ] )
  813.  
  814. #define ClearList(window,object)\
  815.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_CLEAR, NIL ] )
  816.  
  817. #define FirstEntry(object)\
  818.         domethod( object, [ LVM_FIRSTENTRY, NIL, 0 ] )
  819.  
  820. #define FirstSelected(object)\
  821.         domethod( object, [ LVM_FIRSTENTRY, NIL, LVGEF_SELECTED ] )
  822.  
  823. #define LastEntry(object)\
  824.         domethod( object, [ LVM_LASTENTRY, NIL, 0 ] )
  825.  
  826. #define LastSelected(object)\
  827.         domethod( object, [ LVM_LASTENTRY, NIL, LVGEF_SELECTED ] )
  828.  
  829. #define NextEntry(object,last)\
  830.         domethod( object, [ LVM_NEXTENTRY, last, 0 ] )
  831.  
  832. #define NextSelected(object,last)\
  833.         domethod( object, [ LVM_NEXTENTRY, last, LVGEF_SELECTED ] )
  834.  
  835. #define PrevEntry(object,last)\
  836.         domethod( object, [ LVM_PREVENTRY, last, 0 ] )
  837.  
  838. #define PrevSelected(object,last)\
  839.         domethod( object, [ LVM_PREVENTRY, last, LVGEF_SELECTED ] )
  840.  
  841. #define RemoveEntry(object,entry)\
  842.         domethod( object, [ LVM_REMENTRY, NIL, entry ] )
  843.  
  844. #define RemoveEntryVisible(window,object,entry)\
  845.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_REMENTRY, NIL, entry ] )
  846.  
  847. #define RefreshList(window,object)\
  848.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_REFRESH, NIL ] )
  849.  
  850. #define RedrawList(window,object)\
  851.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_REDRAW, NIL ] )
  852.  
  853. #define SortList(window,object)\
  854.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_SORT, NIL ] )
  855.  
  856. #define LockList(object)\
  857.         domethod( object, [ LVM_LOCKLIST, NIL ] )
  858.  
  859. #define UnlockList(window,object)\
  860.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_UNLOCKLIST, NIL ] )
  861.  
  862. #define MoveEntry(window,object,entry,dir)\
  863.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_MOVE, NIL,\
  864.                              entry, dir ] )
  865.  
  866. #define MoveSelectedEntry(window,object,dir)\
  867.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_MOVE, NIL,\
  868.                              NIL, dir ] )
  869.  
  870. #define ReplaceEntry(window,object,old,new)\
  871.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_REPLACE, NIL,\
  872.                              old, new ] )
  873.  
  874. #define RemoveSelected(window,object)\
  875.         BgUI_DoGadgetMethodA( object, window, NIL, [ LVM_REMSELECTED, NIL ] )
  876.  
  877. /* Window class method macros. */
  878. #define GadgetKey(wobj,gobj,key)\
  879.         domethod( wobj, [ WM_GADGETKEY, NIL, gobj, key ] )
  880.  
  881. #define WindowOpen(wobj)\
  882.         domethod( wobj, [ WM_OPEN ] )
  883.  
  884. #define WindowClose(wobj)\
  885.         domethod( wobj, [ WM_CLOSE ] )
  886.  
  887. #define WindowBusy(wobj)\
  888.         domethod( wobj, [ WM_SLEEP ] )
  889.  
  890. #define WindowReady(wobj)\
  891.         domethod( wobj, [ WM_WAKEUP ] )
  892.  
  893. #define HandleEvent(wobj)\
  894.         domethod( wobj, [ WM_HANDLEIDCMP ] )
  895.  
  896. #define DisableMenu(wobj,id,set)\
  897.         domethod( wobj, [ WM_DISABLEMENU, id, set ] )
  898.  
  899. #define CheckItem(wobj,id,set)\
  900.         domethod( wobj, [ WM_CHECKITEM, id, set ] )
  901.  
  902. #define MenuDisabled(wobj,id)\
  903.         domethod( wobj, [ WM_MENUDISABLED, id ] )
  904.  
  905. #define ItemChecked(wobj,id)\
  906.         domethod( wobj, [ WM_ITEMCHECKED, id ] )
  907.  
  908. #define GetAppMsg(wobj)\
  909.         domethod( wobj, [ WM_GETAPPMSG ] )
  910.  
  911. #define AddUpdate(wobj,id,target,map)\
  912.         domethod( wobj, [ WM_ADDUPDATE, id, target, map ] )
  913.  
  914. #define GetSignalWindow(wobj)\
  915.         domethod( wobj, [ WM_GET_SIGNAL_WINDOW ] )
  916.  
  917. /* Commodity class method macros. */
  918. #define AddHotkey(broker,desc,id,flags)\
  919.         domethod( broker, [ CM_ADDHOTKEY, desc, id, flags ] )
  920.  
  921. #define RemHotkey(broker,id)\
  922.         domethod( broker, [ CM_REMHOTKEY, id ] )
  923.  
  924. #define DisableHotkey(broker,id)\
  925.         domethod( broker, [ CM_DISABLEHOTKEY, id ] )
  926.  
  927. #define EnableHotKey(broker,id)\
  928.         domethod( broker, [ CM_ENABLEHOTKEY, id ] )
  929.  
  930. #define EnableBroker(broker)\
  931.         domethod( broker, [ CM_ENABLEBROKER ] )
  932.  
  933. #define DisableBroker(broker)\
  934.         domethod( broker, [ CM_DISABLEBROKER ] )
  935.  
  936. #define MsgInfo(broker,type,id,data)\
  937.         domethod( broker, [ CM_MSGINFO,\
  938.                             type,\
  939.                             id,\
  940.                             data ] )
  941.  
  942. /* FileReq class method macros. */
  943. #define DoRequest(object)\
  944.         domethod( object, [ ASLM_DOREQUEST ] )
  945.