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

#ifndef INTUITION_GADGETCLASS_H
#define INTUITION_GADGETCLASS_H 1
/*
**  $Filename: intuition/gadgetclass.h $
**  $Release: 2.04 Includes, V37.4 $
**  $Revision: 36.6 $
**  $Date: 91/11/08 $
**
**  Custom and 'boopsi' gadget class interface
**
**  (C) Copyright 1989-1999 Amiga, Inc.
**          All Rights Reserved
*/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

#ifndef INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif

#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif

/*
 * NOTE:  <intuition/iobsolete.h> is included at the END of this file!
 */

/* Gadget Class attributes      */

#define           GA_Dummy             (TAG_USER +0x30000)
#define    GA_Left             (GA_Dummy + 0x0001)
#define    GA_RelRight         (GA_Dummy + 0x0002)
#define    GA_Top              (GA_Dummy + 0x0003)
#define    GA_RelBottom                (GA_Dummy + 0x0004)
#define    GA_Width            (GA_Dummy + 0x0005)
#define    GA_RelWidth         (GA_Dummy + 0x0006)
#define    GA_Height           (GA_Dummy + 0x0007)
#define    GA_RelHeight                (GA_Dummy + 0x0008)
#define    GA_Text             (GA_Dummy + 0x0009) /* ti_Data is (UBYTE *) */
#define    GA_Image            (GA_Dummy + 0x000A)
#define    GA_Border           (GA_Dummy + 0x000B)
#define    GA_SelectRender     (GA_Dummy + 0x000C)
#define    GA_Highlight                (GA_Dummy + 0x000D)
#define    GA_Disabled         (GA_Dummy + 0x000E)
#define    GA_GZZGadget                (GA_Dummy + 0x000F)
#define    GA_ID               (GA_Dummy + 0x0010)
#define    GA_UserData         (GA_Dummy + 0x0011)
#define    GA_SpecialInfo      (GA_Dummy + 0x0012)
#define    GA_Selected         (GA_Dummy + 0x0013)
#define    GA_EndGadget                (GA_Dummy + 0x0014)
#define    GA_Immediate                (GA_Dummy + 0x0015)
#define    GA_RelVerify                (GA_Dummy + 0x0016)
#define    GA_FollowMouse      (GA_Dummy + 0x0017)
#define    GA_RightBorder      (GA_Dummy + 0x0018)
#define    GA_LeftBorder       (GA_Dummy + 0x0019)
#define    GA_TopBorder                (GA_Dummy + 0x001A)
#define    GA_BottomBorder     (GA_Dummy + 0x001B)
#define    GA_ToggleSelect      (GA_Dummy + 0x001C)

    /* internal use only, until further notice, please */
#define    GA_SysGadget         (GA_Dummy + 0x001D)
       /* bool, sets GTYP_SYSGADGET field in type      */
#define    GA_SysGType          (GA_Dummy + 0x001E)
        /* e.g., GTYP_WUPFRONT, ...     */

#define    GA_Previous          (GA_Dummy + 0x001F)
        /* previous gadget (or (struct Gadget **)) in linked list
         * NOTE: This attribute CANNOT be used to link new gadgets
         * into the gadget list of an open window or requester.
         * You must use AddGList().
         */

#define    GA_Next              (GA_Dummy + 0x0020)
         /* not implemented */

#define    GA_DrawInfo          (GA_Dummy + 0x0021)
        /* some fancy gadgets need to see a DrawInfo
         * when created or for layout
         */

/* You should use at most ONE of GA_Text, GA_IntuiText, and GA_LabelImage */
#define GA_IntuiText            (GA_Dummy + 0x0022)
        /* ti_Data is (struct IntuiText *) */

#define GA_LabelImage           (GA_Dummy + 0x0023)
        /* ti_Data is an image (object), used in place of
         * GadgetText
         */

#define GA_TabCycle             (GA_Dummy + 0x0024)
        /* New for V37:
         * Boolean indicates that this gadget is to participate in
         * cycling activation with Tab or Shift-Tab.
         */

/* PROPGCLASS attributes */

#define PGA_Dummy     (TAG_USER + 0x31000)
#define PGA_Freedom     (PGA_Dummy + 0x0001)
      /* only one of FREEVERT or FREEHORIZ */
#define PGA_Borderless        (PGA_Dummy + 0x0002)
#define PGA_HorizPot  (PGA_Dummy + 0x0003)
#define PGA_HorizBody (PGA_Dummy + 0x0004)
#define PGA_VertPot   (PGA_Dummy + 0x0005)
#define PGA_VertBody  (PGA_Dummy + 0x0006)
#define PGA_Total     (PGA_Dummy + 0x0007)
#define PGA_Visible   (PGA_Dummy + 0x0008)
#define PGA_Top         (PGA_Dummy + 0x0009)
/* New for V37: */
#define PGA_NewLook     (PGA_Dummy + 0x000A)

/* STRGCLASS attributes */

#define STRINGA_Dummy                 (TAG_USER      +0x32000)
#define STRINGA_MaxChars      (STRINGA_Dummy + 0x0001)
#define STRINGA_Buffer                (STRINGA_Dummy + 0x0002)
#define STRINGA_UndoBuffer    (STRINGA_Dummy + 0x0003)
#define STRINGA_WorkBuffer    (STRINGA_Dummy + 0x0004)
#define STRINGA_BufferPos     (STRINGA_Dummy + 0x0005)
#define STRINGA_DispPos               (STRINGA_Dummy + 0x0006)
#define STRINGA_AltKeyMap     (STRINGA_Dummy + 0x0007)
#define STRINGA_Font          (STRINGA_Dummy + 0x0008)
#define STRINGA_Pens          (STRINGA_Dummy + 0x0009)
#define STRINGA_ActivePens    (STRINGA_Dummy + 0x000A)
#define STRINGA_EditHook      (STRINGA_Dummy + 0x000B)
#define STRINGA_EditModes       (STRINGA_Dummy + 0x000C)

/* booleans */
#define STRINGA_ReplaceMode   (STRINGA_Dummy + 0x000D)
#define STRINGA_FixedFieldMode        (STRINGA_Dummy + 0x000E)
#define STRINGA_NoFilterMode    (STRINGA_Dummy + 0x000F)

#define STRINGA_Justification   (STRINGA_Dummy + 0x0010)
      /* GACT_STRINGCENTER, GACT_STRINGLEFT, GACT_STRINGRIGHT */
#define STRINGA_LongVal               (STRINGA_Dummy + 0x0011)
#define STRINGA_TextVal         (STRINGA_Dummy + 0x0012)

#define STRINGA_ExitHelp        (STRINGA_Dummy + 0x0013)
        /* STRINGA_ExitHelp is new for V37, and ignored by V36.
         * Set this if you want the gadget to exit when Help is
         * pressed.  Look for a code of 0x5F, the rawkey code for Help
         */

#define SG_DEFAULTMAXCHARS      (128)

/* Gadget Layout related attributes     */

#define       LAYOUTA_Dummy           (TAG_USER  + 0x38000)
#define LAYOUTA_LayoutObj     (LAYOUTA_Dummy + 0x0001)
#define LAYOUTA_Spacing               (LAYOUTA_Dummy + 0x0002)
#define LAYOUTA_Orientation     (LAYOUTA_Dummy + 0x0003)

/* orientation values */
#define LORIENT_NONE  0
#define LORIENT_HORIZ 1
#define LORIENT_VERT    2


/* Gadget Method ID's   */

#define GM_Dummy        (-1)    /* not used for anything                */
#define GM_HITTEST      (0)     /* return GMR_GADGETHIT if you are clicked on
                               * (whether or not you are disabled).
                               */
#define GM_RENDER     (1)     /* draw yourself, in the appropriate state */
#define GM_GOACTIVE   (2)     /* you are now going to be fed input    */
#define GM_HANDLEINPUT        (3)     /* handle that input                    */
#define GM_GOINACTIVE   (4)     /* whether or not by choice, you are done  */

/* Parameter "Messages" passed to gadget class methods        */

/* GM_HITTEST */
struct gpHitTest {
    ULONG             MethodID;
    struct GadgetInfo   *gpht_GInfo;
    struct {
      WORD    X;
      WORD    Y;
    }                   gpht_Mouse;
};
/* GM_HITTEST return value */
#define GMR_GADGETHIT   (0x00000004)    /* if no hit, return 0 */

/* GM_RENDER  */
struct gpRender {
    ULONG             MethodID;
    struct GadgetInfo *gpr_GInfo;     /* gadget context               */
    struct RastPort   *gpr_RPort;     /* all ready for use            */
    LONG                gpr_Redraw;     /* might be a "highlight pass"        */
};

/* values of gpr_Redraw       */
#define GREDRAW_UPDATE        (2)     /* incremental update, e.g. prop slider */
#define GREDRAW_REDRAW        (1)     /* redraw gadget        */
#define GREDRAW_TOGGLE  (0)     /* toggle highlight, if applicable      */

/* GM_GOACTIVE, GM_HANDLEINPUT        */
struct gpInput {
    ULONG             MethodID;
    struct GadgetInfo *gpi_GInfo;
    struct InputEvent *gpi_IEvent;
    LONG                *gpi_Termination;
    struct {
      WORD    X;
      WORD    Y;
    }                   gpi_Mouse;
};

/* GM_HANDLEINPUT and GM_GOACTIVE  return code flags    */
/* return GMR_MEACTIVE (0) alone if you want more input.
 * Otherwise, return ONE of GMR_NOREUSE and GMR_REUSE, and optionally
 * GMR_VERIFY.
 */
#define GMR_MEACTIVE  (0)
#define GMR_NOREUSE   (1 << 1)
#define GMR_REUSE     (1 << 2)
#define GMR_VERIFY      (1 << 3)      /* you MUST set cgp_Termination */

/* New for V37:
 * You can end activation with one of GMR_NEXTACTIVE and GMR_PREVACTIVE,
 * which instructs Intuition to activate the next or previous gadget
 * that has GFLG_TABCYCLE set.
 */
#define GMR_NEXTACTIVE        (1 << 4)
#define GMR_PREVACTIVE  (1 << 5)

/* GM_GOINACTIVE */
struct gpGoInactive {
    ULONG             MethodID;
    struct GadgetInfo   *gpgi_GInfo;

    /* V37 field only!        DO NOT attempt to read under V36! */
    ULONG               gpgi_Abort;     /* gpgi_Abort=1 if gadget was aborted
                                         * by Intuition and 0 if gadget went
                                         * inactive at its own request
                                         */
};


/* Include obsolete identifiers: */
#ifndef INTUITION_IOBSOLETE_H
#include <intuition/iobsolete.h>
#endif

#endif