/************************************************************************
                             shm_menu                       9th August 87
************************************************************************/

/*  |----------|------------|--------------|
    | Controls | Parameters | Colours      |
    |   Draw   |   Settings |   Palette    |
    |   Halt   |            |   Cycle Time |
    |   Reset  |            |              |
    |   Cycle  |            |              |
    |   Erase  |            |              |
    |   Manual |            |              |
    |   Future |            |              |
    |   Quit   |            |              |
    |----------|------------|--------------|

Controls menu mutual exclusion codes

       Q F M E C R H D
     D 1 1 1 1 1 1 1 0 FE
     H 1 1 1 1 1 1 0 1 FD
     R 1 1 1 1 1 0 0 1 F9
     C 1 1 1 1 0 1 1 1 F7
     E 1 1 1 0 1 0 0 1 E9
     M 1 0 0 0 0 0 0 0 80
     F 1 0 0 0 0 0 0 0 80 
     Q 0 1 1 1 1 1 1 1 7F
*/
  
#include "exec/types.h"
#include "intuition/intuition.h"

extern struct TextAttr Fnt;

struct IntuiText menu_quit_txt =
{ 0, 1, JAM2,CHECKWIDTH, 0, &Fnt,"Quit " };

struct MenuItem menu_quit =
{
NULL,
0, 63, (75 + CHECKWIDTH + COMMWIDTH), 9,
(CHECKIT | ITEMTEXT | COMMSEQ |
ITEMENABLED | HIGHBOX),
0x7F,
(APTR) &menu_quit_txt,
NULL,
'Q',
NULL
};

struct IntuiText menu_future_txt =
{ 0, 1, JAM2,CHECKWIDTH, 0, &Fnt,"Future " };

struct MenuItem menu_future =
{
&menu_quit,
0, 54, (75 + CHECKWIDTH + COMMWIDTH), 9,
(ITEMTEXT | COMMSEQ | ITEMENABLED | HIGHBOX),
0x80,
(APTR) &menu_future_txt,
NULL,
'F',
NULL
};

struct IntuiText menu_manual_txt =
{ 0, 1, JAM2,CHECKWIDTH, 0, &Fnt,"Manual " };

struct MenuItem menu_manual =
{
&menu_future,
0, 45, (75 + CHECKWIDTH + COMMWIDTH), 9,
(ITEMTEXT | COMMSEQ | ITEMENABLED | HIGHBOX),
0x80,
(APTR) &menu_manual_txt,
NULL,
'M',
NULL
};

struct IntuiText menu_erase_txt =
{ 0, 1, JAM2,CHECKWIDTH, 0, &Fnt,"Erase " };

struct MenuItem menu_erase =
{
&menu_manual,
0, 36, (75 + CHECKWIDTH + COMMWIDTH), 9,
(CHECKIT | ITEMTEXT | COMMSEQ |
ITEMENABLED | HIGHBOX),
0xE9,
(APTR) &menu_erase_txt,
NULL,
'E',
NULL
};

struct IntuiText menu_cycle_txt =
{ 0, 1, JAM2,CHECKWIDTH, 0, &Fnt,"Cycle " };

struct MenuItem menu_cycle =
{
&menu_erase,
0, 27, (75 + CHECKWIDTH + COMMWIDTH), 9,
(CHECKIT | ITEMTEXT | COMMSEQ |
ITEMENABLED | HIGHBOX),
0xF7,
(APTR) &menu_cycle_txt,
NULL,
'C',
NULL
};
struct IntuiText menu_reset_txt =
{ 0, 1, JAM2,CHECKWIDTH, 0, &Fnt,"Reset " };

struct MenuItem menu_reset =
{
&menu_cycle,
0, 18, (75 + CHECKWIDTH + COMMWIDTH), 9,
(CHECKIT | ITEMTEXT | COMMSEQ |
ITEMENABLED | HIGHBOX),
0xF9,
(APTR) &menu_reset_txt,
NULL,
'R',
NULL
};

struct IntuiText menu_halt_txt =
{ 0, 1, JAM2,CHECKWIDTH, 0, &Fnt,"Halt " };

struct MenuItem menu_halt =
{
&menu_reset,
0, 9, (75 + CHECKWIDTH + COMMWIDTH), 9,
(CHECKIT | ITEMTEXT | COMMSEQ |
ITEMENABLED | HIGHBOX),
0xFD,
(APTR) &menu_halt_txt,
NULL,
'H',
NULL
};

struct IntuiText  menu_draw_txt =
{ 0, 1, JAM2,CHECKWIDTH, 0, &Fnt,"Draw " };

struct MenuItem menu_draw =
{
&menu_halt,
0, 0, (75 + CHECKWIDTH + COMMWIDTH), 9,
(CHECKIT | CHECKED | ITEMTEXT | COMMSEQ |
ITEMENABLED | HIGHBOX),
0xFE,
(APTR) &menu_draw_txt,
NULL,
'D',
NULL
};

struct IntuiText menu_settings_txt =
{ 0, 1, JAM2, 0, 0, &Fnt,"Settings " };

struct MenuItem menu_settings =
{
NULL,
0, 0, 100, 9,
(ITEMTEXT | ITEMENABLED | HIGHBOX),
NULL,
(APTR) &menu_settings_txt,
NULL,
NULL,
NULL
};

struct IntuiText menu_cycle_time_txt =
{ 0, 1, JAM2, 0, 0, &Fnt,"Cycle Time " };

struct MenuItem menu_cycle_time =
{
NULL,
0, 9, 80, 9,
(ITEMTEXT | ITEMENABLED | HIGHBOX),
NULL,
(APTR) &menu_cycle_time_txt,
NULL,
NULL,
NULL
};

struct IntuiText menu_palette_txt =
{ 0, 1, JAM2, 0, 0, &Fnt,"Palette " };

struct MenuItem menu_palette =
{
&menu_cycle_time,
0, 0, 80, 9,
(ITEMTEXT | ITEMENABLED | HIGHBOX),
NULL,
(APTR) &menu_palette_txt,
NULL,
NULL,
NULL
};

struct Menu Menu[3] =
{
     { /* Menu[0] : Controls */
	&Menu[1],
	0,0,(75+CHECKWIDTH+COMMWIDTH),0,
	MENUENABLED,
	"Controls",
	&menu_draw
     },
     { /* Menu[1] : Parameters */
	&Menu[2],
	(76+CHECKWIDTH+COMMWIDTH),0,100,0,
	MENUENABLED,
	"Parameters",
	&menu_settings
      },
     { /* Menu[2] : Colours */
	NULL,
	(177+CHECKWIDTH+COMMWIDTH),0,80,0,
	MENUENABLED,
	"Colours",
	&menu_palette
      }
};

struct Menu *SHMenu = &Menu[0];
