// ReqTools.cpp - AFrame v1.0 © 1996 Synthetic Input // // ReqTools C++ Object utilizing reqtools.library version 38.1296 // by Nico François. ReqTools is © Nico François // // // Deryk B Robosson // Jeffry A Worth // January 20, 1996 //////////////////////////////////////////////////////////////////////////////RTSC_Flags,SCREQF_DEPTHGAD|SCREQF_SIZEGADS|SCREQF_AUTOSCROLLGAD|SCREQF_OVERSCANGAD,TAG_END } ;////////////////////////////////////////////////////////////////////////////// // INCLUDES #include "AFRAME:include/reqtools.hpp"
#ifndef __AFREQTOOLS_DEFTAGS__ #define __AFREQTOOLS_DEFTAGS__
ULONG def_screentags[] = {
ULONG def_filetags[] = { RTFI_FilterFunc,TAG_END };
ULONG def_multifiletags[] = { RTFI_FilterFunc,RTFI_Flags,FREQF_MULTISELECT,TAG_END };
ULONG def_dirtags[] = { RTFI_Flags,FREQF_NOFILES,TAG_END };
ULONG def_volumetags[] = { RTFI_FilterFunc,RTFI_VolumeRequest,0,TAG_END };
ULONG def_fonttags[] = { RTFO_FilterFunc,TAG_END };
ULONG def_palettetags[] = { TAG_END };
ULONG def_getlong[] = { RTGL_ShowDefault,FALSE,RTGL_Min,0,RTGL_Max,999999,TAG_END };
//ULONG def_getstring[] = {
RTGS_GadFmt,"_Ok|_Cancel",RTGS_BackFill,FALSE,RTGS_Flags,GSREQF_CENTERTEXT|GSREQF_HIGHLIGHTTEXT,TAG_MORE,RT_Undersco
re,'_',TAG_END };
#endif //__AFREQTOOLS_DEFTAGS__higher.\n","_Ok",NULL,NULL,RT_Underscore,'_',TAG_END);extern struct ExecBase *SysBase; extern struct ReqToolsBase *ReqToolsBase;
////////////////////////////////////////////////////////////////////////////// //
AFReqTools::AFReqTools() { color=0; filename[0]=0; m_filelist=NULL; m_screenmoderequester=NULL; m_filerequester=NULL; m_fontrequester=NULL; }
AFReqTools::~AFReqTools() { DestroyObject(); }
void AFReqTools::DestroyObject() { if(m_filelist) rtFreeFileList(m_filelist); if(m_screenmoderequester) rtFreeRequest(m_screenmoderequester); if(m_filerequester) rtFreeRequest(m_filerequester); if(m_fontrequester) rtFreeRequest(m_fontrequester);
color=0; filename[0]=0; m_filelist=NULL; m_screenmoderequester=NULL; m_filerequester=NULL; m_fontrequester=NULL; }
BOOL AFReqTools::RTCreate() { if(!ReqToolsBase) if(!(ReqToolsBase=(struct ReqToolsBase *)OpenLibrary((UBYTE*)REQTOOLSNAME,(ULONG)REQTOOLSVERSION))) return FALSE; else return TRUE; else return FALSE; }
BOOL AFReqTools::RTEZRequest(char *text, char *gadfmt) { return ::rtEZRequest(text,gadfmt,NULL,NULL); }
BOOL AFReqTools::RTEZRequestA(char *text, char *gadfmt, struct rtReqInfo *reqinfo, ULONG taglist[]) { return ::rtEZRequest(text,gadfmt,reqinfo,(struct TagItem *)taglist); }
BOOL AFReqTools::RTScreenMode() { if(SysBase->LibNode.lib_Version<37) { rtEZRequestTags("ScreenMode requesters require\n Kickstart 2.0 or
return FALSE;
} else {
if(m_screenmoderequester=(struct rtScreenModeRequester*)rtAllocRequestA(RT_SCREENMODEREQ,NULL)) {
if(!rtScreenModeRequest(m_screenmoderequester,(char *)"Select a Screen Mode",(ULONG)RTSC_Flags,
(ULONG)(SCREQF_DEPTHGAD|SCREQF_SIZEGADS|SCREQF_AUTOSCROLLGAD|SCREQF_OVERSCANGA
D),(ULONG)TAG_END))
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
}
BOOL AFReqTools::RTScreenModeA(ULONG taglist[])
{
if(SysBase->LibNode.lib_Version<37) {
rtEZRequestTags("ScreenMode requesters require\n Kickstart 2.0 or
higher.\n","_Ok",NULL,NULL,RT_Underscore,'_',TAG_END);
return FALSE;
} else {
if(m_screenmoderequester=(struct rtScreenModeRequester*)rtAllocRequestA(RT_SCREENMODEREQ,NULL)) {
if(!rtScreenModeRequestA(m_screenmoderequester,(char *)"Select a Screen Mode",(struct TagItem
*)taglist))
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
}
BOOL AFReqTools::RTFileRequest()
{
if(m_filerequester=(struct rtFileRequester*)rtAllocRequestA(RT_FILEREQ,NULL)) {
m_filterhook.h_Entry=(ULONG(*)())file_filterfunc;
if(!rtFileRequest(m_filerequester,filename,"Select a File",RTFI_FilterFunc,&m_filterhook,TAG_END))
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
BOOL AFReqTools::RTFileRequestA(ULONG taglist[])
{
if(m_filerequester=(struct rtFileRequester*)rtAllocRequestA(RT_FILEREQ,NULL)) {
m_filterhook.h_Entry=(ULONG(*)())file_filterfunc;
if(!rtFileRequestA(m_filerequester,filename,"Select a File",(struct TagItem *)taglist))
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
BOOL AFReqTools::RTFilesRequest()
{
if(m_filerequester=(struct rtFileRequester*)rtAllocRequestA(RT_FILEREQ,NULL)) {
m_filterhook.h_Entry=(ULONG(*)())file_filterfunc;
m_filelist=(struct rtFileList*)rtFileRequest(m_filerequester,filename,"Select
Files",RTFI_FilterFunc,&m_filterhook,RTFI_Flags,FREQF_MULTISELECT,TAG_END);
if(!m_filelist)
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
BOOL AFReqTools::RTFilesRequestA(ULONG taglist[])
{
if(m_filerequester=(struct rtFileRequester*)rtAllocRequestA(RT_FILEREQ,NULL)) {
m_filterhook.h_Entry=(ULONG(*)())file_filterfunc;
m_filelist=(struct rtFileList*)rtFileRequestA(m_filerequester,filename,"Select Files",(struct TagItem
*)taglist);
if(!m_filelist)
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
BOOL AFReqTools::RTDirRequest()
{
if(m_filerequester=(struct rtFileRequester*)rtAllocRequestA(RT_FILEREQ,NULL)) {
if(!rtFileRequest(m_filerequester,filename,"Select a Directory",RTFI_Flags,FREQF_NOFILES,TAG_END))
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
BOOL AFReqTools::RTVolumeRequest()
{
if(m_filerequester=(struct rtFileRequester*)rtAllocRequestA(RT_FILEREQ,NULL)) {
m_volume_filterhook.h_Entry=(ULONG (*)())vol_filterfunc;
if(!rtFileRequest(m_filerequester,filename,"Select a
Volume",RTFI_FilterFunc,&m_volume_filterhook,RTFI_VolumeRequest,0,TAG_END))
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
BOOL AFReqTools::RTFontRequest()
{
if(m_fontrequester=(struct rtFontRequester*)rtAllocRequestA(RT_FONTREQ,NULL)) {
m_fontrequester->Flags=FREQF_STYLE|FREQF_COLORFONTS;
m_font_filterhook.h_Entry=(ULONG (*)())font_filterfunc;
if(!rtFontRequest(m_fontrequester,"Select a Font",RTFO_FilterFunc,&m_font_filterhook,TAG_END))
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
BOOL AFReqTools::RTFontRequestA(ULONG taglist[])
{
if(m_fontrequester=(struct rtFontRequester*)rtAllocRequestA(RT_FONTREQ,NULL)) {
m_fontrequester->Flags=FREQF_STYLE|FREQF_COLORFONTS;
m_font_filterhook.h_Entry=(ULONG (*)())font_filterfunc;
if(!rtFontRequestA(m_fontrequester,"Select a Font",(struct TagItem *)taglist))
return FALSE;
else return TRUE;
} else {
rtEZRequest((char *)"Out of memory!",(char *)"Ok!",NULL,NULL);
return FALSE;
}
}
BOOL AFReqTools::RTPaletteRequest()
{
color=rtPaletteRequest("Change Palette",NULL,TAG_END);
if(color==-1)
return FALSE;
else return TRUE;
}
BOOL AFReqTools::RTPaletteRequestA(ULONG taglist[])
{
color=rtPaletteRequestA("Change Palette",m_reqinfo,(struct TagItem *)taglist);
if(color==-1)
return FALSE;
else return TRUE;
}
void AFReqTools::RTScreenToFront(struct Screen *screen)
{
rtScreenToFrontSafely(screen);
}
void AFReqTools::RTSetWaitPointer(struct Window *win)
{
rtSetWaitPointer(win);
}
BOOL AFReqTools::RTLockWindow(struct Window *win)
{
m_windowlock=(APTR)rtLockWindow(win);
return TRUE;
}
void AFReqTools::RTUnlockWindow(struct Window *win, APTR winlock)
{
rtUnlockWindow(win,winlock);
}
ULONG AFReqTools::RTGetLong(char *title, struct rtReqInfo *reqinfo)
{
ULONG ret;
if(!(ret=rtGetLong((ULONG
*)&longvar,title,reqinfo,RTGL_ShowDefault,FALSE,RTGL_Min,0,RTGL_Max,999999,TAG_END)))
return FALSE;
else return ret;
}
ULONG AFReqTools::RTGetLongA(char *title, struct rtReqInfo *reqinfo, ULONG taglist[])
{
ULONG ret;
if(!(ret=rtGetLongA((ULONG *)&longvar,title,reqinfo,(struct TagItem *)taglist)))
return FALSE;
else return ret;
}
ULONG AFReqTools::RTGetString(UBYTE *buffer, ULONG maxchars, char *title, struct rtReqInfo *reqinfo)
{
ULONG ret;
if(!(ret=rtGetString(buffer, maxchars, title, reqinfo, RTGS_GadFmt,
"_Ok|_Cancel",RTGS_BackFill,FALSE,RTGS_Flags,GSREQF_CENTERTEXT|GSREQF_HIGHLIGHTTEXT,TAG_MORE,RT_Underscore,'_',TAG_E
ND)))
return FALSE;
else return ret;
}
ULONG AFReqTools::RTGetStringA(UBYTE *buffer, ULONG maxchars, char *title, struct rtReqInfo *reqinfo, ULONG
taglist[])
{
ULONG ret;
if(!(ret=rtGetStringA(buffer, maxchars, title, reqinfo, (struct TagItem *)taglist)))
return FALSE;
else return ret;
}
ULONG AFReqTools::RTGetVScreenSize(struct Screen *screen, ULONG *widthptr, ULONG *heightptr)
{
ULONG spacing;
if(!(spacing=rtGetVScreenSize(screen,widthptr,heightptr)))
return FALSE;
else return spacing;
}
BOOL __asm __saveds file_filterfunc (register __a0 struct Hook *filterhook,
register __a2 struct rtFileRequester *req,
register __a1 struct FileInfoBlock *fib)
{
// examine fib to decide if you want this file in the requester
return TRUE;
}
BOOL __asm __saveds vol_filterfunc (
REG __a0 struct Hook *hook,
REG __a2 struct rtFileRequester *filereq,
REG __a1 struct rtVolumeEntry *volentry
)
{
// examine volentry to decide which volumes you want in this requester
return TRUE;
}
BOOL __asm __saveds font_filterfunc (
REG __a0 struct Hook *hook,
REG __a2 struct rtFontRequester *fontreq,
REG __a1 struct TextAttr *textattr
)
{
// examine textattr to decide which fonts you want in this requester
return TRUE;
}