home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
dev
/
c
/
cpump
/
cpump17.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-04-04
|
26KB
|
1,002 lines
/*
* CPump.c: An Amiga Intuition-based C development environment.
* © Copyright 1992, 1993, David A. Faught, All rights reserved.
* This information is provided "as is"; no warranties are made.
* All use is at your own risk. No liability or responsibility is assumed.
* Version 1.7
*/
#define INTUITION_IOBSOLETE_H
#include <workbench/startup.h>
#include <intuition/screens.h>
#include <graphics/displayinfo.h>
#include <exec/libraries.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <libraries/asl.h>
#include <dos/dostags.h>
#include <dos/var.h>
#ifndef pdc
#ifndef __GNUC__
#include <clib/exec_protos.h>
#include <clib/graphics_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/asl_protos.h>
#include <clib/alib_stdio_protos.h>
#endif
#endif
#ifdef __GNUC__
#include <tagdefs.h>
#endif
void exit ();
void main ();
void leave ();
void AddToCommand (), InitCommand ();
void MakeFileName (), GetFiles ();
void InEnv (), OutEnv ();
int GoRunCommand (), ZipRunCommand ();
void HandleButton1 (), HandleButton2 (), HandleButton3 ();
void HandleButton4 (), HandleButton5 (), HandleList1 ();
BOOL HandleGadgetEvent ();
BOOL HandleVanillaKey ();
struct Gadget *CreateAllGadgets ();
#define GAD_BUTTON1 1
#define GAD_CYCLE1 2
#define GAD_BUTTON2 3
#define GAD_CYCLE2 4
#define GAD_BUTTON3 5
#define GAD_CYCLE3 6
#define GAD_CHECK1 7
#define GAD_CHECK2 8
#define GAD_CHECK3 9
#define GAD_BUTTON4 10
#define GAD_CYCLE4 11
#define GAD_BUTTON5 12
#define GAD_STRING1 13
#define GAD_LISTVIEW1 14
#define EOS '\000'
struct TextAttr Topaz80 =
{
"topaz.font",
8,
0,
0,
};
UBYTE *vers = "$VER: CPump 1.7 (" __DATE__ ")";
extern struct Library *SysBase;
struct GfxBase *GfxBase = NULL;
struct IntuitionBase *IntuitionBase = NULL;
struct Library *GadToolsBase = NULL;
struct TextFont *font = NULL;
struct Screen *mysc = NULL;
struct Gadget *glist = NULL;
struct Window *mywin = NULL;
void *vi = NULL;
struct Library *AslBase;
struct WBArg *wbargs;
struct FileRequester *fr;
STRPTR OpenDests[] =
{
"RAM:",
"RAD:",
NULL,
};
STRPTR Editors[] =
{
"ED",
"DME",
"MEmacs",
"Textra",
NULL,
};
STRPTR CCTypes[] =
{
"DICE",
"PDC",
"LC",
"GCC",
"EC",
NULL,
};
STRPTR TestTypes[] =
{
"RUN",
"Debug",
"RX Debug",
NULL,
};
struct MinList ListView1List =
{
(struct Node *) 0l, (struct Node *) 0l, (struct Node *) 0l };
struct Node ListView1Nodes[] =
{
&ListView1Nodes[1], (struct Node *) & ListView1List.mlh_Head,
0, 0, "MuchMore",
&ListView1Nodes[2], &ListView1Nodes[0], 0, 0, "EdTag Bld",
&ListView1Nodes[3], &ListView1Nodes[1], 0, 0, "EdTag Cnt",
&ListView1Nodes[4], &ListView1Nodes[2], 0, 0, "EdErr",
&ListView1Nodes[5], &ListView1Nodes[3], 0, 0, "Delete",
&ListView1Nodes[6], &ListView1Nodes[4], 0, 0, "(ADocs)",
&ListView1Nodes[7], &ListView1Nodes[5], 0, 0, "Make",
&ListView1Nodes[8], &ListView1Nodes[6], 0, 0, "Make clean",
&ListView1Nodes[9], &ListView1Nodes[7], 0, 0, "Makemake #?.c",
&ListView1Nodes[10], &ListView1Nodes[8], 0, 0, "DW",
&ListView1Nodes[11], &ListView1Nodes[9], 0, 0, "Cref >Cref.lst",
&ListView1Nodes[12], &ListView1Nodes[10], 0, 0, "Calls >Calls.lst",
&ListView1Nodes[13], &ListView1Nodes[11], 0, 0, "Indent",
(struct Node *) & ListView1List.mlh_Tail, &ListView1Nodes[12],
0, 0, "Touch"};
ULONG x;
UWORD code1 = 0, code2 = 0, code3 = 0, code4 = 0, code5 = 0;
UWORD altsize[4] =
{510, 10, 130, 10};
char Command[200];
char *EndCommand = Command;
char filename[255], dirname[255] = "DF0:";
char retcode[10], envbuff[60];
BOOL terminated = FALSE;
BOOL Vchecked = FALSE, Cchecked = FALSE, Schecked = FALSE;
struct Gadget *cycle1, *cycle2, *cycle3, *cycle4;
struct Gadget *check1, *check2, *check3, *string1;
struct Gadget *text1, *text2;
void
main (void)
{
struct IntuiMessage *imsg;
struct Gadget *gad;
ULONG imsgClass;
UWORD imsgCode;
UWORD topborder;
if (!(AslBase = OpenLibrary ("asl.library", 36L)))
leave (20, "Requires V36 asl.library");
if (!(GfxBase = (struct GfxBase *)
OpenLibrary ("graphics.library", 36L)))
leave (20, "Requires V36 graphics.library");
if (!(IntuitionBase = (struct IntuitionBase *)
OpenLibrary ("intuition.library", 36L)))
leave (20, "Requires V36 intuition.library");
if (!(GadToolsBase = OpenLibrary ("gadtools.library", 36L)))
leave (20, "Requires V36 gadtools.library");
if (!(font = OpenFont (&Topaz80)))
leave (20, "Failed to open Topaz 80");
if (!(mysc = LockPubScreen (NULL)))
leave (20, "Couldn't lock default public screen");
if (!(vi = GetVisualInfo (mysc,
TAG_DONE)))
leave (20, "GetVisualInfo() failed");
InEnv ();
topborder = mysc->WBorTop + (mysc->Font->ta_YSize + 1);
ListView1List.mlh_Head = &ListView1Nodes[0];
ListView1List.mlh_TailPred = &ListView1Nodes[13];
if (!CreateAllGadgets (&glist, vi, topborder))
{
leave (20, "CreateAllGadgets() failed");
}
if (!(mywin = OpenWindowTags (NULL,
WA_Left, 220,
WA_Width, 420,
WA_InnerHeight, 72,
WA_Activate, TRUE,
WA_DragBar, TRUE,
WA_DepthGadget, TRUE,
WA_CloseGadget, TRUE,
WA_SizeGadget, FALSE,
WA_SimpleRefresh, TRUE,
WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_REFRESHWINDOW | \
IDCMP_VANILLAKEY | BUTTONIDCMP | LISTVIEWIDCMP,
WA_MinWidth, 0,
WA_MinHeight, 0,
WA_MaxWidth, 0,
WA_MaxHeight, 0,
WA_Zoom, altsize,
WA_Title, "CPump 1.7, ©1992-4 David A. Faught",
WA_Gadgets, glist,
TAG_DONE)))
leave (20, "OpenWindow() failed");
GT_RefreshWindow (mywin, NULL);
if (!(fr = (struct FileRequester *)
AllocAslRequestTags (ASL_FileRequest,
ASL_TopEdge, 0L, ASL_LeftEdge, 0L,
ASL_Height, 200L, ASL_Width, 320L,
ASL_Hail, (ULONG) "CPump",
ASL_Dir, (ULONG) dirname,
ASL_File, (ULONG) "source.c",
ASL_Pattern, (ULONG) "#?",
ASL_FuncFlags, FILF_MULTISELECT | FILF_PATGAD,
ASL_Window, mywin,
TAG_DONE)))
leave (20, "AllocAslRequestTags() failed");
while (!terminated)
{
Wait (1 << mywin->UserPort->mp_SigBit);
while ((!terminated) && (imsg = GT_GetIMsg (mywin->UserPort)))
{
imsgClass = imsg->Class;
imsgCode = imsg->Code;
gad = (struct Gadget *) imsg->IAddress;
GT_ReplyIMsg (imsg);
switch (imsgClass)
{
case IDCMP_GADGETDOWN:
case IDCMP_MOUSEMOVE:
case IDCMP_GADGETUP:
terminated = HandleGadgetEvent (mywin, gad, imsgCode);
break;
case IDCMP_VANILLAKEY:
terminated = HandleVanillaKey (mywin, imsgCode);
break;
case IDCMP_CLOSEWINDOW:
terminated = TRUE;
break;
case IDCMP_REFRESHWINDOW:
GT_BeginRefresh (mywin);
GT_EndRefresh (mywin, TRUE);
break;
}
}
}
OutEnv ();
leave (0, NULL);
}
void
leave (code, error)
int code;
STRPTR error;
{
if (fr)
{
FreeAslRequest (fr);
}
if (mywin)
{
CloseWindow (mywin);
}
if (GadToolsBase)
{
FreeVisualInfo (vi);
FreeGadgets (glist);
CloseLibrary (GadToolsBase);
}
if (mysc)
{
UnlockPubScreen (NULL, mysc);
}
if (font)
{
CloseFont (font);
}
if (IntuitionBase)
{
CloseLibrary (IntuitionBase);
}
if (GfxBase)
{
CloseLibrary (GfxBase);
}
if (AslBase)
{
CloseLibrary (AslBase);
}
if (error)
{
printf ("Error: %s\n", error);
}
exit (code);
}
BOOL
HandleGadgetEvent (win, gad, code)
struct Window *win;
struct Gadget *gad;
UWORD code;
{
BOOL terminated = FALSE;
switch (gad->GadgetID)
{
case GAD_BUTTON1:
HandleButton1 ();
break;
case GAD_CYCLE1:
code1 = code;
GT_SetGadgetAttrs (cycle1, mywin, NULL,
GTCY_Active, code,
TAG_DONE);
break;
case GAD_BUTTON2:
HandleButton2 ();
break;
case GAD_CYCLE2:
code2 = code;
GT_SetGadgetAttrs (cycle2, mywin, NULL,
GTCY_Active, code,
TAG_DONE);
break;
case GAD_BUTTON3:
HandleButton3 ();
break;
case GAD_CYCLE3:
code3 = code;
GT_SetGadgetAttrs (cycle3, mywin, NULL,
GTCY_Active, code,
TAG_DONE);
break;
case GAD_CHECK1:
if (!(gad->Flags & GFLG_SELECTED))
{
Vchecked = FALSE;
}
else
{
Vchecked = TRUE;
}
break;
case GAD_CHECK2:
if (!(gad->Flags & GFLG_SELECTED))
{
Schecked = FALSE;
}
else
{
Schecked = TRUE;
}
break;
case GAD_CHECK3:
if (!(gad->Flags & GFLG_SELECTED))
{
Cchecked = FALSE;
}
else
{
Cchecked = TRUE;
}
break;
case GAD_BUTTON4:
HandleButton4 ();
break;
case GAD_CYCLE4:
code4 = code;
GT_SetGadgetAttrs (cycle4, mywin, NULL,
GTCY_Active, code,
TAG_DONE);
break;
case GAD_BUTTON5:
HandleButton5 ();
break;
case GAD_STRING1:
strcpy (dirname, ((struct StringInfo *) gad->SpecialInfo)->Buffer);
break;
case GAD_LISTVIEW1:
code5 = code;
HandleList1 ();
break;
}
return (terminated);
}
BOOL
HandleVanillaKey (win, code)
struct Window *win;
UWORD code;
{
switch (code)
{
case 'o':
case 'O':
HandleButton1 ();
break;
case 'e':
case 'E':
HandleButton2 ();
break;
case 'c':
case 'C':
HandleButton3 ();
break;
case 't':
case 'T':
HandleButton4 ();
break;
case 's':
case 'S':
HandleButton5 ();
break;
}
return (FALSE);
}
void
OutEnv ()
{
ULONG flags = GVF_GLOBAL_ONLY;
sprintf (envbuff, "%d,%d,%d,%d,%s", code1, code2, code3, code4, dirname);
if (!(SetVar ("CPump.env", envbuff, -1L, flags)))
leave (10, "SetVar() failed");
}
void
InEnv ()
{
LONG len, flds;
LONG c1, c2, c3, c4;
char tempname[60];
len = GetVar ("CPump.env", envbuff, 60, NULL);
if (len <= 0)
printf ("%s%d\n", "GetVar for CPump.env failed code ", len);
else
{
/* This is a little bit of a kludge because apparently DICE */
/* doesn't understand %h for short integers. */
flds = sscanf (envbuff, "%d,%d,%d,%d,%s", &c1, &c2, &c3, &c4, tempname);
if (flds == 5L)
{
code1 = c1;
code2 = c2;
code3 = c3;
code4 = c4;
(void) strcpy (dirname, tempname);
}
else
printf ("%s\n", "CPump.env is invalid and was ignored");
}
}
int
ZipRunCommand ()
{
int success;
ZipWindow (mywin);
success = GoRunCommand ();
ZipWindow (mywin);
return (success);
}
int
GoRunCommand ()
{
struct TagItem stags[3];
int success;
if (Vchecked)
printf ("%s\n", Command);
GT_SetGadgetAttrs (text1, mywin, NULL,
GTTX_Text, " Running",
TAG_DONE);
stags[0].ti_Tag = SYS_Input;
stags[0].ti_Data = Input ();
stags[1].ti_Tag = SYS_Output;
stags[1].ti_Data = Output ();
stags[2].ti_Tag = TAG_DONE;
success = System (Command, stags);
GT_SetGadgetAttrs (text1, mywin, NULL,
GTTX_Text, " Waiting",
TAG_DONE);
(void) sprintf (retcode, " RC %i", success);
GT_SetGadgetAttrs (text2, mywin, NULL,
GTTX_Text, retcode,
TAG_DONE);
if (Vchecked)
printf ("Command returned %i\n", success);
return (success);
}
void
HandleButton1 ()
{
if (AslRequestTags (fr,
ASL_Hail, (ULONG) "OPEN From",
ASL_Dir, (ULONG) dirname,
ASL_Pattern, (ULONG) "#?",
ASL_FuncFlags, FILF_MULTISELECT | FILF_PATGAD,
TAG_DONE))
{
if (fr->rf_NumArgs)
{
wbargs = fr->rf_ArgList;
for (x = 0; x < fr->rf_NumArgs; x++)
{
MakeFileName (fr->rf_Dir, wbargs[x].wa_Name);
InitCommand ();
AddToCommand (" COPY %s", filename);
AddToCommand (" TO %s", OpenDests[code1]);
(void) GoRunCommand ();
}
}
else
{
MakeFileName (fr->rf_Dir, fr->rf_File);
InitCommand ();
AddToCommand (" COPY %s", filename);
AddToCommand (" TO %s", OpenDests[code1]);
(void) GoRunCommand ();
}
strcpy (dirname, fr->rf_Dir);
GT_SetGadgetAttrs (string1, mywin, NULL,
GTST_String, dirname,
TAG_DONE);
}
}
void
HandleButton2 ()
{
InitCommand ();
/* all editors need a filename argument */
if (AslRequestTags (fr,
ASL_Hail, (ULONG) "Edit",
ASL_Dir, (ULONG) OpenDests[code1],
ASL_Pattern, (ULONG) "#?",
ASL_FuncFlags, FILF_PATGAD,
TAG_DONE))
{
AddToCommand (" RUN %s", Editors[code2]);
MakeFileName (fr->rf_Dir, fr->rf_File);
AddToCommand (" %s", filename);
(void) GoRunCommand ();
}
}
void
HandleButton3 ()
{
char basename[255], *split;
if (AslRequestTags (fr,
ASL_Hail, (ULONG) "Compile",
ASL_Dir, (ULONG) OpenDests[code1],
ASL_Pattern, (ULONG) "#?",
ASL_FuncFlags, FILF_PATGAD,
TAG_DONE))
{
InitCommand ();
switch (code3)
{
case 0:
MakeFileName (fr->rf_Dir, fr->rf_File);
AddToCommand (" DCC %s", filename);
(void) strcpy (basename, filename);
if ((split = strrchr (basename, '.')) == NULL)
(void) strcat (basename, ".exe");
else
*split = EOS;
AddToCommand (" -o %s", basename);
AddToCommand (" -E %s.err", basename);
if (Vchecked)
AddToCommand (" %s", "-v");
if (Schecked)
AddToCommand (" %s", "-s");
if (Cchecked)
AddToCommand (" %s", "-c");
break;
case 1:
MakeFileName (fr->rf_Dir, fr->rf_File);
AddToCommand (" %s", "CCX");
if (Vchecked)
AddToCommand (" %s", "-V");
if (Schecked)
AddToCommand (" %s", "-g");
if (Cchecked)
AddToCommand (" %s", "-c");
AddToCommand (" %s", filename);
break;
case 2:
MakeFileName (fr->rf_Dir, fr->rf_File);
AddToCommand (" %s", "LC");
if (Schecked)
AddToCommand (" %s", "-d");
if (!Cchecked)
AddToCommand (" %s", "-L");
AddToCommand (" %s", filename);
break;
case 3:
MakeFileName (fr->rf_Dir, fr->rf_File);
AddToCommand (" %s", "GCC");
if (Vchecked)
AddToCommand (" %s", "-v");
if (Schecked)
AddToCommand (" %s", "-g");
if (Cchecked)
AddToCommand (" %s", "-c");
AddToCommand (" %s", filename);
(void) strcpy (basename, filename);
if ((split = strrchr (basename, '.')) == NULL)
(void) strcat (basename, ".exe");
else {
if ((strcmp(split,".cc") == NULL) ||
(strcmp(split,".cxx") == NULL))
AddToCommand (" %s", "-lg++");
*split = EOS;
}
AddToCommand (" -o %s", basename);
break;
case 4:
MakeFileName (fr->rf_Dir, fr->rf_File);
(void) strcpy (basename, filename);
if ((split = strrchr (basename, '.')) != NULL)
*split = EOS;
AddToCommand (" %s", "EC");
if (Cchecked)
AddToCommand (" %s", "-s");
AddToCommand (" %s", basename);
break;
}
(void) ZipRunCommand ();
}
}
void
HandleButton4 ()
{
if (AslRequestTags (fr,
ASL_Hail, (ULONG) "Test",
ASL_Dir, (ULONG) OpenDests[code1],
ASL_Pattern, (ULONG) "#?",
ASL_FuncFlags, FILF_PATGAD,
TAG_DONE))
{
InitCommand ();
AddToCommand (" %s", TestTypes[code4]);
MakeFileName (fr->rf_Dir, fr->rf_File);
AddToCommand (" %s", filename);
(void) ZipRunCommand ();
}
}
void
HandleList1 ()
{
char basename[255], *split;
int fileok;
InitCommand ();
fileok = TRUE;
switch (code5) /* do filerequester for those that need it */
{
case 0:
case 3:
case 4:
case 6:
case 7:
case 10:
case 11:
case 12:
case 13:
fileok = AslRequestTags (fr,
ASL_Hail, (ULONG) "Utility",
ASL_Dir, (ULONG) OpenDests[code1],
ASL_Pattern, (ULONG) "#?",
ASL_FuncFlags, NULL,
TAG_DONE);
if (fileok)
MakeFileName (fr->rf_Dir, fr->rf_File);
break;
}
if (fileok) /* if everything is still ok */
{
switch (code5)/* format the command and run it */
{
case 1: /* Edtag Bld */
case 2: /* Edtag Cnt */
AddToCommand (" rx %s %s", ListView1Nodes[code5].ln_Name,
Editors[code2]);
(void) GoRunCommand ();
break;
case 3: /* EdErr */
AddToCommand (" rx %s %s", ListView1Nodes[code5].ln_Name, filename);
(void) ZipRunCommand ();
break;
case 5: /* (ADocs) */
AddToCommand (" %s", "run AmigaGuide AutoDocs");
(void) GoRunCommand ();
break;
case 6: /* Make */
if (code3 == 0) /* the zeroth compiler is "Dice" */
AddToCommand (" Dmake -f %s", filename);
else
AddToCommand (" Make -f %s", filename);
(void) ZipRunCommand ();
break;
case 7: /* Make clean */
if (code3 == 0) /* the zeroth compiler is "Dice" */
AddToCommand (" Dmake -f %s clean", filename);
else
AddToCommand (" Make -f %s clean", filename);
(void) ZipRunCommand ();
break;
case 8: /* Makemake */
case 9: /* DW */
AddToCommand (" %s", ListView1Nodes[code5].ln_Name);
(void) ZipRunCommand ();
break;
default:
AddToCommand (" %s %s", ListView1Nodes[code5].ln_Name, filename);
(void) ZipRunCommand ();
}
}
}
void
HandleButton5 ()
{
if (AslRequestTags (fr,
ASL_Hail, (ULONG) "SAVE From",
ASL_Dir, (ULONG) "RAM:",
ASL_Pattern, (ULONG) "#?",
ASL_FuncFlags, FILF_MULTISELECT,
TAG_DONE))
{
if (fr->rf_NumArgs)
{
wbargs = fr->rf_ArgList;
for (x = 0; x < fr->rf_NumArgs; x++)
{
MakeFileName (fr->rf_Dir, wbargs[x].wa_Name);
InitCommand ();
AddToCommand (" COPY %s", filename);
AddToCommand (" TO %s", dirname);
(void) GoRunCommand ();
}
}
else
{
MakeFileName (fr->rf_Dir, fr->rf_File);
InitCommand ();
AddToCommand (" COPY %s", filename);
AddToCommand (" TO %s", dirname);
(void) GoRunCommand ();
}
}
}
void
InitCommand ()
{
Command[0] = EOS;
EndCommand = &Command[0];
}
void
AddToCommand (fmt, arg1, arg2, arg3)
char *fmt;
char *arg1, *arg2, *arg3;
{
register int length;
register char *s;
auto char buffer[255];
auto char word[64];
(void) sprintf (buffer, fmt, arg1, arg2, arg3);
length = strlen (buffer);
if ((EndCommand - Command) + length >= sizeof (Command))
leave (20, "Command line too long");
else
{
(void) strcat (EndCommand, buffer);
EndCommand += length;
}
}
void
MakeFileName (arg1, arg2)
char *arg1, *arg2;
{
UWORD lastchr;
lastchr = strlen (arg1) - 1;
if (arg1[lastchr] == ':')
(void) sprintf (filename, "%s%s", arg1, arg2);
else
(void) sprintf (filename, "%s/%s", arg1, arg2);
}
struct Gadget *
CreateAllGadgets (glistptr, vi, topborder)
struct Gadget **glistptr;
void *vi;
UWORD topborder;
{
struct NewGadget ng;
struct Gadget *gad;
gad = CreateContext (glistptr);
ng.ng_TextAttr = &Topaz80;
ng.ng_VisualInfo = vi;
ng.ng_LeftEdge = 4;
ng.ng_TopEdge = topborder;
ng.ng_Width = 70;
ng.ng_Height = 12;
ng.ng_GadgetText = "_Open";
ng.ng_GadgetID = GAD_BUTTON1;
ng.ng_Flags = 0;
gad = CreateGadget (BUTTON_KIND, gad, &ng,
GT_Underscore, '_',
TAG_DONE);
ng.ng_LeftEdge += 120;
ng.ng_Width = 100;
ng.ng_GadgetText = "To";
ng.ng_GadgetID = GAD_CYCLE1;
ng.ng_Flags = NG_HIGHLABEL;
cycle1 = gad = CreateGadget (CYCLE_KIND, gad, &ng,
GTCY_Labels, OpenDests,
GTCY_Active, code1,
TAG_DONE);
ng.ng_LeftEdge = 4;
ng.ng_TopEdge += 12;
ng.ng_Width = 70;
ng.ng_GadgetText = "_Edit";
ng.ng_GadgetID = GAD_BUTTON2;
ng.ng_Flags = 0;
gad = CreateGadget (BUTTON_KIND, gad, &ng,
GT_Underscore, '_',
TAG_DONE);
ng.ng_LeftEdge += 120;
ng.ng_Width = 100;
ng.ng_GadgetText = "With";
ng.ng_GadgetID = GAD_CYCLE2;
ng.ng_Flags = NG_HIGHLABEL;
cycle2 = gad = CreateGadget (CYCLE_KIND, gad, &ng,
GTCY_Labels, Editors,
GTCY_Active, code2,
TAG_DONE);
ng.ng_LeftEdge += 100;
ng.ng_GadgetText = "Status";
ng.ng_Flags = PLACETEXT_ABOVE | NG_HIGHLABEL;
text1 = gad = CreateGadget (TEXT_KIND, gad, &ng,
GTTX_Text, " Waiting",
TAG_DONE);
ng.ng_LeftEdge += 92;
ng.ng_Width = 100;
ng.ng_Height = 60;
ng.ng_GadgetText = "Utilities";
ng.ng_GadgetID = GAD_LISTVIEW1;
ng.ng_Flags = PLACETEXT_ABOVE | NG_HIGHLABEL;
gad = CreateGadget (LISTVIEW_KIND, gad, &ng,
GTLV_Labels, &ListView1List, TAG_DONE);
ng.ng_LeftEdge = 4;
ng.ng_TopEdge += 12;
ng.ng_Width = 70;
ng.ng_Height = 12;
ng.ng_GadgetText = "_Compile";
ng.ng_GadgetID = GAD_BUTTON3;
ng.ng_Flags = 0;
gad = CreateGadget (BUTTON_KIND, gad, &ng,
GT_Underscore, '_',
TAG_DONE);
ng.ng_LeftEdge += 120;
ng.ng_Width = 100;
ng.ng_GadgetText = "With";
ng.ng_GadgetID = GAD_CYCLE3;
ng.ng_Flags = NG_HIGHLABEL;
cycle3 = gad = CreateGadget (CYCLE_KIND, gad, &ng,
GTCY_Labels, CCTypes,
GTCY_Active, code3,
TAG_DONE);
ng.ng_LeftEdge += 100;
ng.ng_GadgetText = "";
ng.ng_Flags = 0;
text2 = gad = CreateGadget (TEXT_KIND, gad, &ng,
GTTX_Text, " 00",
TAG_DONE);
ng.ng_TopEdge += 12;
ng.ng_LeftEdge = 70;
ng.ng_GadgetText = "Verbose";
ng.ng_GadgetID = GAD_CHECK1;
ng.ng_Flags = NG_HIGHLABEL;
check1 = gad = CreateGadget (CHECKBOX_KIND, gad, &ng,
GTCB_Checked, Vchecked,
TAG_DONE);
ng.ng_LeftEdge += 120;
ng.ng_GadgetText = "DbugInfo";
ng.ng_GadgetID = GAD_CHECK2;
check2 = gad = CreateGadget (CHECKBOX_KIND, gad, &ng,
GTCB_Checked, Schecked,
TAG_DONE);
ng.ng_LeftEdge += 100;
ng.ng_GadgetText = "NoLink";
ng.ng_GadgetID = GAD_CHECK3;
check2 = gad = CreateGadget (CHECKBOX_KIND, gad, &ng,
GTCB_Checked, Cchecked,
TAG_DONE);
ng.ng_LeftEdge = 4;
ng.ng_TopEdge += 11;
ng.ng_Width = 70;
ng.ng_GadgetText = "_Test";
ng.ng_GadgetID = GAD_BUTTON4;
ng.ng_Flags = 0;
gad = CreateGadget (BUTTON_KIND, gad, &ng,
GT_Underscore, '_',
TAG_DONE);
ng.ng_LeftEdge += 120;
ng.ng_Width = 100;
ng.ng_GadgetText = "With";
ng.ng_GadgetID = GAD_CYCLE4;
ng.ng_Flags = NG_HIGHLABEL;
cycle4 = gad = CreateGadget (CYCLE_KIND, gad, &ng,
GTCY_Labels, TestTypes,
GTCY_Active, code4,
TAG_DONE);
ng.ng_LeftEdge = 4;
ng.ng_TopEdge += 12;
ng.ng_Width = 70;
ng.ng_Height = 13;
ng.ng_GadgetText = "_Save";
ng.ng_GadgetID = GAD_BUTTON5;
ng.ng_Flags = 0;
gad = CreateGadget (BUTTON_KIND, gad, &ng,
GT_Underscore, '_',
TAG_DONE);
ng.ng_LeftEdge += 120;
ng.ng_Width = 191;
ng.ng_Height = 13;
ng.ng_GadgetText = "To";
ng.ng_GadgetID = GAD_STRING1;
ng.ng_Flags = NG_HIGHLABEL;
string1 = gad = CreateGadget (STRING_KIND, gad, &ng,
GTST_String, dirname,
GTST_MaxChars, 50,
TAG_DONE);
return (gad);
}