home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
455.lha
/
ParM
/
Command.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-12-10
|
6KB
|
232 lines
/*
* Command.c - Copyright © 1990 by S.R. & P.C.
*
* Created: 01 Jul 1990
* Modified: 07 Jul 1990
*
* Make>> make
*/
/*
#define DO_ARP_COPIES
#include <intuition/intuition.h>
#include <libraries/arpbase.h>
#include <functions.h>
*/
#include <dos_functions.h>
#include <arpdos_pragmas.h>
#define OK 1
#define CANCEL 2
#define STRING 3
/***** global functions *****/
void Command( void );
/***** local variables *****/
static UBYTE Buffer[128];
static struct StringInfo Gadget3SInfo = {
Buffer, /* buffer where text will be edited */
NULL, /* optional undo buffer */
0, /* character position in buffer */
128, /* maximum number of characters to allow */
0, /* first displayed character buffer position */
0,0,0,0,0, /* Intuition initialized and maintained variables */
0, /* Rastport of gadget */
0, /* initial value for integer gadgets */
NULL /* alternate keymap (fill in if you set the flag) */
};
static SHORT BorderVectors1[] = {
0,0,
293,0,
293,11,
0,11,
0,0
};
static struct Border Border1 = {
-3,-2, /* XY origin relative to container TopLeft */
2,0,JAM1, /* front pen, back pen and drawmode */
5, /* number of XY vectors */
BorderVectors1, /* pointer to XY vectors */
NULL /* next border in list */
};
static struct Gadget Gadget3 = {
NULL, /* next gadget */
12,17, /* origin XY of hit box relative to window TopLeft */
288,10, /* hit box width and height */
NULL, /* gadget flags */
RELVERIFY, /* activation flags */
STRGADGET, /* gadget type flags */
(APTR)&Border1, /* gadget border or image to be rendered */
NULL, /* alternate imagery for selection */
NULL, /* first IntuiText structure */
NULL, /* gadget mutual-exclude long word */
(APTR)&Gadget3SInfo, /* SpecialInfo structure */
STRING, /* user-definable data */
NULL /* pointer to user-definable data */
};
static SHORT BorderVectors2[] = {
0,0,
72,0,
72,13,
0,13,
0,0
};
static struct Border Border2 = {
-1,-1, /* XY origin relative to container TopLeft */
2,0,JAM1, /* front pen, back pen and drawmode */
5, /* number of XY vectors */
BorderVectors2, /* pointer to XY vectors */
NULL /* next border in list */
};
static struct IntuiText IText1 = {
1,0,JAM1, /* front and back text pens, drawmode and fill byte */
12,2, /* XY origin relative to container TopLeft */
NULL, /* font pointer or NULL for default */
(UBYTE *)"Cancel", /* pointer to text */
NULL /* next IntuiText structure */
};
static struct Gadget Gadget2 = {
&Gadget3, /* next gadget */
229,36, /* origin XY of hit box relative to window TopLeft */
71,12, /* hit box width and height */
NULL, /* gadget flags */
RELVERIFY+ENDGADGET, /* activation flags */
BOOLGADGET, /* gadget type flags */
(APTR)&Border2, /* gadget border or image to be rendered */
NULL, /* alternate imagery for selection */
&IText1, /* first IntuiText structure */
NULL, /* gadget mutual-exclude long word */
NULL, /* SpecialInfo structure */
CANCEL, /* user-definable data */
NULL /* pointer to user-definable data */
};
static SHORT BorderVectors3[] = {
0,0,
55,0,
55,13,
0,13,
0,0
};
static struct Border Border3 = {
-1,-1, /* XY origin relative to container TopLeft */
2,0,JAM1, /* front pen, back pen and drawmode */
5, /* number of XY vectors */
BorderVectors3, /* pointer to XY vectors */
NULL /* next border in list */
};
static struct IntuiText IText2 = {
1,0,JAM1, /* front and back text pens, drawmode and fill byte */
17,2, /* XY origin relative to container TopLeft */
NULL, /* font pointer or NULL for default */
(UBYTE *)"Ok!", /* pointer to text */
NULL /* next IntuiText structure */
};
static struct Gadget Gadget1 = {
&Gadget2, /* next gadget */
12,36, /* origin XY of hit box relative to window TopLeft */
54,12, /* hit box width and height */
NULL, /* gadget flags */
RELVERIFY+ENDGADGET, /* activation flags */
BOOLGADGET, /* gadget type flags */
(APTR)&Border3, /* gadget border or image to be rendered */
NULL, /* alternate imagery for selection */
&IText2, /* first IntuiText structure */
NULL, /* gadget mutual-exclude long word */
NULL, /* SpecialInfo structure */
OK, /* user-definable data */
NULL /* pointer to user-definable data */
};
static struct NewWindow ReqNewWin = {
0,11, /* window XY origin relative to TopLeft of screen */
312,54, /* window width and height */
0,1, /* detail and block pens */
GADGETUP+ACTIVEWINDOW, /* IDCMP flags */
WINDOWDRAG+WINDOWDEPTH+ACTIVATE+NOCAREREFRESH, /* other window flags */
&Gadget1, /* first gadget in gadget list */
NULL, /* custom CHECKMARK imagery */
(UBYTE *)"Enter command", /* window title */
NULL, /* custom screen pointer */
NULL, /* custom bitmap */
5,5, /* minimum width and height */
-1,-1, /* maximum width and height */
WBENCHSCREEN /* destination screen type */
};
extern void Warn( const char * );
extern struct Window *Win;
extern char CmdWindow[];
static struct Window *ReqWin;
void Command(void)
{
struct IntuiMessage *Message;
ULONG Class;
USHORT Code;
struct Gadget *G;
BPTR fh;
BOOL End = FALSE;
char readbuffer[2];
ReqNewWin.BlockPen = Win->BlockPen;
ReqNewWin.DetailPen = Win->DetailPen;
if ( (fh = Open( CmdWindow , MODE_NEWFILE )) == NULL ) {
Warn( "Can't open output window" );
return;
}
if ( (ReqWin = OpenWindow(&ReqNewWin)) == NULL ) {
Warn( "Can't open Requester" );
Close( fh );
return;
}
ActivateGadget( &Gadget3 , ReqWin , NULL );
while( !End ) {
Wait( 1L << ReqWin->UserPort->mp_SigBit );
Message = (struct IntuiMessage *)GetMsg(ReqWin->UserPort);
Class = Message->Class;
Code = Message->Code;
G = (struct Gadget *) Message->IAddress;
ReplyMsg( (struct Message *)Message );
switch(Class) {
case GADGETUP :
CloseWindowSafely( ReqWin , NULL );
End = TRUE;
switch( G->GadgetID ) {
case OK :
case STRING :
Execute( (char *)Buffer , NULL , (struct FileHandle *)fh );
Write( fh , "
Hit return...
0 p" , 27L );
Read( fh , readbuffer , 1L );
break;
case CANCEL :
break;
}
break;
case ACTIVEWINDOW :
ActivateGadget( &Gadget3 , ReqWin , NULL );
break;
default :
; /* do nothing! */
}
}
Close( fh );
}