⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 renumwizselectsymbolspage.cpp

📁 ResOrg 图形化管理Vc项目的资源ID的工具的源代码。 ResOrg - Manage and Renumber Resource Symbol IDs Introduction The
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/************************************************************************
 *
 *                 Resource ID Organiser Core Library
 *
 * (c) Copyright 2000-2003 by Anna-Jayne Metcalfe (resorg@annasplace.me.uk)
 *                         All rights reserved.
 *
 ************************************************************************
 *                                                                       
 *  Filename    : RenumWizSelectSymbolsPage.cpp
 *
 *  Description : RenumWizSelectSymbolsPage - Symbol Renumbering Wizard
 *                "Select Symbols" page class
 *
 *  Compiler    : Microsoft Visual C++ 6.0, Service Pack 3 or later
 *                Microsoft Visual C++ .NET 2002
 *                                                                       
 *  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/RenumWizSelectSymbolsPage.cpp $
 *   $Revision: 10 $
 *       $Date: 15/04/03 20:38 $
 *     $Author: Anna $
 *
 *    $History: RenumWizSelectSymbolsPage.cpp $
 * 
 * *****************  Version 10  *****************
 * User: Anna         Date: 15/04/03   Time: 20:38
 * Updated in $/Projects/AddIns/ResOrg/ResOrgCore
 * 1.  Removed unnecessary file guards (#pragma once works well enough)
 * 2.  Updated file banners
 * 
 * *****************  Version 9  *****************
 * User: Anna         Date: 25/11/02   Time: 15:10
 * Updated in $/Projects/AddIns/ResOrg/ResOrgCore
 * Changed website address in banner
 * 
 * *****************  Version 8  *****************
 * User: Anna         Date: 22/10/02   Time: 13:24
 * Updated in $/Projects/AddIns/ResOrg/ResOrgCore
 * Changed name/mail address (at last!)
 * 
 * *****************  Version 7  *****************
 * User: Andy         Date: 7/06/02    Time: 17:04
 * Updated in $/Projects/AddIns/ResOrg/ResOrgCore
 * Renamed the ResOrgUtils module to ResOrgCore. Updated file banners
 * accordingly
 * 
 * *****************  Version 6  *****************
 * User: Andy         Date: 27/05/02   Time: 16:41
 * Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
 * Knock on changes from CResourceSymbolBuffer (now
 * CResourceSymbolManager) and CResourceSymbol
 * 
 * *****************  Version 5  *****************
 * User: Andy         Date: 1/03/02    Time: 7:44p
 * Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
 *  CRenumWizSelectSymbolsPage::OnWizardBack() now re-enables the "Next"
 * button just in case it was disabled (thanks to Arnt Witteveen for the
 * bug report)
 * 
 * *****************  Version 4  *****************
 * User: Andy         Date: 12/28/01   Time: 4:37p
 * Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
 * Double clicking on a symbol now selects or deselects it
 * 
 * *****************  Version 3  *****************
 * User: Andy         Date: 4/05/01    Time: 22:37
 * Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
 * Implemented resizing
 * 
 * *****************  Version 2  *****************
 * User: Andy         Date: 23/04/01   Time: 21:18
 * Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
 * Implemented the "Auto" symbol selection options
 * 
 * *****************  Version 1  *****************
 * User: Andy         Date: 21/04/01   Time: 7:13
 * Created in $/Projects/AddIns/ResOrg/ResOrgUtils
 * 
 * $Nokeywords: $
 *
 ************************************************************************/


#include "StdAfx.h"
#include "ResOrgCore_Priv.h"

#include "RenumWizAutoSelectSymbolsDlg.h"

#include "RenumWizSelectSymbolsPage.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


// Selection modes
// used to determine whether to add or remove items from the selection list
enum
{
	SEL_MODE_NONE = 0,
	SEL_MODE_ADD,
	SEL_MODE_REMOVE
};


/////////////////////////////////////////////////////////////////////////////
// CRenumWizSelectSymbolsPage wizard page

IMPLEMENT_DYNCREATE(CRenumWizSelectSymbolsPage, CRenumWizSelectSymbolsPage_BASE)

CRenumWizSelectSymbolsPage::CRenumWizSelectSymbolsPage(void)
 : CRenumWizSelectSymbolsPage_BASE(	CRenumWizSelectSymbolsPage::IDD,
									IDS_RENUMWIZ,
									IDS_RENUMWIZ_SELECT_SYMBOLS_PAGE_TITLE,
									IDS_RENUMWIZ_SELECT_SYMBOLS_PAGE_SUBTITLE)
{
	//{{AFX_DATA_INIT(CRenumWizSelectSymbolsPage)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT

	m_sSelBtnLegend		= _T("");
	m_eSelMode			= SEL_MODE_NONE;
}


