📄 resorgoptionsfixedsymbolspage.cpp
字号:
/************************************************************************
*
* Resource ID Organiser Core Library
*
* (c) Copyright 2000-2004 by Anna-Jayne Metcalfe (resorg@annasplace.me.uk)
* All rights reserved.
*
************************************************************************
*
* Filename : ResOrgOptionsFixedSymbolsPage.cpp
*
* Description : CResOrgOptionsFixedSymbolsPage - Property page class for
* general program options
*
* Compiler : Microsoft Visual C++ 6.0, Service Pack 3 or later
* Microsoft Visual C++ .NET 2002 or later
*
* Target
* Environment : Windows 98/NT/2000/XP
*
* NOTE:
*
* This software is provided "as is" free for personal use. All
* title and copyrights in and to the software, including but not
* limited to any images, text, etc. incorporated into it, are
* owned by Anna-Jayne Metcalfe, except where acknowledged otherwise.
*
* Your may freely to use this code in your own products, PROVIDED
* this notice is not removed or modified.
*
*
* Visit http://www.annasplace.me.uk/resorg for latest updates
*
************************************************************************
*
* MODIFICATION HISTORY:
*
* This is a controlled document. See project configuration
* control tool for latest version and full version history.
*
* $Archive: /Projects/AddIns/ResOrg/ResOrgCore/ResOrgOptionsFixedSymbolsPage.cpp $
* $Revision: 2 $
* $Date: 11/05/04 22:49 $
* $Author: Anna $
*
* $History: ResOrgOptionsFixedSymbolsPage.cpp $
*
* ***************** Version 2 *****************
* User: Anna Date: 11/05/04 Time: 22:49
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Improved handling of default fixed symbol lists
*
* ***************** Version 1 *****************
* User: Anna Date: 11/05/04 Time: 0:20
* Created in $/Projects/AddIns/ResOrg/ResOrgCore
*
*
* $Nokeywords: $
*
************************************************************************/
#include "StdAfx.h"
#include "ResOrgCore_Priv.h"
#include "ResourceSymbol.h"
#include "ResOrgOptionsFixedSymbolsPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage property page
IMPLEMENT_DYNCREATE(CResOrgOptionsFixedSymbolsPage, CResOrgOptionsFixedSymbolsPage_BASE)
CResOrgOptionsFixedSymbolsPage::CResOrgOptionsFixedSymbolsPage(void)
: CResOrgOptionsFixedSymbolsPage_BASE(CResOrgOptionsFixedSymbolsPage::IDD)
{
m_sSymbolToAdd = _T("");
}
CResOrgOptionsFixedSymbolsPage::~CResOrgOptionsFixedSymbolsPage(void)
{
}
void CResOrgOptionsFixedSymbolsPage::DoDataExchange(CDataExchange* pDX)
{
CResOrgOptionsFixedSymbolsPage_BASE::DoDataExchange(pDX);
DDX_Control(pDX, IDC_RESORG_FIXED_SYMBOLS_DESC, m_ctrlDescription);
DDX_Control(pDX, IDC_RESORG_FIXED_SYMBOLS_LIST, m_ctrlFixedSymbols);
DDX_Text(pDX, IDC_RESORG_FIXED_SYMBOLS_LIST_ADD, m_sSymbolToAdd);
}
BEGIN_MESSAGE_MAP(CResOrgOptionsFixedSymbolsPage, CResOrgOptionsFixedSymbolsPage_BASE)
ON_EN_CHANGE( IDC_RESORG_FIXED_SYMBOLS_LIST_ADD, OnChangeSymbolToAdd)
ON_LBN_SELCHANGE( IDC_RESORG_FIXED_SYMBOLS_LIST, OnSelChangeFixedSymbols)
ON_BN_CLICKED( IDC_RESORG_FIXED_SYMBOLS_ADD, OnClickedAddSymbol)
ON_BN_CLICKED( IDC_RESORG_FIXED_SYMBOLS_REMOVE, OnClickedRemoveSymbols)
ON_BN_CLICKED( IDC_RESORG_FIXED_SYMBOLS_DEFAULTS, OnClickedDefaults)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage overrides
BOOL CResOrgOptionsFixedSymbolsPage::OnInitDialog(void)
{
CResOrgOptionsFixedSymbolsPage_BASE::OnInitDialog();
FillSymbolsListBox(m_setFixedSymbols);
SetAvailableControls();
return TRUE;
}
void CResOrgOptionsFixedSymbolsPage::OnOK(void)
{
m_setFixedSymbols.clear();
for (int nItem = 0; nItem < m_ctrlFixedSymbols.GetCount(); nItem++)
{
CString sSymbolName;
m_ctrlFixedSymbols.GetText(nItem, sSymbolName);
if (!sSymbolName.IsEmpty() )
{
m_setFixedSymbols.insert(sSymbolName);
}
}
CResOrgOptionsFixedSymbolsPage_BASE::OnOK();
}
/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage operations
int CResOrgOptionsFixedSymbolsPage::GetFixedSymbols(std::set<CString>& rsetFixedSymbols)
{
ASSERT(!::IsWindow(m_hWnd) );
if (!::IsWindow(m_hWnd) )
{
rsetFixedSymbols.clear();
#if _MSC_VER >= 1300
rsetFixedSymbols.insert(m_setFixedSymbols.begin(), m_setFixedSymbols.end() );
#else
// VC6 is REALLY beginning to annoy me...
for (std::set<CString>::const_iterator it = m_setFixedSymbols.begin();
it != m_setFixedSymbols.end();
it++)
{
rsetFixedSymbols.insert(*it);
}
#endif
return true;
}
return false;
}
bool CResOrgOptionsFixedSymbolsPage::SetFixedSymbols(const std::set<CString>& setFixedSymbols)
{
ASSERT(!::IsWindow(m_hWnd) );
if (!::IsWindow(m_hWnd) )
{
#if _MSC_VER >= 1300
m_setFixedSymbols.insert(setFixedSymbols.begin(), setFixedSymbols.end() );
#else
// VC6 is REALLY beginning to annoy me...
for (std::set<CString>::const_iterator it = setFixedSymbols.begin();
it != setFixedSymbols.end();
it++)
{
m_setFixedSymbols.insert(*it);
}
#endif
return true;
}
return false;
}
bool CResOrgOptionsFixedSymbolsPage::SetDefaultFixedSymbols(const std::set<CString>& setDefaultFixedSymbols)
{
ASSERT(!::IsWindow(m_hWnd) );
if (!::IsWindow(m_hWnd) )
{
#if _MSC_VER >= 1300
m_setDefaultFixedSymbols.insert(setDefaultFixedSymbols.begin(), setDefaultFixedSymbols.end() );
#else
// VC6 is REALLY beginning to annoy me...
for (std::set<CString>::const_iterator it = setDefaultFixedSymbols.begin();
it != setDefaultFixedSymbols.end();
it++)
{
m_setDefaultFixedSymbols.insert(*it);
}
#endif
return true;
}
return false;
}
/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage implementation
void CResOrgOptionsFixedSymbolsPage::SetAvailableControls(void)
{
EnableDlgControl(IDC_RESORG_FIXED_SYMBOLS_ADD, !m_sSymbolToAdd.IsEmpty() );
EnableDlgControl(IDC_RESORG_FIXED_SYMBOLS_REMOVE, m_ctrlFixedSymbols.GetSelCount() > 0 );
}
void CResOrgOptionsFixedSymbolsPage::FillSymbolsListBox(const std::set<CString>& setFixedSymbols)
{
m_ctrlFixedSymbols.ResetContent();
for (std::set<CString>::const_iterator it = setFixedSymbols.begin();
it != setFixedSymbols.end();
it++)
{
m_ctrlFixedSymbols.AddString(*it);
}
}
/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage message handlers
void CResOrgOptionsFixedSymbolsPage::OnChangeSymbolToAdd(void)
{
UpdateData(TRUE);
SetAvailableControls();
}
void CResOrgOptionsFixedSymbolsPage::OnSelChangeFixedSymbols(void)
{
SetAvailableControls();
}
void CResOrgOptionsFixedSymbolsPage::OnClickedAddSymbol(void)
{
ASSERT(!m_sSymbolToAdd.IsEmpty() );
if (CResourceSymbol::IsValidName(m_sSymbolToAdd) )
{
if (m_ctrlFixedSymbols.FindStringExact(0, m_sSymbolToAdd) < 0)
{
m_ctrlFixedSymbols.AddString(m_sSymbolToAdd);
}
else
{
AfxMessageBox("Symbol already added!");
}
}
else
{
// Not a valid symbol name
CNGMessageBox dlg;
dlg.FormatMsgEx(MAKEINTRESOURCE(IDP_SYM_NAME_INVALID),
_T("RTF"),
m_sSymbolToAdd);
dlg.SetRtf();
dlg.SetStandardIcon(IDI_ERROR);
dlg.AddButton(IDOK, TRUE, TRUE, _T("OK") );
dlg.DoModal();
}
SetAvailableControls();
}
void CResOrgOptionsFixedSymbolsPage::OnClickedRemoveSymbols(void)
{
int nSelCount = m_ctrlFixedSymbols.GetSelCount();
ASSERT(nSelCount > 0);
if (nSelCount > 0)
{
CArray<int,int> arraySelectedItems;
arraySelectedItems.SetSize(nSelCount);
m_ctrlFixedSymbols.GetSelItems(nSelCount, arraySelectedItems.GetData());
for (int n = nSelCount - 1; n >= 0; n--)
{
int nItem = arraySelectedItems[n];
m_ctrlFixedSymbols.DeleteString(nItem);
}
}
SetAvailableControls();
}
void CResOrgOptionsFixedSymbolsPage::OnClickedDefaults(void)
{
FillSymbolsListBox(m_setDefaultFixedSymbols);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -