/*
 * $XConsortium: AsciiSrc.h,v 1.7 90/05/08 15:23:07 converse Exp $
 *
 * Copyright 1989 Massachusetts Institute of Technology
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of M.I.T. not be used in advertising or
 * publicity pertaining to distribution of the software without specific,
 * written prior permission.  M.I.T. makes no representations about the
 * suitability of this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 *
 */


/*
 * AsciiSrc.h - Public Header file for Ascii Text Source.
 *
 * This is the public header file for the Ascii Text Source.
 * It is intended to be used with the Text widget, the simplest way to use
 * this text source is to use the AsciiText Object.
 *
 * Date:    June 29, 1989
 *
 * By:      Chris D. Peterson
 *          MIT X Consortium 
 *          kit@expo.lcs.mit.edu
 */


#ifndef _XawAsciiSrc_h
#define _XawAsciiSrc_h

#include <X11/Xaw/TextI.h>
#include <X11/Xaw/TextSrc.h>

/* Resources:

 Name		     Class		RepType		Default Value
 ----		     -----		-------		-------------


*/
 
/* Class record constants */

extern WidgetClass asciiSrcObjectClass;

typedef struct _AsciiSrcClassRec *AsciiSrcObjectClass;
typedef struct _AsciiSrcRec      *AsciiSrcObject;

/*
 * Just to make people's lives a bit easier.
 */

#define AsciiSourceObjectClass AsciiSrcObjectClass
#define AsciiSourceObject      AsciiSrcObject

/*
 * Resource Definitions.
 */

#define XtCDataCompression "DataCompression"
#define XtCPieceSize "PieceSize"
#define XtCType "Type"
#define XtCUseStringInPlace "UseStringInPlace"

#define XtNdataCompression "dataCompression"
#define XtNpieceSize "pieceSize"
#define XtNtype "type"
#define XtNuseStringInPlace "useStringInPlace"

#define XtRAsciiType "AsciiType"

#define XtEstring "string"
#define XtEfile "file"

typedef enum {XawAsciiFile, XawAsciiString} XawAsciiType;

/************************************************************
 *
 * Public routines 
 *
 ************************************************************/

#ifdef __cplusplus
extern "C" {					/* for C++ V2.0 */
#endif

/*	Function Name: XawAsciiSourceFreeString
 *	Description: Frees the string returned by a get values call
 *                   on the string when the source is of type string.
 *	Arguments: w - the AsciiSrc object.
 *	Returns: none.
 */

extern void XawAsciiSourceFreeString(
#if NeedFunctionPrototypes
    Widget		/* w */
#endif
);

/*	Function Name: XawAsciiSave
 *	Description: Saves all the pieces into a file or string as required.
 *	Arguments: w - the asciiSrc Object.
 *	Returns: TRUE if the save was successful.
 */

extern Boolean XawAsciiSave(
#if NeedFunctionPrototypes
    Widget		/* w */
#endif
);

/*	Function Name: XawAsciiSaveAsFile
 *	Description: Save the current buffer as a file.
 *	Arguments: w - the asciiSrc object.
 *                 name - name of the file to save this file into.
 *	Returns: True if the save was successful.
 */

extern Boolean XawAsciiSaveAsFile(
#if NeedFunctionPrototypes
    Widget		/* w */,
    const String	/* name */
#endif 
);

/*	Function Name: XawAsciiSourceChanged
 *	Description: Returns true if the source has changed since last saved.
 *	Arguments: w - the asciiSource object.
 *	Returns: a Boolean (see description).
 */

extern Boolean XawAsciiSourceChanged(
#if NeedFunctionPrototypes
    Widget		/* w */
#endif
);

#ifdef __cplusplus
}						/* for C++ V2.0 */
#endif

#ifdef XAW_BC
/*************************************************************
 *
 * These functions are only preserved for compatability.     
 */

#define ASCII_STRING		/* Turn on R3 AsciiDisk and AsciiString */
#define ASCII_DISK		/* Emulation modes. */

#ifdef ASCII_STRING
#define XawStringSourceDestroy XtDestroyWidget
#endif

#ifdef ASCII_DISK
#define XawDiskSourceDestroy XtDestroyWidget
#endif

#ifdef ASCII_STRING

#ifdef __cplusplus
extern "C" {					/* for C++ V2.0 */
#endif

/*	Function Name: AsciiStringSourceCreate
 *	Description: Creates a string source.
 *	Arguments: parent - the widget that will own this source.
 *                 args, num_args - the argument list.
 *	Returns: a pointer to the new text source.
 */

extern Widget XawStringSourceCreate(
#if NeedFunctionPrototypes
    Widget		/* parent */,
    ArgList		/* args */,
    Cardinal		/* num_args */
#endif
);

#ifdef __cplusplus
}						/* for C++ V2.0 */
#endif

#endif /* ASCII_STRING */

#ifdef ASCII_DISK

#ifdef __cplusplus
extern "C" {					/* for C++ V2.0 */
#endif

/*	Function Name: AsciiDiskSourceCreate
 *	Description: Creates a disk source.
 *	Arguments: parent - the widget that will own this source.
 *                 args, num_args - the argument list.
 *	Returns: a pointer to the new text source.
 */

extern Widget XawDiskSourceCreate(
#if NeedFunctionPrototypes
    Widget		/* parent */,
    ArgList		/* args */,
    Cardinal 		/* num_args */
#endif
);

#ifdef __cplusplus
}						/* for C++ V2.0 */
#endif

#endif /* ASCII_DISK */
#endif /* XAW_BC */
/*
 * End of Compatability stuff.
 *  
 ***************************************************/

#endif /* _XawAsciiSrc_h  - Don't add anything after this line. */

