/*
** OpenURL - MUI preferences for openurl.library
** Written by Troels Walsted Hansen <troels@thule.no>
** Placed in the public domain.
**
** Methods, attributes, dispatcher and instance data definitions for the
** AppList Group.mui subclass.
*/

#define AppListObject NewObject(AppListClass->mcc_Class,NULL

/**************************************************************************/

#define MUIA_AppList_ListObj                (TAGBASE_APPLIST + 0)  /* [..G] Object *  */
#define MUIA_AppList_NodeNameOffset         (TAGBASE_APPLIST + 1)  /* [I..] ULONG     */
#define MUIA_AppList_NodePathOffset         (TAGBASE_APPLIST + 2)  /* [I..] ULONG     */
#define MUIA_AppList_NodeSize               (TAGBASE_APPLIST + 3)  /* [I..] ULONG     */
#define MUIA_AppList_NodeEditWinClass       (TAGBASE_APPLIST + 4)  /* [I..] ULONG     */
#define MUIA_AppList_NodeEditWinIDAttr      (TAGBASE_APPLIST + 5)  /* [I..] ULONG     */
#define MUIA_AppList_NodeEditWinLstAttr     (TAGBASE_APPLIST + 6)  /* [I..] ULONG     */
#define MUIA_AppList_NewNodeName            (TAGBASE_APPLIST + 7)  /* [I..] STRPTR    */

#define MUIM_AppList_Add                    (TAGBASE_APPLIST + 25)
#define MUIM_AppList_Edit                   (TAGBASE_APPLIST + 26)
#define MUIM_AppList_Clone                  (TAGBASE_APPLIST + 27)
#define MUIM_AppList_Delete                 (TAGBASE_APPLIST + 28)
#define MUIM_AppList_ActiveChanged          (TAGBASE_APPLIST + 29)

struct MUIP_AppList_Add                     { ULONG MethodID; };
struct MUIP_AppList_Edit                    { ULONG MethodID; };
struct MUIP_AppList_Clone                   { ULONG MethodID; };
struct MUIP_AppList_Delete                  { ULONG MethodID; };
struct MUIP_AppList_ActiveChanged           { ULONG MethodID; };

/**************************************************************************/

SAVEDS ASM ULONG AppList_Dispatcher(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg);

/**************************************************************************/

struct AppList_Data
{
	Object *AppLstObj;
	Object *AddButObj;
	Object *EditButObj;
	Object *CloneButObj;
	Object *DeleteButObj;

	struct Hook ConstructHook;
	struct Hook DestructHook;
	struct Hook DisplayHook;

	ULONG  NodeNameOffset;
	ULONG  NodePathOffset;
	ULONG  NodeSize;
	ULONG  NodeEditWinClass;
	ULONG  NodeEditWinIDAttr;
	ULONG  NodeEditWinLstAttr;
	STRPTR NewNodeName;
};
