123
This commit is contained in:
186
Editor/ToolsConfigPage.cpp
Normal file
186
Editor/ToolsConfigPage.cpp
Normal file
@@ -0,0 +1,186 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Crytek Engine Source File.
|
||||
// Copyright (C), Crytek Studios, 2002.
|
||||
// -------------------------------------------------------------------------
|
||||
// File name: toolsconfigpage.cpp
|
||||
// Version: v1.00
|
||||
// Created: 27/11/2002 by Timur.
|
||||
// Compilers: Visual Studio.NET
|
||||
// Description:
|
||||
// -------------------------------------------------------------------------
|
||||
// History:
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ToolsConfigPage.h"
|
||||
#include "ExternalTools.h"
|
||||
|
||||
// CToolsConfigPage dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CToolsConfigPage, CXTResizePropertyPage)
|
||||
CToolsConfigPage::CToolsConfigPage()
|
||||
: CXTResizePropertyPage(CToolsConfigPage::IDD)
|
||||
{
|
||||
|
||||
// Call CXTEditListBox::SetListEditStyle to set the type of edit list. You can
|
||||
// pass in LBS_XT_NOTOOLBAR if you don't want the toolbar displayed.
|
||||
m_editList.SetListEditStyle(_T(" &Tools:"),
|
||||
LBS_XT_DEFAULT);
|
||||
}
|
||||
|
||||
CToolsConfigPage::~CToolsConfigPage()
|
||||
{
|
||||
// Free tools.
|
||||
for (int i = 0; i < m_tools.size(); i++)
|
||||
{
|
||||
delete m_tools[i];
|
||||
}
|
||||
m_tools.clear();
|
||||
}
|
||||
|
||||
void CToolsConfigPage::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CXTResizePropertyPage::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_TXT_EDIT1, m_txtEdit1);
|
||||
DDX_Control(pDX, IDC_EDIT1, m_edit1);
|
||||
DDX_Control(pDX, IDC_TOGGLEVARONOFF, m_toggleVar);
|
||||
DDX_Control(pDX, IDC_EDIT_LIST, m_editList);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CToolsConfigPage, CXTResizePropertyPage)
|
||||
ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
|
||||
ON_BN_CLICKED( IDC_TOGGLEVARONOFF,OnToggleVar )
|
||||
ON_LBN_SELCHANGE(IDC_EDIT_LIST, OnSelchangeEditList)
|
||||
ON_LBN_XT_NEWITEM(IDC_EDIT_LIST, OnNewItem)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CToolsConfigPage message handlers
|
||||
BOOL CToolsConfigPage::OnInitDialog()
|
||||
{
|
||||
CXTResizePropertyPage::OnInitDialog();
|
||||
|
||||
m_editList.SetCurSel(0);
|
||||
// OnSelchangeEditList();
|
||||
|
||||
// Set control resizing.
|
||||
SetResize(IDC_EDIT_LIST, SZ_TOP_LEFT, SZ_BOTTOM_RIGHT);
|
||||
SetResize(IDC_TXT_EDIT1, SZ_BOTTOM_LEFT, SZ_BOTTOM_LEFT);
|
||||
SetResize(IDC_EDIT1, SZ_BOTTOM_LEFT, SZ_BOTTOM_RIGHT);
|
||||
|
||||
CExternalToolsManager *pTools = GetIEditor()->GetExternalToolsManager();
|
||||
for (int i = 0; i < pTools->GetToolsCount(); i++)
|
||||
{
|
||||
Tool *tool = new Tool;
|
||||
CExternalTool* extTool = pTools->GetTool(i);
|
||||
tool->bToggle = extTool->m_variableToggle;
|
||||
tool->command = extTool->m_command;
|
||||
|
||||
int id = m_editList.AddString(extTool->m_title);
|
||||
m_editList.SetItemData( id,(DWORD_PTR)tool );
|
||||
}
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CToolsConfigPage::OnOK()
|
||||
{
|
||||
CExternalToolsManager *pTools = GetIEditor()->GetExternalToolsManager();
|
||||
pTools->ClearTools();
|
||||
CString title;
|
||||
for (int i = 0; i < m_editList.GetCount(); i++)
|
||||
{
|
||||
m_editList.GetText(i,title);
|
||||
if (title.IsEmpty())
|
||||
continue;
|
||||
|
||||
Tool *tool = (Tool*)m_editList.GetItemData(i);
|
||||
if (!tool)
|
||||
continue;
|
||||
CExternalTool *extTool = new CExternalTool;
|
||||
|
||||
extTool->m_title = title;
|
||||
extTool->m_command = tool->command;
|
||||
extTool->m_variableToggle = tool->bToggle;
|
||||
pTools->AddTool(extTool);
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CToolsConfigPage::OnSelchangeEditList()
|
||||
{
|
||||
int iIndex = m_editList.GetCurSel();
|
||||
|
||||
Tool* pTool = (Tool*)m_editList.GetItemData(iIndex);
|
||||
if (pTool != NULL && iIndex != LB_ERR)
|
||||
{
|
||||
CString command = pTool->command;
|
||||
m_edit1.SetWindowText( command );
|
||||
m_toggleVar.SetCheck( (pTool->bToggle)?BST_CHECKED:BST_UNCHECKED );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_edit1.SetWindowText(_T(""));
|
||||
m_toggleVar.SetCheck(0);
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CToolsConfigPage::ReadFromControls( int ctrl )
|
||||
{
|
||||
int iIndex = m_editList.GetCurSel();
|
||||
|
||||
if (iIndex != LB_ERR)
|
||||
{
|
||||
Tool* pTool = (Tool*)m_editList.GetItemData(iIndex);
|
||||
if (pTool != NULL)
|
||||
{
|
||||
switch (ctrl)
|
||||
{
|
||||
case CTRL_COMMAND:
|
||||
m_edit1.GetWindowText( pTool->command );
|
||||
break;
|
||||
case CTRL_TOGGLE:
|
||||
pTool->bToggle = m_toggleVar.GetCheck() != 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CToolsConfigPage::OnChangeEdit1()
|
||||
{
|
||||
ReadFromControls(CTRL_COMMAND);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CToolsConfigPage::OnToggleVar()
|
||||
{
|
||||
ReadFromControls(CTRL_TOGGLE);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CToolsConfigPage::OnNewItem()
|
||||
{
|
||||
int iItem = m_editList.GetCurrentIndex();
|
||||
if (iItem != -1)
|
||||
{
|
||||
Tool* pTool = new Tool;
|
||||
m_tools.push_back(pTool);
|
||||
|
||||
pTool->command = "";
|
||||
pTool->bToggle = false;
|
||||
|
||||
m_editList.SetItemData(iItem, (DWORD_PTR)pTool);
|
||||
m_editList.SetCurSel(iItem);
|
||||
|
||||
m_edit1.SetWindowText(_T(""));
|
||||
m_toggleVar.SetCheck(0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user