Contents page

Index

Source


//////////////////////////////////////////////////////////////////////////////
  // 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
  //////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////// // INCLUDES #include "AFRAME:include/reqtools.hpp"

#ifndef __AFREQTOOLS_DEFTAGS__ #define __AFREQTOOLS_DEFTAGS__

ULONG def_screentags[] = {

RTSC_Flags,SCREQF_DEPTHGAD|SCREQF_SIZEGADS|SCREQF_AUTOSCROLLGAD|SCREQF_OVERSCANGAD,TAG_END } ;
  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__

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

higher.\n","_Ok",NULL,NULL,RT_Underscore,'_',TAG_END);
          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; }