2025-11-27 16:46:48 +09:00

129 lines
2.9 KiB
C++

// WorkspaceDlg.cpp : implementation file
//
#include "stdafx.h"
#include "WorkspaceDemo.h"
#include "WorkspaceDlg.h"
#include "OXWorkspaceState.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg dialog
CWorkspaceDlg::CWorkspaceDlg(CWnd* pParent /*=NULL*/)
:
CDialog(CWorkspaceDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CWorkspaceDlg)
m_sFilePath = ((CWorkspaceDemoApp*)AfxGetApp())->GetAppDir() + _T("Test.wsp");
m_nRegistryType = 1;
m_sRegistry = _T("Test");
//}}AFX_DATA_INIT
}
void CWorkspaceDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWorkspaceDlg)
DDX_Text(pDX, IDC_FILE_PATH, m_sFilePath);
DDX_Radio(pDX, IDC_REGISTRY_TYPE, m_nRegistryType);
DDX_Text(pDX, IDC_REGISTRY, m_sRegistry);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWorkspaceDlg, CDialog)
//{{AFX_MSG_MAP(CWorkspaceDlg)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_BN_CLICKED(IDC_LOAD, OnLoad)
ON_BN_CLICKED(IDC_STORE, OnStore)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg message handlers
void CWorkspaceDlg::OnBrowse()
{
if (!UpdateData(TRUE))
return;
CFileDialog fileDlg(TRUE, NULL, _T("*.wsp"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("Workspace (*.wsp)| *.* |All Files (*.*)| *.* ||"));
if (fileDlg.DoModal() == IDOK)
{
m_sFilePath = fileDlg.GetPathName();
m_nRegistryType = 1;
UpdateData(FALSE);
}
}
void CWorkspaceDlg::OnLoad()
{
if (!UpdateData(TRUE))
return;
COXWorkspaceState workspaceState;
BOOL bSuccess = FALSE;
switch(m_nRegistryType)
{
case 0:
bSuccess = workspaceState.LoadFromRegistry(m_sRegistry);
if (!bSuccess)
AfxMessageBox(IDS_FAILED_LOAD_REG, MB_ICONEXCLAMATION);
break;
case 1:
bSuccess = workspaceState.LoadFromFile(m_sFilePath);
if (!bSuccess)
AfxMessageBox(IDS_FAILED_LOAD_FILE, MB_ICONEXCLAMATION);
break;
default:
TRACE1("CWorkspaceDlg::OnLoad : Unexpected case in switch : %i\n", m_nRegistryType);
ASSERT(FALSE);
break;
}
if (bSuccess)
// ... Close this dialog
EndDialog(IDCANCEL);
}
void CWorkspaceDlg::OnStore()
{
if (!UpdateData(TRUE))
return;
COXWorkspaceState workspaceState;
BOOL bSuccess = FALSE;
switch(m_nRegistryType)
{
case 0:
bSuccess = workspaceState.StoreToRegistry(m_sRegistry);
if (!bSuccess)
AfxMessageBox(IDS_FAILED_STORE_REG, MB_ICONEXCLAMATION);
break;
case 1:
bSuccess = workspaceState.StoreToFile(m_sFilePath);
if (!bSuccess)
AfxMessageBox(IDS_FAILED_STORE_FILE, MB_ICONEXCLAMATION);
break;
default:
TRACE1("CWorkspaceDlg::OnStore : Unexpected case in switch : %i\n", m_nRegistryType);
ASSERT(FALSE);
break;
}
if (bSuccess)
// ... Close this dialog
EndDialog(IDCANCEL);
}