home *** CD-ROM | disk | FTP | other *** search
- #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-1991 Commodore-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 */
-