/* ******************************************************************** */ /* C code generated by: */ /* Visual Arts Version 2.1 */ /* Copyright 1994-95 Danny Y. Wong All rights reserved */ /* Calgary, Alberta (CANADA) */ /* Partial of the code is copyright by Jaba Development */ /* ******************************************************************** */ #include #include #define ID_Quit 0 #define IconNumGads 1 #define ID_icon1 1 #define ID_icon2 2 #define ID_icon3 3 #define ID_icon4 4 #define ID_icon5 5 #include "Icon_func.c" #include "Icon_images.c" int QuitObj(struct VAobject VAObject); int icon1Obj(struct VAobject VAObject); int icon2Obj(struct VAobject VAObject); int icon3Obj(struct VAobject VAObject); int icon4Obj(struct VAobject VAObject); int icon5Obj(struct VAobject VAObject); int GetPubScreen(void); void ClosePubScreen(void); int OpenIconWindow(char windtitle[]); void CloseIconWindow(void); int IconHandler(void); int IconMainHandler(void); void DrawIconObjs(void); int main(int argc, char *argv[]); UBYTE *PubScrName = "Workbench"; struct DrawInfo *ScrDrawInfo = NULL; APTR VisualInfo = NULL; struct Screen *Scr = NULL; struct Window *IconWnd = NULL; struct Gadget *IconGList = NULL; struct Gadget *IconGadgets[IconNumGads]; struct IntuiMessage IconMsg; UWORD IconLeft = 118; UWORD IconTop = 63; UWORD IconWidth = 307; UWORD IconHeight = 56; struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 }; struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 }; WORD IconGadTypes[] = { BUTTON_KIND, }; struct NewGadget IconNGads[] = { 124, 30, 62, 12, (UBYTE *)"Quit",&topaz800, ID_Quit, PLACETEXT_IN, NULL, (APTR)QuitObj, }; ULONG IconNTags[] = { TAG_DONE, }; struct Gadget icon1Gad = { NULL, 14, 13, 52, 23, GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY, GTYP_BOOLGADGET, (APTR)&def_makefileImage, (APTR)&def_makefile1Image, NULL, 0x0, NULL, ID_icon1, (APTR)icon1Obj }; struct Gadget icon2Gad = { &icon1Gad, 126, 13, 54, 23, GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY, GTYP_BOOLGADGET, (APTR)&ShellImage, (APTR)&Shell1Image, NULL, 0x0, NULL, ID_icon2, (APTR)icon2Obj }; struct Gadget icon3Gad = { &icon2Gad, 70, 13, 52, 23, GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY, GTYP_BOOLGADGET, (APTR)&def_mapImage, (APTR)&def_map1Image, NULL, 0x0, NULL, ID_icon3, (APTR)icon3Obj }; struct Gadget icon4Gad = { &icon3Gad, 242, 13, 54, 22, GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY, GTYP_BOOLGADGET, (APTR)&AppLauncherImage, (APTR)&AppLauncher1Image, NULL, 0x0, NULL, ID_icon4, (APTR)icon4Obj }; struct Gadget icon5Gad = { &icon4Gad, 184, 13, 54, 23, GFLG_GADGHIMAGE | GFLG_GADGIMAGE, GACT_IMMEDIATE | GACT_RELVERIFY, GTYP_BOOLGADGET, (APTR)&DPaintImage, (APTR)&DPaint1Image, NULL, 0x0, NULL, ID_icon5, (APTR)icon5Obj }; int GetPubScreen(void) { if (!(Scr = LockPubScreen(PubScrName))) return(1L); if (!(VisualInfo = GetVisualInfo(Scr, TAG_DONE))) return(2L); if (!(ScrDrawInfo = GetScreenDrawInfo(Scr))) return(3L); return(0L); } void ClosePubScreen(void) { if (VisualInfo) FreeVisualInfo(VisualInfo); if (Scr) UnlockPubScreen(NULL, Scr); if (ScrDrawInfo) FreeScreenDrawInfo(Scr, ScrDrawInfo); } int OpenIconWindow(char windtitle[80]) { struct NewGadget NewGad; struct Gadget *Gad; register UWORD i, j; UWORD offsetx = Scr->WBorLeft; UWORD offsety = Scr->WBorTop + Scr->Font->ta_YSize + 1; if (!(Gad = CreateContext(&IconGList))) return(1L); icon1Gad.TopEdge += kWindowOffSetY; icon2Gad.TopEdge += kWindowOffSetY; icon3Gad.TopEdge += kWindowOffSetY; icon4Gad.TopEdge += kWindowOffSetY; icon5Gad.TopEdge += kWindowOffSetY; for (i=0, j=0; i < IconNumGads; i++) { CopyMem((char *)&IconNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget)); NewGad.ng_VisualInfo = VisualInfo; NewGad.ng_LeftEdge += offsetx; NewGad.ng_TopEdge += offsety; IconGadgets[i] = Gad = CreateGadgetA((ULONG)IconGadTypes[i], Gad, &NewGad, (struct TagItem *)&IconNTags[j]); while (IconNTags[j]) j +=2; j++; if (!Gad) return(2L); } IconGadgets[i-1]->NextGadget = &icon5Gad; if (!(IconWnd = OpenWindowTags(NULL, WA_Left, IconLeft, WA_Top, IconTop, WA_Width, IconWidth, WA_Height, IconHeight + kWindowOffSetY, WA_NewLookMenus, TRUE, WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_GADGETUP | IDCMP_GADGETDOWN , WA_Flags, WFLG_CLOSEGADGET | WFLG_SMART_REFRESH | WFLG_RMBTRAP | WFLG_ACTIVATE | WFLG_DRAGBAR , WA_Gadgets, IconGList, WA_Title, windtitle, WA_ScreenTitle, "Visual Arts V2.2 Copyright 1994-95 Danny Y. Wong All Rights Reserved.", WA_PubScreen, Scr, WA_MinWidth, 160, WA_MinHeight, 50, WA_MaxWidth, 640, WA_MaxHeight, 200, TAG_DONE))) return(3L); DrawIconObjs(); GT_RefreshWindow(IconWnd, NULL); RefreshGadgets(IconGadgets[0], IconWnd, NULL); return(0L); } void CloseIconWindow(void) { if (IconWnd) CloseWindow(IconWnd); if (IconGList) FreeGadgets(IconGList); } int IconHandler(void) { struct IntuiMessage *msg; struct VAobject VAObject; int running = 1; int (*func)(struct VAobject VAObject); ULONG class; UWORD code; while (msg=GT_GetIMsg(IconWnd->UserPort)) { CopyMem((char *)msg, (char *)&IconMsg, (long)sizeof(struct IntuiMessage)); class = msg->Class; code = msg->Code; VAObject.va_Window = (struct Window *)IconWnd; VAObject.va_Gadget = (struct Gadget *)msg->IAddress; VAObject.va_IntuiMsg = (struct IntuiMessage *)msg; VAObject.va_Flags = 0; VAObject.va_UserData = 0; GT_ReplyIMsg(msg); switch(class) { case IDCMP_CLOSEWINDOW: return(0); break; case IDCMP_GADGETUP: func = (void *)((struct Gadget *)IconMsg.IAddress)->UserData; if (func != NULL) running = func(VAObject); break; } } return(running); } void DrawIconObjs(void) { IconDrawRects(IconWnd); } int IconMainHandler(void) { int running = 1; ULONG windsig, signals; windsig = 1L << IconWnd->UserPort->mp_SigBit; while (running == 1) { signals = Wait( windsig ); if (signals & windsig) { running = IconHandler(); } } return(running); } int main(int argc, char *argv[]) { int rc; if (!(GetPubScreen())) { if (!(OpenIconWindow("Icon Demo"))) { rc = IconMainHandler(); CloseIconWindow(); } ClosePubScreen(); } return(0L); }