home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / ui_utils / aib623.lha / source / construct.c < prev    next >
C/C++ Source or Header  |  1992-03-21  |  28KB  |  1,101 lines

  1. /*construct.c */
  2. #include "aib.h"
  3. #include "main.h"
  4.  
  5. /* function prototypes */
  6. void main(void);
  7. void abort_me(char *);
  8. void setup(void);
  9. void closedown(void);
  10. void main_menu(void);
  11. void window_menu(void);
  12. void handle_input(void);
  13. void handle_gadgetup(struct Gadget *, UWORD);
  14. void handle_gadgetdown(struct Gadget *, UWORD);
  15. void replace_gads(short);
  16. void wflags_menu(void);
  17. void gadget_menu(void);
  18.  
  19.  
  20. /*************************** main ********************************/
  21. void main(void)
  22. {
  23.  
  24.    setup();
  25.    main_menu();
  26.    handle_input();
  27. }
  28.  
  29. /*************************** abort **********************************/
  30. void abort_me(txt)
  31. char *txt;
  32. {
  33.    request("AIB: FATAL",txt,"Abort");
  34.    closedown();
  35.    exit(0);
  36. }
  37.  
  38.  
  39. /*********************** SETUP *********************************************/
  40. void setup(void)
  41. {
  42.  
  43.    GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", MIN_VERSION);
  44.    if (!GfxBase)
  45.       abort_me("Can't open graphics.library. WB Version 36 or above required.");
  46.    IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",
  47.                                                        MIN_VERSION);
  48.    if (!IntuitionBase)
  49.       abort_me("Can't open intuition.library. WB Version 36 or above required.");
  50.    GadToolsBase = (struct Library *)OpenLibrary("gadtools.library",
  51.                                                 MIN_VERSION);
  52.    if (!GadToolsBase)
  53.       abort_me("Can't open gadtools.library. WB Version 36 or above required.");
  54.  
  55.    if ( ( AslBase = OpenLibrary(AslName,36))==0)
  56.          abort_me("Can't open asl.library.  WB Version 36 or above required.");
  57.  
  58.    if (!(DiskfontBase = OpenLibrary("diskfont.library",36L)))
  59.      abort_me("Can't open diskfont.library v36 or up.");
  60.          
  61.    /* get access to the WorkBench screen */
  62.    screen = LockPubScreen(NULL);
  63.    if (!screen)
  64.       abort_me("Couldn't lock the default public screen."); 
  65.  
  66.    menuta = screen->Font;
  67.     
  68.    /* get the screen's visual information data */
  69.    vi = GetVisualInfo(screen, TAG_DONE);
  70.    if (!vi)
  71.       abort_me("Couldn't get default public screen's VisualInfo.");
  72.  
  73.  
  74.    /* now open up AIB, sketchpad on the WorkBench */
  75.  
  76.    Modify_Theirs();
  77.  
  78.    window = OpenWindowTags(NULL,WA_Activate, TRUE,
  79.                            WA_IDCMP,CLOSEWINDOW | VANILLAKEY | REFRESHWINDOW |
  80.                                     SLIDERIDCMP | STRINGIDCMP | BUTTONIDCMP |
  81.                                     CHECKBOXIDCMP | MXIDCMP | MENUPICK |LISTVIEWIDCMP,
  82.                            WA_Width, 550,
  83.                WA_Gadgets, glist,
  84.                WA_Left,40,
  85.                WA_Top,0,
  86.                            WA_InnerHeight,180,
  87.                            WA_DragBar,TRUE,
  88.                            WA_DepthGadget, TRUE,
  89.                            WA_SimpleRefresh,TRUE,
  90.                            WA_Title,titles[0],
  91.                            TAG_DONE);
  92.  
  93.    if (!window || !theirs.sketchpad)
  94.       abort_me("Couldn't open the  windows.");
  95.  
  96.    GT_RefreshWindow(window,NULL);
  97.    NewList(&tit_list);
  98. }
  99.  
  100.  
  101. /************************* CLOSEDOWN *************************************/
  102. void closedown(void)
  103.    if (menu) FreeMenus(menu);
  104.    if (window) CloseWindow(window);
  105.    if (theirs.sketchpad) CloseWindow(theirs.sketchpad);
  106.    if (topt) free_allmenu(topt);
  107.    if (newtop) free_allmenu(newtop);
  108.    if (CustomMenuFont) CloseFont(CustomMenuFont);
  109.    /* these two functions can take a NULL, but let's stay consistent */
  110.    if (glist) FreeGadgets(glist);
  111.    if (vi) FreeVisualInfo(vi);
  112.  
  113.    if (screen) UnlockPubScreen(NULL, screen);
  114.    if (rmem) FreeRemember(&rmem, TRUE);
  115.  
  116.    if (GadToolsBase) CloseLibrary(GadToolsBase);
  117.    if (IntuitionBase) CloseLibrary((struct Library *)IntuitionBase);
  118.    if (GfxBase) CloseLibrary((struct Library *)GfxBase);
  119.    if (DiskfontBase) CloseLibrary(DiskfontBase);
  120.    if (AslBase)    CloseLibrary(AslBase);
  121. }
  122.  
  123.  
  124. /************************ CREATE'EM ****************************************/
  125.  
  126.  
  127. /** main menu **/
  128.  
  129. void  main_menu(void)
  130. {
  131.    UWORD top;              /* offset into Window under titlebar */
  132.    struct NewGadget ng;    /* for Gadget positioning */
  133.    struct Gadget *gad;     /* our running Gadget pointer */
  134.  
  135.      
  136.    top = window->BorderTop + 1;
  137.    gad = CreateContext(&glist);
  138.  
  139.    /* now we can fill out the NewGadget structure to describe where we want
  140.       the Gadget to be placed */
  141.    
  142.    ng.ng_VisualInfo = vi;
  143.    ng.ng_TextAttr = &topaz80;
  144.    ng.ng_Flags = 0;
  145.  
  146. /*   ng.ng_Flags = PLACETEXT_LEFT;*/
  147.  
  148.    ng.ng_LeftEdge = 195;
  149.    ng.ng_TopEdge = top + 10;
  150.    ng.ng_Width = 170;
  151.    ng.ng_Height = 15;
  152.    ng.ng_GadgetID = M_nam;
  153.    ng.ng_GadgetText = "Project Name:";
  154.     gad = CreateGadget(TEXT_KIND,gad,&ng,
  155.       GTTX_Border,TRUE,
  156.       GTTX_Text,"none",
  157.           GT_Underscore,'_',
  158.           TAG_DONE);
  159.       
  160.    ng.ng_Flags = 0; /*PLACETEXT_IN;*/
  161.    ng.ng_LeftEdge = 65;
  162.    ng.ng_TopEdge = top + 55;
  163.    ng.ng_Width = 170;
  164.    ng.ng_Height = 20;
  165.    ng.ng_GadgetID = M_pro;
  166.    ng.ng_GadgetText = "_Project...";
  167.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  168.           GT_Underscore,'_',
  169.           TAG_DONE);
  170.  
  171.    ng.ng_LeftEdge = 65;
  172.    ng.ng_TopEdge = top + 95;
  173.    ng.ng_Width = 170;
  174.    ng.ng_Height = 20;
  175.    ng.ng_GadgetID= M_abo;
  176.    ng.ng_GadgetText=  "_About...  ";
  177.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  178.           GT_Underscore,'_',
  179.           TAG_DONE);
  180.    
  181.    ng.ng_LeftEdge = 65;
  182.    ng.ng_TopEdge = top + 135;
  183.    ng.ng_Width = 170;
  184.    ng.ng_Height = 20;
  185.    ng.ng_GadgetID= M_qui;
  186.    ng.ng_GadgetText=  "_Quit...   ";
  187.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  188.           GT_Underscore,'_',
  189.           TAG_DONE);       
  190.           
  191.    ng.ng_LeftEdge = window->Width-240;
  192.    ng.ng_TopEdge = top + 55;
  193.    ng.ng_Width = 170;
  194.    ng.ng_Height = 20;
  195.    ng.ng_GadgetID= M_men;
  196.    ng.ng_GadgetText=  "_Menu...   ";
  197.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  198.           GT_Underscore,'_',
  199.           TAG_DONE);
  200.    
  201.    ng.ng_LeftEdge = window->Width-240;
  202.    ng.ng_TopEdge = top + 95;
  203.    ng.ng_Width = 170;
  204.    ng.ng_Height = 20;
  205.    ng.ng_GadgetID= M_gad;
  206.    ng.ng_GadgetText=  "_Gadgets...";
  207.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  208.           GT_Underscore,'_',
  209.           TAG_DONE);
  210.    
  211.    ng.ng_LeftEdge = window->Width-240;
  212.    ng.ng_TopEdge = top + 135;
  213.    ng.ng_Width = 170;
  214.    ng.ng_Height = 20;
  215.    ng.ng_GadgetID= M_win;
  216.    ng.ng_GadgetText=  "_Window... ";
  217.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  218.           GT_Underscore,'_',
  219.           TAG_DONE);
  220.    
  221.    if (!gad)
  222.       abort_me("Couldn't allocate the Gadget list.");
  223.  
  224.    AddGList(window, glist, (UWORD)-1, (UWORD)-1, NULL);
  225.    RefreshGList(glist, window, NULL, (UWORD)-1);
  226.    GT_RefreshWindow(window, NULL);
  227. }
  228.  
  229.  
  230. /** gadget menu **/
  231.  
  232. void gadget_menu(void)
  233. {
  234.    UWORD top;              /* offset into Window under titlebar */
  235.    struct NewGadget ng;    /* for Gadget positioning */
  236.    struct Gadget *gad;     /* our running Gadget pointer */
  237.    struct Node *node;
  238.    struct maingad *tempgad = topgad;
  239.    
  240.    top = window->BorderTop + 1;
  241.    gad =  CreateContext(&glist);
  242.  
  243.  
  244.    /* now we can fill out the NewGadget structure to describe where we want
  245.       the Gadget to be placed */
  246.  
  247.  
  248.    ng.ng_TextAttr = &topaz80;
  249.    ng.ng_VisualInfo = vi;
  250.    ng.ng_Flags = 0;
  251.  
  252.       /* prepare gad list */
  253.      NewList(&list);
  254.      while(tempgad)
  255.      {
  256.       node=(struct Node *)AllocRemember(&rmem,sizeof(struct Node), MEMF_CLEAR);
  257.       if (!node)
  258.           abort_me("couldn't allocate LISTVIEW list.");
  259.       node->ln_Name = tempgad->name;
  260.       AddTail(&list,node);
  261.       tempgad=tempgad->next;
  262.      }    
  263.   
  264.   gad = conditional_gadgets(gad);
  265.  
  266.    ng.ng_LeftEdge = 30;
  267.    ng.ng_TopEdge = top + 16;
  268.    ng.ng_Width = 260;
  269.    ng.ng_Height = 55;
  270.    ng.ng_GadgetID = G_list;
  271.    ng.ng_GadgetText="Current *Gadget";
  272.     gad = CreateGadget(LISTVIEW_KIND,gad,&ng,
  273.           GTLV_Top,(currgad)?currgad->id:0,
  274.           GTLV_Labels,&list,
  275.           GTLV_ReadOnly,FALSE,
  276.           GTLV_ScrollWidth,16,
  277.           GTLV_ShowSelected,NULL,
  278.           GTLV_Selected,(currgad)?currgad->id:~0,
  279.           GT_Underscore, '*',
  280.           LAYOUTA_SPACING,2,
  281.           TAG_DONE);
  282.  
  283.     
  284.    ng.ng_LeftEdge = 345;
  285.    ng.ng_TopEdge = top + 18;
  286.    ng.ng_Width = 140;
  287.    ng.ng_Height = 12;
  288.    ng.ng_GadgetID = G_new;
  289.    ng.ng_GadgetText="CREATE *NEW...";
  290.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  291.           GT_Underscore, '*',
  292.           TAG_DONE);
  293.      
  294.    ng.ng_LeftEdge = 345;
  295.    ng.ng_TopEdge = top + 33;
  296.    ng.ng_Width = 140;
  297.    ng.ng_Height = 12;
  298.    ng.ng_GadgetID = G_edi;
  299.    ng.ng_GadgetText="*EDIT Current";
  300.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  301.       GA_Disabled, (currgad)?FALSE:TRUE,
  302.           GT_Underscore, '*',
  303.           TAG_DONE);
  304.    
  305.    ng.ng_LeftEdge = 345;
  306.    ng.ng_TopEdge = top + 48;
  307.    ng.ng_Width = 140;
  308.    ng.ng_Height = 12;
  309.    ng.ng_GadgetID = G_del;
  310.    ng.ng_GadgetText="*DELETE Current";
  311.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  312.       GA_Disabled, (currgad)?FALSE:TRUE,
  313.           GT_Underscore, '*',
  314.           TAG_DONE);
  315.  
  316.  
  317.    ng.ng_LeftEdge = 200;
  318.    ng.ng_TopEdge = top + 68;
  319.    ng.ng_Width = 180;
  320.    ng.ng_Height = 12;
  321.    ng.ng_GadgetID = G_type;
  322.    ng.ng_GadgetText="Gadget type: ";
  323.    printf("%d\n",currgad->type);
  324.     gad = CreateGadget(TEXT_KIND,gad,&ng,
  325.           GTTX_Text,(currgad)?testlabels[currgad->type]:NULL,  /* temporary */
  326.           GTTX_Border,TRUE,
  327.           GT_Underscore, '*',
  328.           TAG_DONE);
  329.  
  330.    ng.ng_LeftEdge = 360;
  331.    ng.ng_TopEdge = top + 160;
  332.    ng.ng_Width = 150;
  333.    ng.ng_Height = 15;
  334.    ng.ng_GadgetID = G_can;
  335.    ng.ng_GadgetText="*Cancel";
  336.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  337.           GT_Underscore, '*',
  338.           TAG_DONE);
  339.           
  340.    ng.ng_LeftEdge = 30;
  341.    ng.ng_TopEdge = top + 160;
  342.    ng.ng_Width = 150;
  343.    ng.ng_Height = 15;
  344.    ng.ng_GadgetID = G_ok;
  345.    ng.ng_GadgetText="*OK";
  346.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  347.           GT_Underscore, '*',
  348.           TAG_DONE);
  349.  
  350.  
  351.     if (!gad)
  352.       abort_me("Couldn't allocate the Gadget list.");
  353.  
  354.    AddGList(window, glist, (UWORD)-1, (UWORD)-1, NULL);
  355.    RefreshGList(glist, window, NULL, (UWORD)-1);
  356.    GT_RefreshWindow(window, NULL);
  357. }
  358.   
  359.   
  360. /** wflags menu **/
  361.  
  362. void wflags_menu(void)
  363. {
  364.    UWORD top;              /* offset into Window under titlebar */
  365.    struct NewGadget ng;    /* for Gadget positioning */
  366.    struct Gadget *gad;     /* our running Gadget pointer */
  367.  
  368.    
  369.    top = window->BorderTop + 1;
  370.    gad =  CreateContext(&glist);
  371.  
  372.    /* now we can fill out the NewGadget structure to describe where we want
  373.       the Gadget to be placed */
  374.  
  375.    ng.ng_TextAttr = &topaz80;
  376.    ng.ng_VisualInfo = vi;
  377.    ng.ng_Flags = 0;
  378.    
  379.    ng.ng_LeftEdge = 170;
  380.    ng.ng_TopEdge = top + 10;
  381.    ng.ng_Width = 50;
  382.    ng.ng_Height = 15;
  383.    ng.ng_GadgetID = W1_size;
  384.    ng.ng_GadgetText="WA_*SizeGadget";
  385.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  386.       GTCB_Checked, theirs.size,
  387.           GT_Underscore, '*',
  388.           TAG_DONE);
  389.    
  390.    ng.ng_LeftEdge = 170;
  391.    ng.ng_TopEdge = top + 25;
  392.    ng.ng_Width = 420;
  393.    ng.ng_Height = 15;
  394.    ng.ng_GadgetID = W1_drag;
  395.    ng.ng_GadgetText="WA_*DragBar";
  396.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  397.       GTCB_Checked , theirs.drag,    
  398.           GT_Underscore, '*',
  399.           TAG_DONE);
  400.    
  401.    ng.ng_LeftEdge = 170;
  402.    ng.ng_TopEdge = top + 40;
  403.    ng.ng_Width = 420;
  404.    ng.ng_Height = 15;
  405.    ng.ng_GadgetID = W1_dept;
  406.    ng.ng_GadgetText="WA_*DepthGadget";
  407.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  408.       GTCB_Checked , theirs.depth, 
  409.           GT_Underscore, '*',
  410.           TAG_DONE);
  411.    
  412.    ng.ng_LeftEdge = 170;
  413.    ng.ng_TopEdge = top + 55;
  414.    ng.ng_Width = 420;
  415.    ng.ng_Height = 15;
  416.    ng.ng_GadgetID = W1_clos;
  417.    ng.ng_GadgetText="WA_*CloseGadget";
  418.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  419.       GTCB_Checked , theirs.close,
  420.           GT_Underscore, '*',
  421.           TAG_DONE);
  422.    
  423.    ng.ng_LeftEdge = 170;
  424.    ng.ng_TopEdge = top + 70;
  425.    ng.ng_Width = 420;
  426.    ng.ng_Height = 15;
  427.    ng.ng_GadgetID = W1_back;
  428.    ng.ng_GadgetText="WA_*Backdrop";
  429.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  430.       GTCB_Checked , theirs.back, 
  431.           GT_Underscore, '*',
  432.           TAG_DONE);
  433.    
  434.    ng.ng_LeftEdge = 170;
  435.    ng.ng_TopEdge = top + 85;
  436.    ng.ng_Width = 420;
  437.    ng.ng_Height = 15;
  438.    ng.ng_GadgetID = W1_repo;
  439.    ng.ng_GadgetText="WA_*ReportMouse";
  440.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  441.       GTCB_Checked , theirs.report, 
  442.           GT_Underscore, '*',
  443.           TAG_DONE);
  444.    
  445.    ng.ng_LeftEdge = 170;
  446.    ng.ng_TopEdge = top + 100;
  447.    ng.ng_Width = 420;
  448.    ng.ng_Height = 15;
  449.    ng.ng_GadgetID = W1_noca;
  450.    ng.ng_GadgetText="WA_*NoCareRefresh";
  451.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  452.       GTCB_Checked , theirs.nocare, 
  453.           GT_Underscore, '*',
  454.           TAG_DONE);
  455.    
  456.    ng.ng_LeftEdge = 170;
  457.    ng.ng_TopEdge = top + 115;
  458.    ng.ng_Width = 420;
  459.    ng.ng_Height = 15;
  460.    ng.ng_GadgetID = W1_bord;
  461.    ng.ng_GadgetText="WA_*Borderless";
  462.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  463.       GTCB_Checked , theirs.bord, 
  464.           GT_Underscore, '*',
  465.           TAG_DONE);
  466.    
  467.    ng.ng_LeftEdge = 455;
  468.    ng.ng_TopEdge = top + 10;
  469.    ng.ng_Width = 50;
  470.    ng.ng_Height = 15;
  471.    ng.ng_GadgetID = W1_acti;
  472.    ng.ng_GadgetText="WA_*Activate";
  473.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  474.       GTCB_Checked , theirs.act, 
  475.           GT_Underscore, '*',
  476.           TAG_DONE);
  477.  
  478.    ng.ng_LeftEdge = 455;
  479.    ng.ng_TopEdge = top + 25;
  480.    ng.ng_Width = 50;
  481.    ng.ng_Height = 15;
  482.    ng.ng_GadgetID = W1_rmbt;
  483.    ng.ng_GadgetText="WA_*RMBTrap";
  484.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  485.       GTCB_Checked , theirs.rmb, 
  486.           GT_Underscore, '*',
  487.           TAG_DONE);
  488.    
  489.    ng.ng_LeftEdge = 455;
  490.    ng.ng_TopEdge = top + 40;
  491.    ng.ng_Width = 50;
  492.    ng.ng_Height = 15;
  493.    ng.ng_GadgetID = W1_simp;
  494.    ng.ng_GadgetText="WA_*SimpleRefresh";
  495.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  496.       GTCB_Checked , theirs.simple, 
  497.           GT_Underscore, '*',
  498.           TAG_DONE);
  499.    
  500.    ng.ng_LeftEdge = 455;
  501.    ng.ng_TopEdge = top + 55;
  502.    ng.ng_Width = 50;
  503.    ng.ng_Height = 15;
  504.    ng.ng_GadgetID = W1_smar;
  505.    ng.ng_GadgetText="WA_*SmartRefresh";
  506.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  507.       GTCB_Checked , theirs.smart, 
  508.           GT_Underscore, '*',
  509.           TAG_DONE);
  510.    
  511.    ng.ng_LeftEdge = 455;
  512.    ng.ng_TopEdge = top + 70;
  513.    ng.ng_Width = 50;
  514.    ng.ng_Height = 15;
  515.    ng.ng_GadgetID = W1_sizer;
  516.    ng.ng_GadgetText="WA_*SizeBRight";
  517.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  518.       GTCB_Checked , theirs.sizer, 
  519.           GT_Underscore, '*',
  520.           TAG_DONE);
  521.    
  522.    ng.ng_LeftEdge = 455;
  523.    ng.ng_TopEdge = top + 85;
  524.    ng.ng_Width = 50;
  525.    ng.ng_Height = 15;
  526.    ng.ng_GadgetID = W1_sizeb;
  527.    ng.ng_GadgetText="WA_*SizeBBottom";
  528.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  529.       GTCB_Checked , theirs.sizeb, 
  530.           GT_Underscore, '*',
  531.           TAG_DONE);
  532.    
  533.    ng.ng_LeftEdge = 455;
  534.    ng.ng_TopEdge = top + 100;
  535.    ng.ng_Width = 50;
  536.    ng.ng_Height = 15;
  537.    ng.ng_GadgetID = W1_auto;
  538.    ng.ng_GadgetText="WA_*AutoAdjust";
  539.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  540.       GTCB_Checked , theirs.aut, 
  541.           GT_Underscore, '*',
  542.           TAG_DONE);
  543.    
  544.    ng.ng_LeftEdge = 455;
  545.    ng.ng_TopEdge = top + 115;
  546.    ng.ng_Width = 50;
  547.    ng.ng_Height = 15;
  548.    ng.ng_GadgetID = W1_gimm;
  549.    ng.ng_GadgetText="WA_*GimmeZeroZero";
  550.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  551.       GTCB_Checked , theirs.gimme, 
  552.           GT_Underscore, '*',
  553.           TAG_DONE);
  554.    
  555.    ng.ng_LeftEdge = 360;
  556.    ng.ng_TopEdge = top + 160;
  557.    ng.ng_Width = 150;
  558.    ng.ng_Height = 15;
  559.    ng.ng_GadgetID = W1_can;
  560.    ng.ng_GadgetText="*Cancel";
  561.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  562.           GT_Underscore, '*',
  563.           TAG_DONE);
  564.           
  565.    
  566.    ng.ng_LeftEdge = 30;
  567.    ng.ng_TopEdge = top + 160;
  568.    ng.ng_Width = 150;
  569.    ng.ng_Height = 15;
  570.    ng.ng_GadgetID = W1_ok;
  571.    ng.ng_GadgetText="*OK";
  572.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  573.           GT_Underscore, '*',
  574.           TAG_DONE);
  575.  
  576.    if (!gad)
  577.       abort_me("Couldn't allocate the Gadget list.");
  578.  
  579.    AddGList(window, glist, (UWORD)-1, (UWORD)-1, NULL);
  580.    RefreshGList(glist, window, NULL, (UWORD)-1);
  581.    GT_RefreshWindow(window, NULL);
  582. }
  583.  
  584. /**  Windows menu **/
  585.  
  586. void window_menu(void)
  587. {
  588.    UWORD top;              /* offset into Window under titlebar */
  589.    struct NewGadget ng;    /* for Gadget positioning */
  590.    struct Gadget *gad;     /* our running Gadget pointer */
  591.  
  592.    
  593.    top = window->BorderTop + 1;
  594.    gad =  CreateContext(&glist);
  595.  
  596.    /* now we can fill out the NewGadget structure to describe where we want
  597.       the Gadget to be placed */
  598.  
  599.    ng.ng_TextAttr = &topaz80;
  600.    ng.ng_VisualInfo = vi;
  601.    ng.ng_Flags = 0;
  602.  
  603.    ng.ng_LeftEdge = 90;
  604.    ng.ng_TopEdge = top + 10;
  605.    ng.ng_Width = 420;
  606.    ng.ng_Height = 15;
  607.    ng.ng_GadgetID = W_tit;
  608.    ng.ng_GadgetText="WA_*Title";
  609.     gad = CreateGadget(STRING_KIND,gad,&ng,
  610.           GTST_String, theirs.title,
  611.           GTST_MaxChars,240,
  612.           GT_Underscore, '*',
  613.           TAG_DONE);
  614.  
  615.    ng.ng_LeftEdge =130;
  616.    ng.ng_TopEdge = top + 30;
  617.    ng.ng_Width = 55;
  618.    ng.ng_Height = 15;
  619.    ng.ng_GadgetID = W_lef;
  620.    ng.ng_GadgetText="WA_*Left";
  621.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  622.           GTIN_Number, theirs.left,
  623.           GTIN_MaxChars,5,
  624.           GT_Underscore, '*',
  625.           TAG_DONE);
  626.  
  627.    ng.ng_LeftEdge =130;
  628.    ng.ng_TopEdge = top + 50;
  629.    ng.ng_Width = 55;
  630.    ng.ng_Height = 15;
  631.    ng.ng_GadgetID = W_top;
  632.    ng.ng_GadgetText="WA_*Top";
  633.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  634.           GTIN_Number, theirs.top,
  635.           GTIN_MaxChars,5,
  636.           GT_Underscore, '*',
  637.           TAG_DONE);
  638.   
  639.    ng.ng_LeftEdge =130;
  640.    ng.ng_TopEdge = top + 70;
  641.    ng.ng_Width = 55;
  642.    ng.ng_Height = 15;
  643.    ng.ng_GadgetID = W_wid;
  644.    ng.ng_GadgetText="WA_*Width";
  645.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  646.           GTIN_Number, theirs.width,
  647.           GTIN_MaxChars,5,
  648.           GT_Underscore, '*',
  649.           TAG_DONE);
  650.  
  651.    ng.ng_LeftEdge =130;
  652.    ng.ng_TopEdge = top + 90;
  653.    ng.ng_Width = 55;
  654.    ng.ng_Height = 15;
  655.    ng.ng_GadgetID = W_hei;
  656.    ng.ng_GadgetText="WA_*Height";
  657.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  658.           GTIN_Number, theirs.height,
  659.           GTIN_MaxChars,5,
  660.           GT_Underscore, '*',
  661.           TAG_DONE);
  662.  
  663.    ng.ng_LeftEdge =130;
  664.    ng.ng_TopEdge = top + 110;
  665.    ng.ng_Width = 55;
  666.    ng.ng_Height = 15;
  667.    ng.ng_GadgetID = W_inw;
  668.    ng.ng_GadgetText="WA_*InnerWidth";
  669.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  670.           GTIN_Number, theirs.innerw,
  671.           GTIN_MaxChars,5,
  672.           GT_Underscore, '*',
  673.           TAG_DONE);
  674.  
  675.    ng.ng_LeftEdge =130;
  676.    ng.ng_TopEdge = top + 130;
  677.    ng.ng_Width = 55;
  678.    ng.ng_Height = 15;
  679.    ng.ng_GadgetID = W_inh;
  680.    ng.ng_GadgetText="WA_*InnerHeight";
  681.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  682.           GTIN_Number, theirs.innerh,
  683.           GTIN_MaxChars,5,
  684.           GT_Underscore, '*',
  685.           TAG_DONE);
  686.  
  687.    ng.ng_LeftEdge = 300;
  688.    ng.ng_TopEdge = top + 32;
  689.    ng.ng_Width = 50;
  690.    ng.ng_Height = 15;
  691.    ng.ng_GadgetID = W_zoo;
  692.    ng.ng_GadgetText="*WA_Zoom";
  693.     gad = CreateGadget(CHECKBOX_KIND,gad,&ng,
  694.           GTCB_Checked, theirs.zoom,
  695.           GT_Underscore, '*',
  696.           TAG_DONE);
  697.    
  698.    ng.ng_LeftEdge = 290;
  699.    ng.ng_TopEdge = top + 50;
  700.    ng.ng_Width = 55;
  701.    ng.ng_Height = 15;
  702.    ng.ng_GadgetID = W_zoo1;
  703.    ng.ng_GadgetText="Zoom *Left";
  704.     zl=gad = CreateGadget(INTEGER_KIND,gad,&ng,
  705.       GA_DISABLED, (theirs.zoom)? FALSE : TRUE,    
  706.           GTIN_Number, theirs.zl,
  707.           GTIN_MaxChars,5,
  708.           GT_Underscore, '*',
  709.           TAG_DONE);
  710.  
  711.    ng.ng_LeftEdge = 290;
  712.    ng.ng_TopEdge = top + 70;
  713.    ng.ng_Width = 55;
  714.    ng.ng_Height = 15;
  715.    ng.ng_GadgetID = W_zoo2;
  716.    ng.ng_GadgetText="Zoom *Top";
  717.     zt=gad = CreateGadget(INTEGER_KIND,gad,&ng,
  718.       GA_DISABLED, (theirs.zoom)? FALSE : TRUE,    
  719.           GTIN_Number, theirs.zt,
  720.           GTIN_MaxChars,5,
  721.           GT_Underscore, '*',
  722.           TAG_DONE);
  723.   
  724.    ng.ng_LeftEdge = 290;
  725.    ng.ng_TopEdge = top + 90;
  726.    ng.ng_Width = 55;
  727.    ng.ng_Height = 15;
  728.    ng.ng_GadgetID = W_zoo3;
  729.    ng.ng_GadgetText="*Zoom Width";
  730.     zw=gad = CreateGadget(INTEGER_KIND,gad,&ng,
  731.       GA_DISABLED, (theirs.zoom)? FALSE : TRUE,    
  732.           GTIN_Number, theirs.zw,
  733.           GTIN_MaxChars,5,
  734.           GT_Underscore, '*',
  735.           TAG_DONE);
  736.  
  737.    ng.ng_LeftEdge = 290;
  738.    ng.ng_TopEdge = top + 110;
  739.    ng.ng_Width = 55;
  740.    ng.ng_Height = 15;
  741.    ng.ng_GadgetID = W_zoo4;
  742.    ng.ng_GadgetText="Zoom *Height";
  743.     zh=gad = CreateGadget(INTEGER_KIND,gad,&ng,
  744.       GA_DISABLED, (theirs.zoom)? FALSE : TRUE,    
  745.           GTIN_Number, theirs.zh,
  746.           GTIN_MaxChars,5,
  747.           GT_Underscore, '*',
  748.           TAG_DONE);
  749.  
  750.    ng.ng_LeftEdge = 460;
  751.    ng.ng_TopEdge = top + 30;
  752.    ng.ng_Width = 55;
  753.    ng.ng_Height = 15;
  754.    ng.ng_GadgetID = W_rpt;
  755.    ng.ng_GadgetText="WA_*RptQueue";
  756.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  757.           GTIN_Number, theirs.rpt,
  758.           GTIN_MaxChars,5,
  759.           GT_Underscore, '*',
  760.           TAG_DONE);
  761.  
  762.    ng.ng_LeftEdge = 460;
  763.    ng.ng_TopEdge = top + 50;
  764.    ng.ng_Width = 55;
  765.    ng.ng_Height = 15;
  766.    ng.ng_GadgetID = W_minw;
  767.    ng.ng_GadgetText="WA_*MinWidth";
  768.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  769.           GTIN_Number, theirs.minw,
  770.           GTIN_MaxChars,5,
  771.           GT_Underscore, '*',
  772.           TAG_DONE);
  773.  
  774.    ng.ng_LeftEdge = 460;
  775.    ng.ng_TopEdge = top + 70;
  776.    ng.ng_Width = 55;
  777.    ng.ng_Height = 15;
  778.    ng.ng_GadgetID = W_minh;
  779.    ng.ng_GadgetText="WA_*MinHeight";
  780.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  781.           GTIN_Number, theirs.minh,
  782.           GTIN_MaxChars,5,
  783.           GT_Underscore, '*',
  784.           TAG_DONE);
  785.  
  786.    ng.ng_LeftEdge = 460;
  787.    ng.ng_TopEdge = top + 90;
  788.    ng.ng_Width = 55;
  789.    ng.ng_Height = 15;
  790.    ng.ng_GadgetID = W_maxw;
  791.    ng.ng_GadgetText="WA_*MaxWidth";
  792.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  793.           GTIN_Number, theirs.maxw,
  794.           GTIN_MaxChars,5,
  795.           GT_Underscore, '*',
  796.           TAG_DONE);
  797.  
  798.    ng.ng_LeftEdge = 460;
  799.    ng.ng_TopEdge = top + 110;
  800.    ng.ng_Width = 55;
  801.    ng.ng_Height = 15;
  802.    ng.ng_GadgetID = W_maxh;
  803.    ng.ng_GadgetText="WA_*MaxHeight";
  804.     gad = CreateGadget(INTEGER_KIND,gad,&ng,
  805.           GTIN_Number, theirs.maxh,
  806.           GTIN_MaxChars,5,
  807.           GT_Underscore, '*',
  808.           TAG_DONE);
  809.  
  810.    ng.ng_LeftEdge = 290;
  811.    ng.ng_TopEdge = top + 130;
  812.    ng.ng_Width = 220;
  813.    ng.ng_Height = 15;
  814.    ng.ng_GadgetID = W_fla;
  815.    ng.ng_GadgetText="WA_*Flags...";
  816.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  817.           GT_Underscore, '*',
  818.           TAG_DONE);
  819.  
  820.    ng.ng_LeftEdge = 30;
  821.    ng.ng_TopEdge = top + 160;
  822.    ng.ng_Width = 150;
  823.    ng.ng_Height = 15;
  824.    ng.ng_GadgetID = W_ok;
  825.    ng.ng_GadgetText="OK";
  826.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  827.           GT_Underscore, '*',
  828.           TAG_DONE);
  829.  
  830.    ng.ng_LeftEdge = 360;
  831.    ng.ng_TopEdge = top + 160;
  832.    ng.ng_Width = 150;
  833.    ng.ng_Height = 15;
  834.    ng.ng_GadgetID = W_can;
  835.    ng.ng_GadgetText="Cancel";
  836.     gad = CreateGadget(BUTTON_KIND,gad,&ng,
  837.           GT_Underscore, '*',
  838.           TAG_DONE);
  839.  
  840.    if (!gad)
  841.       abort_me("Couldn't allocate the Gadget list.");
  842.  
  843.    AddGList(window, glist, (UWORD)-1, (UWORD)-1, NULL);
  844.    RefreshGList(glist, window, NULL, (UWORD)-1);
  845.    GT_RefreshWindow(window, NULL);
  846.  
  847. }
  848.  
  849.  
  850. /********************** handle input **************************************/
  851. void handle_input(void)
  852. {
  853.    struct IntuiMessage *message;
  854.    struct Gadget *gadget;
  855.    ULONG class;
  856.    UWORD code;
  857.  
  858.    while (1)
  859.    {
  860.       WaitPort(window->UserPort);
  861.  
  862.       /* use the new GadTools GT_GetIMsg() function to get input events */
  863.       while (message = GT_GetIMsg(window->UserPort))
  864.       {
  865.          class = message->Class;
  866.          code = message->Code;
  867.  
  868.          /* we'll assume it's a Gadget, but no harm is done if it isn't */
  869.          gadget = (struct Gadget *)message->IAddress;
  870.  
  871.          /* use the GT_ReplyIMsg() function to reply to the message */
  872.          GT_ReplyIMsg(message);
  873.  
  874.          switch (class)
  875.          {
  876.             case CLOSEWINDOW:
  877.                abort_me("Done.");
  878.             case GADGETUP:
  879.                handle_gadgetup(gadget, code);
  880.                break;
  881.             case GADGETDOWN:
  882.                handle_gadgetdown(gadget, code);
  883.                break;
  884.             case REFRESHWINDOW:
  885.                /* when using a window of type SIMPLE_REFRESH, use this
  886.                   input event and GadTools-compatible refreshing code. */
  887.                GT_BeginRefresh(window);
  888.                GT_EndRefresh(window, TRUE);
  889.                break;
  890.          }
  891.       }
  892.    }
  893. }
  894.  
  895.  
  896. /************************* handle up ************************************/
  897.  
  898. void handle_gadgetup(gadget, code)
  899. struct Gadget *gadget;
  900. UWORD code;
  901. {
  902. /*struct NewGadget ng;
  903.   struct Gadget *gad;*/
  904.  
  905.    switch (gadget->GadgetID)
  906.    {
  907.       /* main menu *****************/
  908.  
  909.       case M_qui:
  910.     if (request("AIB","Quit...\nAre you sure?","OK|Cancel"))
  911.             {closedown();
  912.             exit(0);}
  913.          break;
  914.     
  915.       case M_men:
  916.      replace_gads(3);
  917.      menu_menu();
  918.      old_menu();
  919.      break;
  920.          
  921.       case M_win:
  922.      capture_params();
  923.          replace_gads(1);
  924.          window_menu();
  925.          break;
  926.  
  927.       case M_gad:
  928.          replace_gads(2);
  929.          gadget_menu();
  930.          break;
  931.  
  932.       case M_pro:
  933.      replace_gads(4);
  934.          project_menu();
  935.      break;
  936.  
  937.       case M_abo:
  938.     request("AIB",
  939. "AIB v1.0 Copyright\nDoug Dyer ... 08/25/91\nddyer@hubcap.clemson.edu"
  940.                ,"OK");
  941.      break;
  942.  
  943.            
  944.  
  945.       /* window menu *****************************/
  946.  
  947.       case W_can:
  948.          replace_gads(0);      
  949.          main_menu();
  950.          break;
  951.          
  952.       case W_ok:
  953.      replace_params();
  954.          replace_gads(0);
  955.          main_menu();
  956.          break;
  957.        
  958.       case W_fla:
  959.      capture_flags();
  960.          replace_gads(7);
  961.          wflags_menu();
  962.          break;
  963.        
  964.       /* window flags menu ******************************/
  965.       case W1_ok:
  966.      replace_flags();
  967.          replace_gads(1);
  968.          window_menu();
  969.          break;
  970.          
  971.       case W1_can:
  972.          replace_gads(1);
  973.          window_menu();
  974.          break;
  975.          
  976.          
  977.       /* gadget menu ********************************/
  978.  
  979.       case G_ok:
  980.      currgad = NULL;
  981.          replace_gads(0);
  982.          main_menu();
  983.          break;
  984.          
  985.       case G_can:
  986.      currgad = NULL;
  987.          replace_gads(0);
  988.          main_menu();
  989.          break;
  990.    
  991.       case G_new:
  992.          replace_gads(9);
  993.      prepare_newgad();
  994.          gadsub_menu();
  995.          break;
  996.             
  997.       case G_list:
  998.        locate_gadget(code);
  999.            replace_gads(2);
  1000.            gadget_menu();
  1001.            break;
  1002.          
  1003.  
  1004.       /* subgadget menu ***************************************/
  1005.  
  1006.       case G1_ok:
  1007.          replace_gads(2);
  1008.          gadget_menu();
  1009.          break;
  1010.          
  1011.       case G1_can:
  1012.          replace_gads(2);
  1013.          gadget_menu();
  1014.          break;
  1015.    
  1016.       case G1_nfont:
  1017.      FontChoice(1);
  1018.          break;
  1019.  
  1020.  
  1021.       /* menu menu **************************************************/
  1022.  
  1023.       case MM_nfont:
  1024.     FontChoice(2);
  1025.     break;
  1026.  
  1027.       case MM_ok:
  1028.     free_allmenu(newtop);
  1029.         newtop = NULL;
  1030.     generate();
  1031.     Modify_Theirs();
  1032.     replace_gads(0);
  1033.     main_menu();
  1034.     break;
  1035.  
  1036.       case MM_can:
  1037.     free_allmenu(topt);
  1038.     topt=newtop;
  1039.         newtop = NULL;
  1040.     replace_gads(0);
  1041.     main_menu();
  1042.     break;
  1043.  
  1044.       /* project menu *****************************************************/
  1045.      
  1046.        case P_load:
  1047.     load_project();
  1048.     replace_gads(0);
  1049.     main_menu();
  1050.     break;
  1051.  
  1052.        case P_can:
  1053.      replace_gads(0);
  1054.      main_menu();
  1055.      break;    
  1056.  
  1057.        default:
  1058.      other_gads(gadget, code);
  1059.      break;
  1060.        }
  1061. }
  1062.  
  1063.  
  1064.  
  1065. /*********************************** handle down ************************/
  1066. void handle_gadgetdown(gadget, code)
  1067. struct Gadget *gadget;
  1068. UWORD code;
  1069. {
  1070. }
  1071.  
  1072.  
  1073. /************************ handle vanilla ********************************/
  1074.  
  1075.  
  1076.  
  1077. /************************ Clear current menu... *************************/
  1078. void replace_gads(short curr)
  1079. {
  1080.    struct Gadget *gad;
  1081.    
  1082.    
  1083.    SetWindowTitles(window,titles[curr],NULL);
  1084.    if (glist) {
  1085.       short x = 0;
  1086.       for (gad=glist;gad;++x,gad=gad->NextGadget) {
  1087.             if (gad->GadgetType & GTYP_SYSGADGET)
  1088.             break;}
  1089.             
  1090.       RemoveGList(window, glist, x);
  1091.       SetRast(window->RPort, 0);
  1092.       RefreshWindowFrame(window);
  1093.    
  1094.    FreeGadgets(glist);
  1095.    glist=NULL;
  1096.    GT_RefreshWindow(window,NULL);
  1097.   }
  1098.  
  1099. }
  1100.