DragonNest/Client/EtUITool/FontSetDlg.cpp

248 lines
7.2 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
// 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();
}
}