/********************************************************************
 ** FILESYSTEM THINGY
 **
 ** (c) Spak, Darrell Tam, c9107253@firebird.newcastle.edu.au (1994)
 ** phone (Australia) 049-829-710
 **                    49-829-710
 ** (c) SST 1994
 **
 ** MISC ROUTINES FOR DEBUGGING
 **
 ** TABS to 4
 ********************************************************************/


#include "/snd/everything.h"
#include "deadheads.h"
#include "/snd/gfxthings_protos.h"

char *PacketName(long type)
{
  switch(type) {
		case ACTION_NIL:	return("ACTION_NIL              ");
/*		case ACTION_STARTUP:	return("ACTION_STARTUP          ");*/
		case ACTION_GET_BLOCK:	return("ACTION_GET_BLOCK        ");
		case ACTION_SET_MAP:	return("ACTION_SET_MAP          ");
		case ACTION_DIE:	return("ACTION_DIE              ");
		case ACTION_EVENT:	return("ACTION_EVENT            ");
		case ACTION_CURRENT_VOLUME:	return("ACTION_CURRENT_VOLUME   ");
		case ACTION_LOCATE_OBJECT:	return("ACTION_LOCATE_OBJECT    ");
		case ACTION_RENAME_DISK:	return("ACTION_RENAME_DISK      ");
		case ACTION_WRITE:	return("ACTION_WRITE            ");
		case ACTION_READ:	return("ACTION_READ             ");
		case ACTION_FREE_LOCK:	return("ACTION_FREE_LOCK        ");
		case ACTION_DELETE_OBJECT:	return("ACTION_DELETE_OBJECT    ");
		case ACTION_RENAME_OBJECT:	return("ACTION_RENAME_OBJECT    ");
		case ACTION_MORE_CACHE:	return("ACTION_MORE_CACHE       ");
		case ACTION_COPY_DIR:	return("ACTION_COPY_DIR         ");
		case ACTION_WAIT_CHAR:	return("ACTION_WAIT_CHAR        ");
		case ACTION_SET_PROTECT:	return("ACTION_SET_PROTECT      ");
		case ACTION_CREATE_DIR:	return("ACTION_CREATE_DIR       ");
		case ACTION_EXAMINE_OBJECT:	return("ACTION_EXAMINE_OBJECT   ");
		case ACTION_EXAMINE_NEXT:	return("ACTION_EXAMINE_NEXT     ");
		case ACTION_DISK_INFO:	return("ACTION_DISK_INFO        ");
		case ACTION_INFO:	return("ACTION_INFO             ");
		case ACTION_FLUSH:	return("ACTION_FLUSH            ");
		case ACTION_SET_COMMENT:	return("ACTION_SET_COMMENT      ");
		case ACTION_PARENT:	return("ACTION_PARENT           ");
		case ACTION_TIMER:	return("ACTION_TIMER            ");
		case ACTION_INHIBIT:	return("ACTION_INHIBIT          ");
		case ACTION_DISK_TYPE:	return("ACTION_DISK_TYPE        ");
		case ACTION_DISK_CHANGE:	return("ACTION_DISK_CHANGE      ");
		case ACTION_SET_DATE:	return("ACTION_SET_DATE         ");
		case ACTION_SCREEN_MODE:	return("ACTION_SCREEN_MODE      ");
		case ACTION_READ_RETURN:	return("ACTION_READ_	return      ");
		case ACTION_WRITE_RETURN:	return("ACTION_WRITE_	return     ");
		case ACTION_SEEK:	return("ACTION_SEEK             ");
		case ACTION_FINDUPDATE:	return("ACTION_FINDUPDATE       ");
		case ACTION_FINDINPUT:	return("ACTION_FINDINPUT        ");
		case ACTION_FINDOUTPUT:	return("ACTION_FINDOUTPUT       ");
		case ACTION_END:	return("ACTION_END              ");
		case ACTION_SET_FILE_SIZE:	return("ACTION_SET_FILE_SIZE    ");
		case ACTION_WRITE_PROTECT:	return("ACTION_WRITE_PROTECT    ");
		case ACTION_SAME_LOCK:	return("ACTION_SAME_LOCK        ");
		case ACTION_CHANGE_SIGNAL:	return("ACTION_CHANGE_SIGNAL    ");
		case ACTION_FORMAT:	return("ACTION_FORMAT           ");
		case ACTION_MAKE_LINK:	return("ACTION_MAKE_LINK        ");
		case ACTION_READ_LINK:	return("ACTION_READ_LINK        ");
		case ACTION_FH_FROM_LOCK:	return("ACTION_FH_FROM_LOCK     ");
		case ACTION_IS_FILESYSTEM:	return("ACTION_IS_FILESYSTEM    ");
		case ACTION_CHANGE_MODE:	return("ACTION_CHANGE_MODE      ");
		case ACTION_COPY_DIR_FH:	return("ACTION_COPY_DIR_FH      ");
		case ACTION_PARENT_FH:	return("ACTION_PARENT_FH        ");
		case ACTION_EXAMINE_ALL:	return("ACTION_EXAMINE_ALL      ");
		case ACTION_EXAMINE_FH:	return("ACTION_EXAMINE_FH       ");
		case ACTION_LOCK_RECORD:	return("ACTION_LOCK_RECORD      ");
		case ACTION_FREE_RECORD:	return("ACTION_FREE_RECORD      ");
		case ACTION_ADD_NOTIFY:	return("ACTION_ADD_NOTIFY       ");
		case ACTION_REMOVE_NOTIFY:	return("ACTION_REMOVE_NOTIFY    ");
		case ACTION_EXAMINE_ALL_END:	return("ACTION_EXAMINE_ALL_END  ");
		case ACTION_SET_OWNER:	return("ACTION_SET_OWNER        ");
		case ACTION_SERIALIZE_DISK:	return("ACTION_SERIALIZE_DISK   ");
	}
	return("UKNOWN packet");
}


