windows-nt/Source/XPSP1/NT/shell/osshell/accesory/terminal/dofile.c
2020-09-26 16:20:57 +08:00

252 lines
6.7 KiB
C

/*===========================================================================*/
/* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */
/* Houston, Texas */
/*===========================================================================*/
#define NOLSTRING TRUE /* jtf win3 mod */
#include <windows.h>
#include "port1632.h"
#include "dcrc.h"
#include "dynacomm.h"
#include "fileopen.h"
#include "task.h"
#include <direct.h> /* adding this for getcwd prototype - sdj */
/*---------------------------------------------------------------------------*/
/* File Document Data Routines [mbb] */
/*---------------------------------------------------------------------------*/
VOID getFileDocData(FILEDOCTYPE fileDocType, BYTE *filePath, BYTE *fileName,
BYTE *fileExt, BYTE *title)
{
if(filePath != NULL)
strcpy(filePath, fileDocData[fileDocType].filePath);
if(fileName != NULL)
strcpy(fileName, fileDocData[fileDocType].fileName);
if(fileExt != NULL)
strcpy(fileExt, fileDocData[fileDocType].fileExt);
if(title != NULL)
strcpy(title, fileDocData[fileDocType].title);
}
VOID setFileDocData(FILEDOCTYPE fileDocType, BYTE *filePath, BYTE *fileName,
BYTE *fileExt, BYTE *title)
{
if(filePath != NULL)
strcpy(fileDocData[fileDocType].filePath, filePath);
if(fileName != NULL)
strcpy(fileDocData[fileDocType].fileName, fileName);
if(fileExt != NULL)
strcpy(fileDocData[fileDocType].fileExt, fileExt);
if(title != NULL)
{
if(strlen(title) >= FO_MAXPATHLENGTH)
title[FO_MAXPATHLENGTH-1] = 0;
strcpy(fileDocData[fileDocType].title, title);
}
}
VOID getDataPath(FILEDOCTYPE fileDocType, BYTE *filePath, BYTE *fileName)
{
BYTE savePath[FO_MAXPATHLENGTH];
if(setPath(fileDocData[fileDocType].filePath, FALSE, savePath))
{
setFilePath(fileName);
#ifdef ORGCODE
_getcwd(filePath);
#else
_getcwd(filePath,PATHLEN);
#endif
setPath(savePath, FALSE, NULL);
}
}
/*---------------------------------------------------------------------------*/
/* dbFileType() - [mbb] */
/*---------------------------------------------------------------------------*/
BOOL APIENTRY dbFileType(HWND hDlg, UINT message, WPARAM wParam, LONG lParam)
//HWND hDlg;
//UINT message;
//WPARAM wParam;
//LONG lParam;
{
updateTimer();
switch(message)
{
case WM_INITDIALOG:
initDlgPos(hDlg);
switch(saveFileType)
{
case FILE_NDX_SETTINGS:
wParam = ITMSETTINGS;
break;
}
return(TRUE);
case WM_COMMAND:
switch(GET_WM_COMMAND_ID(wParam, lParam))
{
case IDOK:
switch(whichGrpButton(hDlg, ITMSETTINGS, ITMMEMO))
{
case ITMSETTINGS:
wParam = FILE_NDX_SETTINGS;
break;
}
break;
case IDCANCEL:
wParam = FALSE;
break;
default:
return(TRUE);
}
break;
default:
return(FALSE);
}
EndDialog(hDlg, wParam);
return(TRUE);
}
/*---------------------------------------------------------------------------*/
/* doFileNew() - [mbb] */
/*---------------------------------------------------------------------------*/
VOID doFileNew()
{
INT fileType;
BYTE szTitle[MINRESSTR];
fileType = FILE_NDX_SETTINGS;
if(childZoomStatus(0x0001, 0))
childZoomStatus(0, 0x8000);
LoadString(hInst, STR_TERMINAL, szTitle, MINRESSTR);
termFile(fileDocData[fileType].filePath, NULL_STR, fileDocData[fileType].fileExt,
(*fileDocData[fileType].title == 0) ? szTitle : fileDocData[fileType].title,
(*fileDocData[fileType].title == 0) ? TF_DEFTITLE : 0);
}
/*---------------------------------------------------------------------------*/
/* doFileOpen() - [mbb] */
/*---------------------------------------------------------------------------*/
INT_PTR APIENTRY FO_FileOpenType(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
INT fileType;
switch(message)
{
case WM_INITDIALOG:
switch(pFOData->nType = saveFileType)
{
case FILE_NDX_SETTINGS:
wParam = FO_IDSETTINGS;
break;
}
break;
case WM_COMMAND:
switch(GET_WM_COMMAND_ID(wParam, lParam))
{
case FO_IDSETTINGS:
fileType = FILE_NDX_SETTINGS;
break;
default:
return(TRUE);
}
if(pFOData->nType == fileType)
return(TRUE);
pFOData->nType = fileType;
break;
case WM_NULL:
if(wParam)
saveFileType = pFOData->nType;
return(FALSE);
}
return(FALSE);
}
VOID doFileOpen()
{
BYTE filePath[FO_MAXPATHLENGTH];
BYTE fileName[FO_MAXFILELENGTH];
BYTE fileExt[FO_MAXEXTLENGTH];
BYTE szTitle[MINRESSTR];
*filePath = 0;
*fileName = 0;
*fileExt = 0;
strcpy(fileName, "*.TRM");
strcpy(fileExt, "TRM");
if(termData.filePath[strlen(termData.filePath) - 1] != '\\')
strcat(termData.filePath, "\\");
if(FileOpen(termData.filePath, fileName, NULL, fileExt, NULL, FO_DBFILETYPE,
FO_FileOpenType, FO_FILEEXIST | FO_FORCEEXTENT))
{
strcpy(fileDocData[saveFileType].filePath, filePath);
strcpy(fileDocData[saveFileType].fileName, fileName);
if(childZoomStatus(0x0001, 0))
childZoomStatus(0, 0x8000);
LoadString(hInst, STR_TERMINAL, szTitle, MINRESSTR);
termFile(termData.filePath, fileName, fileDocData[FILE_NDX_SETTINGS].fileExt,
(*fileDocData[FILE_NDX_SETTINGS].title == 0) ? szTitle : fileDocData[FILE_NDX_SETTINGS].title,
(*fileDocData[FILE_NDX_SETTINGS].title == 0) ? TF_DEFTITLE : 0);
}
}
/*---------------------------------------------------------------------------*/
/* doFileClose() - [mbb] */
/*---------------------------------------------------------------------------*/
VOID doFileClose()
{
termCloseFile();
}
/*---------------------------------------------------------------------------*/
/* doFileSave() - [mbb] */
/*---------------------------------------------------------------------------*/
VOID doFileSave()
{
termSaveFile(FALSE);
}
/*---------------------------------------------------------------------------*/
/* doFileSaveAs() - [mbb] */
/*---------------------------------------------------------------------------*/
VOID doFileSaveAs()
{
termSaveFile(TRUE);
}