CRenumWizSelectSymbolsPage::~CRenumWizSelectSymbolsPage(void)
{
}


void CRenumWizSelectSymbolsPage::DoDataExchange(CDataExchange* pDX)
{
	CRenumWizSelectSymbolsPage_BASE::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRenumWizSelectSymbolsPage)
	DDX_Control(pDX,			IDC_RENUMWIZ_AVAIL_SYMBOLS,		m_ctrlAvailableSymbols);
	DDX_Control(pDX,			IDC_RENUMWIZ_SEL_SYMBOLS,		m_ctrlSelectedSymbols);
	DDX_Text(pDX,				IDC_RENUMWIZ_SEL,				m_sSelBtnLegend);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRenumWizSelectSymbolsPage, CRenumWizSelectSymbolsPage_BASE)
	//{{AFX_MSG_MAP(CRenumWizSelectSymbolsPage)
	ON_BN_CLICKED(				IDC_RENUMWIZ_SEL,				OnClickedSelect)
	ON_BN_CLICKED(				IDC_RENUMWIZ_SEL_ALL,			OnClickedSelectAll)
	ON_BN_CLICKED(				IDC_RENUMWIZ_SEL_NONE,			OnClickedDeselectAll)
	ON_BN_CLICKED(				IDC_RENUMWIZ_SEL_AUTO,			OnClickedAutoSelect)
	ON_NOTIFY(LVN_ITEMCHANGED,	IDC_RENUMWIZ_AVAIL_SYMBOLS,		OnItemchangedAvailSymbols)
	ON_NOTIFY(LVN_ITEMCHANGED,	IDC_RENUMWIZ_SEL_SYMBOLS,		OnItemchangedSelectedSymbols)
	ON_NOTIFY(NM_SETFOCUS,		IDC_RENUMWIZ_AVAIL_SYMBOLS,		OnSetfocusAvailSymbols)
	ON_NOTIFY(NM_SETFOCUS,		IDC_RENUMWIZ_SEL_SYMBOLS,		OnSetfocusSelectedSymbols)
	ON_NOTIFY(NM_DBLCLK,		IDC_RENUMWIZ_AVAIL_SYMBOLS,		OnDblClickAvailableSymbols)
	ON_NOTIFY(NM_DBLCLK,		IDC_RENUMWIZ_SEL_SYMBOLS,		OnDblClickSelectedSymbols)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CRenumWizSelectSymbolsPage overrides

