161 lines
3.8 KiB
C++
161 lines
3.8 KiB
C++
//========= 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);
|
|
}
|