#include <stdio.h>
#include <X10/Xlib.h>
#include "MenuMgr.h"

MenuBarPtr	menubar, mb2;
Window		parent;

extern int	mm_debug;
extern Defaults	mm_Defs;
extern FontFamily	mm_Fonts;
extern Cursor		mm_Cursor;

int	HandleName(), HandleMenu();

extern char *getenv();
static int Done = 0;

main(argc,argv)

	int 	argc;
	char *	argv[];
{
char *display_name;

	if( XOpenDisplay()==NULL )
	{
		if( display_name = getenv("DISPLAY") )
			fprintf(stderr,"%s: unable to open display < %s >.\n",
				argv[0],display_name);
		else
			fprintf(stderr,"%s: DISPLAY variable not set!\n",
				argv[0]);
		exit(1);			
	}

	mm_InitMenus(argv[0]);

	parent = XCreateWindow( RootWindow, 200,200,400,400,
		2,BlackPixmap,WhitePixmap );
	
	menubar = mm_GetMenuBar( argv[0], 1, "Visual Courseware Group" );
	mb2 = mm_GetMenuBar( "vidmenu", 3, "Video Tools" );

	if( !menubar || !mb2 )
		exit(1);

	mm_SetNameCallback( menubar, HandleName );
	mm_SetMenuCallback( menubar, HandleMenu );	

	mm_SetNameCallback( mb2, HandleName );
	mm_SetMenuCallback( mb2, HandleMenu );	

	mm_AttachMenuBar( menubar, parent );

	XDefineCursor( parent, mm_Cursor );
	XMapWindow(parent);
	XMapSubwindows(parent);

	while(!Done)
	{
	XEvent event;

		XNextEvent(&event);
		mm_HandleEvent(&event);
	}

	XDestroySubwindows(parent);
	XDestroyWindow(parent);
	XSync(0);
}

int
HandleName( mbp )

	MenuBarPtr	mbp;
{
	printf("hit namebar of <%s>\n",mbp->mbarName);
	return 0;
}

int
HandleMenu( mp, item )

	MenuPtr		mp;
	int		item;
{
ItemPtr		ip;
MenuBarPtr	this, other;

	ip = mm_GetItemHandle( mp, item );
	if( !ip )
		return -1;

	printf("hit item <%s> of menu <%s>\n",
		ip->itemLabel,mp->menuTitle);

	if( mp->menuID == 1 && item == 1 )	/* switch menu bars */
	{
		printf("SWITCHING MENU BARS\n");
		this = mp->menuBar;
		if( this == mb2 )
			other = menubar;
		else
			other = mb2;

		mm_DetachMenuBar( this );
		mm_AttachMenuBar( other, parent );
		XMapSubwindows( parent );
	}

	return 0;
}
