/* ******************************************************************** */ /* 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_new 0 #define ID_quit 1 #define ID_selectmodel 2 #define ID_Import 3 #define ID_comp1 4 #define ID_comp 5 #define ID_employees 6 #define ID_level 7 #define ID_cars 8 #define ID_computer 9 #define ID_color 10 #define GadToolsNumGads 11 #include "GadTools_func.c" int newObj(struct VAobject VAObject); int quitObj(struct VAobject VAObject); int selectmodelObj(struct VAobject VAObject); int ImportObj(struct VAobject VAObject); int comp1Obj(struct VAobject VAObject); int compObj(struct VAobject VAObject); int employeesObj(struct VAobject VAObject); int levelObj(struct VAobject VAObject); int carsObj(struct VAobject VAObject); int computerObj(struct VAobject VAObject); int colorObj(struct VAobject VAObject); int GadToolsIDCMP_MOUSEBUTTONS (struct VAobject VAObject); int GadToolsIDCMP_MOUSEMOVE (struct VAobject VAObject); int GadToolsIDCMP_INTUITICKS (struct VAobject VAObject); int GetPubScreen(void); void ClosePubScreen(void); int OpenGadToolsWindow(char windtitle[]); void CloseGadToolsWindow(void); int GadToolsHandler(void); int GadToolsMainHandler(void); void DrawGadToolsObjs(void); int main(int argc, char *argv[]); UBYTE *PubScrName = "Workbench"; struct DrawInfo *ScrDrawInfo = NULL; APTR VisualInfo = NULL; struct Screen *Scr = NULL; struct Window *GadToolsWnd = NULL; struct Menu *GadToolsMenus = NULL; struct Gadget *GadToolsGList = NULL; struct Gadget *GadToolsGadgets[GadToolsNumGads]; struct IntuiMessage GadToolsMsg; UWORD GadToolsLeft = 88; UWORD GadToolsTop = 34; UWORD GadToolsWidth = 421; UWORD GadToolsHeight = 136; struct NewMenu GadToolsNewMenu1[] = { { NM_TITLE, "Project", 0 , 0 , 0 , 0,}, { NM_ITEM, "About", 0 , 0L , 0 , (APTR)AboutMenuObj,}, { NM_ITEM, NM_BARLABEL, 0 , 0 , 0 , 0,}, { NM_ITEM, "Open", 0 , 0L , 0 , (APTR)OpenMenuObj,}, { NM_ITEM, "Save", 0 , 0L , 0 , (APTR)SaveMenuObj,}, { NM_ITEM, NM_BARLABEL, 0 , 0 , 0 , 0,}, { NM_ITEM, "Quit", 0 , 0L , 0 , (APTR)QuitMenuObj,}, { NM_TITLE, "Edit", 0 , 0 , 0 , 0,}, { NM_ITEM, "Undo", "Z", 0L , 0, (APTR)UndoMenuObj,}, { NM_ITEM, NM_BARLABEL, 0 , 0 , 0 , 0,}, { NM_ITEM, "Copy", "C", 0L , 0, (APTR)CopyMenuObj,}, { NM_ITEM, "Cut", "X", 0L , 0, (APTR)CutMenuObj,}, { NM_ITEM, "Paste", "V", 0L , 0, (APTR)PasteMenuObj,}, { NM_END, NULL, 0 , 0 , 0 , 0,}, }; /* stringinfo for WB 1.x style string/integer gadgets */ struct StringExtend GadToolsStrExt; /* Extend String Gadget */ struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 }; struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 }; UBYTE *carsLabels[] = { (UBYTE *)"GMC", (UBYTE *)"Ford", (UBYTE *)"Chrysler", (UBYTE *)"Toyota", (UBYTE *)"Honda", (UBYTE *)"Nissa", NULL }; UBYTE *computerLabels[] = { (UBYTE *)"Amiga", (UBYTE *)"Apple", (UBYTE *)"IBM", (UBYTE *)"SUN", (UBYTE *)"HP", NULL }; WORD GadToolsGadTypes[] = { BUTTON_KIND, BUTTON_KIND, STRING_KIND, CHECKBOX_KIND, MX_KIND, CYCLE_KIND, SLIDER_KIND, SCROLLER_KIND, LISTVIEW_KIND, LISTVIEW_KIND, PALETTE_KIND, }; struct NewGadget GadToolsNGads[] = { 186, 1, 97, 12, (UBYTE *)"New _Model",&topaz800, ID_new, PLACETEXT_IN, NULL, (APTR)newObj, 323, 66, 72, 11, (UBYTE *)"Ne_xt",&topaz800, ID_quit, PLACETEXT_IN, NULL, (APTR)quitObj, 4, 45, 174, 12, (UBYTE *)"", &topaz800, ID_selectmodel, PLACETEXT_LEFT, NULL, (APTR)selectmodelObj, 257, 15, 26, 11, (UBYTE *)"Import", &topaz800, ID_Import, PLACETEXT_LEFT, NULL, (APTR)ImportObj, 324, 2, 17, 9, (UBYTE *)"", &topaz800, ID_comp1, PLACETEXT_RIGHT, NULL, (APTR)comp1Obj, 194, 63, 89, 14, (UBYTE *)"Company", &topaz800, ID_comp, PLACETEXT_LEFT, NULL, (APTR)compObj, 130, 105, 153, 12, (UBYTE *)"# Employees ", &topaz800, ID_employees, PLACETEXT_LEFT, NULL, (APTR)employeesObj, 289, 1, 23, 117, (UBYTE *)"", &topaz800, ID_level, PLACETEXT_LEFT, NULL, (APTR)levelObj, 4, 1, 174, 44, (UBYTE *)"", &topaz800, ID_cars, PLACETEXT_ABOVE, NULL, (APTR)carsObj, 6, 63, 109, 36, (UBYTE *)"", &topaz800, ID_computer, PLACETEXT_ABOVE, NULL, (APTR)computerObj, 130, 78, 152, 25, (UBYTE *)"", &topaz800, ID_color, PLACETEXT_ABOVE, NULL, (APTR)colorObj, }; ULONG GadToolsNTags[] = { (GT_Underscore), '_', TAG_DONE, (GT_Underscore), '_', TAG_DONE, GTST_MaxChars, 255, (STRINGA_Justification), GACT_STRINGLEFT, TAG_DONE, TAG_DONE, (GTMX_Labels), (ULONG)&carsLabels[0], (GTMX_Active), 0, (GTMX_Spacing), 2, TAG_DONE, (GTCY_Labels), (ULONG)&computerLabels[0], (GTCY_Active), 3, TAG_DONE, (GTSL_Min), 0, (GTSL_Max), 100, (GTSL_Level), 10, (GTSL_LevelFormat), (ULONG)"%l3d", (GTSL_MaxLevelLen), 0, (GTSL_LevelPlace), PLACETEXT_LEFT, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (PGA_Freedom), LORIENT_HORIZ, TAG_DONE, (GTSC_Top), 0, (GTSC_Total), 1210, (GTSC_Visible), 330, (GTSC_Arrows), 10, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (PGA_Freedom), LORIENT_VERT, TAG_DONE, (GTLV_ShowSelected), 99, (GTLV_Labels), NULL, (GTLV_Top), 0, (GTLV_ScrollWidth), 16, (LAYOUTA_Spacing), 2, TAG_DONE, (GTLV_Labels), NULL, (GTLV_Top), 0, (GTLV_ReadOnly), TRUE, (GTLV_ScrollWidth), 16, (LAYOUTA_Spacing), 0, TAG_DONE, (GTPA_Depth), 2, (GTPA_Color), 1, (GTPA_ColorOffset), 0, TAG_DONE, }; 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 OpenGadToolsWindow(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; int k=0; int LVStrGads[] = {ID_selectmodel, -1 }; GadToolsStrExt.Font = NULL; GadToolsStrExt.Pens[0] = 2; GadToolsStrExt.Pens[1] = 0; GadToolsStrExt.ActivePens[0] = 3; GadToolsStrExt.ActivePens[1] = 2; GadToolsStrExt.InitialModes = 0; GadToolsStrExt.EditHook = NULL; GadToolsStrExt.WorkBuffer = NULL; if (!(Gad = CreateContext(&GadToolsGList))) return(1L); for (i=0, j=0; i < GadToolsNumGads; i++) { CopyMem((char *)&GadToolsNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget)); NewGad.ng_VisualInfo = VisualInfo; NewGad.ng_LeftEdge += offsetx; NewGad.ng_TopEdge += offsety; if (GadToolsNTags[j] == GTLV_ShowSelected && GadToolsNTags[j+1] == 99) GadToolsNTags[j+1] = (ULONG)GadToolsGadgets[LVStrGads[k++]]; GadToolsGadgets[i] = Gad = CreateGadgetA((ULONG)GadToolsGadTypes[i], Gad, &NewGad, (struct TagItem *)&GadToolsNTags[j]); if (GadToolsGadTypes[i] == STRING_KIND || GadToolsGadTypes[i] == INTEGER_KIND) { GadToolsGadgets[i]->Flags |= GFLG_STRINGEXTEND; ((struct StringInfo *)GadToolsGadgets[i]->SpecialInfo)->Extension = &GadToolsStrExt; } while (GadToolsNTags[j]) j +=2; j++; if (!Gad) return(2L); } GadToolsGadgets[0]->Activation |= GACT_TOGGLESELECT; if (!(GadToolsMenus = CreateMenus(GadToolsNewMenu1, GTMN_FrontPen, 0L, TAG_DONE))) return(3L); LayoutMenus(GadToolsMenus, VisualInfo, GTMN_TextAttr, &topaz800, GTMN_NewLookMenus, TRUE, TAG_DONE); if (!(GadToolsWnd = OpenWindowTags(NULL, WA_Left, GadToolsLeft, WA_Top, GadToolsTop, WA_Width, GadToolsWidth, WA_Height, GadToolsHeight + kWindowOffSetY, WA_NewLookMenus, TRUE, WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_NEWSIZE | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE | IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_VANILLAKEY | IDCMP_INTUITICKS | IDCMP_MENUPICK , WA_Flags, WFLG_CLOSEGADGET | WFLG_DEPTHGADGET | WFLG_SMART_REFRESH | WFLG_ACTIVATE | WFLG_DRAGBAR , WA_Gadgets, GadToolsGList, 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); CreateGadToolsLists(); SetMenuStrip(GadToolsWnd, GadToolsMenus); DrawGadToolsObjs(); GT_RefreshWindow(GadToolsWnd, NULL); RefreshGadgets(GadToolsGadgets[0], GadToolsWnd, NULL); GT_SetGadgetAttrs(GadToolsGadgets[8], GadToolsWnd, NULL, GTLV_Labels, GadToolsLists[0], TAG_END); GT_SetGadgetAttrs(GadToolsGadgets[9], GadToolsWnd, NULL, GTLV_Labels, GadToolsLists[1], TAG_END); return(0L); } void CloseGadToolsWindow(void) { if (GadToolsWnd) CloseWindow(GadToolsWnd); if (GadToolsGList) FreeGadgets(GadToolsGList); if (GadToolsMenus) { ClearMenuStrip(GadToolsWnd); FreeMenus(GadToolsMenus); } } int GadToolsHandler(void) { struct MenuItem *menu; struct IntuiMessage *msg; struct VAobject VAObject; int running = 1; int (*func)(struct VAobject VAObject); ULONG class; UWORD code; while (msg=GT_GetIMsg(GadToolsWnd->UserPort)) { CopyMem((char *)msg, (char *)&GadToolsMsg, (long)sizeof(struct IntuiMessage)); class = msg->Class; code = msg->Code; VAObject.va_Window = (struct Window *)GadToolsWnd; 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_MOUSEBUTTONS : running = GadToolsIDCMP_MOUSEBUTTONS (VAObject); break; case IDCMP_MOUSEMOVE : running = GadToolsIDCMP_MOUSEMOVE (VAObject); break; case IDCMP_INTUITICKS : running = GadToolsIDCMP_INTUITICKS (VAObject); break; case IDCMP_NEWSIZE: break; case IDCMP_CLOSEWINDOW: return(0); break; case IDCMP_GADGETUP: func = (void *)((struct Gadget *)GadToolsMsg.IAddress)->UserData; if (func != NULL) running = func(VAObject); break; case IDCMP_VANILLAKEY: switch(code) { case 'M': GadToolsGadgets[0]->Flags ^= GFLG_SELECTED; RefreshGList(GadToolsGadgets[0], GadToolsWnd, NULL, 1); break; case 'x': ButtonSelected(GadToolsWnd, GadToolsGadgets[1]); break; } break; case IDCMP_MENUPICK: while ( code != MENUNULL) { VAObject.va_Window = (struct Window *)GadToolsWnd; VAObject.va_Gadget = NULL; VAObject.va_IntuiMsg = (struct IntuiMessage *)msg; VAObject.va_Flags = NULL; VAObject.va_UserData = 0; menu = ItemAddress(GadToolsMenus, code); func = (void *)(GTMENUITEM_USERDATA(menu)); running = func(VAObject); code = menu->NextSelect; } break; } } return(running); } void DrawGadToolsObjs(void) { GadToolsDrawRects(GadToolsWnd); } int GadToolsMainHandler(void) { int running = 1; ULONG windsig, signals; windsig = 1L << GadToolsWnd->UserPort->mp_SigBit; while (running == 1) { signals = Wait( windsig ); if (signals & windsig) { running = GadToolsHandler(); } } return(running); } int main(int argc, char *argv[]) { int rc; if (!(GetPubScreen())) { for (rc=0; rc < 2; rc++) GadToolsLists[rc]=GetNewList(); if (!(OpenGadToolsWindow("GadTools & Menu Demo"))) { rc = GadToolsMainHandler(); CloseGadToolsWindow(); } for (rc=0; rc < 2; rc++) FreeList(GadToolsLists[rc]); ClosePubScreen(); } return(0L); }