/* Copyright ) Darin Johnson, 1989 */

#define VERSION "MyMenu v1.0"

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

#define DO_WB
/* #define DO_PATH	- not working yet */
/* #define DO_AREXX 	- future plans... */

#define SEPARATE 32	/* distance between menus */
#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;
  struct FileLock *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;
  struct Segment *segment;
  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
