186 lines
4.8 KiB
C++
186 lines
4.8 KiB
C++
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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);
|
|
}
|
|
} |