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.
173 lines
5.1 KiB
173 lines
5.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: A dialog that is invoked when a new visgroup is created. |
|
// It lets the user pick an existing visgroup or create a new one. |
|
// |
|
//=============================================================================// |
|
|
|
#include "stdafx.h" |
|
#include "MapDoc.h" |
|
#include "NewVisGroupDlg.h" |
|
#include "hammer.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include <tier0/memdbgon.h> |
|
|
|
|
|
static const unsigned int g_uSelChangeMsg = ::RegisterWindowMessage(GROUPLIST_MSG_SEL_CHANGE); |
|
static BOOL s_bLastHideObjects = TRUE; |
|
|
|
|
|
BEGIN_MESSAGE_MAP(CNewVisGroupDlg, CDialog) |
|
//{{AFX_MSG_MAP(CNewVisGroupDlg) |
|
ON_REGISTERED_MESSAGE(g_uSelChangeMsg, OnSelChangeGroupList) |
|
ON_COMMAND(IDC_PLACE_IN_EXISTING_VISGROUP, OnPlaceInExistingVisGroup) |
|
ON_COMMAND(IDC_CREATE_NEW_VISGROUP, OnCreateNewVisGroup) |
|
//}}AFX_MSG_MAP |
|
END_MESSAGE_MAP() |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : pParent - |
|
//----------------------------------------------------------------------------- |
|
CNewVisGroupDlg::CNewVisGroupDlg(CString &str, CWnd *pParent) |
|
: CDialog(CNewVisGroupDlg::IDD, pParent) |
|
{ |
|
m_pPickedVisGroup = NULL; |
|
|
|
//{{AFX_DATA_INIT(CNewVisGroupDlg) |
|
m_strName = str; |
|
//}}AFX_DATA_INIT |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : pDX - |
|
//----------------------------------------------------------------------------- |
|
void CNewVisGroupDlg::DoDataExchange(CDataExchange* pDX) |
|
{ |
|
CDialog::DoDataExchange(pDX); |
|
//{{AFX_DATA_MAP(CNewVisGroupDlg) |
|
DDX_Check(pDX, IDC_REMOVE_FROM_ALL, m_bRemoveFromOtherGroups); |
|
DDX_Check(pDX, IDC_HIDE_OBJECTS, m_bHideObjects); |
|
DDX_Text(pDX, IDC_VISGROUP_NAME, m_strName); |
|
//}}AFX_DATA_MAP |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
BOOL CNewVisGroupDlg::OnInitDialog(void) |
|
{ |
|
m_bHideObjects = s_bLastHideObjects; |
|
|
|
CDialog::OnInitDialog(); |
|
|
|
CButton *pButton = (CButton *)GetDlgItem(IDC_CREATE_NEW_VISGROUP); |
|
pButton->SetCheck(1); |
|
|
|
m_cGroupList.SubclassDlgItem(IDC_GROUP_LIST, this); |
|
UpdateGroupList(); |
|
|
|
CEdit *pEdit = (CEdit *)GetDlgItem(IDC_GROUP_LIST); |
|
pEdit->EnableWindow(FALSE); |
|
|
|
return TRUE; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Returns the visgroup name that was entered in the dialog. |
|
//----------------------------------------------------------------------------- |
|
void CNewVisGroupDlg::GetName(CString &str) |
|
{ |
|
str = m_strName; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CNewVisGroupDlg::OnOK() |
|
{ |
|
CDialog::OnOK(); |
|
s_bLastHideObjects = m_bHideObjects; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Switches the mode of the dialog to pick an existing visgroup rather than |
|
// create a new one. |
|
//----------------------------------------------------------------------------- |
|
void CNewVisGroupDlg::OnPlaceInExistingVisGroup() |
|
{ |
|
CEdit *pEdit = (CEdit *)GetDlgItem(IDC_VISGROUP_NAME); |
|
pEdit->EnableWindow(FALSE); |
|
|
|
pEdit = (CEdit *)GetDlgItem(IDC_GROUP_LIST); |
|
pEdit->EnableWindow(TRUE); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Switches the mode of the dialog to create a new visgroup rather than |
|
// pick an existing one. |
|
//----------------------------------------------------------------------------- |
|
void CNewVisGroupDlg::OnCreateNewVisGroup() |
|
{ |
|
CEdit *pEdit = (CEdit *)GetDlgItem(IDC_VISGROUP_NAME); |
|
pEdit->EnableWindow(TRUE); |
|
|
|
pEdit = (CEdit *)GetDlgItem(IDC_GROUP_LIST); |
|
pEdit->EnableWindow(FALSE); |
|
|
|
m_pPickedVisGroup = NULL; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Handles selection change in the visgroup list. |
|
//----------------------------------------------------------------------------- |
|
LRESULT CNewVisGroupDlg::OnSelChangeGroupList(WPARAM wParam, LPARAM lParam) |
|
{ |
|
m_pPickedVisGroup = m_cGroupList.GetSelectedVisGroup(); |
|
return 0; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CNewVisGroupDlg::UpdateGroupList(void) |
|
{ |
|
m_cGroupList.SetRedraw(false); |
|
m_cGroupList.DeleteAllItems(); |
|
|
|
CMapDoc *pDoc = CMapDoc::GetActiveMapDoc(); |
|
if (pDoc != NULL) |
|
{ |
|
int nCount = pDoc->VisGroups_GetRootCount(); |
|
for (int i = 0; i < nCount; i++) |
|
{ |
|
CVisGroup *pGroup = pDoc->VisGroups_GetRootVisGroup(i); |
|
m_cGroupList.AddVisGroup(pGroup); |
|
} |
|
} |
|
|
|
m_cGroupList.ExpandAll(); |
|
m_cGroupList.SetRedraw(true); |
|
m_cGroupList.Invalidate(); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
CVisGroup *CNewVisGroupDlg::GetPickedVisGroup(void) |
|
{ |
|
return m_pPickedVisGroup; |
|
} |
|
|
|
|