DragonNest/Client/EtUITool/FontSetDlg.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

247 lines
7.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// FontSetDlg.cpp : implementation file
//
#include "stdafx.h"
#include "EtUITool.h"
#include "FontSetDlg.h"
#include "GetFontFile.h"
#include "DebugSet.h"
// CFontSetDlg dialog
IMPLEMENT_DYNAMIC(CFontSetDlg, CDialog)
CFontSetDlg::CFontSetDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFontSetDlg::IDD, pParent)
, m_nSelectIndex(0)
{
}
CFontSetDlg::~CFontSetDlg()
{
}
void CFontSetDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_FONTLIST, m_ctrlFontSetList);
}
BEGIN_MESSAGE_MAP(CFontSetDlg, CDialog)
ON_BN_CLICKED(IDOK, &CFontSetDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_ADD, &CFontSetDlg::OnBnClickedAdd)
ON_BN_CLICKED(IDC_DELETE, &CFontSetDlg::OnBnClickedDelete)
ON_BN_CLICKED(IDC_MODIFY, &CFontSetDlg::OnBnClickedModify)
ON_BN_CLICKED(IDC_SAVE, &CFontSetDlg::OnBnClickedSave)
ON_BN_CLICKED(IDC_LOAD, &CFontSetDlg::OnBnClickedLoad)
ON_BN_CLICKED(IDC_SAVE_AS, &CFontSetDlg::OnBnClickedSaveAs)
ON_BN_CLICKED(IDC_SAME_FONTNAME, &CFontSetDlg::OnBnClickedSameFontname)
ON_BN_CLICKED(IDC_SAME_FONTWEIGHT, &CFontSetDlg::OnBnClickedSameFontweight)
END_MESSAGE_MAP()
// CFontSetDlg message handlers
BOOL CFontSetDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//CRect rect;
//m_ctrlFontSetList.GetClientRect(&rect);
m_ctrlFontSetList.InsertColumn(0, _T("Index"), LVCFMT_CENTER, 60);
m_ctrlFontSetList.InsertColumn(1, _T("FontName"), LVCFMT_CENTER, 140);
m_ctrlFontSetList.InsertColumn(2, _T("FileName"), LVCFMT_CENTER, 100);
m_ctrlFontSetList.InsertColumn(3, _T("Height"), LVCFMT_CENTER, 60);
m_ctrlFontSetList.InsertColumn(4, _T("Weight"), LVCFMT_CENTER, 60);
//m_ctrlFontSetList.InsertColumn(4, _T("Italic"), LVCFMT_CENTER, rect.Width()-240);
m_ctrlFontSetList.InsertColumn(5, _T("Italic"), LVCFMT_CENTER, 60);
m_ctrlFontSetList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
UpdateFontSetList();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFontSetDlg::OnBnClickedOk()
{
POSITION pos = m_ctrlFontSetList.GetFirstSelectedItemPosition();
if (pos != NULL)
{
int nSelect = m_ctrlFontSetList.GetNextSelectedItem(pos);
m_nSelectIndex = _ttoi(m_ctrlFontSetList.GetItemText( nSelect, 0 ));
OnOK();
}
}
void CFontSetDlg::OnBnClickedAdd()
{
CFontDialog fontDlg;
if( fontDlg.DoModal() == IDOK )
{
SUIFontSet uiFontSet;
GetFontSetFromList( CEtFontMng::GetInstance().GetFontSetIndex(), uiFontSet, fontDlg );
int nCount = m_ctrlFontSetList.GetItemCount();
m_ctrlFontSetList.InsertItem( nCount, "" );
SetFontSetToList( nCount, uiFontSet );
// Note : <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
//
CEtFontMng::GetInstance().AddFontSet( uiFontSet );
}
}
void CFontSetDlg::OnBnClickedDelete()
{
POSITION pos = m_ctrlFontSetList.GetFirstSelectedItemPosition();
if (pos != NULL)
{
int nSelect = m_ctrlFontSetList.GetNextSelectedItem(pos);
m_ctrlFontSetList.DeleteItem( nSelect );
CEtFontMng::GetInstance().DeleteFontSet( nSelect );
}
}
void CFontSetDlg::OnBnClickedModify()
{
POSITION pos = m_ctrlFontSetList.GetFirstSelectedItemPosition();
if (pos != NULL)
{
CFontDialog fontDlg;
if( fontDlg.DoModal() == IDOK )
{
int nSelect = m_ctrlFontSetList.GetNextSelectedItem(pos);
SUIFontSet uiFontSet;
GetFontSetFromList( _ttoi(m_ctrlFontSetList.GetItemText( nSelect, 0 )), uiFontSet, fontDlg );
SetFontSetToList( nSelect, uiFontSet );
// Note : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
//
CEtFontMng::GetInstance().ModifyFontSet( nSelect, uiFontSet );
}
}
}
void CFontSetDlg::OnBnClickedSave()
{
if( !m_strFontSetFileName.empty() )
{
CEtFontMng::GetInstance().SaveFontSet( m_strFontSetFileName.c_str() );
}
else
{
OnBnClickedSaveAs();
}
}
void CFontSetDlg::OnBnClickedLoad()
{
TCHAR szFilter[] = _T( "Eternity UIFontSet (*.fontset)|*.fontset|All Files (*.*)|*.*||" );
CFileDialog FileDlg( TRUE, _T("fontset"), _T("*.fontset"), OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | OFN_NOCHANGEDIR, szFilter, this );
if( FileDlg.DoModal() == IDOK )
{
CEtFontMng::GetInstance().LoadFontSet( FileDlg.m_ofn.lpstrFile );
m_strFontSetFileName = FileDlg.m_ofn.lpstrFile;
UpdateFontSetList();
}
}
void CFontSetDlg::UpdateFontSetList()
{
m_ctrlFontSetList.DeleteAllItems();
// Note : <20><>Ʈ<EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>о<20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
//
std::vector< SUIFontSet > &vecFontSet = CEtFontMng::GetInstance().GetFontSetList();
for( int i=0 ; i<(int)vecFontSet.size(); i++)
{
m_ctrlFontSetList.InsertItem( i, "" );
SetFontSetToList( i, vecFontSet[i] );
}
}
void CFontSetDlg::GetFontSetFromList( int nIndex, SUIFontSet &fontSet, CFontDialog &fontDialog )
{
fontSet.nIndex = nIndex;
fontSet.strFontName = fontDialog.GetFaceName();
CString strDisplayName, strFontFile;
GetFontFile(fontDialog.GetFaceName(), strDisplayName, strFontFile);
fontSet.strFileName = strFontFile;
fontSet.nFontHeight = fontDialog.GetSize()/10;
fontSet.nFontWeight = fontDialog.GetWeight()/100;
fontSet.bItalic = fontDialog.IsItalic() ? true : false;
}
void CFontSetDlg::SetFontSetToList( int nIndex, SUIFontSet &fontSet )
{
CString strTemp;
strTemp.Format( "%d", fontSet.nIndex );
m_ctrlFontSetList.SetItemText(nIndex, 0, strTemp );
m_ctrlFontSetList.SetItemText(nIndex, 1, fontSet.strFontName.c_str() );
m_ctrlFontSetList.SetItemText(nIndex, 2, fontSet.strFileName.c_str() );
strTemp.Format( "%d", fontSet.nFontHeight );
m_ctrlFontSetList.SetItemText(nIndex, 3, strTemp);
strTemp.Format( "%d", fontSet.nFontWeight );
m_ctrlFontSetList.SetItemText(nIndex, 4, strTemp);
strTemp.Format( "%s", fontSet.bItalic ? "true":"false" );
m_ctrlFontSetList.SetItemText(nIndex, 5, strTemp);
}
void CFontSetDlg::OnBnClickedSaveAs()
{
TCHAR szFilter[] = _T( "Eternity UIFontSet (*.fontset)|*.fontset|All Files (*.*)|*.*||" );
CFileDialog FileDlg( FALSE, _T("fontset"), _T("*.fontset"), OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | OFN_NOCHANGEDIR, szFilter, this );
if( FileDlg.DoModal() == IDOK )
{
CEtFontMng::GetInstance().SaveFontSet( FileDlg.m_ofn.lpstrFile );
m_strFontSetFileName = FileDlg.m_ofn.lpstrFile;
}
}
void CFontSetDlg::OnBnClickedSameFontname()
{
POSITION pos = m_ctrlFontSetList.GetFirstSelectedItemPosition();
if (pos != NULL)
{
int nSelect = m_ctrlFontSetList.GetNextSelectedItem(pos);
int nFontSetIndex = _ttoi(m_ctrlFontSetList.GetItemText( nSelect, 0 ));
SUIFontSet *pFontSet = CEtFontMng::GetInstance().GetFontSet( nFontSetIndex );
if( pFontSet )
{
std::vector< SUIFontSet > &vecFontSet = CEtFontMng::GetInstance().GetFontSetList();
for( int i=0 ; i<(int)vecFontSet.size(); i++)
{
vecFontSet[i].strFontName = pFontSet->strFontName;
vecFontSet[i].strFileName = pFontSet->strFileName;
vecFontSet[i].strFullFileName = pFontSet->strFullFileName;
}
UpdateFontSetList();
}
}
}
void CFontSetDlg::OnBnClickedSameFontweight()
{
POSITION pos = m_ctrlFontSetList.GetFirstSelectedItemPosition();
if (pos != NULL)
{
int nSelect = m_ctrlFontSetList.GetNextSelectedItem(pos);
int nFontWeight = _ttoi(m_ctrlFontSetList.GetItemText( nSelect, 4 ));
std::vector< SUIFontSet > &vecFontSet = CEtFontMng::GetInstance().GetFontSetList();
for( int i=0 ; i<(int)vecFontSet.size(); i++)
{
vecFontSet[i].nFontWeight = nFontWeight;
}
UpdateFontSetList();
}
}