home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 2
/
FFMCD02.bin
/
new
/
amigalibdisks
/
disk945
/
iffconvert
/
src
/
filereq.c
next >
Wrap
C/C++ Source or Header
|
1993-12-21
|
3KB
|
107 lines
#include <libraries/dos.h>
#include <libraries/reqtools.h>
#include <proto/reqtools.h>
#include <intuition/intuition.h>
#include <proto/graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* #include "reqtools_inline.h" */
extern struct ReqToolsBase *ReqToolsBase;
void * rtAllocRequestA();
static struct rtFileRequester *filereq=NULL;
static char *returnstring=NULL;
static char filename[128]="";
static char *modestr[]={"Load picture","Save picture","Delete file"};
static char *gadtxt[]={"Load","Save","Delete"};
/*
#define RED(s) ((s)>>8)
#define GREEN(s) (((s)>>4)&0xf)
#define BLUE(s) ((s)&0xf)
*/
int InitRequest(void)
{
if (filereq = rtAllocRequestA ((ULONG)RT_FILEREQ, NULL))
return(0); /* all OK */
else return(1); /* No Memory */
}
void FreeRequest(void)
{
if(filereq) rtFreeRequest(filereq);
filereq=NULL;
if(returnstring) free(returnstring);
returnstring=NULL;
}
static char *catstring(char *s1,char *s2)
{
int len1,len2;
len1=strlen(s1);
len2=strlen(s2);
if(returnstring) free(returnstring);
returnstring=NULL;
if(s1[len1-1]==':') {
returnstring=malloc(len1+len2+1);
if(!returnstring) return(0L);
strcpy(returnstring,s1);
strcat(returnstring,s2);
return(returnstring);
} else {
returnstring=malloc(len1+len2+2);
if(!returnstring) return(0L);
strcpy(returnstring,s1);
strcat(returnstring,"/");
strcat(returnstring,s2);
return(returnstring);
}
}
char *FileRequest(struct Window *win,short mode)
{
/* long col0,col1; */
char *ret;
/* col0=GetRGB4(win->WScreen->ViewPort.ColorMap,0L);
col1=GetRGB4(win->WScreen->ViewPort.ColorMap,1L);
SetRGB4(&win->WScreen->ViewPort,0L,0L,0L,0L);
SetRGB4(&win->WScreen->ViewPort,1L,15L,15L,15L); */
if(mode) {
if(rtFileRequest(filereq,filename,modestr[mode],
(ULONG)RT_Window,win,
(ULONG)RTFI_OkText,gadtxt[mode],
(ULONG)RTFI_Flags,(ULONG)FREQF_SAVE,(ULONG)TAG_END)) {
ret=catstring(filereq->Dir,filename);
rtFreeReqBuffer(filereq);
/* SetRGB4(&win->WScreen->ViewPort,0L,RED(col0),GREEN(col0),BLUE(col0));
SetRGB4(&win->WScreen->ViewPort,1L,RED(col1),GREEN(col1),BLUE(col1)); */
return(ret);
} else {
/* SetRGB4(&win->WScreen->ViewPort,0L,RED(col0),GREEN(col0),BLUE(col0));
SetRGB4(&win->WScreen->ViewPort,1L,RED(col1),GREEN(col1),BLUE(col1)); */
return(NULL);
}
} else {
if(rtFileRequest(filereq,filename,modestr[mode],
(ULONG)RTFI_OkText,gadtxt[mode],
(ULONG)RT_Window,win,(ULONG)TAG_END)) {
/* SetRGB4(&win->WScreen->ViewPort,0L,RED(col0),GREEN(col0),BLUE(col0));
SetRGB4(&win->WScreen->ViewPort,1L,RED(col1),GREEN(col1),BLUE(col1)); */
return(catstring(filereq->Dir,filename));
} else {
/* SetRGB4(&win->WScreen->ViewPort,0L,RED(col0),GREEN(col0),BLUE(col0));
SetRGB4(&win->WScreen->ViewPort,1L,RED(col1),GREEN(col1),BLUE(col1)); */
return(NULL);
}
}
}