home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
326.lha
/
requester.library_v1.3
/
FileIO.h
< prev
next >
Wrap
C/C++ Source or Header
|
1989-12-30
|
8KB
|
207 lines
#ifndef FILEIO_H
#define FILEIO_H
/* *** fileio.h *************************************************************
*
* Amiga Programmers' Suite -- File IO Include File
* from Book 1 of the Amiga Programmers' Suite by RJ Mical
*
* Copyright (C) 1986, =Robert J. Mical=
* All Rights Reserved.
*
* Created for Amiga developers.
* Any or all of this code can be used in any program as long as this
* entire notice is retained, ok? Thanks.
*
* The Amiga Programmer's Suite Book 1 is copyrighted but freely distributable.
* All copyright notices and all file headers must be retained intact.
* The Amiga Programmer's Suite Book 1 may be compiled and assembled, and the
* resultant object code may be included in any software product. However, no
* portion of the source listings or documentation of the Amiga Programmer's
* Suite Book 1 may be distributed or sold for profit or in a for-profit
* product without the written authorization of the author, RJ Mical.
*
* HISTORY NAME DESCRIPTION
* ----------- -------------- --------------------------------------------
* 20 Oct 87 - RJ Added RENAME_RAMDISK to fix what seems to
* be a bug in AmigaDOS.
* 27 Sep 87 RJ Removed reference to alerts.h, brought
* declarations into this file
* 12 Aug 86 RJ Prepare (clean house) for release
* 14 Feb 86 =RJ Mical= Created this file.
* 26 Sept 87 Jeff Glatt Converted C code to optimized assembly and
* created a library.
* *********************************************************************** */
#define MAX_NAME_LENGTH 30
#define MAX_DRAWER_LENGTH 132
#define SetFlag(v,f) ((v)|=(f))
#define ClearFlag(v,f) ((v)&=~(f))
#define ToggleFlag(v,f) ((v)^=(f))
#define FlagIsSet(v,f) ((BOOL)(((v)&(f))!=0))
struct HandlerBlock {
APTR StartUpCode;
APTR DiskInsertedCode;
APTR GadgetCode;
APTR KeyCode;
APTR MouseMoveCode;
};
/* === FileIO Structure ========================================== */
struct FileIO {
USHORT Flags;
/* After a successful call to DoFileIO(), these fields will have
* the names selected by the user. You should never have to initialize
* these fields, only read from them, though initializing them won't hurt.
*/
UBYTE FileName[MAX_NAME_LENGTH];
UBYTE Drawer[MAX_DRAWER_LENGTH];
UBYTE Disk[MAX_NAME_LENGTH];
/* If a Lock on a disk/dir was obtained, it can be found here. */
struct DOSLock *Lock;
USHORT NameCount;
USHORT NameStart;
SHORT CurrPick;
struct Remember *FileList;
UBYTE *FileIOText; /* for SPECIAL_REQ */
APTR FileIORoutine; /* for SPECIAL_REQ */
SHORT MatchType; /* DiskObject Type */
UBYTE *ToolTypes;
UBYTE *Extension;
USHORT ExtSize; /* Don't count the terminating NULL */
struct HandlerBlock *Custom;
USHORT X;
USHORT Y;
ULONG FreeBytes;
ULONG FileSize;
UBYTE *Title;
UBYTE *Buffer;
APTR RawCode;
struct DOSLock *OriginalLock;
BYTE Errno;
UBYTE DrawMode;
UBYTE PenA;
UBYTE PenB;
};
/* === User FileIO Flag Definitions === */
#define NO_CARE_REDRAW 0x0001 /* Clear if reconstructing display */
#define USE_DEVICE_NAMES 0x0002 /* Set for device instead of volume names */
#define EXTENSION_MATCH 0x0004 /* Only display those that end with
a specified string */
#define DOUBLECLICK_OFF 0x0008 /* Inhibit double-clicking if set */
#define WBENCH_MATCH 0x0010 /* If set check .info files only */
#define MATCH_OBJECTTYPE 0x0020 /* If set with .info also check ObjectType */
#define MATCH_TOOLTYPE 0x0040 /* If set with .info also check ToolType */
#define INFO_SUPPRESS 0x0080 /* No info files listed */
#define CUSTOM_HANDLERS 0x0200 /* Implement custom handlers */
#define SHOW_DISK_NAMES 0x4000 /* Show disk names instead of filenames */
#define SPECIAL_REQ 0x8000 /* For displaying lists of strings */
/* === System FileIO Flag Definitions === */
#define ALLOCATED_FILEIO 0x0100 /* Not a pre-initialized FileIO struct */
#define WINDOW_OPENED 0x0400 /* DoFileIOWindow() was called */
#define TITLE_CHANGED 0x0800 /* SetTitle() called without ResetTitle()
*/
#define DISK_HAS_CHANGED 0x2000 /* Disk changed during DoFileIO() */
/* FileRequester GadgetIDs - Do not use these IDs for your own gadgets */
#define FILEIO_CANCEL 0x7FA0
#define FILEIO_OK 0x7FA1
#define FILEIO_NAMETEXT 0x7FA2
#define FILEIO_DRAWERTEXT 0x7FA3
#define FILEIO_DISKTEXT 0x7FA4
#define FILEIO_SELECTNAME 0x7FA5
#define FILEIO_UPGADGET 0x7FA6
#define FILEIO_DOWNGADGET 0x7FA7
#define FILEIO_PROPGADGET 0x7FA8
#define FILEIO_NEXTDISK 0x7FA9
#define FILEIO_BACKDROP 0x7FAA
#define NAME_ENTRY_COUNT 7 /* These many names in the SelectName box */
#define REQTITLE_HEIGHT 8
#define REQ_LEFT 8
#define REQ_TOP 15
#define REQ_WIDTH 286
#define REQ_HEIGHT (110 + REQTITLE_HEIGHT)
#define REQ_LINEHEIGHT 8
#define SELECTNAMES_LEFT 8
#define SELECTNAMES_TOP (15 + REQTITLE_HEIGHT)
#define SELECTNAMES_WIDTH 122
#define SELECTNAMES_HEIGHT 60
/* ======= ERRNO numbers returned in FileIO error field ========= */
#define ERR_MANUAL 1 /* the path was entered manually via the title bar
with no errors or cancellation. */
#define ERR_SUCCESS 0 /* everything went OK */
#define ERR_CANCEL -1 /* the filename procedure was CANCELED by the user */
#define ERR_WINDOW -2 /* the window couldn't open (in DoFileIOWindow()) */
#define ERR_APPGADG -3 /* the requester was CANCELED by an application gadget
(via an installed CUSTOM gadget handler returning TRUE) */
/* === AutoFileMessage() Numbers ================================= */
#define ALERT_OUTOFMEM 0
#define ALERT_BAD_DIRECTORY 1
#define READ_WRITE_ERROR 2 /* Error in reading or writing file */
/* The next 3 display "YES" and "NO" prompts,
returning d0=1 for yes, 0 for no */
#define FILE_EXISTS 3 /* File already exists. Overwrite? */
#define SAVE_CHANGES 4 /* Changes have been made. Save them? */
#define REALLY_QUIT 5 /* Do you really want to quit? */
/* ====================== Entry Structure ====================== */
/* Don't use sizeof on this structure. The library makes this for you when
you call AddEntry. The 3rd field is a variable length string. This struc-
ture has been defined simply so that you can get access to the EntryID
and the EntryString. This structure is used for SPECIAL_REQ. */
struct Entry {
LONG EntryID;
UBYTE EntryFlags;
UBYTE EntryString[1]; /* size is actually length of null-terminated
string */
};
/* === Requester Library Function Declarations ===================== */
extern struct FileIO *GetFileIO();
extern UBYTE *DoFileIO();
extern UBYTE *DoFileIOWindow(); /* address = DoFileIOWindow(myFileIO, myScreen);
If myScreen is NULL, then use WB screen */
extern BOOL AutoFileMessage(); /* result = AutoFileMessage(3L, myWindow); */
extern BOOL AutoMessage(), AutoMessageLen(), AutoPrompt3();
extern void ReleaseFileIO();
extern void SetWaitPointer(); /* SetWaitPointer( myWindow ); */
extern void ResetBuffer(); /* ResetBuffer( StringInfo, nullFlag ); resets the
cursor back to the first char in the stringinfo's
buffer. If nullFlag is TRUE, then NULLS the buffer
as well. */
extern UBYTE *ParseString();
extern UBYTE *TypeFilename();
extern UBYTE *PromptUserEntry(), *UserEntry();
extern void SetTitle(), ResetTitle();
extern UWORD GetRawkey(), DecodeRawkey();
extern WORD NewEntryList(), AddEntry(), IsEntryThere();
#endif /* of FILEIO_H */