/********************************************************************/
		void ScrollWindowUp(struct Window *wdw)
/********************************************************************/
{
	SetWrMsk(wdw->RPort, 0x1);
	ScrollRaster(wdw->RPort, 0, 8,
					wdw->BorderLeft,
					wdw->BorderTop,
					wdw->Width-wdw->BorderRight-1,
					wdw->Height-wdw->BorderBottom-1);

}

/********************************************************************/
			void MyPrint(struct Window *wdw, char *str)
/********************************************************************/
{
struct RastPort *rp = wdw->RPort;
	ScrollWindowUp(wdw);
	Move(rp, 4, wdw->Height-wdw->BorderBottom-3);
	SetAPen(rp, 1);
	SetBPen(rp, 0);
	SetDrMd(rp, JAM2);
	Text(rp, str, strlen(str));
}

/********************************************************************/
		void MyPrintBCPL(struct Window *wdw, BPTR s)
/********************************************************************/
{
char *str = BTOC(s);
struct RastPort *rp = wdw->RPort;
	ScrollWindowUp(wdw);
	Move(rp, 4, wdw->Height-wdw->BorderBottom-3);
	SetAPen(rp, 1);
	SetBPen(rp, 0);
	SetDrMd(rp, JAM2);
	Text(rp, &str[1], str[0]);
}


/** STUFF FOR THE FIRST WINDOW */
struct	Window *win1;
struct  HoldGadget win1gadhold;
UWORD win1cols[32] = {
	0x530,0x100,0xa85,0xf88
};


/** COLOURS WHICH ARE SAVED */
UWORD savecols[32] = {
	0x345,0xfff,0x122,0xabc
};


/********************************************************************/
					void CloseGfx(void)
/********************************************************************/
{
	if(win1) {
		FlushWindowInput(win1);
		CloseWindow(win1);
		win1 = NULL;
	}
}


/********************************************************************/
						long OpenGfx(void)
/********************************************************************/
{
static struct NewWindow Nw1 = {
	0, 10, 352, 250, (unsigned char)-1, (unsigned char)-1,

	IDCMP_CLOSEWINDOW |
	IDCMP_MENUPICK |
	IDCMP_RAWKEY |
	IDCMP_NEWSIZE |
	IDCMP_INACTIVEWINDOW |
	IDCMP_ACTIVEWINDOW |
	IDCMP_GADGETDOWN |
	IDCMP_GADGETUP |
	IDCMP_MOUSEBUTTONS |
	IDCMP_MOUSEMOVE ,

	WINDOWSIZING |
	WINDOWDRAG |
	WINDOWDEPTH |
	WINDOWCLOSE |
	NOCAREREFRESH |
	REPORTMOUSE |
	ACTIVATE,
	NULL, NULL, "What ever", NULL, NULL,
	32, 32, (unsigned short)-1, (unsigned short)-1, WBENCHSCREEN
};

	if(! (win1 = OpenWindow(&Nw1)))
		{ CloseGfx(); return 0; }
	InitHoldGadget(&win1gadhold, win1, IDCMP_INTUITICKS, NULL);
}


/********************************************************************/
						long HandleWin1(void)
/********************************************************************/
{
struct	IntuiMessage *im;
long	last;
	while (im = (struct IntuiMessage *)GetMsg(win1->UserPort)) {
		switch(last = DoGadgets(&win1gadhold, im)) {
			case 0:
			case -1: break;
			case IDCMP_CLOSEWINDOW:
				LoadRGB4(&(win1->WScreen->ViewPort), savecols, 4);
				ReplyMsg((struct Message *)im);
				return last;
			case IDCMP_NEWSIZE:
				break;
			case IDCMP_ACTIVEWINDOW:
				WindowToFront(win1);
				SaveCols(win1, savecols, 32);
				LoadRGB4(&(win1->WScreen->ViewPort), win1cols, 4);
				break;
			case IDCMP_INACTIVEWINDOW:
				LoadRGB4(&(win1->WScreen->ViewPort), savecols, 4);
				break;
			case IDCMP_MOUSEBUTTONS:    /* pass back if no gadget was held */
				break;
			case IDCMP_MOUSEMOVE:
				break;
			default:
				break;
		}
		ReplyMsg((struct Message *)im);
	}
	return last;
}

