//////////////////////////////////////////////////////////////////////////////
// ReqTools.hpp - 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
//////////////////////////////////////////////////////////////////////////////

#ifndef __AFREQTOOLS_HPP__
#define __AFREQTOOLS_HPP__

//////////////////////////////////////////////////////////////////////////////
// INCLUDES
#include "AFrame:include/AFrame.hpp"
#include "AFrame:include/Object.hpp"
#include <exec/types.h>
#include <exec/memory.h>
#include <exec/execbase.h>
#include <intuition/intuition.h>
#include <utility/tagitem.h>
#include <libraries/dos.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <libraries/reqtools.h>
#include <proto/reqtools.h>

#define REG register

BOOL __asm __saveds file_filterfunc (
    REG __a0 struct Hook *, REG __a2 struct rtFileRequester *,
    REG __a1 struct FileInfoBlock *
);

BOOL __asm __saveds font_filterfunc (
    REG __a0 struct Hook *, REG __a2 struct rtFontRequester *,
    REG __a1 struct TextAttr *
);

BOOL __asm __saveds vol_filterfunc (
    REG __a0 struct Hook *, REG __a2 struct rtFileRequester *,
    REG __a1 struct rtVolumeEntry *
);

//////////////////////////////////////////////////////////////////////////////
// Req_Tools Class
class AFReqTools : public AFObject
{
public:

    AFReqTools();
    ~AFReqTools();

    virtual void DestroyObject();
    virtual char *ObjectType() { return "ReqTools"; };

// Methods

    virtual BOOL RTCreate();
    virtual BOOL RTEZRequest(char *, char *);
    virtual BOOL RTEZRequestA(char *, char *, struct rtReqInfo *, ULONG *);
    virtual BOOL RTScreenMode();
    virtual BOOL RTScreenModeA(ULONG *);
    virtual BOOL RTFileRequest();
    virtual BOOL RTFileRequestA(ULONG *);
    virtual BOOL RTFilesRequest();
    virtual BOOL RTFilesRequestA(ULONG *);
    virtual BOOL RTDirRequest();
    virtual BOOL RTVolumeRequest();
    virtual BOOL RTFontRequest();
    virtual BOOL RTFontRequestA(ULONG *);
    virtual BOOL RTPaletteRequest();
    virtual BOOL RTPaletteRequestA(ULONG *);
    virtual void RTScreenToFront(struct Screen *);
    virtual void RTSetWaitPointer(struct Window *);
    virtual BOOL RTLockWindow(struct Window *);
    virtual void RTUnlockWindow(struct Window *,APTR);
    virtual ULONG RTGetLong(char *, struct rtReqInfo *);
    virtual ULONG RTGetLongA(char *, struct rtReqInfo *, ULONG *);
    virtual ULONG RTGetString(UBYTE *, ULONG, char *, struct rtReqInfo *);
    virtual ULONG RTGetStringA(UBYTE *, ULONG, char *, struct rtReqInfo *, ULONG *);
    virtual ULONG RTGetVScreenSize(struct Screen *, ULONG *, ULONG *);

    struct rtReqInfo *m_reqinfo;
    struct rtFileRequester *m_filerequester;
    struct rtFontRequester *m_fontrequester;
    struct rtScreenModeRequester *m_screenmoderequester;
    struct rtFileList *m_filelist, *m_tempfilelist;
    struct Hook m_filterhook, m_font_filterhook, m_volume_filterhook;
    APTR m_windowlock;
    ULONG color, longvar;
    char buffer[128], filename[108];

};

//////////////////////////////////////////////////////////////////////////////
#endif // __AFREQTOOLS_HPP__
