You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
3.8 KiB
160 lines
3.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
// RunMapCfgDlg.cpp : implementation file |
|
// |
|
|
|
#include "stdafx.h" |
|
#include "hammer.h" |
|
#include "RunMapCfgDlg.h" |
|
#include "StrDlg.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include <tier0/memdbgon.h> |
|
|
|
///////////////////////////////////////////////////////////////////////////// |
|
// CRunMapCfgDlg dialog |
|
|
|
|
|
CRunMapCfgDlg::CRunMapCfgDlg(CWnd* pParent /*=NULL*/) |
|
: CDialog(CRunMapCfgDlg::IDD, pParent) |
|
{ |
|
//{{AFX_DATA_INIT(CRunMapCfgDlg) |
|
// NOTE: the ClassWizard will add member initialization here |
|
//}}AFX_DATA_INIT |
|
|
|
m_pApp = (CHammer*) AfxGetApp(); |
|
} |
|
|
|
|
|
void CRunMapCfgDlg::DoDataExchange(CDataExchange* pDX) |
|
{ |
|
CDialog::DoDataExchange(pDX); |
|
//{{AFX_DATA_MAP(CRunMapCfgDlg) |
|
DDX_Control(pDX, IDC_CONFIGURATIONS, m_cConfigurations); |
|
//}}AFX_DATA_MAP |
|
} |
|
|
|
|
|
BEGIN_MESSAGE_MAP(CRunMapCfgDlg, CDialog) |
|
//{{AFX_MSG_MAP(CRunMapCfgDlg) |
|
ON_BN_CLICKED(IDC_NEW, OnNew) |
|
ON_BN_CLICKED(IDC_REMOVE, OnRemove) |
|
ON_BN_CLICKED(IDC_RENAME, OnRename) |
|
ON_BN_CLICKED(IDC_COPY, OnCopy) |
|
//}}AFX_MSG_MAP |
|
END_MESSAGE_MAP() |
|
|
|
///////////////////////////////////////////////////////////////////////////// |
|
// CRunMapCfgDlg message handlers |
|
|
|
void CRunMapCfgDlg::AddSequenceToList(int iIndex, CCommandSequence *pSeq) |
|
{ |
|
iIndex = m_cConfigurations.InsertString(iIndex, pSeq->m_szName); |
|
m_cConfigurations.SetItemDataPtr(iIndex, PVOID(pSeq)); |
|
m_cConfigurations.SetCurSel(iIndex); |
|
} |
|
|
|
void CRunMapCfgDlg::OnNew() |
|
{ |
|
// add a new sequence |
|
CStrDlg dlg(0, "", "Name:", "New Configuration"); |
|
if(dlg.DoModal() == IDCANCEL) |
|
return; |
|
|
|
// add it to the list in the app |
|
CCommandSequence *pSeq = new CCommandSequence; |
|
strcpy(pSeq->m_szName, dlg.m_string); |
|
m_pApp->m_CmdSequences.Add(pSeq); |
|
|
|
AddSequenceToList(-1, pSeq); |
|
} |
|
|
|
void CRunMapCfgDlg::OnRemove() |
|
{ |
|
int iSel = m_cConfigurations.GetCurSel(); |
|
if(iSel == LB_ERR) |
|
return; // nothing selected |
|
if(AfxMessageBox("Do you want to remove this configuration?", |
|
MB_YESNO) == IDNO) |
|
return; // don't want to |
|
CCommandSequence *pSeq = (CCommandSequence*) |
|
m_cConfigurations.GetItemDataPtr(iSel); |
|
|
|
// find it in the app's array |
|
for(int i = 0; i < m_pApp->m_CmdSequences.GetSize(); i++) |
|
{ |
|
if(pSeq == m_pApp->m_CmdSequences[i]) |
|
{ |
|
delete pSeq; |
|
m_pApp->m_CmdSequences.RemoveAt(i); |
|
m_cConfigurations.DeleteString(iSel); |
|
return; // done |
|
} |
|
} |
|
|
|
// shouldn't reach here - |
|
Assert(0); |
|
} |
|
|
|
void CRunMapCfgDlg::OnRename() |
|
{ |
|
int iSel = m_cConfigurations.GetCurSel(); |
|
if(iSel == LB_ERR) |
|
return; // nothing selected |
|
CCommandSequence *pSeq = (CCommandSequence*) |
|
m_cConfigurations.GetItemDataPtr(iSel); |
|
|
|
CStrDlg dlg(0, pSeq->m_szName, "Name:", "Rename Configuration"); |
|
if(dlg.DoModal() == IDCANCEL) |
|
return; |
|
|
|
strcpy(pSeq->m_szName, dlg.m_string); |
|
|
|
m_cConfigurations.DeleteString(iSel); |
|
AddSequenceToList(iSel, pSeq); |
|
} |
|
|
|
BOOL CRunMapCfgDlg::OnInitDialog() |
|
{ |
|
CDialog::OnInitDialog(); |
|
|
|
// add the configurations into the list |
|
int iSize = m_pApp->m_CmdSequences.GetSize(); |
|
for(int i = 0; i < iSize; i++) |
|
{ |
|
CCommandSequence *pSeq = m_pApp->m_CmdSequences[i]; |
|
int iIndex = m_cConfigurations.AddString(pSeq->m_szName); |
|
m_cConfigurations.SetItemDataPtr(iIndex, PVOID(pSeq)); |
|
} |
|
|
|
return TRUE; |
|
} |
|
|
|
void CRunMapCfgDlg::OnCopy() |
|
{ |
|
int iSel = m_cConfigurations.GetCurSel(); |
|
if(iSel == LB_ERR) |
|
return; // nothing selected |
|
|
|
// add a new sequence |
|
CStrDlg dlg(0, "", "Name:", "Copy Configuration"); |
|
if(dlg.DoModal() == IDCANCEL) |
|
return; |
|
|
|
// add it to the list in the app |
|
CCommandSequence *pSeq = new CCommandSequence; |
|
strcpy(pSeq->m_szName, dlg.m_string); |
|
m_pApp->m_CmdSequences.Add(pSeq); |
|
|
|
CCommandSequence *pSrcSeq = (CCommandSequence*) |
|
m_cConfigurations.GetItemDataPtr(iSel); |
|
|
|
pSeq->m_Commands.Append(pSrcSeq->m_Commands); |
|
|
|
AddSequenceToList(-1, pSeq); |
|
}
|
|
|