home *** CD-ROM | disk | FTP | other *** search
- /*
- * Source machine generated by GadToolsBox V2.0b
- * which is (c) Copyright 1991-1993 Jaba Development
- *
- * GUI Designed by : -- Heinz Reinert --
- */
- #include <exec/types.h>
- #include <string.h>
- #include <intuition/intuition.h>
- #include <intuition/classes.h>
- #include <intuition/classusr.h>
- #include <intuition/imageclass.h>
- #include <intuition/gadgetclass.h>
- #include <libraries/gadtools.h>
- #include <graphics/displayinfo.h>
- #include <graphics/GfxBase.h>
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/utility_protos.h>
- #include <proto/intuition.h>
- #include <proto/graphics.h>
- #include <proto/exec.h>
- #include <proto/dos.h>
- #include <proto/gadtools.h>
- #include <exec/memory.h>
-
-
- /***************************************/
- #define GetString( g ) ((( struct StringInfo * )g->SpecialInfo )->Buffer )
- #define GetNumber( g ) ((( struct StringInfo * )g->SpecialInfo )->LongInt )
-
- #define GD_list 0
- #define GD_gadtxt 1
- #define GD_command 2
- #define GD_command2 3
- #define GD_new 4
- #define GD_del 5
- #define GD_start 6
- #define GD_save 7
- #define GD_req 8
-
- #define GDX_list 0
- #define GDX_gadtxt 1
- #define GDX_command 2
- #define GDX_command2 3
- #define GDX_new 4
- #define GDX_del 5
- #define GDX_start 6
- #define GDX_save 7
- #define GDX_req 8
-
- #define Project0_CNT 9
- UBYTE *vers = "\0$VER: StartWindow 2";
-
- extern struct IntuitionBase *IntuitionBase;
- extern struct Library *GadToolsBase;
-
- extern struct Screen *Scr;
- extern UBYTE *PubScreenName;
- extern APTR VisualInfo;
- extern struct Window *Project0Wnd;
- extern struct Gadget *Project0GList;
- extern struct Gadget *Project0Gadgets[9];
- extern UWORD Project0Left;
- extern UWORD Project0Top;
- extern UWORD Project0Width;
- extern UWORD Project0Height;
- extern UBYTE *Project0Wdt;
- extern struct TextAttr topaz8;
- extern UWORD Project0GTypes[];
- extern struct NewGadget Project0NGad[];
- extern ULONG Project0GTags[];
-
-
- extern int SetupScreen( void );
- extern void CloseDownScreen( void );
- extern int OpenProject0Window( void );
- extern void CloseProject0Window( void );
-
- /***************************************/
-
- struct Screen *Scr = NULL;
- UBYTE *PubScreenName = NULL;
- APTR VisualInfo = NULL;
- struct Window *Project0Wnd = NULL;
- struct Gadget *Project0GList = NULL;
- struct Gadget *Project0Gadgets[9];
- UWORD Project0Left = 440;
- UWORD Project0Top = 10;
- UWORD Project0Width = 190;
- UWORD Project0Height = 0;
- UBYTE *Project0Wdt = (UBYTE *)"StartWindow2";
-
- struct TextAttr topaz8 = {
- ( STRPTR )"topaz.font", 8, 0x00, 0x01 };
-
- UWORD Project0GTypes[] = {
- LISTVIEW_KIND,
- STRING_KIND,
- STRING_KIND,
- STRING_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND
- };
-
- struct NewGadget Project0NGad[] = {
- 4, 2, 161, 88, NULL, NULL, GD_list, 0, NULL, NULL,
- 4, 86, 138, 12, NULL, NULL, GD_gadtxt, 0, NULL, NULL,
- 4, 98, 161, 12, NULL, NULL, GD_command, 0, NULL, NULL,
- 4, 110, 161, 12, NULL, NULL, GD_command2, 0, NULL, NULL,
- 4, 122, 54, 11, (UBYTE *)"NEW", NULL, GD_new, PLACETEXT_IN, NULL, NULL,
- 114, 122, 51, 11, (UBYTE *)"DEL", NULL, GD_del, PLACETEXT_IN, NULL, NULL,
- 4, 133, 161, 13, (UBYTE *)"RUN", NULL, GD_start, PLACETEXT_IN, NULL, NULL,
- 59, 122, 54, 11, (UBYTE *)"SAVE", NULL, GD_save, PLACETEXT_IN, NULL, NULL,
- 142, 86, 23, 12, (UBYTE *)"R", NULL, GD_req, PLACETEXT_IN, NULL, NULL
- };
-
- ULONG Project0GTags[] = {
- (TAG_DONE),
- (GTST_MaxChars), 256, (TAG_DONE),
- (GTST_MaxChars), 256, (TAG_DONE),
- (GTST_MaxChars), 256, (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE)
- };
-
- int SetupScreen( void )
- {
- if ( ! ( Scr = LockPubScreen( PubScreenName )))
- return( 1L );
-
- if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
- return( 2L );
-
- return( 0L );
- }
-
- void CloseDownScreen( void )
- {
- if ( VisualInfo ) {
- FreeVisualInfo( VisualInfo );
- VisualInfo = NULL;
- }
-
- if ( Scr ) {
- UnlockPubScreen( NULL, Scr );
- Scr = NULL;
- }
- }
-
- int OpenProject0Window( void )
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( g = CreateContext( &Project0GList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < Project0_CNT; lc++ ) {
-
- CopyMem((char * )&Project0NGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = &topaz8;
- ng.ng_LeftEdge += offx;
- ng.ng_TopEdge += offy;
-
- Project0Gadgets[ lc ] = g = CreateGadgetA((ULONG)Project0GTypes[ lc ], g, &ng, ( struct TagItem * )&Project0GTags[ tc ] );
-
- while( Project0GTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
- if ( ! ( Project0Wnd = OpenWindowTags( NULL,
- WA_Left, Project0Left,
- WA_Top, Project0Top,
- WA_Width, Project0Width,
- WA_Height, Project0Height + offy,
- WA_IDCMP, LISTVIEWIDCMP|STRINGIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
- WA_Flags, WFLG_SIZEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
- WA_Gadgets, Project0GList,
- WA_Title, Project0Wdt,
- WA_ScreenTitle, "StartWindow2 Heinz Reinert 1994",
- WA_PubScreen, Scr,
- WA_MinWidth, 190,
- WA_MinHeight, 160,
- WA_MaxWidth, 190,
- WA_MaxHeight, 160,
- TAG_DONE )))
- return( 4L );
-
- GT_RefreshWindow( Project0Wnd, NULL );
-
- return( 0L );
- }
-
- void CloseProject0Window( void )
- {
- if ( Project0Wnd ) {
- CloseWindow( Project0Wnd );
- Project0Wnd = NULL;
- }
-
- if ( Project0GList ) {
- FreeGadgets( Project0GList );
- Project0GList = NULL;
- }
- }
-
- /*********************************************/
- /* Main Program Part */
-
-
- /* Structur for Data-Entries */
-
- struct PRJ {
-
- char Name[0];
-
- char gadtxt[20];
- char command[75];
- char command2[75];
- USHORT new;
- USHORT del;
- USHORT save;
- USHORT req;
- USHORT start;
- };
-
- struct PRJnode {
- struct Node n;
- struct PRJ d;
- };
-
- /* PRJ-Nodes are in this List */
-
- struct List prjlist;
-
- /* The actual Entry */
-
- struct PRJnode *currentprj;
-
- /* String-Gadgets */
-
- void gt_SetString( struct Gadget *gad,
- struct Window *w,
- char *string )
- {
- GT_SetGadgetAttrs( gad, w, NULL, GTST_String, string, TAG_DONE );
- }
-
- char * gt_GetString( struct Gadget *gad )
- {
- struct StringInfo *si = gad->SpecialInfo;
-
- if( si )
- return( ( char * ) si->Buffer );
- else
- return( NULL );
- }
-
- /* Manage Lists for Listview-Gadgets */
- /* Add List */
-
- void gt_AttachList( struct Gadget *lv,
- struct Window *w,
- struct List *list )
- {
- GT_SetGadgetAttrs( lv, w, NULL, GTLV_Labels, list, TAG_DONE );
- }
-
- /* Put Actuel Entry */
-
- void gt_SetLV( struct Gadget *gad,
- struct Window *w,
- ULONG value)
- {
- GT_SetGadgetAttrs( gad, w, NULL, GTLV_Selected, value, TAG_DONE );
- }
-
- /* get x-Entry from Exec-List */
-
- struct Node * gt_GetListEntry( struct List *l,
- int num )
- {
- int count = 0;
- struct Node *n = l->lh_Head;
-
- while( n->ln_Succ )
- {
- if( num==count ) return( n );
- n = n->ln_Succ;
- count++;
- }
- return( NULL );
- }
-
- /* Number of a Node in List? */
-
- int gt_GetListEntryNum( struct List *l,
- struct Node *n )
- {
- int count = 0;
- struct Node *r = l->lh_Head;
-
- while( r->ln_Succ )
- {
- if( r==n ) return( count );
- r = r->ln_Succ;
- count++;
- }
- return( -1 );
- }
-
- /* Count Entries of List */
-
- int gt_GetListNumEntries( struct List *l )
- {
- int count = 0;
- struct Node *n = l->lh_Head;
-
- while( n->ln_Succ )
- {
- n = n->ln_Succ;
- count++;
- }
-
- return( count );
- }
-
- /************************************************************************/
-
- /* Load Command.DAT */
-
- void loadprjlist( void )
- {
- struct PRJ new;
- struct PRJnode *n;
- BPTR f;
-
- /* Init List */
- NewList( &prjlist );
- currentprj = NULL;
-
- /* Open Command.DAT */
- f = Open( "S:Command.DAT", MODE_OLDFILE );
- if( !f )
- return;
-
- /* Inputs read in */
- while( Read( f, &new, sizeof( new ) ) == sizeof( new ) )
- {
- /* New Node */
- n = AllocVec( sizeof( *n ), 0 );
- if( !n )
- break;
-
- /* Copy Structur and add to List */
- n->d = new;
- n->n.ln_Name = n->d.Name;
- n->n.ln_Pri = - n->d.Name[0];
- Enqueue( &prjlist, (struct Node *) n );
- }
-
- Close( f );
- }
-
- /* Saves List and Frees it */
- void save_and_freeprjlist( void )
- {
- struct PRJnode *n;
- BPTR f;
-
- f = Open( "S:Command.DAT", MODE_NEWFILE );
-
- while( ( n = (struct PRJnode * ) RemHead( &prjlist ) ) )
- {
- /* Save Node */
- if( f )
- Write( f, &n->d, sizeof( struct PRJ ) );
- /* Free Node */
- FreeVec( n );
- }
-
- if( f )
- Close( f );
- }
-
-
- /************************************************************************/
-
- /* Puts actual Structur-Values to Gadgets */
-
- void setgadvals( void )
- {
-
- if( !currentprj )
- return;
-
- gt_SetString( Project0Gadgets[ GD_gadtxt ], Project0Wnd,
- currentprj->d.Name );
-
- gt_SetString( Project0Gadgets[ GD_command ], Project0Wnd,
- currentprj->d.command );
-
- gt_SetString( Project0Gadgets[ GD_command2 ], Project0Wnd,
- currentprj->d.command2 );
-
- }
-
- /* Create a new Empty Input */
-
- void newprj( void )
- {
- struct PRJnode *new;
-
- new = AllocVec( sizeof( *new ), MEMF_CLEAR );
-
- if( !new )
- return;
-
- currentprj = new;
-
- new->n.ln_Name = new->d.Name;
-
- strcpy( new->d.Name, "new" );
-
- gt_AttachList( Project0Gadgets[GD_list], Project0Wnd,
- (struct List *) ~0 );
-
- new->n.ln_Pri = - new->d.Name[0];
- Enqueue( &prjlist, (struct Node *) new );
-
- gt_AttachList( Project0Gadgets[GD_list], Project0Wnd, &prjlist );
-
- gt_SetLV( Project0Gadgets[GD_list], Project0Wnd,
- gt_GetListEntryNum( &prjlist, new ) );
- setgadvals();
- }
-
- /* Work on Gadget-Event */
- void dogadup( struct IntuiMessage *im )
- {
- struct Gadget *g = im->IAddress;
-
- switch( g->GadgetID )
- {
-
- /*** Enter List ***/
- case GD_list:
- currentprj = (struct PRJnode *) gt_GetListEntry( &prjlist, im->Code );
- setgadvals();
- break;
-
- /*** New ***/
- case GD_new:
- newprj();
- break;
-
- /*** Delete ***/
- case GD_del:
- if( currentprj )
- {
- gt_AttachList( Project0Gadgets[ GD_list ], Project0Wnd,
- (struct List *) ~0 );
- Remove( currentprj );
- FreeVec( currentprj );
- currentprj = FALSE;
- gt_AttachList( Project0Gadgets[ GD_list ], Project0Wnd, &prjlist );
- gt_SetLV( Project0Gadgets[ GD_list ], Project0Wnd, ~0 );
- }
- break;
- /*** Program Name ***/
- case GD_gadtxt:
- if( currentprj )
- {
- gt_AttachList( Project0Gadgets[ GD_list ], Project0Wnd,
- (struct List *) ~0 );
- strcpy( currentprj->d.Name, gt_GetString( Project0Gadgets[ GD_gadtxt ] ) );
- gt_AttachList( Project0Gadgets[ GD_list ], Project0Wnd, &prjlist );
- }
- break;
-
- /*** Command-string ***/
- case GD_command:
- if( currentprj )
- strcpy( currentprj->d.command,
- gt_GetString( Project0Gadgets[ GD_command ] ) );
- break;
-
- /*** Command-string ***/
- case GD_command2:
- if( currentprj )
- strcpy( currentprj->d.command2,
- gt_GetString( Project0Gadgets[ GD_command2 ] ) );
- break;
-
- /*** Start Program ***/
- case GD_start:
- Execute(currentprj->d.command, NULL, Output());
- Execute("WAIT 2 secs ", NULL, Output());
- Execute(currentprj->d.command2, NULL, Output());
- break;
-
- /*** Save List ***/
- case GD_save:
- {
- save_and_freeprjlist();
- loadprjlist();
- }
- break;
-
- /*** Requester ***/
- case GD_req:
- Execute("RUN >NIL: RequShell", NULL, Output());
- break;
- }
- }
-
- /* Program start */
-
- int main( void )
- {
-
- struct IntuiMessage *im,imsg;
- BOOL Done = FALSE;
-
- /*** Open Screen and Window ***/
- SetupScreen();
- OpenProject0Window();
-
- /*** Load List ***/
- loadprjlist();
-
- /*** Show List ***/
- gt_AttachList( Project0Gadgets[GD_list], Project0Wnd, &prjlist );
-
- /*** Main Loop ***/
- while( !Done )
- {
- /*** Wait for IntuiMessage ***/
-
- while( !( im=GT_GetIMsg( Project0Wnd->UserPort ) ) )
- WaitPort( Project0Wnd->UserPort );
-
- /*** Copy ***/
- imsg = *im;
- GT_ReplyIMsg( im );
-
- switch( imsg.Class )
- {
- /*** CLOSEWINDOW: Close Window ***/
- case IDCMP_CLOSEWINDOW:
- Done = TRUE;
- break;
-
- /*** Gadgetup; Gadget selected ***/
- case GADGETUP:
- dogadup( &imsg );
- break;
-
- /*** REFRESH: Graphicobjects (Boxen) redraw ***/
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh( Project0Wnd );
- GT_EndRefresh( Project0Wnd, TRUE );
- break;
-
- }
-
- }
-
- /*** Close Window and Screen ***/
- CloseProject0Window();
- CloseDownScreen();
-
- /*** Save List ***/
- save_and_freeprjlist();
-
- return(0);
- }
-
-
-
-
-
-
-
-
-