[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

        IFND LIBRARIES_GADTOOLS_I
LIBRARIES_GADTOOLS_I    SET     1
**
**      $Filename: libraries/gadtools.i $
**      $Release: 2.04 Includes, V37.4 $
**      $Revision: 36.13 $
**      $Date: 91/10/09 $
**
**      gadtools.library definitions
**
**      (C) Copyright 1989-1999 Amiga, Inc.
**      All Rights Reserved.
**

*------------------------------------------------------------------------*

        IFND EXEC_TYPES_I
        INCLUDE 'exec/types.i'
        ENDC

        IFND UTILITY_TAGITEM_I
        INCLUDE 'utility/tagitem.i'
        ENDC

        IFND INTUITION_INTUITION_I
        INCLUDE 'intuition/intuition.i'
        ENDC

*------------------------------------------------------------------------*

*       The kinds (almost classes) of gadgets in the toolkit.  Use these
*       identifiers when calling CreateGadgetA()

GENERIC_KIND    EQU     0
BUTTON_KIND     EQU     1
CHECKBOX_KIND   EQU     2
INTEGER_KIND    EQU     3
LISTVIEW_KIND   EQU     4
MX_KIND         EQU     5
NUMBER_KIND     EQU     6
CYCLE_KIND      EQU     7
PALETTE_KIND    EQU     8
SCROLLER_KIND   EQU     9
* Kind number 10 is reserved
SLIDER_KIND     EQU     11
STRING_KIND     EQU     12
TEXT_KIND       EQU     13

NUM_KINDS       EQU     14

*------------------------------------------------------------------------*

*  These two definitions are obsolete, but are here for backwards
*  compatibility.  You never need to worry about these:
GADTOOLBIT      EQU     $8000

*  Use this mask to isolate the user part: *
GADTOOLMASK     EQU     ~GADTOOLBIT

*------------------------------------------------------------------------*

*  'Or' the appropriate set together for your Window IDCMPFlags: *

ARROWIDCMP      EQU     GADGETUP!GADGETDOWN!INTUITICKS!MOUSEBUTTONS

BUTTONIDCMP     EQU     GADGETUP
CHECKBOXIDCMP   EQU     GADGETUP
INTEGERIDCMP    EQU     GADGETUP
LISTVIEWIDCMP   EQU     GADGETUP!GADGETDOWN!MOUSEMOVE!ARROWIDCMP

MXIDCMP         EQU     GADGETDOWN
NUMBERIDCMP     EQU     0
CYCLEIDCMP      EQU     GADGETUP
PALETTEIDCMP    EQU     GADGETUP

*  Use ARROWIDCMP!SCROLLERIDCMP if your scrollers have arrows: *
SCROLLERIDCMP   EQU     GADGETUP!GADGETDOWN!MOUSEMOVE
SLIDERIDCMP     EQU     GADGETUP!GADGETDOWN!MOUSEMOVE
STRINGIDCMP     EQU     GADGETUP

TEXTIDCMP       EQU     0

*------------------------------------------------------------------------*

*  Typical suggested spacing between "elements": *
INTERWIDTH      EQU     8
INTERHEIGHT     EQU     4

*------------------------------------------------------------------------*

*  Generic NewGadget used by several of the gadget classes: *

    STRUCTURE NewGadget,0

        WORD    gng_LeftEdge
        WORD    gng_TopEdge     ; gadget position
        WORD    gng_Width
        WORD    gng_Height      ;  gadget size
        APTR    gng_GadgetText  ; gadget label
        APTR    gng_TextAttr    ; desired font for gadget label
        UWORD   gng_GadgetID    ; gadget ID
        ULONG   gng_Flags       ; see below
        APTR    gng_VisualInfo  ; Set to retval of GetVisualInfo()
        APTR    gng_UserData    ; gadget UserData

        LABEL   gng_SIZEOF

*   ng_Flags control certain aspects of the gadget.  The first five control
*   the placement of the descriptive text.  All larger groups supply a
*   default:

PLACETEXT_LEFT  EQU     $0001   * Right-align text on left side
PLACETEXT_RIGHT EQU     $0002   * Left-align text on right side
PLACETEXT_ABOVE EQU     $0004   * Center text above
PLACETEXT_BELOW EQU     $0008   * Center text below
PLACETEXT_IN    EQU     $0010   * Center text on

NG_HIGHLABEL    EQU     $0020   * Highlight the label

*------------------------------------------------------------------------*

* Fill out an array of these and pass that to CreateMenus():

    STRUCTURE NewMenu,0

        UBYTE   gnm_Type                ; See below
        UBYTE   gnm_Pad                 ; alignment padding
        APTR    gnm_Label               ; Menu's label
        APTR    gnm_CommKey             ; MenuItem Command Key Equiv
        UWORD   gnm_Flags               ; Menu or MenuItem flags (see note)
        LONG    gnm_MutualExclude       ; MenuItem MutualExclude word
        APTR    gnm_UserData            ; For your own use, see note

        LABEL   gnm_SIZEOF

*  Each nm_Type should be one of these:
NM_TITLE        EQU     1
NM_ITEM         EQU     2
NM_SUB          EQU     3
NM_END          EQU     0

MENU_IMAGE      EQU     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.

IM_ITEM         EQU     NM_ITEM!MENU_IMAGE
IM_SUB          EQU     NM_SUB!MENU_IMAGE

*  If you set your label to NM_BARLABEL, you'll get a separator bar.
NM_BARLABEL     EQU     -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:

NM_MENUDISABLED EQU     MENUENABLED
NM_ITEMDISABLED EQU     ITEMENABLED

*   The following are pre-cleared (COMMSEQ, ITEMTEXT, and HIGHxxx are set
*   later as appropriate):

NM_FLAGMASK     EQU     ~(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. */

GTMENU_USERDATA MACRO
                move.l  mu_SIZEOF(\1),\2
                ENDM

GTMENUITEM_USERDATA     MACRO
                move.l  mi_SIZEOF(\1),\2
                ENDM

*  Here is an old one for compatibility.  Do not use in new code!
MENU_USERDATA   MACRO
                move.l  mi_SIZEOF(\1),\2
                ENDM


*  These return codes can be obtained through the GTMN_SecondaryError tag:
GTMENU_TRIMMED  EQU     $00000001       ; Too many menus, items, or subitems,
                                        ; menu has been trimmed down
GTMENU_INVALID  EQU     $00000002       ; Invalid NewMenu array
GTMENU_NOMEM    EQU     $00000003       ; Out of memory


*------------------------------------------------------------------------*

*  Tags for toolkit functions:

GT_TagBase      EQU     TAG_USER+$80000 ; Begin counting tags

GTVI_NewWindow  EQU     GT_TagBase+$01  ; NewWindow struct for GetVisualInfo
GTVI_NWTags     EQU     GT_TagBase+$02  ; NWTags for GetVisualInfo

GT_Private0     EQU     GT_TagBase+$03  ; (private)

GTCB_Checked    EQU     GT_TagBase+$04  ; State of checkbox

GTLV_Top        EQU     GT_TagBase+$05  ; Top visible one in listview
GTLV_Labels     EQU     GT_TagBase+$06  ; List to display in listview
GTLV_ReadOnly   EQU     GT_TagBase+$07  ; TRUE if listview is to be read-only
GTLV_ScrollWidth        EQU     GT_TagBase+$08  ; Width of scrollbar

GTMX_Labels     EQU     GT_TagBase+$09  ; NULL-terminated array of labels
GTMX_Active     EQU     GT_TagBase+$0A  ; Active one in mx gadget

GTTX_Text       EQU     GT_TagBase+$0B  ; Text to display
GTTX_CopyText   EQU     GT_TagBase+$0C  ; Copy text label instead of referencing it

GTNM_Number     EQU     GT_TagBase+$0D  ; Number to display

GTCY_Labels     EQU     GT_TagBase+$0E  ; NULL-terminated array of labels
GTCY_Active     EQU     GT_TagBase+$0F  ; The active one in the cycle gad

GTPA_Depth      EQU     GT_TagBase+$10  ; Number of bitplanes in palette
GTPA_Color      EQU     GT_TagBase+$11  ; Palette color
GTPA_ColorOffset        EQU     GT_TagBase+$12  ; First color to use in palette
GTPA_IndicatorWidth     EQU     GT_TagBase+$13  ; Width of current-color indicator
GTPA_IndicatorHeight    EQU     GT_TagBase+$14  ; Height of current-color indicator

GTSC_Top        EQU     GT_TagBase+$15  ; Top visible in scroller
GTSC_Total      EQU     GT_TagBase+$16  ; Total in scroller area
GTSC_Visible    EQU     GT_TagBase+$17  ; Number visible in scroller
GTSC_Overlap    EQU     GT_TagBase+$18  ; Unused

* GT_TagBase+$19 through GT_TagBase+$25 are reserved

GTSL_Min        EQU     GT_TagBase+$26  ; Slider min value
GTSL_Max        EQU     GT_TagBase+$27  ; Slider max value
GTSL_Level      EQU     GT_TagBase+$28  ; Slider level
GTSL_MaxLevelLen        EQU     GT_TagBase+$29  ; Max length of printed level
GTSL_LevelFormat        EQU     GT_TagBase+$2A  ; Format string for level
GTSL_LevelPlace EQU     GT_TagBase+$2B  ; Where level should be placed
GTSL_DispFunc   EQU     GT_TagBase+$2C  ; Callback for number calculation before display

GTST_String     EQU     GT_TagBase+$2D  ; String gadget's displayed string
GTST_MaxChars   EQU     GT_TagBase+$2E  ; Max length of string

GTIN_Number     EQU     GT_TagBase+$2F  ; Number in integer gadget
GTIN_MaxChars   EQU     GT_TagBase+$30  ; Max number of digits

GTMN_TextAttr   EQU     GT_TagBase+$31  ; MenuItem font TextAttr
GTMN_FrontPen   EQU     GT_TagBase+$32  ; MenuItem text pen color

GTBB_Recessed   EQU     GT_TagBase+$33  ; Make BevelBox recessed

GT_VisualInfo   EQU     GT_TagBase+$34  ; result of VisualInfo call

GTLV_ShowSelected       EQU     GT_TagBase+$35  ; show selected entry beneath listview,
                        ; set tag data = NULL for display-only, or pointer
                        ; to a string gadget you've created
GTLV_Selected   EQU     GT_TagBase+$36  ; Set ordinal number of selected entry in the list
GT_Reserved1    EQU     GT_TagBase+$38  ; Reserved for future use

GTTX_Border     EQU     GT_TagBase+$39  ; Put a border around Text-display gadgets
GTNM_Border     EQU     GT_TagBase+$3A  ; Put a border around Number-display gadgets

GTSC_Arrows     EQU     GT_TagBase+$3B  ; Specify size of arrows for scroller
GTMN_Menu       EQU     GT_TagBase+$3C  ; Pointer to Menu for use by
                        ; LayoutMenuItems()
GTMX_Spacing    EQU     GT_TagBase+$3D  ; 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.
GTMN_FullMenu   EQU     GT_TagBase+$3E  ; Asks CreateMenus() to
                ; validate that this is a complete menu structure
GTMN_SecondaryError     EQU     GT_TagBase+$3F  ; ti_Data is a pointer
                ; to a ULONG to receive error reports from CreateMenus()
GT_Underscore   EQU     GT_TagBase+$40  ; ti_Data points to the symbol
                ; that preceeds the character you'd like to underline in a
                ; gadget label
GTST_EditHook   EQU     GT_TagBase+$37  ; String EditHook

*  Old definition, now obsolete:
GT_Reserved0    EQU     GTST_EditHook

*------------------------------------------------------------------------*

* "NWay" is an old synonym for cycle gadgets

NWAY_KIND       EQU     CYCLE_KIND
NWAYIDCMP       EQU     CYCLEIDCMP

GTNW_Labels     EQU     GTCY_Labels
GTNW_Active     EQU     GTCY_Active

        ENDC