/*

		Busy.mcc (c) 1994-96 by kmel, Klaus Melchior

		Example for Busy.mcc

		show_busy.c

*/

/* DMAKE */


/*** includes ***/
#include <kmel/kmel.h>
#include <mui/busy_mcc.h>

/*** externals ***/
extern char *vers_tag;

/*** main ***/
int main(int argc,char *argv[])
{
	APTR app;
	APTR window;
	APTR bt_move, by_move;

	ULONG signals;
	BOOL running = TRUE;

	app = ApplicationObject,
		MUIA_Application_Title      , "Show_BusyClass",
		MUIA_Application_Version    , vers_tag + 6,
		MUIA_Application_Copyright  , "©1993-96, kMel Klaus Melchior",
		MUIA_Application_Author     , "Klaus Melchior",
		MUIA_Application_Description, "Demonstrates the busy class.",
		MUIA_Application_Base       , "SHOWBUSY",

		SubWindow, window = WindowObject,
			MUIA_Window_Title, "BusyClass",
			MUIA_Window_ID   , MAKE_ID('B','U','S','Y'),
			WindowContents, VGroup,

				/*** create a busy bar with a gaugeframe ***/
				Child, MUI_MakeObject(MUIO_BarTitle, "Speed: 20"),
				Child, BusyObject,
					MUIA_Busy_Speed, 20,
					End,

				Child, VSpace(8),
				Child, MUI_MakeObject(MUIO_BarTitle, "Speed: User"),
				Child, BusyBar,

				Child, VSpace(8),
				Child, MUI_MakeObject(MUIO_BarTitle, "Speed: Manually"),
				Child, by_move = BusyObject,
					MUIA_Busy_Speed, MUIV_Busy_Speed_Off,
					End,
				Child, bt_move = KeyButton("Move ...", 'm'),
				End,

			End,
		End;

	if(!app)
	{
		printf("Failed to create Application.\n");
		exit(RETURN_FAIL);
	}

	/*** generate notifies ***/
	DoMethod(window, MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
		app, 2,
		MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);

	DoMethod(bt_move, MUIM_Notify, MUIA_Timer, MUIV_EveryTime,
		by_move, 2,
		MUIM_Busy_Move, TRUE);

	/*** ready to open the window ... ***/
	set(window,MUIA_Window_Open,TRUE);

	while (running)
	{
		switch (DoMethod(app,MUIM_Application_Input,&signals))
		{
			case MUIV_Application_ReturnID_Quit:
				running = FALSE;
				break;
		}

		if (running && signals)
			Wait(signals);
	}

	set(window, MUIA_Window_Open, FALSE);

	/*** shutdown ***/
	MUI_DisposeObject(app);      /* dispose all objects. */

	exit(RETURN_OK);
}

