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.
169 lines
3.7 KiB
169 lines
3.7 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $Workfile: $
|
||
|
// $Date: $
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// $Log: $
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "hammer.h"
|
||
|
#include "ReplaceTexDlg.h"
|
||
|
#include "MainFrm.h"
|
||
|
#include "GlobalFunctions.h"
|
||
|
#include "TextureBrowser.h"
|
||
|
#include "TextureSystem.h"
|
||
|
#include "mapdoc.h"
|
||
|
|
||
|
|
||
|
// memdbgon must be the last include file in a .cpp file!!!
|
||
|
#include <tier0/memdbgon.h>
|
||
|
|
||
|
|
||
|
CReplaceTexDlg::CReplaceTexDlg(int nSelected, CWnd* pParent /*=NULL*/)
|
||
|
: CDialog(CReplaceTexDlg::IDD, pParent)
|
||
|
{
|
||
|
//{{AFX_DATA_INIT(CReplaceTexDlg)
|
||
|
m_iSearchAll = nSelected ? FALSE : TRUE;
|
||
|
m_strFind = _T("");
|
||
|
m_strReplace = _T("");
|
||
|
m_iAction = 0;
|
||
|
m_bMarkOnly = FALSE;
|
||
|
m_bHidden = FALSE;
|
||
|
m_bRescaleTextureCoordinates = false;
|
||
|
//}}AFX_DATA_INIT
|
||
|
|
||
|
m_nSelected = nSelected;
|
||
|
}
|
||
|
|
||
|
|
||
|
void CReplaceTexDlg::DoDataExchange(CDataExchange* pDX)
|
||
|
{
|
||
|
CDialog::DoDataExchange(pDX);
|
||
|
//{{AFX_DATA_MAP(CReplaceTexDlg)
|
||
|
DDX_Control(pDX, IDC_FIND, m_cFind);
|
||
|
DDX_Control(pDX, IDC_REPLACE, m_cReplace);
|
||
|
DDX_Control(pDX, IDC_REPLACEPIC, m_cReplacePic);
|
||
|
DDX_Control(pDX, IDC_FINDPIC, m_cFindPic);
|
||
|
DDX_Radio(pDX, IDC_INMARKED, m_iSearchAll);
|
||
|
DDX_Text(pDX, IDC_FIND, m_strFind);
|
||
|
DDX_Text(pDX, IDC_REPLACE, m_strReplace);
|
||
|
DDX_Radio(pDX, IDC_ACTION, m_iAction);
|
||
|
DDX_Check(pDX, IDC_MARKONLY, m_bMarkOnly);
|
||
|
DDX_Check(pDX, IDC_HIDDEN, m_bHidden);
|
||
|
DDX_Check(pDX, IDC_RESCALETEXTURECOORDINATES, m_bRescaleTextureCoordinates);
|
||
|
//}}AFX_DATA_MAP
|
||
|
}
|
||
|
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CReplaceTexDlg, CDialog)
|
||
|
//{{AFX_MSG_MAP(CReplaceTexDlg)
|
||
|
ON_BN_CLICKED(IDC_BROWSEREPLACE, OnBrowsereplace)
|
||
|
ON_BN_CLICKED(IDC_BROWSEFIND, OnBrowsefind)
|
||
|
ON_EN_UPDATE(IDC_FIND, OnUpdateFind)
|
||
|
ON_EN_UPDATE(IDC_REPLACE, OnUpdateReplace)
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CReplaceTexDlg message handlers
|
||
|
|
||
|
|
||
|
void CReplaceTexDlg::BrowseTex(int iEdit)
|
||
|
{
|
||
|
CString strTex;
|
||
|
CWnd *pWnd = GetDlgItem(iEdit);
|
||
|
|
||
|
pWnd->GetWindowText(strTex);
|
||
|
|
||
|
CTextureBrowser *pBrowser = new CTextureBrowser(GetMainWnd());
|
||
|
pBrowser->SetUsed(iEdit == IDC_FIND);
|
||
|
pBrowser->SetInitialTexture(strTex);
|
||
|
|
||
|
if (pBrowser->DoModal() == IDOK)
|
||
|
{
|
||
|
IEditorTexture *pTex = g_Textures.FindActiveTexture(pBrowser->m_cTextureWindow.szCurTexture);
|
||
|
char szName[MAX_PATH];
|
||
|
if (pTex != NULL)
|
||
|
{
|
||
|
pTex->GetShortName(szName);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
szName[0] = '\0';
|
||
|
}
|
||
|
pWnd->SetWindowText(szName);
|
||
|
}
|
||
|
|
||
|
delete pBrowser;
|
||
|
}
|
||
|
|
||
|
void CReplaceTexDlg::OnBrowsereplace()
|
||
|
{
|
||
|
BrowseTex(IDC_REPLACE);
|
||
|
}
|
||
|
|
||
|
void CReplaceTexDlg::OnBrowsefind()
|
||
|
{
|
||
|
BrowseTex(IDC_FIND);
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// find/replace text string updates:
|
||
|
//
|
||
|
|
||
|
void CReplaceTexDlg::OnUpdateFind()
|
||
|
{
|
||
|
// get texture window and set texture in there
|
||
|
CString strTex;
|
||
|
m_cFind.GetWindowText(strTex);
|
||
|
IEditorTexture *pTex = g_Textures.FindActiveTexture(strTex);
|
||
|
m_cFindPic.SetTexture(pTex);
|
||
|
}
|
||
|
|
||
|
void CReplaceTexDlg::OnUpdateReplace()
|
||
|
{
|
||
|
// get texture window and set texture in there
|
||
|
CString strTex;
|
||
|
m_cReplace.GetWindowText(strTex);
|
||
|
IEditorTexture *pTex = g_Textures.FindActiveTexture(strTex);
|
||
|
m_cReplacePic.SetTexture(pTex);
|
||
|
}
|
||
|
|
||
|
BOOL CReplaceTexDlg::OnInitDialog()
|
||
|
{
|
||
|
CDialog::OnInitDialog();
|
||
|
|
||
|
if(!m_nSelected)
|
||
|
{
|
||
|
CWnd *pWnd = GetDlgItem(IDC_INMARKED);
|
||
|
pWnd->EnableWindow(FALSE);
|
||
|
}
|
||
|
|
||
|
OnUpdateFind();
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
void CReplaceTexDlg::DoReplaceTextures()
|
||
|
{
|
||
|
CMapDoc *pDoc = CMapDoc::GetActiveMapDoc();
|
||
|
if ( pDoc )
|
||
|
{
|
||
|
pDoc->ReplaceTextures(
|
||
|
m_strFind,
|
||
|
m_strReplace,
|
||
|
m_iSearchAll,
|
||
|
m_iAction | ( m_bMarkOnly ? 0x100 : 0 ),
|
||
|
m_bHidden,
|
||
|
(m_bRescaleTextureCoordinates != 0)
|
||
|
);
|
||
|
}
|
||
|
}
|