home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
532.lha
/
Request
/
Request.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-07-10
|
4KB
|
168 lines
/*
* Request.c - open an "EasyRqeuester()" from script files
*
* PUBLIC DOMAIN
*
* by Stefan Sticht
*
* V1.00 initial release
*/
#define VERSION "V1.00"
#include <stdlib.h>
#include <intuition/intuition.h>
#include <clib/dos_protos.h>
#include <pragmas/dos_pragmas.h>
#include <clib/exec_protos.h>
#include <pragmas/exec_pragmas.h>
#include <clib/intuition_protos.h>
#include <pragmas/intuition_pragmas.h>
/*
* some SAS/C specularities, change for other compilers!
*/
#ifdef __SASC
extern struct Library *DOSBase; /* Library base pointer from startup code */
extern struct Library *SysBase; /* Library base pointer from startup code */
void chkabort(void) {} /* disable Ctrl-C detect */
#endif
#define PROGRAMTITLE "Request"
/*
* a string, which will be found by Version
*/
char version[] ="\0$VER: " PROGRAMTITLE " " VERSION;
#define USAGE "Usage: Request <text> [TITLE <title>] "\
"[GADGETS <gad1|gad2|gad3|...>] [Screen <publicscreenname>]"
struct Library *IntuitionBase;
/*
* dummy window, we have to open
*/
struct NewWindow dummywindow = {
0, 0,
1, 1,
-1, -1,
0l,
BORDERLESS | BACKDROP | SIMPLE_REFRESH,
NULL,
NULL,
NULL,
NULL,
NULL,
0, 0,
0, 0,
CUSTOMSCREEN
};
struct EasyStruct textreq = {
sizeof (struct EasyStruct), /* ULONG es_StructSize */
0l, /* ULONG es_Flags */
NULL, /* UBYTE *es_Title */
NULL, /* UBYTE *es_TextFormat */
NULL, /* UBYTE *es_GadgetFormat */
};
#define TEMPLATE "Text/A,Title/K,Gadgets/K,Screen/K"
#define OPT_TEXT 0
#define OPT_TITLE 1
#define OPT_GADGETS 2
#define OPT_SCREEN 3
#define OPT_COUNT 4
/*
* this array will be filled by ReadArgs()
*/
long options[OPT_COUNT];
void _main(char *line)
{
struct RDArgs *args;
struct Screen *scr;
struct Window *win = NULL;
char *screen = NULL;
long rc = 0l;
if (IntuitionBase = OpenLibrary("intuition.library", 37l)) {
if (args = ReadArgs((UBYTE *)TEMPLATE, options, NULL)) {
if (options[OPT_TITLE]) textreq.es_Title = (UBYTE *)options[OPT_TITLE];
if (options[OPT_GADGETS]) textreq.es_GadgetFormat = (UBYTE *)options[OPT_GADGETS];
else textreq.es_GadgetFormat = "Ok";
if (options[OPT_TEXT]) textreq.es_TextFormat = (UBYTE *)options[OPT_TEXT];
if (options[OPT_SCREEN]) screen = (char *)options[OPT_SCREEN];
if (screen && *screen) {
/*
* user wants a special screen, lock it
*/
if (scr = LockPubScreen(screen)) {
dummywindow.Screen = scr;
win = OpenWindow(&dummywindow);
/*
* as the window is open, we can unlock
* if the window didn't open, the requester will
* open on the default public screen
*/
UnlockPubScreen(NULL, scr);
}
else {
/*
* public screen not found
*/
PutStr("Can't find named public screen!\n");
rc = 20l;
}
}
if (!rc) {
/*
* win may be NULL
*/
rc = EasyRequestArgs(win, &textreq, NULL, NULL);
/*
* don't forget closing the window
*/
if (win) CloseWindow(win);
}
}
else {
/*
* print out some more help
*/
PutStr(USAGE "\n");
rc = 40l;
}
/*
* free arguments and close the lib
*/
FreeArgs(args);
CloseLibrary(IntuitionBase);
}
else {
/*
* we really need intuition lib
*
* don't use PutStr() here, because dos.library might be < v36
*/
Write(Output(), "Can't open intuition.library V37+!\n", 35l);
rc = 30l;
}
exit(rc);
}