#ifndef LIBRARIES_GADTOOLS_H #define LIBRARIES_GADTOOLS_H /* ** $Filename: libraries/gadtools.h $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 36.18 $ ** $Date: 91/10/09 $ ** ** gadtools.library definitions ** ** (C) Copyright 1989-1999 Amiga, Inc. ** All Rights Reserved */ /*------------------------------------------------------------------------*/ #ifndef EXEC_TYPES_H #include <exec/types.h> #endif #ifndef UTILITY_TAGITEM_H #include <utility/tagitem.h> #endif #ifndef INTUITION_INTUITION_H #include <intuition/intuition.h> #endif /*------------------------------------------------------------------------*/ /* The kinds (almost classes) of gadgets in the toolkit. Use these identifiers when calling CreateGadgetA() */ #define GENERIC_KIND 0 #define BUTTON_KIND 1 #define CHECKBOX_KIND 2 #define INTEGER_KIND 3 #define LISTVIEW_KIND 4 #define MX_KIND 5 #define NUMBER_KIND 6 #define CYCLE_KIND 7 #define PALETTE_KIND 8 #define SCROLLER_KIND 9 /* Kind number 10 is reserved */ #define SLIDER_KIND 11 #define STRING_KIND 12 #define TEXT_KIND 13 #define NUM_KINDS 14 /*------------------------------------------------------------------------*/ /* These two definitions are obsolete, but are here for backwards compatibility. You never need to worry about these: */ #define GADTOOLBIT (0x8000) /* Use this mask to isolate the user part: */ #define GADTOOLMASK (~GADTOOLBIT) /*------------------------------------------------------------------------*/ /* 'Or' the appropriate set together for your Window IDCMPFlags: */ #define ARROWIDCMP (IDCMP_GADGETUP | IDCMP_GADGETDOWN |\ IDCMP_INTUITICKS | IDCMP_MOUSEBUTTONS) #define BUTTONIDCMP (IDCMP_GADGETUP) #define CHECKBOXIDCMP (IDCMP_GADGETUP) #define INTEGERIDCMP (IDCMP_GADGETUP) #define LISTVIEWIDCMP (IDCMP_GADGETUP | IDCMP_GADGETDOWN |\ IDCMP_MOUSEMOVE | ARROWIDCMP) #define MXIDCMP (IDCMP_GADGETDOWN) #define NUMBERIDCMP (NULL) #define CYCLEIDCMP (IDCMP_GADGETUP) #define PALETTEIDCMP (IDCMP_GADGETUP) /* Use ARROWIDCMP|SCROLLERIDCMP if your scrollers have arrows: */ #define SCROLLERIDCMP (IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_MOUSEMOVE) #define SLIDERIDCMP (IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_MOUSEMOVE) #define STRINGIDCMP (IDCMP_GADGETUP) #define TEXTIDCMP (NULL) /*------------------------------------------------------------------------*/ /* Typical suggested spacing between "elements": */ #define INTERWIDTH 8 #define INTERHEIGHT 4 /*------------------------------------------------------------------------*/ /* Generic NewGadget used by several of the gadget classes: */ struct NewGadget { WORD ng_LeftEdge, ng_TopEdge; /* gadget position */ WORD ng_Width, ng_Height; /* gadget size */ UBYTE *ng_GadgetText; /* gadget label */ struct TextAttr *ng_TextAttr; /* desired font for gadget label */ UWORD ng_GadgetID; /* gadget ID */ ULONG ng_Flags; /* see below */ APTR ng_VisualInfo; /* Set to retval of GetVisualInfo() */ APTR ng_UserData; /* gadget UserData */ }; /* ng_Flags control certain aspects of the gadget. The first five control the placement of the descriptive text. All larger groups supply a default: */ #define PLACETEXT_LEFT 0x0001 /* Right-align text on left side */ #define PLACETEXT_RIGHT 0x0002 /* Left-align text on right side */ #define PLACETEXT_ABOVE 0x0004 /* Center text above */ #define PLACETEXT_BELOW 0x0008 /* Center text below */ #define PLACETEXT_IN 0x0010 /* Center text on */ #define NG_HIGHLABEL 0x0020 /* Highlight the label */ /*------------------------------------------------------------------------*/ /* Fill out an array of these and pass that to CreateMenus(): */ struct NewMenu { UBYTE nm_Type; /* See below */ /* Compiler inserts a PAD byte here */ STRPTR nm_Label; /* Menu's label */ STRPTR nm_CommKey; /* MenuItem Command Key Equiv */ UWORD nm_Flags; /* Menu or MenuItem flags (see note) */ LONG nm_MutualExclude; /* MenuItem MutualExclude word */ APTR nm_UserData; /* For your own use, see note */ }; /* Each nm_Type should be one of these: */ #define NM_TITLE 1 #define NM_ITEM 2 #define NM_SUB 3 #define NM_END 0 #define MENU_IMAGE 128 /* For an image menu-item or sub-item, use one of these. Set * nm_Label to point at the Image structure you wish to use. * NOTE: At present, you may only use conventional images. * Custom images created from Intuition image-classes do not work. */ #define IM_ITEM (NM_ITEM | MENU_IMAGE) #define IM_SUB (NM_SUB | MENU_IMAGE) /* If you set your label to NM_BARLABEL, you'll get a separator bar. */ #define NM_BARLABEL ((STRPTR)-1) /* The nm_Flags field is used to fill out either the Menu->Flags or MenuItem->Flags field. Note that the sense of the MENUENABLED or ITEMENABLED bit is inverted between this use and Intuition's use, in other words, NewMenus are enabled by default. The following labels are provided to disable them: */ #define NM_MENUDISABLED MENUENABLED #define NM_ITEMDISABLED ITEMENABLED /* The following are pre-cleared (COMMSEQ, ITEMTEXT, and HIGHxxx are set later as appropriate): */ #define NM_FLAGMASK (~(COMMSEQ | ITEMTEXT | HIGHFLAGS)) /* You may choose among CHECKIT, MENUTOGGLE, and CHECKED. Toggle-select menuitems are of type CHECKIT|MENUTOGGLE, along with CHECKED if currently selected. Mutually exclusive ones are of type CHECKIT, and possibly CHECKED too. The nm_MutualExclude is a bit-wise representation of the items excluded by this one, so in the simplest case (choose 1 among n), these flags would be ~1, ~2, ~4, ~8, ~16, etc. See the Intuition Menus chapter. */ /* A UserData pointer can be associated with each Menu and MenuItem structure. The CreateMenus() call allocates space for a UserData after each Menu or MenuItem (header, item or sub-item). You should use the GTMENU_USERDATA() or GTMENUITEM_USERDATA() macro to extract it. */ #define GTMENU_USERDATA(menu) (* ( (APTR *)(((struct Menu *)menu)+1) ) ) #define GTMENUITEM_USERDATA(menuitem) (* ( (APTR *)(((struct MenuItem *)menuitem)+1) ) ) /* Here is an old one for compatibility. Do not use in new code! */ #define MENU_USERDATA(menuitem) (* ( (APTR *)(menuitem+1) ) ) /* These return codes can be obtained through the GTMN_SecondaryError tag */ #define GTMENU_TRIMMED 0x00000001 /* Too many menus, items, or subitems, menu has been trimmed down */ #define GTMENU_INVALID 0x00000002 /* Invalid NewMenu array */ #define GTMENU_NOMEM 0x00000003 /* Out of memory */ /*------------------------------------------------------------------------*/ /* Tags for toolkit functions: */ #define GT_TagBase TAG_USER + 0x80000 #define GTVI_NewWindow GT_TagBase+1 /* Unused */ #define GTVI_NWTags GT_TagBase+2 /* Unused */ #define GT_Private0 GT_TagBase+3 /* (private) */ #define GTCB_Checked GT_TagBase+4 /* State of checkbox */ #define GTLV_Top GT_TagBase+5 /* Top visible one in listview */ #define GTLV_Labels GT_TagBase+6 /* List to display in listview */ #define GTLV_ReadOnly GT_TagBase+7 /* TRUE if listview is to be read-only */ #define GTLV_ScrollWidth GT_TagBase+8 /* Width of scrollbar */ #define GTMX_Labels GT_TagBase+9 /* NULL-terminated array of labels */ #define GTMX_Active GT_TagBase+10 /* Active one in mx gadget */ #define GTTX_Text GT_TagBase+11 /* Text to display */ #define GTTX_CopyText GT_TagBase+12 /* Copy text label instead of referencing it */ #define GTNM_Number GT_TagBase+13 /* Number to display */ #define GTCY_Labels GT_TagBase+14 /* NULL-terminated array of labels */ #define GTCY_Active GT_TagBase+15 /* The active one in the cycle gad */ #define GTPA_Depth GT_TagBase+16 /* Number of bitplanes in palette */ #define GTPA_Color GT_TagBase+17 /* Palette color */ #define GTPA_ColorOffset GT_TagBase+18 /* First color to use in palette */ #define GTPA_IndicatorWidth GT_TagBase+19 /* Width of current-color indicator */ #define GTPA_IndicatorHeight GT_TagBase+20 /* Height of current-color indicator */ #define GTSC_Top GT_TagBase+21 /* Top visible in scroller */ #define GTSC_Total GT_TagBase+22 /* Total in scroller area */ #define GTSC_Visible GT_TagBase+23 /* Number visible in scroller */ #define GTSC_Overlap GT_TagBase+24 /* Unused */ /* GT_TagBase+25 through GT_TagBase+37 are reserved */ #define GTSL_Min GT_TagBase+38 /* Slider min value */ #define GTSL_Max GT_TagBase+39 /* Slider max value */ #define GTSL_Level GT_TagBase+40 /* Slider level */ #define GTSL_MaxLevelLen GT_TagBase+41 /* Max length of printed level */ #define GTSL_LevelFormat GT_TagBase+42 /* Format string for level */ #define GTSL_LevelPlace GT_TagBase+43 /* Where level should be placed */ #define GTSL_DispFunc GT_TagBase+44 /* Callback for number calculation before display */ #define GTST_String GT_TagBase+45 /* String gadget's displayed string */ #define GTST_MaxChars GT_TagBase+46 /* Max length of string */ #define GTIN_Number GT_TagBase+47 /* Number in integer gadget */ #define GTIN_MaxChars GT_TagBase+48 /* Max number of digits */ #define GTMN_TextAttr GT_TagBase+49 /* MenuItem font TextAttr */ #define GTMN_FrontPen GT_TagBase+50 /* MenuItem text pen color */ #define GTBB_Recessed GT_TagBase+51 /* Make BevelBox recessed */ #define GT_VisualInfo GT_TagBase+52 /* result of VisualInfo call */ #define GTLV_ShowSelected GT_TagBase+53 /* show selected entry beneath listview, set tag data = NULL for display-only, or pointer to a string gadget you've created */ #define GTLV_Selected GT_TagBase+54 /* Set ordinal number of selected entry in the list */ #define GT_Reserved1 GT_TagBase+56 /* Reserved for future use */ #define GTTX_Border GT_TagBase+57 /* Put a border around Text-display gadgets */ #define GTNM_Border GT_TagBase+58 /* Put a border around Number-display gadgets */ #define GTSC_Arrows GT_TagBase+59 /* Specify size of arrows for scroller */ #define GTMN_Menu GT_TagBase+60 /* Pointer to Menu for use by LayoutMenuItems() */ #define GTMX_Spacing GT_TagBase+61 /* Added to font height to figure spacing between mx choices. Use this instead of LAYOUTA_SPACING for mx gadgets. */ /* New to V37 GadTools. Ignored by GadTools V36 */ #define GTMN_FullMenu GT_TagBase+62 /* Asks CreateMenus() to validate that this is a complete menu structure */ #define GTMN_SecondaryError GT_TagBase+63 /* ti_Data is a pointer to a ULONG to receive error reports from CreateMenus() */ #define GT_Underscore GT_TagBase+64 /* ti_Data points to the symbol that preceeds the character you'd like to underline in a gadget label */ #define GTST_EditHook GT_TagBase+55 /* String EditHook */ /* GT_TagBase+65 on up reserved for future use */ /* Old definition, now obsolete: */ #define GT_Reserved0 GTST_EditHook /*------------------------------------------------------------------------*/ /* "NWay" is an old synonym for cycle gadgets */ #define NWAY_KIND CYCLE_KIND #define NWAYIDCMP CYCLEIDCMP #define GTNW_Labels GTCY_Labels #define GTNW_Active GTCY_Active /*------------------------------------------------------------------------*/ #endif /* LIBRARIES_GADTOOLS_H */