#ifndef MPMG_CLASS_H
#define MPMG_CLASS_H 1

//****************
//
// MPMG_Class.h
//
// Public part of MultiPopupMenuGadget Class
//
//****************

//******** Header files

#ifndef INTUITION_CLASSES_H
#include <intuition/classes.h>
#endif

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


//******** Structures

struct NewPMenu {
    UBYTE  npm_Type;
    STRPTR npm_Label;
    ULONG  npm_Flags;
    APTR   npm_UserData;
    UWORD  npm_Code;
};


//******** Public functions

extern Class *MPMG_CreateClass( void );
extern BOOL   MPMG_DisposeClass( Class *cl );

extern ULONG  MPMG_CreateMenusA(struct NewPMenu *npm, struct TagItem *taglist);
extern BOOL   MPMG_DisposeMenus(ULONG);

// Alternative Build Style
extern ULONG  MPMG_MenuBuildNew(void);
extern BOOL   MPMG_MenuBuildAdd(UBYTE Type, STRPTR Label, ULONG Flags, APTR UserData, APTR Icon, UWORD Code);


//********* New Menu Tags

#define MPM_END          0       // End of NewMenu array
#define MPM_MENU         1       // (Sub)Menu header
#define MPM_ITEM         2       // Textual menu item
#define MPM_MEND         3       // End of a (Sub) Menu
#define MPM_PROM         4       // A Promise
#define MPM_LABEL        5       // A label
#define MPM_IGNORE       64


//******** LOOK Flags

#define MPMG_LOOK3D    0x00
#define MPMG_LOOKNEW   0x01
#define MPMG_LOOKX     0x02


/********* Gadget Attribute Tags */

#define MPMG_TAGBASE            (TAG_USER + 100)

/*  TextFont we use for Texts. (ISG--) */
#define MPMG_TextFont           (MPMG_TAGBASE)

/*  Menus (ISG--) */
#define MPMG_Menus              (MPMG_TAGBASE+1)
#define MPMG_Look               (MPMG_TAGBASE+2)
#define MPMG_MinWidth           (MPMG_TAGBASE+3)
#define MPMG_GadgetText         (MPMG_TAGBASE+4)
#define MPMG_MenuOverLap        (MPMG_TAGBASE+5)
#define MPMG_Top                (MPMG_TAGBASE+6)
#define MPMG_MenuDelay          (MPMG_TAGBASE+7)

/*  Gettable stuff (--G--) */
#define MPMG_SelectLabel        (MPMG_TAGBASE+10)
#define MPMG_SelectFlags        (MPMG_TAGBASE+11)
#define MPMG_SelectUserData     (MPMG_TAGBASE+12)
#define MPMG_SelectDepth        (MPMG_TAGBASE+13)
#define MPMG_SelectCode         (MPMG_TAGBASE+14)
#define MPMG_FitsItems          (MPMG_TAGBASE+17)

/* ISG */
#define MPMG_SelectPath         (MPMG_TAGBASE+15)
#define MPMG_SelectPathSize     (MPMG_TAGBASE+16)

/* Promise Stuff IDCMP UPDATE */
#define MPMG_PromiseRequest     (MPMG_TAGBASE+20)
#define MPMG_PromiseCancel      (MPMG_TAGBASE+21)

/* Promise Stuff (-S---) */
#define MPMG_PromiseFullfill    (MPMG_TAGBASE+22)
#define MPMG_PromiseKey         (MPMG_TAGBASE+23)
#define MPMG_GrabItQuick        (MPMG_TAGBASE+24)


//******** End of file
#endif

