246 lines
5.7 KiB
C++
246 lines
5.7 KiB
C++
// BuildDivisionPacking.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "NxFileSystemTool.h"
|
|
#include "BuildDivisionPacking.h"
|
|
#include "ExportBrowseFolder.h"
|
|
#include "FileIOThread.h"
|
|
|
|
// BuildDivisionPacking dialog
|
|
|
|
IMPLEMENT_DYNAMIC(BuildDivisionPacking, CDialog)
|
|
|
|
BuildDivisionPacking::BuildDivisionPacking(CWnd* pParent /*=NULL*/)
|
|
: CDialog(BuildDivisionPacking::IDD, pParent)
|
|
, m_SettingFileName(_T(""))
|
|
, m_PackingState(_T(""))
|
|
, m_szOutFolder(_T(""))
|
|
{
|
|
m_bWorking = false;
|
|
|
|
}
|
|
|
|
BuildDivisionPacking::~BuildDivisionPacking()
|
|
{
|
|
}
|
|
|
|
void BuildDivisionPacking::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Text(pDX, IDC_STATIC_SETTING_FILE, m_SettingFileName);
|
|
DDX_Control(pDX, IDC_PROGRESS_DIV_PACKING, m_DivPackingProgress);
|
|
DDX_Text(pDX, IDC_STATIC_SETTING_OUT_FOLDER, m_szOutFolder);
|
|
DDX_Control(pDX, IDC_PROGRESS_DIV_PACKING_TOTAL, m_DivPackingProgressTotal);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(BuildDivisionPacking, CDialog)
|
|
ON_BN_CLICKED(IDC_BUTTON_FILE_OPEN, &BuildDivisionPacking::OnBnClickedButtonFileOpen)
|
|
ON_BN_CLICKED(IDC_BUTTON_VIEW_FILE, &BuildDivisionPacking::OnBnClickedButtonViewFile)
|
|
ON_BN_CLICKED(IDC_BUTTON_PACKING, &BuildDivisionPacking::OnBnClickedButtonPacking)
|
|
ON_BN_CLICKED(IDC_BUTTON_SET_OUTPUT_FOLDER, &BuildDivisionPacking::OnBnClickedButtonSetOutputFolder)
|
|
ON_MESSAGE(WM_COMPLETE_MSG, OnCompleteMsg)
|
|
ON_MESSAGE(WM_NFS_PROGRESS, OnProgress)
|
|
ON_MESSAGE(WM_NFS_PROGRESS_TOTAL, OnProgressTotal)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// BuildDivisionPacking message handlers
|
|
|
|
void BuildDivisionPacking::OnBnClickedButtonFileOpen()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
CFileDialog Dlg(TRUE,_T(".xml"),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("ÆÄÀÏ(*.xml)|*.xml||"),NULL);
|
|
|
|
if ( Dlg.DoModal() == IDCANCEL )
|
|
return;
|
|
|
|
m_SettingFileName = Dlg.GetPathName();
|
|
UpdateData(FALSE);
|
|
|
|
bool bResult = false;
|
|
#ifdef _UNICODE
|
|
std::string str;
|
|
ToMultiString(m_SettingFileName.GetBuffer(), str);
|
|
bResult = ParseSettingFile(str.c_str(), m_PackingInfo);
|
|
#else
|
|
bResult = ParseSettingFile(m_SettingFileName.GetBuffer(), m_PackingInfo);
|
|
#endif
|
|
|
|
if ( bResult == false )
|
|
{
|
|
AfxMessageBox(_T("¼¼ÆÃÆÄÀÏ ·Îµå ½ÇÆÐ."));
|
|
m_SettingFileName.Empty();
|
|
UpdateData(FALSE);
|
|
return;
|
|
}
|
|
|
|
}
|
|
|
|
void BuildDivisionPacking::OnBnClickedButtonViewFile()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if ( m_SettingFileName.IsEmpty() )
|
|
{
|
|
AfxMessageBox(_T("¼¼ÆÃ ÆÄÀÏÀ» ·ÎµåÇØ ÁÖ¼¼¿ä."));
|
|
return;
|
|
}
|
|
|
|
ShellExecute(NULL, _T("open"), _T("notepad.exe"), m_SettingFileName.GetBuffer(), NULL, SW_SHOW);
|
|
|
|
}
|
|
|
|
void BuildDivisionPacking::OnBnClickedButtonPacking()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if ( m_SettingFileName.IsEmpty() )
|
|
{
|
|
AfxMessageBox(_T("¼¼ÆÃ ÆÄÀÏÀ» ·ÎµåÇØ ÁÖ¼¼¿ä."));
|
|
return;
|
|
|
|
}
|
|
if ( m_szOutFolder.IsEmpty() )
|
|
{
|
|
AfxMessageBox(_T("ÆÐÅ· ÆÄÀÏÀÌ ÀúÀåµÉ Æú´õ¸¦ ¼±ÅÃÇØ ÁÖ¼¼¿ä."));
|
|
return;
|
|
}
|
|
|
|
m_nProgressRange = -1;
|
|
m_nProgressTotalRange = -1;
|
|
|
|
m_bWorking = true;
|
|
g_pDivPackingThread = new CDivPackingThread(this->GetSafeHwnd(), m_szOutFolder, m_PackingInfo);
|
|
g_pDivPackingThread->Start();
|
|
}
|
|
|
|
void BuildDivisionPacking::OnBnClickedButtonSetOutputFolder()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
|
|
|
|
CFolderDialog Dlg;
|
|
|
|
if(Dlg.DoModal() == IDCANCEL)
|
|
return;
|
|
|
|
m_szOutFolder = Dlg.GetFolderPath();
|
|
UpdateData(FALSE);
|
|
|
|
|
|
}
|
|
|
|
bool ParseSettingFile(const CHAR* szFileName, OUT std::vector<_PackingInfo>& PackingInfo )
|
|
{
|
|
TiXmlDocument doc;
|
|
doc.LoadFile(szFileName, TIXML_ENCODING_UTF8 );
|
|
|
|
std::string msg;
|
|
std::wstring wmsg;
|
|
|
|
|
|
if ( doc.Error() )
|
|
{
|
|
msg = "xml ÆÄÀÏ ÆÄ½Ì ½ÇÆÐ : ";
|
|
msg += szFileName;
|
|
msg += " error msg : ";
|
|
const char* errmsg = doc.ErrorDesc();
|
|
msg += errmsg;
|
|
|
|
ToWideString(msg, wmsg);
|
|
return false;
|
|
}
|
|
|
|
TiXmlElement* pElement = NULL;
|
|
pElement = doc.RootElement();
|
|
|
|
if ( !pElement )
|
|
{
|
|
msg = "xml ÆÄÀÏ ÆÄ½Ì ½ÇÆÐ : ";
|
|
msg += szFileName;
|
|
msg += " error msg : ";
|
|
const char* errmsg = doc.ErrorDesc();
|
|
msg += errmsg;
|
|
|
|
ToWideString(msg, wmsg);
|
|
}
|
|
|
|
TiXmlNode* pNode = pElement->FirstChild("Packing");
|
|
|
|
if ( !pNode ) return false;
|
|
|
|
pElement = pNode->ToElement();
|
|
|
|
tstring tszSrcFolder;
|
|
tstring tszFile;
|
|
tstring tszBaseFolder;
|
|
|
|
for ( pElement ; pElement != NULL ; pElement = pElement->NextSiblingElement() )
|
|
{
|
|
const char* szSrcFolder = pElement->Attribute("SrcFolder");
|
|
const char* szFile = pElement->Attribute("File");
|
|
const char* szBaseFolder = pElement->Attribute("BaseFolder");
|
|
int nIncludeSubFolder = 1 ;
|
|
pElement->Attribute("IncludeSubFolder", &nIncludeSubFolder );
|
|
#ifdef UNICODE
|
|
ToWideString((CHAR*)szSrcFolder, tszSrcFolder );
|
|
ToWideString((CHAR*)szFile, tszFile );
|
|
ToWideString((CHAR*)szFile, tszBaseFolder );
|
|
#else
|
|
tszSrcFolder = szSrcFolder ? szSrcFolder : "" ;
|
|
tszFile = szFile ? szFile : "" ;
|
|
tszBaseFolder = szBaseFolder ? szBaseFolder:"" ;
|
|
#endif
|
|
_PackingInfo info;
|
|
info.szSrcFolder = tszSrcFolder;
|
|
info.szFileName = tszFile;
|
|
info.szBaseFolder = tszBaseFolder;
|
|
|
|
if ( nIncludeSubFolder > 0)
|
|
info.bIncludeSubFolder = true;
|
|
else
|
|
info.bIncludeSubFolder = false;
|
|
|
|
PackingInfo.push_back( info );
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
LRESULT
|
|
BuildDivisionPacking::OnCompleteMsg(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
m_bWorking = false;
|
|
SAFE_DELETE(g_pDivPackingThread);
|
|
AfxMessageBox(_T("ºÐÇÒ ÆÐÅ· ¿Ï·á!!"));
|
|
|
|
return 0;
|
|
}
|
|
|
|
LRESULT
|
|
BuildDivisionPacking::OnProgress(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
if ( lParam > 0 )
|
|
{
|
|
m_nProgressRange = (int)lParam;
|
|
m_DivPackingProgress.SetRange32((int)0, (int)m_nProgressRange);
|
|
}
|
|
|
|
m_DivPackingProgress.SetPos((int)wParam);
|
|
return 0;
|
|
}
|
|
|
|
|
|
LRESULT
|
|
BuildDivisionPacking::OnProgressTotal(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
if ( lParam > 0 )
|
|
{
|
|
m_nProgressTotalRange = (int)lParam;
|
|
m_DivPackingProgressTotal.SetRange32((int)0, (int)m_nProgressTotalRange);
|
|
}
|
|
|
|
m_DivPackingProgressTotal.SetPos((int)wParam);
|
|
return 0;
|
|
}
|