BOOL CRenumWizSelectSymbolsPage::OnInitDialog(void) 
{
	CRenumWizSelectSymbolsPage_BASE::OnInitDialog();
	
	if (IsResizeable())
	{
		m_Resizer.Add( IDC_RENUMWIZ_AVAIL_SYMBOLS_CAPTION,	0, 0, 0, 0);
		m_Resizer.Add( IDC_RENUMWIZ_AVAIL_SYMBOLS,			0, 0, 50, 100);
		m_Resizer.Add( IDC_RENUMWIZ_SEL_ALL,				50, 20, 0, 0);
		m_Resizer.Add( IDC_RENUMWIZ_SEL,					50, 40, 0, 0);
		m_Resizer.Add( IDC_RENUMWIZ_SEL_NONE,				50, 60, 0, 0);
		m_Resizer.Add( IDC_RENUMWIZ_SEL_AUTO,				50, 80, 0, 0);
		m_Resizer.Add( IDC_RENUMWIZ_SEL_SYMBOLS_CAPTION,	50, 0, 0, 0);
		m_Resizer.Add( IDC_RENUMWIZ_SEL_SYMBOLS,			50, 0, 50, 100);
	}
	CWaitCursor wait;

	m_ctrlAvailableSymbols.Initialise();
	m_ctrlSelectedSymbols.Initialise();

	// Temporary fix
	m_ctrlAvailableSymbols.AddSymbols(m_pEngine->m_pSymbolManager);
	m_ctrlSelectedSymbols.AddSymbols(m_pEngine->m_pSymbolManager);

	m_ctrlAvailableSymbols.AutoSizeColumn();
	m_ctrlSelectedSymbols.AutoSizeColumn();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


BOOL CRenumWizSelectSymbolsPage::OnSetActive(void)
{
	BOOL bResult = CRenumWizSelectSymbolsPage_BASE::OnSetActive();

	if (!IsInitialising())
	{
		if (bResult)
		{
			CWaitCursor wait;

			FillListCtrl();
			FillSelListCtrl();

			SetAvailableControls();
		}
	}
	return bResult;
}


LRESULT CRenumWizSelectSymbolsPage::OnWizardBack(void) 
{
	EnableWizardButtons(PSWIZB_NEXT, TRUE);

	return IDD_RENUMWIZ_OPTIONS_PAGE;
}


LRESULT CRenumWizSelectSymbolsPage::OnWizardNext(void) 
{
	//if (m_pEngine->m_listSelectedSymbols.GetCount() > 0)
	return IDD_RENUMWIZ_BASE_VALUES_PAGE;
}


/////////////////////////////////////////////////////////////////////////////
// CRenumWizSelectSymbolsPage implementation

/******************************************************************************
 *	Fill the list controls
 *
 ******************************************************************************/

void CRenumWizSelectSymbolsPage::FillListCtrl(void)
{
	m_ctrlAvailableSymbols.SetRedraw(FALSE);

	m_ctrlAvailableSymbols.DeleteAllItems();

	CResourceSymbolList listSymbols;
	GetAvailableSymbols(listSymbols);

	POSITION pos = listSymbols.GetHeadPosition();
	while (NULL != pos)
	{
		CResourceSymbol* pSymbol = listSymbols.GetNext(pos);
		ASSERT(NULL != pSymbol);

		if (NULL != pSymbol)
		{
			if (!IsSelected(pSymbol) )
			{
				m_ctrlAvailableSymbols.AddSymbol(pSymbol);
			}
		}
	}
	m_ctrlAvailableSymbols.SetRedraw(TRUE);
}


void CRenumWizSelectSymbolsPage::FillSelListCtrl(void)
{
	m_ctrlSelectedSymbols.SetRedraw(FALSE);

	m_ctrlSelectedSymbols.DeleteAllItems();

	CResourceSymbolList listSymbols;
	GetSelectedSymbols(listSymbols);

	POSITION pos = listSymbols.GetHeadPosition();
	while (NULL != pos)
	{
		CResourceSymbol* pSymbol = listSymbols.GetNext(pos);
		ASSERT(NULL != pSymbol);

		if (NULL != pSymbol)
		{
			m_ctrlSelectedSymbols.AddSymbol(pSymbol);
		}
	}
	m_ctrlSelectedSymbols.SetRedraw(TRUE);
}


int CRenumWizSelectSymbolsPage::GetAvailableSymbolCount(BOOL bSelectionsOnly /*= FALSE*/) const
{
	if (bSelectionsOnly)
	{
		return m_ctrlAvailableSymbols.GetSelectedCount();
	}
	return m_ctrlAvailableSymbols.GetItemCount();
}


int CRenumWizSelectSymbolsPage::GetSelectedSymbolCount(BOOL bSelectionsOnly /*= FALSE*/) const
{
	if (bSelectionsOnly)
	{
		return m_ctrlSelectedSymbols.GetSelectedCount();
	}
	return m_ctrlSelectedSymbols.GetItemCount();
}


int CRenumWizSelectSymbolsPage::GetAvailableSymbols(CResourceSymbolList& rlistSymbols) const
{
	return m_pEngine->GetAvailableSymbols(rlistSymbols);
}


int CRenumWizSelectSymbolsPage::GetSelectedSymbols(CResourceSymbolList& rlistSymbols) const
{
	return m_pEngine->GetSelectedSymbols(rlistSymbols);
}


void CRenumWizSelectSymbolsPage::SetAvailableControls(void)
{
	CResourceSymbolList listSymbols;
	GetSelectedSymbols(listSymbols);

	EnableWizardButtons(PSWIZB_NEXT, (listSymbols.GetCount() > 0) );
}


void CRenumWizSelectSymbolsPage::SetMode(int eMode)
{
	m_eSelMode = eMode;
	BOOL bEnable = FALSE;
	switch(m_eSelMode)
	{
		case SEL_MODE_NONE:
			m_sSelBtnLegend		= _T("<< >>");
			bEnable = FALSE;
			break;

		case SEL_MODE_ADD:
			m_sSelBtnLegend		= _T(">>");
			bEnable = TRUE;
			break;

		case SEL_MODE_REMOVE:
			m_sSelBtnLegend		= _T("<<");
			bEnable = TRUE;
			break;

	}
	UpdateData(FALSE);

	EnableDlgControl(IDC_RENUMWIZ_SEL,		bEnable);
	EnableDlgControl(IDC_RENUMWIZ_SEL_ALL,	(GetAvailableSymbolCount() > 0) );
	EnableDlgControl(IDC_RENUMWIZ_SEL_NONE,	(GetSelectedSymbolCount() > 0) );
}


BOOL CRenumWizSelectSymbolsPage::Select(CResourceSymbol* pSymbol)
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -