#ifndef INTUITION_NEWMENU_H
#define INTUITION_NEWMENU_H



/* ======================================================================== */
/* === Menu =============================================================== */
/* ======================================================================== */
struct ExtMenu
{
    struct ExtMenu *NextMenu;	/* same level */
    WORD LeftEdge, TopEdge;	/* position of the select box */
    WORD Width, Height; 	/* dimensions of the select box */
    UWORD Flags;		/* see flag definitions below */
    BYTE *MenuName;		/* text for this Menu Header */
    struct ExtMenuItem *FirstItem; /* pointer to first in chain */

    /* these mysteriously-named variables are for internal use only */
    WORD JazzX, JazzY, BeatX, BeatY;

    APTR UserData;		/* ignored by Intuition */

    BYTE *HelpText;		/* help text or NULL */
};


/* FLAGS SET BY BOTH THE APPLIPROG AND INTUITION */
#define MFLG_MENUENABLED	0x0001	/* whether or not this menu is enabled */
#define MFLG_NOGHOST		0x0002	/* no ghosting when disabled */
#define MFLG_LAYOUT		0x0004	/* let Intuition layout this menustrip,
                                         * the items and the subitems
                                         *
                                         * with this flag set, LeftEdge, TopEdge,
                                         * Width, Height, are ignored for the
                                         * Menu, MenuItem, IntuiText
                                         *
                                         * LeftEdge and TopEdge are ignored for
                                         * the Image structures
                                         *
                                         */
#define MFLG_HELPTEXT		0x0008	/* help text is available on this
					 * menustrip, items, and subitems
					 */

/* FLAGS SET BY INTUITION */
#define MFLG_PRIVATE1 		0x0100	/* don't touch it... (was MIDRAWN) */



/* ======================================================================== */
/* === MenuItem =========================================================== */
/* ======================================================================== */
struct ExtMenuItem
{
    struct ExtMenuItem *NextItem; /* pointer to next in chained list */
    WORD LeftEdge, TopEdge;	/* position of the select box */
    WORD Width, Height;		/* dimensions of the select box */
    UWORD Flags;		/* see the defines below */

    LONG MutualExclude;		/* set bits mean this item excludes that */

    APTR ItemFill;		/* points to Image, IntuiText, or NULL */

    /* when this item is pointed to by the cursor and the items highlight
     * mode MIFLG_HIGHIMAGE or MIFLG_HIGHTEXT is selected, this alternate
     * state will be displayed
     */
    APTR SelectFill;		/* points to Image, IntuiText, or NULL */

    BYTE Command;		/* only if appliprog sets the COMMSEQ flag */

    struct ExtMenuItem *SubItem; /* if non-zero, points to MenuItem for submenu */

    /* The NextSelect field represents the menu number of next selected
     *	item (when user has drag-selected several items)
     */
    UWORD NextSelect;

    APTR UserData;		/* ignored by Intuition */

    BYTE *HelpText;		/* help text or NULL */
};


/* FLAGS SET BY THE APPLIPROG */
#define MIFLG_CHECKIT		0x0001	/* set to indicate checkmarkable item */
#define MIFLG_ITEMTEXT		0x0002	/* set if textual, clear if graphical item */
#define MIFLG_COMMSEQ		0x0004	/* set if there's an command sequence */
#define MIFLG_MENUTOGGLE	0x0008	/* set for toggling checks (else mut. exclude) */
#define MIFLG_ITEMENABLED	0x0010	/* set if this item is enabled */
#define MIFLG_SBAR		0x0020	/* separator bar */
#define MIFLG_NOGHOST		0x0200	/* no ghosting while disabled */
#define MIFLG_NEXTCOLUMN	0x0400	/* place in the next column if possible */
#define MIFLG_HIGHLIGHT		0x0800	/* special color text */

/* these are the SPECIAL HIGHLIGHT FLAG state meanings */
#define MIFLG_HIGHFLAGS		0x00C0	/* see definitions below for these bits */
#define MIFLG_HIGHIMAGE		0x0000	/* use the user's "select Image" */
#define MIFLG_HIGHCOMP		0x0040	/* highlight by complementing the selectbox */
#define MIFLG_HIGHBOX		0x0080	/* highlight by "boxing" the selectbox */
#define MIFLG_HIGHNONE		0x00C0	/* don't highlight */

/* FLAGS SET BY BOTH APPLIPROG AND INTUITION */
#define MIFLG_CHECKED		0x0100	/* state of the checkmark */

/* FLAGS SET BY INTUITION */
#define MIFLG_OBSOLETE1		0x1000	/* obsolete (was ISDRAWN) */
#define MIFLG_OBSOLETE2		0x2000	/* obsolete (was HIGHITEM) */
#define MIFLG_OBSOLETE3		0x4000	/* obsolete (was MENUTOGGLED) */



/* = MENU STUFF =========================================================== */
#define NEWMENUPORTNAME         "NewLook Menu Handler"
#define	IDS_MENUNORMAL		IDS_NORMAL
#define	IDS_MENUHIGH		IDS_SELECTED
#define	IDS_MENUDISABLED	IDS_DISABLED
#define	IDS_MENUPICKEDNORMAL	IDS_INACTIVENORMAL
#define	IDS_MENUPICKEDHIGH	IDS_INACTIVESELECTED
#define NM_HELP			96	/* fill the nm_Label with the
					 * help text for the previous
					 * menu, item, or subitem
					 *
					 * combining this with NM_IGNORE
					 * has no effect
					 */

#endif /* INTUITION_NEWMENU_H */