/* Copyright (c) Darin Johnson, 1989 */

/* MyMenu.h                        */
/* Modified by John Baker, 1990    */

#define VERSION "MyMenu v1.1"

#define MYMENU_NAME "MyMenu"
#define WBPORT_NAME "MyMenu-WBPort"

#define DO_WB
/* #define DO_PATH	- should work but not tested */
/* #define DO_AREXX 	- future plans... */

#define SEPARATE 23	/* distance between menus */  /***** WAS 32 *****/
#define STACK 4096	/* 2048 is too small */

struct ext_MenuItem {
  struct MenuItem MenuItem;
  struct ext_MenuItem *next_item;
  ULONG id;
  char *cmd;
  char *args;
  char type;
};

struct Path {
  struct Path *path_Next;
  BPTR path_Lock;
};

/* would declare whole thing 'volatile' if allowed */
struct MMData {
  struct MsgPort port;
  struct ext_MenuItem *item_list;
  struct Menu *my_menu, *prev_menu, *WBMenu;
  struct Window *WBWindow;
  struct Task *handler_task, *parent_task;
  USHORT parent_sig, handler_sig;
  char error_code;
  long segment;    /* defined as long, since Manx is picky */
  struct Path *CLI_path;		/* copy of CLI path */
};

extern struct MMData *MM;
extern struct ext_MenuItem *add_menu();

/* error codes */
#define ERR_OK		0
#define ERR_LIB		1
#define ERR_WIN		2
#define ERR_MON		3
#define ERR_WB_OPEN	4
