// ★コメント未記入
// PlugInKeyEditDlg.cpp : インプリメンテーション ファイル
//

#include "stdafx.h"
#include "shitarabian.h"
#include "Common.h"
#include "PlugInKeyEditDlg.h"
#include "PlugInKeyInputDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPlugInKeyEditDlg ダイアログ


CPlugInKeyEditDlg::CPlugInKeyEditDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPlugInKeyEditDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPlugInKeyEditDlg)
	m_bDstAlt = FALSE;
	m_bDstCtrl = FALSE;
	m_strDstKey = _T("");
	m_bDstShift = FALSE;
	m_strName = _T("");
	m_bSrcAlt = FALSE;
	m_bSrcCtrl = FALSE;
	m_strSrcKey = _T("");
	m_bSrcShift = FALSE;
	//}}AFX_DATA_INIT
}


void CPlugInKeyEditDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPlugInKeyEditDlg)
	DDX_Control(pDX, IDC_KEY_SRCREF, m_btnSrcRef);
	DDX_Control(pDX, IDC_KEY_DSTREF, m_btnDstRef);
	DDX_Control(pDX, IDC_KEY_NAME, m_editName);
	DDX_Control(pDX, IDC_KEY_SCRSHIFT, m_btnSrcShift);
	DDX_Control(pDX, IDC_KEY_SCRKEY, m_editSrcKey);
	DDX_Control(pDX, IDC_KEY_SCRCTRL, m_btnSrcCtrl);
	DDX_Control(pDX, IDC_KEY_SCRALT, m_btnSrcAlt);
	DDX_Check(pDX, IDC_KEY_DSTALT, m_bDstAlt);
	DDX_Check(pDX, IDC_KEY_DSTCTRL, m_bDstCtrl);
	DDX_Text(pDX, IDC_KEY_DSTKEY, m_strDstKey);
	DDX_Check(pDX, IDC_KEY_DSTSHIFT, m_bDstShift);
	DDX_Text(pDX, IDC_KEY_NAME, m_strName);
	DDX_Check(pDX, IDC_KEY_SCRALT, m_bSrcAlt);
	DDX_Check(pDX, IDC_KEY_SCRCTRL, m_bSrcCtrl);
	DDX_Text(pDX, IDC_KEY_SCRKEY, m_strSrcKey);
	DDX_Check(pDX, IDC_KEY_SCRSHIFT, m_bSrcShift);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPlugInKeyEditDlg, CDialog)
	//{{AFX_MSG_MAP(CPlugInKeyEditDlg)
	ON_BN_CLICKED(IDC_KEY_DSTREF, OnKeyDstref)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPlugInKeyEditDlg メッセージ ハンドラ

BOOL CPlugInKeyEditDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	BOOL	bEditable = !(m_tKeyDefine.bSystemDefine);
	m_editName.EnableWindow( bEditable );
	m_editSrcKey.EnableWindow( bEditable );
	m_btnSrcShift.EnableWindow( bEditable );
	m_btnSrcCtrl.EnableWindow( bEditable );
	m_btnSrcAlt.EnableWindow( bEditable );
	m_btnSrcRef.EnableWindow( bEditable );

	m_strName = m_tKeyDefine.strKeyFunctionName;

	m_strSrcKey = ::VKToString(m_tKeyDefine.iSrcKey);
	m_bSrcShift = ( m_tKeyDefine.bSrcShift?1:0 );
	m_bSrcCtrl = ( m_tKeyDefine.bSrcCtrl?1:0 );
	m_bSrcAlt = ( m_tKeyDefine.bSrcAlt?1:0 );

	m_strDstKey = ::VKToString(m_tKeyDefine.iDstKey);
	m_bDstShift = ( m_tKeyDefine.bDstShift?1:0 );
	m_bDstCtrl = ( m_tKeyDefine.bDstCtrl?1:0 );
	m_bDstAlt = ( m_tKeyDefine.bDstAlt?1:0 );

	UpdateData( FALSE );

	return TRUE;  // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
	              // 例外: OCX プロパティ ページの戻り値は FALSE となります
}

void CPlugInKeyEditDlg::OnOK() 
{
	UpdateData( TRUE );

	m_tKeyDefine.strKeyFunctionName = m_strName;

	m_tKeyDefine.iSrcKey = ::StringToVK(m_strSrcKey);
	m_tKeyDefine.bSrcShift = m_bSrcShift;
	m_tKeyDefine.bSrcCtrl = m_bSrcCtrl;
	m_tKeyDefine.bSrcAlt = m_bSrcAlt;

	m_tKeyDefine.iDstKey = ::StringToVK(m_strDstKey);
	m_tKeyDefine.bDstShift = m_bDstShift;
	m_tKeyDefine.bDstCtrl = m_bDstCtrl;
	m_tKeyDefine.bDstAlt = m_bDstAlt;

	CDialog::OnOK();
}

void CPlugInKeyEditDlg::OnKeyDstref() 
{
	CPlugInKeyInputDlg	dlg;
	if ( dlg.DoModal() == IDOK )
	{
		m_strDstKey = ::VKToString(dlg.m_iKey);
		m_bDstShift = dlg.m_bShift?TRUE:FALSE;
		m_bDstCtrl = dlg.m_bCtrl?TRUE:FALSE;
		m_bDstAlt = dlg.m_bAlt?TRUE:FALSE;
	}
	UpdateData( FALSE );
}
