1 #ifndef REACTION_REACTION_MACROS_H
    2 #define REACTION_REACTION_MACROS_H
    3 
    4 /*
    5 	reaction macros (V45)
    6 
    7 	Copyright © 2002 The MorphOS Development Team, All Rights Reserved.
    8 */
    9 
   10 
   11 /* Gadget object-creation macros */
   12 
   13 #define ButtonObject          NewObject( NULL, "button.gadget"
   14 
   15 #define ToggleObject          NewObject( NULL, "button.gadget", \
   16                                          GA_ToggleSelect, TRUE
   17 
   18 #define CheckBoxObject        NewObject( CHECKBOX_GetClass(), NULL
   19 
   20 #define ChooserObject         NewObject( CHOOSER_GetClass(), NULL
   21 
   22 #define ClickTabObject        NewObject( CLICKTAB_GetClass(), NULL
   23 #define ClickTabsObject       ClickTabObject
   24 
   25 #define PopUpObject           NewObject( CHOOSER_GetClass(), NULL, \
   26                                          CHOOSER_PopUp, TRUE
   27 
   28 #define DropDownObject        NewObject( CHOOSER_GetClass(), NULL, \
   29                                          CHOOSER_DropDown, TRUE
   30 
   31 #define FuelGaugeObject       NewObject( FUELGAUGE_GetClass(), NULL
   32 #define FuelObject            FuelGaugeObject
   33 
   34 #ifndef GetFileObject
   35 # define GetFileObject        NewObject( GETFILE_GetClass(), NULL
   36 #endif
   37 
   38 #ifndef GetFontObject
   39 # define GetFontObject        NewObject( GETFONT_GetClass(), NULL
   40 #endif
   41 
   42 #ifndef GetScreenModeObject
   43 # define GetScreenModeObject  NewObject( GETSCREENMODE_GetClass(), NULL
   44 #endif
   45 
   46 #define IntegerObject         NewObject( INTEGER_GetClass(), NULL
   47 
   48 #define PaletteObject         NewObject( PALETTE_GetClass(), NULL
   49 
   50 #define PageObject            NewObject( PAGE_GetClass(), NULL
   51 
   52 #define PenMapObject          NewObject( PENMAP_GetClass(), NULL
   53 
   54 #define LayoutObject          NewObject( LAYOUT_GetClass(), NULL
   55 
   56 #define VLayoutObject         NewObject( LAYOUT_GetClass(), NULL, LAYOUT_Orientation, LAYOUT_ORIENT_VERT
   57 
   58 #define HLayoutObject         NewObject( LAYOUT_GetClass(), NULL
   59 #define VGroupObject          VLayoutObject
   60 #define HGroupObject          HLayoutObject
   61 
   62 #define ListBrowserObject     NewObject( LISTBROWSER_GetClass(), NULL
   63 
   64 #define RadioButtonObject     NewObject( RADIOBUTTON_GetClass(), NULL
   65 #define MxObject              RadioButtonObject
   66 
   67 #define ScrollerObject        NewObject( SCROLLER_GetClass(), NULL
   68 
   69 #define SpeedBarObject        NewObject( SPEEDBAR_GetClass(), NULL
   70 
   71 #define SliderObject          NewObject( SLIDER_GetClass(), NULL
   72 
   73 #define StatusObject          NewObject( STATUSBAR_GetClass(), NULL
   74 
   75 #define StringObject          NewObject( STRING_GetClass(), NULL
   76 
   77 #define SpaceObject           NewObject( SPACE_GetClass(), NULL
   78 
   79 #define TextFieldObject       NewObject( TEXTFIELD_GetClass(), NULL
   80 
   81 
   82 /* Image object-creation macros */
   83 
   84 #define BevelObject           NewObject( BEVEL_GetClass(), NULL
   85 
   86 #define BitMapObject          NewObject( BITMAP_GetClass(), NULL
   87 
   88 #define DrawListObject        NewObject( DRAWLIST_GetClass(), NULL
   89 
   90 #define GlyphObject           NewObject( GLYPH_GetClass(), NULL
   91 
   92 #define LabelObject           NewObject( LABEL_GetClass(), NULL
   93 
   94 
   95 /* Class object-creation macros */
   96 
   97 #define WindowObject          NewObject( WINDOW_GetClass(), NULL
   98 
   99 #define ARexxObject           NewObject( AREXX_GetClass(), NULL
  100 
  101 
  102 /* window.class method macros */
  103 
  104 #define RA_OpenWindow(win)       (struct Window *) DoMethod( win, WM_OPEN, NULL )
  105 #define RA_CloseWindow(win)                        DoMethod( win, WM_CLOSE, NULL )
  106 #define RA_HandleInput(win,code)                   DoMethod( win, WM_HANDLEINPUT, code )
  107 #define RA_Iconify(win)                     (BOOL) DoMethod( win, WM_ICONIFY, NULL )
  108 #define RA_Uniconify(win)                          RA_OpenWindow( win )
  109 
  110 
  111 /* arexx.class method macros */
  112 
  113 #define RA_HandleRexx(obj)       DoMethod( obj, AM_HANDLEEVENT )
  114 #define RA_FlushRexx(obj)        DoMethod( obj, AM_FLUSH )
  115 
  116 
  117 /* Useful Hook macro */
  118 
  119 #define RA_SetUpHook(apphook,func,data) \
  120 {                                       \
  121 	apphook.h_Entry = (HOOKFUNC)func;   \
  122 	apphook.h_SubEntry = NULL;          \
  123 	apphook.h_Data = (APTR)data;        \
  124 }
  125 
  126 
  127 /* Additional BOOPSI classes */
  128 
  129 #define ColorWheelObject    NewObject( NULL, "colorwheel.gadget"
  130 #define GradientObject      NewObject( NULL, "gradientslider.gadget"
  131 #define LedObject           NewObject( NULL, "led.image"
  132 
  133 
  134 /* End synonyms */
  135 
  136 #define WindowEnd          End
  137 
  138 #define BitMapEnd          End
  139 #define ButtonEnd          End
  140 #define CheckBoxEnd        End
  141 #define ChooserEnd         End
  142 #define ClickTabEnd        End
  143 #define ClickTabsEnd       End
  144 #define FuelGaugeEnd       End
  145 #define IntegerEnd         End
  146 #define PaletteEnd         End
  147 #define LayoutEnd          End
  148 #define ListBrowserEnd     End
  149 #define PageEnd            End
  150 #define RadioButtonEnd     End
  151 #define ScrollerEnd        End
  152 #define SpeedBarEnd        End
  153 #define SliderEnd          End
  154 #define StatusEnd          End
  155 #define StringEnd          End
  156 #define SpaceEnd           End
  157 #define StatusbarEnd       End
  158 #define TextFieldEnd       End
  159 
  160 #define ARexxEnd           End
  161 
  162 #define BevelEnd           End
  163 #define DrawListEnd        End
  164 #define GlyphEnd           End
  165 #define LabelEnd           End
  166 
  167 #define ColorWheelEnd      End
  168 #define GradientSliderEnd  End
  169 #define LedEnd             End
  170 
  171 
  172 /* Vector glyph-images */
  173 
  174 #define GetPath          GLYPH_POPDRAWER
  175 #define GetFile          GLYPH_POPFILE
  176 #define GetScreen        GLYPH_POPSCREENMODE
  177 #define GetTime          GLYPH_POPTIME
  178 #define CheckMark        GLYPH_CHECKMARK
  179 #define PopUp            GLYPH_POPUP
  180 #define DropDown         GLYPH_DROPDOWN
  181 #define ArrowUp          GLYPH_ARROWUP
  182 #define ArrowDown        GLYPH_ARROWDOWN
  183 #define ArrowLeft        GLYPH_ARROWLEFT
  184 #define ArrowRight       GLYPH_ARROWRIGHT
  185 
  186 
  187 /* Bevel frame-types */
  188 
  189 #define ThinFrame        BVS_THIN
  190 #define ButtonFrame      BVS_BUTTON
  191 #define StandardFrame    BVS_STANDARD
  192 #define RidgeFrame       BVS_FIELD
  193 #define StringFrame      BVS_FIELD
  194 #define GroupFrame       BVS_GROUP
  195 #define DropBoxFrame     BVS_DROPBOX
  196 #define HBarFrame        BVS_SBAR_HORIZ
  197 #define VBarFrame        BVS_SBAR_VERT
  198 #define RadioFrame       BVS_RADIOBUTTON
  199 #define MxFrame          BVS_RADIOBUTTON
  200 
  201 
  202 /* Often used simple gadgets */
  203 
  204 #define Label(text)                          CHILD_Label, LabelObject, LABEL_Text, text, End
  205 
  206 #define Button(text,id)                      ButtonObject, GA_Text, text, GA_ID, id, GA_RelVerify, TRUE, End
  207 #define PushButton(text,id)                  ButtonObject, GA_Text, text, GA_ID, id, GA_RelVerify, TRUE, BUTTON_PushButton, TRUE, End
  208 
  209 #define TextLine(text)                       ButtonObject, GA_Text, text, GA_ReadOnly, TRUE, End
  210 #define LabelTextLine(text,label)            TextLine(text), Label(label)
  211 
  212 #define String(text,id,maxchars)             StringObject, STRINGA_TextVal, text, STRINGA_MaxChars, maxchars, GA_ID, id, GA_RelVerify, TRUE, GA_TabCycle, TRUE, End
  213 #define LabelString(text,id,maxchars,label)  String(text,id,maxchars), Label(label)
  214 #define PopString(text,id,maxchars,image)    LAYOUT_AddChild, HLayoutObject, String(text,0,maxchars), ButtonObject, BAG_AutoButton, image, GA_RelVerify, TRUE, GA_ID, id, End, End
  215 
  216 
  217 /* BGUI-style window/layout group-macros */
  218 
  219 #define StartMember         LAYOUT_AddChild
  220 #define StartImage          LAYOUT_AddImage
  221 #define StartHLayout        LAYOUT_AddChild, HLayoutObject
  222 #define StartVLayout        LAYOUT_AddChild, VLayoutObject
  223 #define StartHGroup         StartHLayout
  224 #define StartVGroup         StartVLayout
  225 
  226 #ifndef End
  227 # define End                TAG_END)
  228 #endif
  229 
  230 #define EndWindow           End
  231 #define EndMember           End
  232 #define EndImage            End
  233 #define EndObject           End
  234 #define EndHGroup           End
  235 #define EndVGroup           End
  236 #define EndGroup            End
  237 
  238 
  239 /* Lazy typist macros */
  240 
  241 #define HAlign(p)            LAYOUT_HorizAlignment, p
  242 #define VAlign(p)            LAYOUT_VertAlignment, p
  243 #define Spacing(p)           LAYOUT_InnerSpacing, p
  244 #define LOffset(p)           LAYOUT_LeftSpacing, p
  245 #define ROffset(p)           LAYOUT_RightSpacing, p
  246 #define TOffset(p)           LAYOUT_TopSpacing, p
  247 #define BOffset(p)           LAYOUT_BottomSpacing, p
  248 
  249 
  250 /* Even lazier typist macros */
  251 
  252 #define VCentered            LAYOUT_VertAlignment, LALIGN_CENTER
  253 #define TAligned             LAYOUT_VertAlignment, LALIGN_TOP
  254 #define BAligned             LAYOUT_VertAlignment, LALIGN_BOTTOM
  255 #define HCentered            LAYOUT_HorizAlignment, LALIGN_CENTER
  256 #define LAligned             LAYOUT_HorizAlignment, LALIGN_LEFT
  257 #define RAligned             LAYOUT_HorizAlignment, LALIGN_RIGHT
  258 #define Offset(x1,y1,x2,y2)  LAYOUT_LeftSpacing, x1, LAYOUT_TopSpacing, y1, LAYOUT_RightSpacing, x2, LAYOUT_BottomSpacing, y2
  259 #define EvenSized            LAYOUT_EvenSize, TRUE
  260 #define MemberLabel(a)       CHILD_Label, LabelObject, LABEL_Text, a, LabelEnd
  261 
  262 
  263 /* Easy menu-macros */
  264 
  265 #define Title(t)        { NM_TITLE, t, NULL, 0, 0, NULL }
  266 #define Item(t,s,i)     { NM_ITEM, t, s, 0, 0, (APTR)i }
  267 #define ItemBar         { NM_ITEM, NM_BARLABEL, NULL, 0, 0, NULL }
  268 #define SubItem(t,s,i)  { NM_SUB, t, s, 0, 0, (APTR)i }
  269 #define SubBar          { NM_SUB, NM_BARLABEL, NULL, 0, 0, NULL }
  270 #define EndMenu         { NM_END, NULL, NULL, 0, 0, NULL }
  271 
  272 
  273 #endif /* REACTION_REACTION_MACROS_H */