Descent3/legacy/editor/DallasImportDlg.cpp
Louis Gombert 31b63bb79f Add license to legacy utilities
Generated using script:
for file in \$(find ./legacy -type f | \grep -E "\.cpp|\.h")
do
  mv $file temp.xxx
  cp gplheader $file
  cat temp.xxx >> $file
done
2024-04-20 18:33:12 +02:00

174 lines
4.1 KiB
C++

/*
* Descent 3
* Copyright (C) 2024 Parallax Software
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// DallasImportDlg.cpp : implementation file
//
#include "stdafx.h"
#include "editor.h"
#include "cfile.h"
#include "DallasMainDlg.h"
#include "DallasUtilities.h"
#include "DallasImportDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDallasImportDlg dialog
CDallasImportDlg::CDallasImportDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDallasImportDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDallasImportDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_ScriptName="";
m_Filename="";
}
void CDallasImportDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDallasImportDlg)
DDX_Control(pDX, IDC_SCRIPT_LIST, m_ScriptListBox);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDallasImportDlg, CDialog)
//{{AFX_MSG_MAP(CDallasImportDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDallasImportDlg message handlers
void CDallasImportDlg::OnOK()
{
// TODO: Add extra validation here
int index=m_ScriptListBox.GetCurSel();
if(index==LB_ERR) return;
m_ScriptListBox.GetText(index,m_ScriptName);
CDialog::OnOK();
}
void CDallasImportDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
BOOL CDallasImportDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
FillScriptListBox(m_Filename.GetBuffer(0));
m_ScriptListBox.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CDallasImportDlg::FillScriptListBox(char *filename)
{
CFILE *infile;
char linebuf[2048];
char *line;
int linenum;
int valid_lines_read;
// Try to open the file for loading
infile=cfopen (filename,"rt");
if (!infile)
{
CString msg;
msg.Format("Unable to open \"%s\"!",filename);
MessageBox(msg,"Script Library File Not Found!",MB_OK|MB_ICONEXCLAMATION);
return FALSE;
}
linenum=0;
// Read in and parse each line of the file
while (!cfeof(infile)) {
// Clear the buffer
strcpy(linebuf,"");
// Read in a line from the file
cf_ReadString(linebuf, sizeof(linebuf), infile);
linenum++;
// Remove whitespace padding at start and end of line
RemoveTrailingWhitespace(linebuf);
line=SkipInitialWhitespace(linebuf);
// Check for Start of Script Block Section
if (strncmp(line,SCRIPT_START_TAG,strlen(SCRIPT_START_TAG)) == 0) {
bool done = false;
// Set valid line counter to track whether we're reading header info or tree nodes
valid_lines_read=0;
// Read all the lines in the block
while (!done && !cfeof(infile)) {
strcpy(linebuf,"");
cf_ReadString(linebuf,sizeof(linebuf),infile);
linenum++;
// Remove whitespace padding at start and end of line
RemoveTrailingWhitespace(linebuf);
line=SkipInitialWhitespace(linebuf);
// If it's an empty line or a comment, skip it
if(strlen(line)==0 || strncmp(line,"//",2)==0)
continue;
// Check for End of Script Block Section
if (strncmp(line,SCRIPT_END_TAG,strlen(SCRIPT_END_TAG)) == 0) {
done=true;
continue;
}
// See if it should be the script name line
if(valid_lines_read==0) {
m_ScriptListBox.AddString(line);
valid_lines_read++;
continue;
}
}
}
}
cfclose(infile);
return TRUE;
}