extern APTR FImage,SImage,EImage,BImage; extern APTR FSImage,SSImage,ESImage,BSImage; extern movecur(),read_sector(),write_sector(),gotogad(), Fgadget(),Sgadget(),Egadget(),Bgadget(),fspecgad(),Dummy(); /* GADGETS.C; support routines for NewZAP - (c) 1986 John Hodgson Gadget notes : The HEX and ASCII window gadgets are invisible gadgets whose real purpose is to provide mousevents when selected in their "windows". The last gadget is a blanket gadget whose only purpose is to detect mouse presses in areas not previously defined. The purpose of the GADGIMMEDIATE flags are to are to provide rapid detection of left mouse presses used for selecting/ deselecting the edit windows. Odd Intuition notes : GADGIMMEDIATE|FOLLOWMOUSE will return 1 GADGETDOWN and 1 MOUSEMOVE. GADGIMMEDIATE|RELVERIFY|FOLLOWMOUSE will return 1 GADGETDOWN, MOUSEMOVES whenever the mouse is moved, followed by GADGETUP. RELVERIFY|FOLLOWMOUSE is like above, only the GADGETDOWN is substituted with an initial MOUSEMOVE. Note that a gadget selected with RELVERIFY and MOUSEMOVE flags set will report MOUSEMOVES as long as the user moves the mouse and keeps the LMB held down. Even if the gadget graphically de-selects by moving outside of its select box! Huh?!? Of course, no GADGETUP will be provided in this case. STRING GADGETS are buggy before the 1.2 release of Intuition. String gadget displays suffer do not completely redraw their input windows upon selection, nor do they correctly refresh during STRINGCENTER editing. */ UBYTE iobuf[10],filespec[80],bakbuf[80]; /* bakbuf shared by all string gads */ struct StringInfo ginfo = { &iobuf[0],0L,0,5,0,0,0,0,0,0,0L,0L,0L }; struct StringInfo finfo = { &filespec[0],&bakbuf[0],0,sizeof(filespec),0,0,0,0,0,0,0L,0L,0L }; struct Gadget gadget[11] = { { &gadget[1], 6, 24,430,131,GADGHNONE, /* HEX window gadget */ GADGIMMEDIATE|RELVERIFY|FOLLOWMOUSE,BOOLGADGET, 0L,0L,0L,0L,0L,1,(APTR)&movecur }, { &gadget[2], 437,24,197,131,GADGHNONE, /* ASC window gadget */ GADGIMMEDIATE|RELVERIFY|FOLLOWMOUSE,BOOLGADGET, 0L,0L,0L,0L,0L,2,(APTR)&movecur }, { &gadget[3],206,173, 53, 9, /* UNDO gadget */ GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET, 0L,0L,0L,0L,0L,3,(APTR)&read_sector }, { &gadget[4],368,173, 49, 9, /* SAVE gadget */ GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET, 0L,0L,0L,0L,0L,4,(APTR)&write_sector }, { &gadget[5],294,174, 40, 8, /* GOTO string gadget */ GADGHCOMP,GADGIMMEDIATE|RELVERIFY|STRINGCENTER|LONGINT, STRGADGET,0L,0L,0L,0L,(APTR)&ginfo,5,(APTR)&gotogad }, { &gadget[6],301,158, 26, 12, /* F arrow */ GADGHIMAGE|GADGIMAGE,GADGIMMEDIATE|RELVERIFY,BOOLGADGET, (APTR)&FSImage,(APTR)&FImage,0L,0L,0L,6,(APTR)&Fgadget }, { &gadget[7],272,170, 17, 15, /* S arrow */ GADGHIMAGE|GADGIMAGE,GADGIMMEDIATE|RELVERIFY,BOOLGADGET, (APTR)&SSImage,(APTR)&SImage,0L,0L,0L,7,(APTR)&Sgadget }, { &gadget[8],339,170, 17, 15, /* E arrow */ GADGHIMAGE|GADGIMAGE,GADGIMMEDIATE|RELVERIFY,BOOLGADGET, (APTR)&ESImage,(APTR)&EImage,0L,0L,0L,8,(APTR)&Egadget }, { &gadget[9],301,185, 25, 13, /* B arrow */ GADGHIMAGE|GADGIMAGE,GADGIMMEDIATE|RELVERIFY,BOOLGADGET, (APTR)&BSImage,(APTR)&BImage,0L,0L,0L,9,(APTR)&Bgadget }, { &gadget[10],98,12, 250, 8, /* filespec string gadget */ GADGHCOMP,GADGIMMEDIATE|RELVERIFY, STRGADGET,0L,0L,0L,0L,(APTR)&finfo,10,(APTR)&fspecgad }, { 0L, 1, 10, 637,189, /* cover remaining space - MUST be last! */ GADGHNONE,GADGIMMEDIATE,BOOLGADGET,0L,0L,0L,0L,0L,11,(APTR)&Dummy } }; /* This "GOTO" Image is used to overlay the string gadget when not in use. Note that the string gadget will erase this GOTO when selected. bitmap : w = 48, h = 11 ----- plane # 0: ----- */ USHORT gotobrush [66*2] = { 0x7FFF,0xFFFF,0xFFF0, 0xC000,0x0, 0x18, 0x87C0,0xF0FE,0x1E08, 0x8EE1,0xF8FE,0x3F08, 0x9C03,0x9C38,0x7388, 0x9DE3,0x9C38,0x7388, 0x9CE3,0x9C38,0x7388, 0x8EE1,0xF838,0x3F08, 0x87E0,0xF07C,0x1E08, 0xC000,0x0, 0x18, 0x7FFF,0xFFFF,0xFFF0, /*----- plane # 1: -----*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F0, 0xFCFF,0x9F80, 0xFF9, 0xFEFF,0xBFC0, 0x1F03,0xDF3E,0x7FE0, 0x1FFB,0xDF3E,0x7FE0, 0x1FFB,0xDF3E,0x7FE0, 0xFF9, 0xFE3E,0x3FC0, 0x7F8, 0xFC7F,0x1F80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; struct Image GotoImage= { 0,0,45,11,2,&gotobrush[0],3,0,0L };