/*construct.c */ #include "aib.h" #include "main.h" /* function prototypes */ void main(void); void abort_me(char *); void setup(void); void closedown(void); void main_menu(void); void window_menu(void); void handle_input(void); void handle_gadgetup(struct Gadget *, UWORD); void handle_gadgetdown(struct Gadget *, UWORD); void replace_gads(short); void wflags_menu(void); void gadget_menu(void); /*************************** main ********************************/ void main(void) { setup(); main_menu(); handle_input(); } /*************************** abort **********************************/ void abort_me(txt) char *txt; { request("AIB: FATAL",txt,"Abort"); closedown(); exit(0); } /*********************** SETUP *********************************************/ void setup(void) { GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", MIN_VERSION); if (!GfxBase) abort_me("Can't open graphics.library. WB Version 36 or above required."); IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", MIN_VERSION); if (!IntuitionBase) abort_me("Can't open intuition.library. WB Version 36 or above required."); GadToolsBase = (struct Library *)OpenLibrary("gadtools.library", MIN_VERSION); if (!GadToolsBase) abort_me("Can't open gadtools.library. WB Version 36 or above required."); if ( ( AslBase = OpenLibrary(AslName,36))==0) abort_me("Can't open asl.library. WB Version 36 or above required."); if (!(DiskfontBase = OpenLibrary("diskfont.library",36L))) abort_me("Can't open diskfont.library v36 or up."); /* get access to the WorkBench screen */ screen = LockPubScreen(NULL); if (!screen) abort_me("Couldn't lock the default public screen."); menuta = screen->Font; /* get the screen's visual information data */ vi = GetVisualInfo(screen, TAG_DONE); if (!vi) abort_me("Couldn't get default public screen's VisualInfo."); /* now open up AIB, sketchpad on the WorkBench */ Modify_Theirs(); window = OpenWindowTags(NULL,WA_Activate, TRUE, WA_IDCMP,CLOSEWINDOW | VANILLAKEY | REFRESHWINDOW | SLIDERIDCMP | STRINGIDCMP | BUTTONIDCMP | CHECKBOXIDCMP | MXIDCMP | MENUPICK |LISTVIEWIDCMP, WA_Width, 550, WA_Gadgets, glist, WA_Left,40, WA_Top,0, WA_InnerHeight,180, WA_DragBar,TRUE, WA_DepthGadget, TRUE, WA_SimpleRefresh,TRUE, WA_Title,titles[0], TAG_DONE); if (!window || !theirs.sketchpad) abort_me("Couldn't open the windows."); GT_RefreshWindow(window,NULL); NewList(&tit_list); } /************************* CLOSEDOWN *************************************/ void closedown(void) { if (menu) FreeMenus(menu); if (window) CloseWindow(window); if (theirs.sketchpad) CloseWindow(theirs.sketchpad); if (topt) free_allmenu(topt); if (newtop) free_allmenu(newtop); if (CustomMenuFont) CloseFont(CustomMenuFont); /* these two functions can take a NULL, but let's stay consistent */ if (glist) FreeGadgets(glist); if (vi) FreeVisualInfo(vi); if (screen) UnlockPubScreen(NULL, screen); if (rmem) FreeRemember(&rmem, TRUE); if (GadToolsBase) CloseLibrary(GadToolsBase); if (IntuitionBase) CloseLibrary((struct Library *)IntuitionBase); if (GfxBase) CloseLibrary((struct Library *)GfxBase); if (DiskfontBase) CloseLibrary(DiskfontBase); if (AslBase) CloseLibrary(AslBase); } /************************ CREATE'EM ****************************************/ /** main menu **/ void main_menu(void) { UWORD top; /* offset into Window under titlebar */ struct NewGadget ng; /* for Gadget positioning */ struct Gadget *gad; /* our running Gadget pointer */ top = window->BorderTop + 1; gad = CreateContext(&glist); /* now we can fill out the NewGadget structure to describe where we want the Gadget to be placed */ ng.ng_VisualInfo = vi; ng.ng_TextAttr = &topaz80; ng.ng_Flags = 0; /* ng.ng_Flags = PLACETEXT_LEFT;*/ ng.ng_LeftEdge = 195; ng.ng_TopEdge = top + 10; ng.ng_Width = 170; ng.ng_Height = 15; ng.ng_GadgetID = M_nam; ng.ng_GadgetText = "Project Name:"; gad = CreateGadget(TEXT_KIND,gad,&ng, GTTX_Border,TRUE, GTTX_Text,"none", GT_Underscore,'_', TAG_DONE); ng.ng_Flags = 0; /*PLACETEXT_IN;*/ ng.ng_LeftEdge = 65; ng.ng_TopEdge = top + 55; ng.ng_Width = 170; ng.ng_Height = 20; ng.ng_GadgetID = M_pro; ng.ng_GadgetText = "_Project..."; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore,'_', TAG_DONE); ng.ng_LeftEdge = 65; ng.ng_TopEdge = top + 95; ng.ng_Width = 170; ng.ng_Height = 20; ng.ng_GadgetID= M_abo; ng.ng_GadgetText= "_About... "; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore,'_', TAG_DONE); ng.ng_LeftEdge = 65; ng.ng_TopEdge = top + 135; ng.ng_Width = 170; ng.ng_Height = 20; ng.ng_GadgetID= M_qui; ng.ng_GadgetText= "_Quit... "; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore,'_', TAG_DONE); ng.ng_LeftEdge = window->Width-240; ng.ng_TopEdge = top + 55; ng.ng_Width = 170; ng.ng_Height = 20; ng.ng_GadgetID= M_men; ng.ng_GadgetText= "_Menu... "; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore,'_', TAG_DONE); ng.ng_LeftEdge = window->Width-240; ng.ng_TopEdge = top + 95; ng.ng_Width = 170; ng.ng_Height = 20; ng.ng_GadgetID= M_gad; ng.ng_GadgetText= "_Gadgets..."; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore,'_', TAG_DONE); ng.ng_LeftEdge = window->Width-240; ng.ng_TopEdge = top + 135; ng.ng_Width = 170; ng.ng_Height = 20; ng.ng_GadgetID= M_win; ng.ng_GadgetText= "_Window... "; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore,'_', TAG_DONE); if (!gad) abort_me("Couldn't allocate the Gadget list."); AddGList(window, glist, (UWORD)-1, (UWORD)-1, NULL); RefreshGList(glist, window, NULL, (UWORD)-1); GT_RefreshWindow(window, NULL); } /** gadget menu **/ void gadget_menu(void) { UWORD top; /* offset into Window under titlebar */ struct NewGadget ng; /* for Gadget positioning */ struct Gadget *gad; /* our running Gadget pointer */ struct Node *node; struct maingad *tempgad = topgad; top = window->BorderTop + 1; gad = CreateContext(&glist); /* now we can fill out the NewGadget structure to describe where we want the Gadget to be placed */ ng.ng_TextAttr = &topaz80; ng.ng_VisualInfo = vi; ng.ng_Flags = 0; /* prepare gad list */ NewList(&list); while(tempgad) { node=(struct Node *)AllocRemember(&rmem,sizeof(struct Node), MEMF_CLEAR); if (!node) abort_me("couldn't allocate LISTVIEW list."); node->ln_Name = tempgad->name; AddTail(&list,node); tempgad=tempgad->next; } gad = conditional_gadgets(gad); ng.ng_LeftEdge = 30; ng.ng_TopEdge = top + 16; ng.ng_Width = 260; ng.ng_Height = 55; ng.ng_GadgetID = G_list; ng.ng_GadgetText="Current *Gadget"; gad = CreateGadget(LISTVIEW_KIND,gad,&ng, GTLV_Top,(currgad)?currgad->id:0, GTLV_Labels,&list, GTLV_ReadOnly,FALSE, GTLV_ScrollWidth,16, GTLV_ShowSelected,NULL, GTLV_Selected,(currgad)?currgad->id:~0, GT_Underscore, '*', LAYOUTA_SPACING,2, TAG_DONE); ng.ng_LeftEdge = 345; ng.ng_TopEdge = top + 18; ng.ng_Width = 140; ng.ng_Height = 12; ng.ng_GadgetID = G_new; ng.ng_GadgetText="CREATE *NEW..."; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 345; ng.ng_TopEdge = top + 33; ng.ng_Width = 140; ng.ng_Height = 12; ng.ng_GadgetID = G_edi; ng.ng_GadgetText="*EDIT Current"; gad = CreateGadget(BUTTON_KIND,gad,&ng, GA_Disabled, (currgad)?FALSE:TRUE, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 345; ng.ng_TopEdge = top + 48; ng.ng_Width = 140; ng.ng_Height = 12; ng.ng_GadgetID = G_del; ng.ng_GadgetText="*DELETE Current"; gad = CreateGadget(BUTTON_KIND,gad,&ng, GA_Disabled, (currgad)?FALSE:TRUE, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 200; ng.ng_TopEdge = top + 68; ng.ng_Width = 180; ng.ng_Height = 12; ng.ng_GadgetID = G_type; ng.ng_GadgetText="Gadget type: "; printf("%d\n",currgad->type); gad = CreateGadget(TEXT_KIND,gad,&ng, GTTX_Text,(currgad)?testlabels[currgad->type]:NULL, /* temporary */ GTTX_Border,TRUE, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 360; ng.ng_TopEdge = top + 160; ng.ng_Width = 150; ng.ng_Height = 15; ng.ng_GadgetID = G_can; ng.ng_GadgetText="*Cancel"; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 30; ng.ng_TopEdge = top + 160; ng.ng_Width = 150; ng.ng_Height = 15; ng.ng_GadgetID = G_ok; ng.ng_GadgetText="*OK"; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore, '*', TAG_DONE); if (!gad) abort_me("Couldn't allocate the Gadget list."); AddGList(window, glist, (UWORD)-1, (UWORD)-1, NULL); RefreshGList(glist, window, NULL, (UWORD)-1); GT_RefreshWindow(window, NULL); } /** wflags menu **/ void wflags_menu(void) { UWORD top; /* offset into Window under titlebar */ struct NewGadget ng; /* for Gadget positioning */ struct Gadget *gad; /* our running Gadget pointer */ top = window->BorderTop + 1; gad = CreateContext(&glist); /* now we can fill out the NewGadget structure to describe where we want the Gadget to be placed */ ng.ng_TextAttr = &topaz80; ng.ng_VisualInfo = vi; ng.ng_Flags = 0; ng.ng_LeftEdge = 170; ng.ng_TopEdge = top + 10; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_size; ng.ng_GadgetText="WA_*SizeGadget"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked, theirs.size, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 170; ng.ng_TopEdge = top + 25; ng.ng_Width = 420; ng.ng_Height = 15; ng.ng_GadgetID = W1_drag; ng.ng_GadgetText="WA_*DragBar"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.drag, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 170; ng.ng_TopEdge = top + 40; ng.ng_Width = 420; ng.ng_Height = 15; ng.ng_GadgetID = W1_dept; ng.ng_GadgetText="WA_*DepthGadget"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.depth, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 170; ng.ng_TopEdge = top + 55; ng.ng_Width = 420; ng.ng_Height = 15; ng.ng_GadgetID = W1_clos; ng.ng_GadgetText="WA_*CloseGadget"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.close, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 170; ng.ng_TopEdge = top + 70; ng.ng_Width = 420; ng.ng_Height = 15; ng.ng_GadgetID = W1_back; ng.ng_GadgetText="WA_*Backdrop"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.back, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 170; ng.ng_TopEdge = top + 85; ng.ng_Width = 420; ng.ng_Height = 15; ng.ng_GadgetID = W1_repo; ng.ng_GadgetText="WA_*ReportMouse"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.report, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 170; ng.ng_TopEdge = top + 100; ng.ng_Width = 420; ng.ng_Height = 15; ng.ng_GadgetID = W1_noca; ng.ng_GadgetText="WA_*NoCareRefresh"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.nocare, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 170; ng.ng_TopEdge = top + 115; ng.ng_Width = 420; ng.ng_Height = 15; ng.ng_GadgetID = W1_bord; ng.ng_GadgetText="WA_*Borderless"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.bord, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 455; ng.ng_TopEdge = top + 10; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_acti; ng.ng_GadgetText="WA_*Activate"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.act, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 455; ng.ng_TopEdge = top + 25; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_rmbt; ng.ng_GadgetText="WA_*RMBTrap"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.rmb, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 455; ng.ng_TopEdge = top + 40; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_simp; ng.ng_GadgetText="WA_*SimpleRefresh"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.simple, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 455; ng.ng_TopEdge = top + 55; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_smar; ng.ng_GadgetText="WA_*SmartRefresh"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.smart, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 455; ng.ng_TopEdge = top + 70; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_sizer; ng.ng_GadgetText="WA_*SizeBRight"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.sizer, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 455; ng.ng_TopEdge = top + 85; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_sizeb; ng.ng_GadgetText="WA_*SizeBBottom"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.sizeb, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 455; ng.ng_TopEdge = top + 100; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_auto; ng.ng_GadgetText="WA_*AutoAdjust"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.aut, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 455; ng.ng_TopEdge = top + 115; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W1_gimm; ng.ng_GadgetText="WA_*GimmeZeroZero"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked , theirs.gimme, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 360; ng.ng_TopEdge = top + 160; ng.ng_Width = 150; ng.ng_Height = 15; ng.ng_GadgetID = W1_can; ng.ng_GadgetText="*Cancel"; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 30; ng.ng_TopEdge = top + 160; ng.ng_Width = 150; ng.ng_Height = 15; ng.ng_GadgetID = W1_ok; ng.ng_GadgetText="*OK"; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore, '*', TAG_DONE); if (!gad) abort_me("Couldn't allocate the Gadget list."); AddGList(window, glist, (UWORD)-1, (UWORD)-1, NULL); RefreshGList(glist, window, NULL, (UWORD)-1); GT_RefreshWindow(window, NULL); } /** Windows menu **/ void window_menu(void) { UWORD top; /* offset into Window under titlebar */ struct NewGadget ng; /* for Gadget positioning */ struct Gadget *gad; /* our running Gadget pointer */ top = window->BorderTop + 1; gad = CreateContext(&glist); /* now we can fill out the NewGadget structure to describe where we want the Gadget to be placed */ ng.ng_TextAttr = &topaz80; ng.ng_VisualInfo = vi; ng.ng_Flags = 0; ng.ng_LeftEdge = 90; ng.ng_TopEdge = top + 10; ng.ng_Width = 420; ng.ng_Height = 15; ng.ng_GadgetID = W_tit; ng.ng_GadgetText="WA_*Title"; gad = CreateGadget(STRING_KIND,gad,&ng, GTST_String, theirs.title, GTST_MaxChars,240, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge =130; ng.ng_TopEdge = top + 30; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_lef; ng.ng_GadgetText="WA_*Left"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.left, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge =130; ng.ng_TopEdge = top + 50; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_top; ng.ng_GadgetText="WA_*Top"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.top, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge =130; ng.ng_TopEdge = top + 70; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_wid; ng.ng_GadgetText="WA_*Width"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.width, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge =130; ng.ng_TopEdge = top + 90; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_hei; ng.ng_GadgetText="WA_*Height"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.height, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge =130; ng.ng_TopEdge = top + 110; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_inw; ng.ng_GadgetText="WA_*InnerWidth"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.innerw, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge =130; ng.ng_TopEdge = top + 130; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_inh; ng.ng_GadgetText="WA_*InnerHeight"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.innerh, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 300; ng.ng_TopEdge = top + 32; ng.ng_Width = 50; ng.ng_Height = 15; ng.ng_GadgetID = W_zoo; ng.ng_GadgetText="*WA_Zoom"; gad = CreateGadget(CHECKBOX_KIND,gad,&ng, GTCB_Checked, theirs.zoom, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 290; ng.ng_TopEdge = top + 50; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_zoo1; ng.ng_GadgetText="Zoom *Left"; zl=gad = CreateGadget(INTEGER_KIND,gad,&ng, GA_DISABLED, (theirs.zoom)? FALSE : TRUE, GTIN_Number, theirs.zl, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 290; ng.ng_TopEdge = top + 70; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_zoo2; ng.ng_GadgetText="Zoom *Top"; zt=gad = CreateGadget(INTEGER_KIND,gad,&ng, GA_DISABLED, (theirs.zoom)? FALSE : TRUE, GTIN_Number, theirs.zt, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 290; ng.ng_TopEdge = top + 90; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_zoo3; ng.ng_GadgetText="*Zoom Width"; zw=gad = CreateGadget(INTEGER_KIND,gad,&ng, GA_DISABLED, (theirs.zoom)? FALSE : TRUE, GTIN_Number, theirs.zw, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 290; ng.ng_TopEdge = top + 110; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_zoo4; ng.ng_GadgetText="Zoom *Height"; zh=gad = CreateGadget(INTEGER_KIND,gad,&ng, GA_DISABLED, (theirs.zoom)? FALSE : TRUE, GTIN_Number, theirs.zh, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 460; ng.ng_TopEdge = top + 30; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_rpt; ng.ng_GadgetText="WA_*RptQueue"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.rpt, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 460; ng.ng_TopEdge = top + 50; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_minw; ng.ng_GadgetText="WA_*MinWidth"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.minw, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 460; ng.ng_TopEdge = top + 70; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_minh; ng.ng_GadgetText="WA_*MinHeight"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.minh, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 460; ng.ng_TopEdge = top + 90; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_maxw; ng.ng_GadgetText="WA_*MaxWidth"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.maxw, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 460; ng.ng_TopEdge = top + 110; ng.ng_Width = 55; ng.ng_Height = 15; ng.ng_GadgetID = W_maxh; ng.ng_GadgetText="WA_*MaxHeight"; gad = CreateGadget(INTEGER_KIND,gad,&ng, GTIN_Number, theirs.maxh, GTIN_MaxChars,5, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 290; ng.ng_TopEdge = top + 130; ng.ng_Width = 220; ng.ng_Height = 15; ng.ng_GadgetID = W_fla; ng.ng_GadgetText="WA_*Flags..."; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 30; ng.ng_TopEdge = top + 160; ng.ng_Width = 150; ng.ng_Height = 15; ng.ng_GadgetID = W_ok; ng.ng_GadgetText="OK"; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore, '*', TAG_DONE); ng.ng_LeftEdge = 360; ng.ng_TopEdge = top + 160; ng.ng_Width = 150; ng.ng_Height = 15; ng.ng_GadgetID = W_can; ng.ng_GadgetText="Cancel"; gad = CreateGadget(BUTTON_KIND,gad,&ng, GT_Underscore, '*', TAG_DONE); if (!gad) abort_me("Couldn't allocate the Gadget list."); AddGList(window, glist, (UWORD)-1, (UWORD)-1, NULL); RefreshGList(glist, window, NULL, (UWORD)-1); GT_RefreshWindow(window, NULL); } /********************** handle input **************************************/ void handle_input(void) { struct IntuiMessage *message; struct Gadget *gadget; ULONG class; UWORD code; while (1) { WaitPort(window->UserPort); /* use the new GadTools GT_GetIMsg() function to get input events */ while (message = GT_GetIMsg(window->UserPort)) { class = message->Class; code = message->Code; /* we'll assume it's a Gadget, but no harm is done if it isn't */ gadget = (struct Gadget *)message->IAddress; /* use the GT_ReplyIMsg() function to reply to the message */ GT_ReplyIMsg(message); switch (class) { case CLOSEWINDOW: abort_me("Done."); case GADGETUP: handle_gadgetup(gadget, code); break; case GADGETDOWN: handle_gadgetdown(gadget, code); break; case REFRESHWINDOW: /* when using a window of type SIMPLE_REFRESH, use this input event and GadTools-compatible refreshing code. */ GT_BeginRefresh(window); GT_EndRefresh(window, TRUE); break; } } } } /************************* handle up ************************************/ void handle_gadgetup(gadget, code) struct Gadget *gadget; UWORD code; { /*struct NewGadget ng; struct Gadget *gad;*/ switch (gadget->GadgetID) { /* main menu *****************/ case M_qui: if (request("AIB","Quit...\nAre you sure?","OK|Cancel")) {closedown(); exit(0);} break; case M_men: replace_gads(3); menu_menu(); old_menu(); break; case M_win: capture_params(); replace_gads(1); window_menu(); break; case M_gad: replace_gads(2); gadget_menu(); break; case M_pro: replace_gads(4); project_menu(); break; case M_abo: request("AIB", "AIB v1.0 Copyright\nDoug Dyer ... 08/25/91\nddyer@hubcap.clemson.edu" ,"OK"); break; /* window menu *****************************/ case W_can: replace_gads(0); main_menu(); break; case W_ok: replace_params(); replace_gads(0); main_menu(); break; case W_fla: capture_flags(); replace_gads(7); wflags_menu(); break; /* window flags menu ******************************/ case W1_ok: replace_flags(); replace_gads(1); window_menu(); break; case W1_can: replace_gads(1); window_menu(); break; /* gadget menu ********************************/ case G_ok: currgad = NULL; replace_gads(0); main_menu(); break; case G_can: currgad = NULL; replace_gads(0); main_menu(); break; case G_new: replace_gads(9); prepare_newgad(); gadsub_menu(); break; case G_list: locate_gadget(code); replace_gads(2); gadget_menu(); break; /* subgadget menu ***************************************/ case G1_ok: replace_gads(2); gadget_menu(); break; case G1_can: replace_gads(2); gadget_menu(); break; case G1_nfont: FontChoice(1); break; /* menu menu **************************************************/ case MM_nfont: FontChoice(2); break; case MM_ok: free_allmenu(newtop); newtop = NULL; generate(); Modify_Theirs(); replace_gads(0); main_menu(); break; case MM_can: free_allmenu(topt); topt=newtop; newtop = NULL; replace_gads(0); main_menu(); break; /* project menu *****************************************************/ case P_load: load_project(); replace_gads(0); main_menu(); break; case P_can: replace_gads(0); main_menu(); break; default: other_gads(gadget, code); break; } } /*********************************** handle down ************************/ void handle_gadgetdown(gadget, code) struct Gadget *gadget; UWORD code; { } /************************ handle vanilla ********************************/ /************************ Clear current menu... *************************/ void replace_gads(short curr) { struct Gadget *gad; SetWindowTitles(window,titles[curr],NULL); if (glist) { short x = 0; for (gad=glist;gad;++x,gad=gad->NextGadget) { if (gad->GadgetType & GTYP_SYSGADGET) break;} RemoveGList(window, glist, x); SetRast(window->RPort, 0); RefreshWindowFrame(window); FreeGadgets(glist); glist=NULL; GT_RefreshWindow(window,NULL); } }