DragonNest/Client/EtActionTool/EventEditView_Finish.cpp
2024-12-19 09:48:26 +08:00

162 lines
4.4 KiB
C++

// EventEditView_Finish.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "EtActionTool.h"
#include "EventEditView_Finish.h"
#include "SignalManager.h"
#include "GlobalValue.h"
#include "UnionValueProperty.h"
// CEventEditView_Finish
IMPLEMENT_DYNCREATE(CEventEditView_Finish, CFormView)
CEventEditView_Finish::CEventEditView_Finish()
: CFormView(CEventEditView_Finish::IDD)
, m_bCheckExport(FALSE)
, m_szExportFileName("")
{
}
CEventEditView_Finish::~CEventEditView_Finish()
{
}
void CEventEditView_Finish::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Check(pDX, IDC_CHECK1, m_bCheckExport);
DDX_Text(pDX, IDC_EDIT1, m_szExportFileName);
}
BEGIN_MESSAGE_MAP(CEventEditView_Finish, CFormView)
ON_BN_CLICKED(IDC_CHECK1, &CEventEditView_Finish::OnBnClickedCheck1)
ON_BN_CLICKED(IDC_BUTTON1, &CEventEditView_Finish::OnBnClickedButton1)
END_MESSAGE_MAP()
// CEventEditView_Finish 진단입니다.
#ifdef _DEBUG
void CEventEditView_Finish::AssertValid() const
{
CFormView::AssertValid();
}
#ifndef _WIN32_WCE
void CEventEditView_Finish::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif
#endif //_DEBUG
// CEventEditView_Finish 메시지 처리기입니다.
void CEventEditView_Finish::OnBnClickedCheck1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
UpdateData();
GetDlgItem( IDC_EDIT1 )->EnableWindow( m_bCheckExport );
GetDlgItem( IDC_BUTTON1 )->EnableWindow( m_bCheckExport );
}
void CEventEditView_Finish::PreProcess()
{
char szStr[2048] = { 0, };
GetRegistryString( HKEY_CURRENT_USER, REG_SUBKEY, "LastExportFullName", szStr, 2048 );
DWORD dwValue;
GetRegistryNumber( HKEY_CURRENT_USER, REG_SUBKEY, "ExportHeader", dwValue );
m_szExportFileName = szStr;
m_bCheckExport = ( dwValue == TRUE );
GetDlgItem( IDC_EDIT1 )->EnableWindow( m_bCheckExport );
GetDlgItem( IDC_BUTTON1 )->EnableWindow( m_bCheckExport );
UpdateData( FALSE );
}
bool CEventEditView_Finish::PostProcess()
{
UpdateData();
if( m_bCheckExport == TRUE ) {
if( m_szExportFileName.IsEmpty() ) {
MessageBox( "익스포트 할 파일을 지정해주세요", "에러", MB_OK );
return false;
}
FILE *fp;
fopen_s( &fp, m_szExportFileName, "wt" );
if( fp == NULL ) {
MessageBox( "파일을 쓸 수 없습니다.", "에러", MB_OK );
return false;
}
fclose(fp);
}
switch( s_nStartType ) {
case 0:
CSignalManager::GetInstance().AddSignalItem( s_pCurrentSignalItem );
s_pCurrentSignalItem = NULL;
break;
case 1:
{
CSignalItem *pItem = CSignalManager::GetInstance().GetSignalItemFromName( s_szCurrentSignalName );
pItem->SetName( s_pCurrentSignalItem->GetName() );
pItem->SetInitialsColor( s_pCurrentSignalItem->GetInitialsColor() );
pItem->SetBackgroundColor( s_pCurrentSignalItem->GetBackgroundColor() );
pItem->SetHasLength( s_pCurrentSignalItem->IsHasLength() );
SAFE_DELETE( s_pCurrentSignalItem );
}
break;
case 2:
CSignalManager::GetInstance().RemoveSignalItem( s_szCurrentSignalName );
break;
case 3:
if( s_pCurrentSignalItem->AddParameter( s_pCurrentPropertyVariable, true ) == false ) {
SAFE_DELETE( s_pCurrentPropertyVariable );
MessageBox( "더이상 파라메터 추가를 할 수 없어요!!\n리빌드와 제저장이 필요해요!!", "에러", MB_OK );
}
s_pCurrentSignalItem = NULL;
s_pCurrentPropertyVariable = NULL;
break;
case 4:
{
CUnionValueProperty *pVariable = s_pCurrentSignalItem->GetParameterFromName( s_szCurrentPropertyName );
*pVariable = *s_pCurrentPropertyVariable;
s_pCurrentSignalItem = NULL;
SAFE_DELETE( s_pCurrentPropertyVariable );
}
break;
case 5:
s_pCurrentSignalItem->RemoveParameter( s_szCurrentPropertyName );
break;
}
if( m_bCheckExport == TRUE ) {
CSignalManager::GetInstance().ExportHeader( m_szExportFileName );
SetRegistryString( HKEY_CURRENT_USER, REG_SUBKEY, "LastExportFullName", m_szExportFileName.GetBuffer() );
}
SetRegistryNumber( HKEY_CURRENT_USER, REG_SUBKEY, "ExportHeader", (DWORD)m_bCheckExport );
return true;
}
void CEventEditView_Finish::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
TCHAR szFilter[] = _T( "C/C++ Header File (*.h)|*.h|All Files (*.*)|*.*||" );
CFileDialog dlg( FALSE, _T("h"), _T("*.h"), OFN_HIDEREADONLY|OFN_PATHMUSTEXIST|OFN_ENABLESIZING , szFilter, this );
dlg.m_ofn.lpstrTitle = "Export Eternity ActionTool Signal Refrence Header File";
if( dlg.DoModal() == IDOK ) {
m_szExportFileName = dlg.GetPathName();
UpdateData( FALSE );
}
}