home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / dev / cpump-1.7.lha / CPump-1.7 / CPump17.c < prev    next >
C/C++ Source or Header  |  1994-04-04  |  26KB  |  1,002 lines

  1. /*
  2.  * CPump.c:  An Amiga Intuition-based C development environment.
  3.  * © Copyright 1992, 1993, David A. Faught,  All rights reserved.
  4.  * This information is provided "as is"; no warranties are made.
  5.  * All use is at your own risk. No liability or responsibility is assumed.
  6.  * Version 1.7
  7.  */
  8.  
  9. #define INTUITION_IOBSOLETE_H
  10.  
  11. #include <workbench/startup.h>
  12. #include <intuition/screens.h>
  13. #include <graphics/displayinfo.h>
  14. #include <exec/libraries.h>
  15. #include <exec/types.h>
  16. #include <intuition/intuition.h>
  17. #include <intuition/gadgetclass.h>
  18. #include <libraries/gadtools.h>
  19. #include <libraries/asl.h>
  20. #include <dos/dostags.h>
  21. #include <dos/var.h>
  22.  
  23. #ifndef pdc
  24. #ifndef __GNUC__
  25. #include <clib/exec_protos.h>
  26. #include <clib/graphics_protos.h>
  27. #include <clib/intuition_protos.h>
  28. #include <clib/gadtools_protos.h>
  29. #include <clib/asl_protos.h>
  30. #include <clib/alib_stdio_protos.h>
  31. #endif
  32. #endif
  33.  
  34. #ifdef __GNUC__
  35. #include <tagdefs.h>
  36. #endif
  37.  
  38. void exit ();
  39. void main ();
  40. void leave ();
  41. void AddToCommand (), InitCommand ();
  42. void MakeFileName (), GetFiles ();
  43. void InEnv (), OutEnv ();
  44. int GoRunCommand (), ZipRunCommand ();
  45. void HandleButton1 (), HandleButton2 (), HandleButton3 ();
  46. void HandleButton4 (), HandleButton5 (), HandleList1 ();
  47. BOOL HandleGadgetEvent ();
  48. BOOL HandleVanillaKey ();
  49. struct Gadget *CreateAllGadgets ();
  50.  
  51. #define GAD_BUTTON1  1
  52. #define GAD_CYCLE1   2
  53. #define GAD_BUTTON2  3
  54. #define GAD_CYCLE2   4
  55. #define GAD_BUTTON3  5
  56. #define GAD_CYCLE3   6
  57. #define GAD_CHECK1   7
  58. #define GAD_CHECK2   8
  59. #define GAD_CHECK3   9
  60. #define GAD_BUTTON4  10
  61. #define GAD_CYCLE4   11
  62. #define GAD_BUTTON5  12
  63. #define GAD_STRING1  13
  64. #define GAD_LISTVIEW1 14
  65.  
  66. #define EOS '\000'
  67.  
  68. struct TextAttr Topaz80 =
  69. {
  70.    "topaz.font",
  71.    8,
  72.    0,
  73.    0,
  74. };
  75.  
  76. UBYTE *vers = "$VER: CPump 1.7 (" __DATE__ ")";
  77.  
  78. extern struct Library *SysBase;
  79. struct GfxBase *GfxBase = NULL;
  80. struct IntuitionBase *IntuitionBase = NULL;
  81. struct Library *GadToolsBase = NULL;
  82. struct TextFont *font = NULL;
  83. struct Screen *mysc = NULL;
  84. struct Gadget *glist = NULL;
  85. struct Window *mywin = NULL;
  86. void *vi = NULL;
  87. struct Library *AslBase;
  88. struct WBArg *wbargs;
  89. struct FileRequester *fr;
  90.  
  91. STRPTR OpenDests[] =
  92. {
  93.    "RAM:",
  94.    "RAD:",
  95.    NULL,
  96. };
  97. STRPTR Editors[] =
  98. {
  99.    "ED",
  100.    "DME",
  101.    "MEmacs",
  102.    "Textra",
  103.    NULL,
  104. };
  105. STRPTR CCTypes[] =
  106. {
  107.    "DICE",
  108.    "PDC",
  109.    "LC",
  110.    "GCC",
  111.    "EC",
  112.    NULL,
  113. };
  114. STRPTR TestTypes[] =
  115. {
  116.    "RUN",
  117.    "Debug",
  118.    "RX Debug",
  119.    NULL,
  120. };
  121.  
  122. struct MinList ListView1List =
  123. {
  124.    (struct Node *) 0l, (struct Node *) 0l, (struct Node *) 0l };
  125.  
  126. struct Node ListView1Nodes[] =
  127. {
  128.    &ListView1Nodes[1], (struct Node *) & ListView1List.mlh_Head,
  129.    0, 0, "MuchMore",
  130.    &ListView1Nodes[2], &ListView1Nodes[0], 0, 0,   "EdTag Bld",
  131.    &ListView1Nodes[3], &ListView1Nodes[1], 0, 0,   "EdTag Cnt",
  132.    &ListView1Nodes[4], &ListView1Nodes[2], 0, 0,   "EdErr",
  133.    &ListView1Nodes[5], &ListView1Nodes[3], 0, 0,   "Delete",
  134.    &ListView1Nodes[6], &ListView1Nodes[4], 0, 0,   "(ADocs)",
  135.    &ListView1Nodes[7], &ListView1Nodes[5], 0, 0,   "Make",
  136.    &ListView1Nodes[8], &ListView1Nodes[6], 0, 0,   "Make clean",
  137.    &ListView1Nodes[9], &ListView1Nodes[7], 0, 0,   "Makemake #?.c",
  138.    &ListView1Nodes[10], &ListView1Nodes[8], 0, 0,  "DW",
  139.    &ListView1Nodes[11], &ListView1Nodes[9], 0, 0,  "Cref >Cref.lst",
  140.    &ListView1Nodes[12], &ListView1Nodes[10], 0, 0, "Calls >Calls.lst",
  141.    &ListView1Nodes[13], &ListView1Nodes[11], 0, 0, "Indent",
  142.    (struct Node *) & ListView1List.mlh_Tail, &ListView1Nodes[12],
  143.        0, 0, "Touch"};
  144.  
  145. ULONG x;
  146. UWORD code1 = 0, code2 = 0, code3 = 0, code4 = 0, code5 = 0;
  147. UWORD altsize[4] =
  148. {510, 10, 130, 10};
  149. char Command[200];
  150. char *EndCommand = Command;
  151. char filename[255], dirname[255] = "DF0:";
  152. char retcode[10], envbuff[60];
  153. BOOL terminated = FALSE;
  154. BOOL Vchecked = FALSE, Cchecked = FALSE, Schecked = FALSE;
  155. struct Gadget *cycle1, *cycle2, *cycle3, *cycle4;
  156. struct Gadget *check1, *check2, *check3, *string1;
  157. struct Gadget *text1, *text2;
  158.  
  159. void
  160. main (void)
  161. {
  162.    struct IntuiMessage *imsg;
  163.    struct Gadget *gad;
  164.    ULONG imsgClass;
  165.    UWORD imsgCode;
  166.    UWORD topborder;
  167.  
  168.    if (!(AslBase = OpenLibrary ("asl.library", 36L)))
  169.       leave (20, "Requires V36 asl.library");
  170.  
  171.    if (!(GfxBase = (struct GfxBase *)
  172.          OpenLibrary ("graphics.library", 36L)))
  173.       leave (20, "Requires V36 graphics.library");
  174.  
  175.    if (!(IntuitionBase = (struct IntuitionBase *)
  176.          OpenLibrary ("intuition.library", 36L)))
  177.       leave (20, "Requires V36 intuition.library");
  178.  
  179.    if (!(GadToolsBase = OpenLibrary ("gadtools.library", 36L)))
  180.       leave (20, "Requires V36 gadtools.library");
  181.  
  182.    if (!(font = OpenFont (&Topaz80)))
  183.       leave (20, "Failed to open Topaz 80");
  184.  
  185.    if (!(mysc = LockPubScreen (NULL)))
  186.       leave (20, "Couldn't lock default public screen");
  187.  
  188.    if (!(vi = GetVisualInfo (mysc,
  189.               TAG_DONE)))
  190.       leave (20, "GetVisualInfo() failed");
  191.  
  192.    InEnv ();
  193.  
  194.    topborder = mysc->WBorTop + (mysc->Font->ta_YSize + 1);
  195.  
  196.    ListView1List.mlh_Head = &ListView1Nodes[0];
  197.    ListView1List.mlh_TailPred = &ListView1Nodes[13];
  198.  
  199.    if (!CreateAllGadgets (&glist, vi, topborder))
  200.      {
  201.         leave (20, "CreateAllGadgets() failed");
  202.      }
  203.    if (!(mywin = OpenWindowTags (NULL,
  204.                   WA_Left, 220,
  205.                   WA_Width, 420,
  206.                   WA_InnerHeight, 72,
  207.                   WA_Activate, TRUE,
  208.                   WA_DragBar, TRUE,
  209.                   WA_DepthGadget, TRUE,
  210.                   WA_CloseGadget, TRUE,
  211.                   WA_SizeGadget, FALSE,
  212.                   WA_SimpleRefresh, TRUE,
  213.                   WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_REFRESHWINDOW | \
  214.                     IDCMP_VANILLAKEY | BUTTONIDCMP | LISTVIEWIDCMP,
  215.                   WA_MinWidth, 0,
  216.                   WA_MinHeight, 0,
  217.                   WA_MaxWidth, 0,
  218.                   WA_MaxHeight, 0,
  219.                   WA_Zoom, altsize,
  220.                   WA_Title, "CPump 1.7, ©1992-4 David A. Faught",
  221.                   WA_Gadgets, glist,
  222.                   TAG_DONE)))
  223.       leave (20, "OpenWindow() failed");
  224.  
  225.    GT_RefreshWindow (mywin, NULL);
  226.  
  227.    if (!(fr = (struct FileRequester *)
  228.          AllocAslRequestTags (ASL_FileRequest,
  229.                ASL_TopEdge, 0L, ASL_LeftEdge, 0L,
  230.                ASL_Height, 200L, ASL_Width, 320L,
  231.                ASL_Hail, (ULONG) "CPump",
  232.                ASL_Dir, (ULONG) dirname,
  233.                ASL_File, (ULONG) "source.c",
  234.                ASL_Pattern, (ULONG) "#?",
  235.                ASL_FuncFlags, FILF_MULTISELECT | FILF_PATGAD,
  236.                ASL_Window, mywin,
  237.                TAG_DONE)))
  238.       leave (20, "AllocAslRequestTags() failed");
  239.  
  240.    while (!terminated)
  241.      {
  242.         Wait (1 << mywin->UserPort->mp_SigBit);
  243.         while ((!terminated) && (imsg = GT_GetIMsg (mywin->UserPort)))
  244.           {
  245.              imsgClass = imsg->Class;
  246.              imsgCode = imsg->Code;
  247.              gad = (struct Gadget *) imsg->IAddress;
  248.              GT_ReplyIMsg (imsg);
  249.              switch (imsgClass)
  250.                {
  251.                case IDCMP_GADGETDOWN:
  252.                case IDCMP_MOUSEMOVE:
  253.                case IDCMP_GADGETUP:
  254.                   terminated = HandleGadgetEvent (mywin, gad, imsgCode);
  255.                   break;
  256.  
  257.                case IDCMP_VANILLAKEY:
  258.                   terminated = HandleVanillaKey (mywin, imsgCode);
  259.                   break;
  260.  
  261.                case IDCMP_CLOSEWINDOW:
  262.                   terminated = TRUE;
  263.                   break;
  264.  
  265.                case IDCMP_REFRESHWINDOW:
  266.                   GT_BeginRefresh (mywin);
  267.                   GT_EndRefresh (mywin, TRUE);
  268.                   break;
  269.                }
  270.           }
  271.      }
  272.    OutEnv ();
  273.    leave (0, NULL);
  274. }
  275.  
  276. void
  277. leave (code, error)
  278.      int code;
  279.      STRPTR error;
  280.  
  281. {
  282.    if (fr)
  283.      {
  284.         FreeAslRequest (fr);
  285.      }
  286.    if (mywin)
  287.      {
  288.         CloseWindow (mywin);
  289.      }
  290.    if (GadToolsBase)
  291.      {
  292.         FreeVisualInfo (vi);
  293.         FreeGadgets (glist);
  294.         CloseLibrary (GadToolsBase);
  295.      }
  296.    if (mysc)
  297.      {
  298.         UnlockPubScreen (NULL, mysc);
  299.      }
  300.    if (font)
  301.      {
  302.         CloseFont (font);
  303.      }
  304.    if (IntuitionBase)
  305.      {
  306.         CloseLibrary (IntuitionBase);
  307.      }
  308.    if (GfxBase)
  309.      {
  310.         CloseLibrary (GfxBase);
  311.      }
  312.