


/*************************************************************************
* File	:	file.cpp
* Description	:	Supports file access to AGA10 functions
* Author	:	W.B. Peterson
* Version	:	1.7   2002.11.17
* Revisions	:	
* Copyright (c) 2002	American Gas Association
**************************************************************************/

#include "aga10.h"

// declare a Windows-defined structure for file names static OPENFILENAME ofn ;

/**************************************************************************

*	Function	:	FileInitialize()
*	Arguments	:	HWND
*	Returns	:	void
*	Purpose	:	Prepares for Windows file access
*	Revisions	:	
**************************************************************************/

void FileInitialize (HWND hWnd)

{
/* set file filters; assign the filename extension 'sos' for files of this type */

static char szFilter[] = "AGA10 Files (*.sos)\0*.sos\0" ; static char szExt[] = "sos" ;

// populate a OPENFILENAME structure
ofn.lStructSize	= sizeof (OPENFILENAME)  ;
ofn.hwndOwner	= hWnd	;	
ofn.hInstance	= NULL	;	
ofn.lpstrFilter	= szFilter	;
ofn.lpstrCustomFilter	= NULL	;	
ofn.nMaxCustFilter	= 0	;		
ofn.nFilterIndex	= 0	;		
ofn.lpstrFile	= NULL	;	
ofn.nMaxFile	= _MAX_PATH	;
ofn.lpstrFileTitle	= NULL	;	




ofn.nMaxFileTitle	= _MAX_FNAME + _MAX_EXT  ;
ofn.lpstrInitialDir	= NULL	;
ofn.lpstrTitle	= NULL	;
ofn.Flags	= 0	;	
ofn.nFileOffset	= 0	;	
ofn.nFileExtension	= 0	;	
ofn.lpstrDefExt	= szExt	;
ofn.lCustData	= 0L  ;	
ofn.lpfnHook	= NULL	;
ofn.lpTemplateName	= NULL	;
}


/**************************************************************************

*	Function	:	FileOpenDlg()
*	Arguments	:	HWND, PSTR, PSTR
*	Returns	:	BOOL
*	Purpose	:	Access common controls for file-open operation
*	Revisions	:	
**************************************************************************/

BOOL FileOpenDlg (HWND hWnd, PSTR pstrFileName, PSTR pstrTitleName)

{
ofn.hwndOwner	= hWnd	;
ofn.lpstrFile	= pstrFileName	;

ofn.lpstrFileTitle	= pstrTitleName	;

ofn.Flags	= OFN_HIDEREADONLY | OFN_CREATEPROMPT	;

return GetOpenFileName (&ofn)	;

}



/**************************************************************************

*	Function	:	FileSaveDlg()
*	Arguments	:	HWND, PSTR, PSTR
*	Returns	:	BOOL
*	Purpose	:	Access common controls for file-save operation
*	Revisions	:	
**************************************************************************/




BOOL FileSaveDlg (HWND hWnd, PSTR pstrFileName, PSTR pstrTitleName)

{
ofn.hwndOwner	= hWnd	;
ofn.lpstrFile	= pstrFileName	;

ofn.lpstrFileTitle	= pstrTitleName	;

ofn.Flags	= OFN_OVERWRITEPROMPT	;

return GetSaveFileName (&ofn)	;

}



/**************************************************************************

*	Function	:	FileRead()
*	Arguments	:	HWND, PSTR, AGA10STRUCT
*	Returns	:	bool
*	Purpose	:	Reads contents of a .sos file into a AGA10STRUCT
*	Revisions	:	
**************************************************************************/

bool FileRead(HWND hWnd, PSTR pstrFileName, AGA10STRUCT *A10)

{
FILE	*file	;

// open the file in binary mode, if it exists

if (NULL == (file = fopen (pstrFileName, "rb"))) return false ;

//set file position to beginning rewind(file) ;

//read one (only) data structure

if (fread(A10, sizeof (AGA10STRUCT), 1, file))
{

fclose (file) ; return true;
}
else
{

// some problem encountered




fclose (file) ; return false ;

}
}


/**************************************************************************
*	Function	:	FileWrite()
*	Arguments	:	HWND, PSTR, AGA10STRUCT
*	Returns	:	bool
*	Purpose	:	Writes contents of a AGA10STRUCT into a .vos file
*	Revisions	:	
**************************************************************************/

bool FileWrite(HWND hWnd, PSTR pstrFileName, AGA10STRUCT *A10)

{

FILE	*file	;

// open the file in binary mode; create if necessary

if (NULL == (file = fopen (pstrFileName, "wb"))) return false ;

//set file position to beginning rewind(file) ;

//write one (only) data structure

if (fwrite(A10, sizeof (AGA10STRUCT), 1, file))

{
fclose (file) ; return true;

}

else
{

// problem encountered; close and return 'false' fclose (file) ;

return false ;

}
}




