Files
firestorm/Gameleap/code/mw4/Tools/TCTb/FeaturesTab.cpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

160 lines
3.4 KiB
C++

// FeaturesTab.cpp : implementation file
//
#include "stdafx.h"
#include "tctb.h"
#include "FeaturesTab.h"
#include "FeatureEditDlg.h"
#include "Feature.h"
#ifdef _DEBUG
//#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFeaturesTab property page
IMPLEMENT_DYNCREATE(CFeaturesTab, CPropertyPage)
CFeaturesTab::CFeaturesTab() : CPropertyPage(CFeaturesTab::IDD)
{
//{{AFX_DATA_INIT(CFeaturesTab)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
PList=NULL;
}
CFeaturesTab::~CFeaturesTab()
{
}
void CFeaturesTab::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFeaturesTab)
DDX_Control(pDX, IDC_FEATURELIST, m_FList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFeaturesTab, CPropertyPage)
//{{AFX_MSG_MAP(CFeaturesTab)
ON_NOTIFY(NM_DBLCLK, IDC_FEATURELIST, OnDblclkFeaturelist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFeaturesTab message handlers
void CFeaturesTab::UpdateList(CListBox *paths)
{
int i;
CString cpath;
m_FList.DeleteAllItems();
for(i=0;i<paths->GetCount();i++)
{
paths->GetText(i,cpath);
FillBranch(cpath);
}
}
void CFeaturesTab::FillBranch(CString cpath)
{
WIN32_FIND_DATA fd;
HANDLE han;
CString ext;
cpath+="\\";
han=FindFirstFile(cpath+"*.*",&fd);
LVFINDINFO lvf;
lvf.flags=LVFI_STRING;
Feature fet;
if(INVALID_HANDLE_VALUE!=han)
do
{
if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY
&& strcmp(fd.cFileName,".") && strcmp(fd.cFileName,".."))
{
FillBranch(cpath+fd.cFileName);
}
else
{
ext=fd.cFileName;
ext=ext.Right(ext.GetLength()-(ext.ReverseFind('.')+1));
lvf.psz=fd.cFileName;
if(ext=="tctf" && m_FList.FindItem(&lvf)==-1)
{
fet.Load(cpath+fd.cFileName);
m_FList.InsertItem(0,fd.cFileName);
m_FList.SetItemText(m_FList.FindItem(&lvf),1,fet.GetName());
m_FList.SetItemText(m_FList.FindItem(&lvf),2,cpath);
}
}
}
while(FindNextFile(han,&fd));
}
BOOL CFeaturesTab::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_FList.InsertColumn(0,"File",LVCFMT_LEFT,100);
m_FList.InsertColumn(1,"Name",LVCFMT_LEFT,100);
m_FList.InsertColumn(2,"Path",LVCFMT_LEFT,100);
// LayList.SetImageList(imlist,LVSIL_SMALL);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CFeaturesTab::OnSetActive()
{
if(PList && PList->Changed==TRUE)
{
UpdateList(&PList->m_PList);
PList->Changed=FALSE;
}
return CPropertyPage::OnSetActive();
}
void CFeaturesTab::OnDblclkFeaturelist(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CFeatureEditDlg dlg;
char nme[MAX_PATH],pth[MAX_PATH];
CString str;
POSITION p;
int sel;
p=m_FList.GetFirstSelectedItemPosition();
if(p!=NULL)
{
sel=m_FList.GetNextSelectedItem(p);
m_FList.GetItemText(sel,2,pth,MAX_PATH);
m_FList.GetItemText(sel,0,nme,MAX_PATH);
str=pth;
str+=nme;
Feature fet(str);
dlg.SetData(fet);
if(dlg.DoModal()==IDOK)
{
dlg.GetData(&fet);
fet.Save();
}
UpdateList(&PList->m_PList);
}
*pResult = 0;
}