// SppMkPropDlg.cpp : implementation file
//
#include "stdafx.h"
#include "sppmk.h"
#include "resource.h"
#include "Config.h"
#include "SppMkPropDlg.h"
#include "VersionInfo.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// SppMkPropDlg dialog
SppMkPropDlg::SppMkPropDlg(CWnd* pParent /*=NULL*/)
: CDialog(SppMkPropDlg::IDD, pParent)
{
LOG(Logger::cDebug, "SppMkPropDlg::SppMkPropDlg(%p){", pParent);
//{{AFX_DATA_INIT(SppMkPropDlg)
m_strMakeOpts = _T("");
m_strGeneralMakeOpts = _T("");
m_bSetMasterToDswName = FALSE;
m_strLogPath = _T("");
m_nLogLevel = 0;
m_bEnableLog = FALSE;
m_bInsertTab = FALSE;
m_bShowInContextMenu = FALSE;
m_bRemoveDoneFlags = FALSE;
//}}AFX_DATA_INIT
m_nOldSel = -1;
LOG(Logger::cDebug, "SppMkPropDlg::SppMkPropDlg()}");
}
void SppMkPropDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(SppMkPropDlg)
DDX_Control(pDX, IDC_COMBO_MAKECOMMANDS, m_MakeCommands);
DDX_Text(pDX, IDC_EDIT_MAKEOPTS, m_strMakeOpts);
DDX_Text(pDX, IDC_EDIT_GENERALMAKEOPTS, m_strGeneralMakeOpts);
DDX_Check(pDX, IDC_CHECK_SETMASTERTODSWNAME, m_bSetMasterToDswName);
DDX_Text(pDX, IDC_EDIT_LOGPATH, m_strLogPath);
DDX_Text(pDX, IDC_EDIT_LOGLEVEL, m_nLogLevel);
DDV_MinMaxInt(pDX, m_nLogLevel, 0, 3);
DDX_Check(pDX, IDC_CHECK_ENABLELOG, m_bEnableLog);
DDX_Check(pDX, IDC_CHECK_INSERTTAB, m_bInsertTab);
DDX_Check(pDX, IDC_CHECK_SHOWINCONTEXTMENU, m_bShowInContextMenu);
DDX_Check(pDX, IDC_CHECK_REMOVEDONEFLAGS, m_bRemoveDoneFlags);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(SppMkPropDlg, CDialog)
//{{AFX_MSG_MAP(SppMkPropDlg)
ON_CBN_SELENDOK(IDC_COMBO_MAKECOMMANDS, OnSelendokComboMakecommands)
ON_BN_CLICKED(IDC_CHECK_ENABLELOG, OnCheckEnablelog)
ON_MESSAGE(WM_KICKIDLE, OnKickIdle)
ON_BN_CLICKED(IDOK,OnOK)
ON_UPDATE_COMMAND_UI(IDC_EDIT_LOGLEVEL, OnUpdateLogLevel)
ON_UPDATE_COMMAND_UI(IDC_EDIT_LOGPATH, OnUpdateLogPath)
ON_UPDATE_COMMAND_UI(IDC_CHECK_SHOWINCONTEXTMENU, OnUpdateShowInContextMenu)
ON_UPDATE_COMMAND_UI(IDC_CHECK_REMOVEDONEFLAGS, OnUpdateRemoveDoneFlags)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// SppMkPropDlg message handlers
BOOL SppMkPropDlg::OnInitDialog()
{
LOG(Logger::cDebug, "SppMkPropDlg::OnInitDialog(){");
CDialog::OnInitDialog();
CString strTitle("SppMk version ");
strTitle += VI_VERSION_MAJOR_STR;
strTitle += ".";
strTitle += VI_VERSION_MINOR_STR;
strTitle += ".";
strTitle += VI_BUILD_STR;
strTitle += " options";
SetWindowText(strTitle);
m_cfg.Load();
m_strGeneralMakeOpts = static_cast<char*>(m_cfg.GetGeneralMakeOpts());
for(SupportedCommands::cmditerator_t pCmd = SupportedCommands::GetInstance().begin();
pCmd != SupportedCommands::GetInstance().end(); ++pCmd)
{
if(pCmd->second.bMake)
{
m_MakeCommands.SetItemData(m_MakeCommands.AddString(pCmd->second.sCmdName), pCmd->first);
}
}
m_MakeCommands.SetCurSel(0);
m_nOldSel = m_MakeCommands.GetCurSel();
SupportedCommands::CmdId id = (SupportedCommands::CmdId)m_MakeCommands.GetItemData(m_MakeCommands.GetCurSel());
ReadCmdOpts(id);
m_bEnableLog = m_cfg.GetEnableLog();
m_nLogLevel = m_cfg.GetLogLevel();
m_strLogPath = static_cast<char*>(m_cfg.GetLogPath());
m_bInsertTab = m_cfg.GetInstallTab();
UpdateData(FALSE);
LOG(Logger::cDebug, "SppMkPropDlg::OnInitDialog()}");
return TRUE;
}
void SppMkPropDlg::OnOK()
{
LOG(Logger::cDebug, "SppMkPropDlg::OnOK(){");
UpdateData(TRUE);
m_cfg.SetGeneralMakeOpts(m_strGeneralMakeOpts.GetBuffer(0));
m_cfg.SetEnableLog(TRUE == m_bEnableLog);
m_cfg.SetLogLevel(static_cast<Logger::Level>(m_nLogLevel));
m_cfg.SetLogPath(m_strLogPath.GetBuffer(0));
m_cfg.SetInstallTab(TRUE == m_bInsertTab);
SupportedCommands::CmdId id = (SupportedCommands::CmdId)m_MakeCommands.GetItemData(m_MakeCommands.GetCurSel());
WriteCmdOpts(id);
m_cfg.Save();
CDialog::OnOK();
LOG(Logger::cDebug, "SppMkPropDlg::OnOK()}");
}
void SppMkPropDlg::OnCancel()
{
CDialog::OnCancel();
}
void SppMkPropDlg::ReadCmdOpts(SupportedCommands::CmdId id)
{
Config::CmdOpts opts = m_cfg.GetCmdMakeOpts(id);
m_strMakeOpts = static_cast<char*>(opts.sMakeOpts);
m_bSetMasterToDswName = opts.bMasterToDswName;
m_bShowInContextMenu = opts.bShowInContextMenu;
m_bRemoveDoneFlags = opts.bRemoveDoneFlags;
}
void SppMkPropDlg::WriteCmdOpts(SupportedCommands::CmdId id)
{
Config::CmdOpts opts = m_cfg.GetCmdMakeOpts(id);
opts.sMakeOpts = m_strMakeOpts.GetBuffer(0);
opts.bMasterToDswName = TRUE == m_bSetMasterToDswName;
opts.bShowInContextMenu = TRUE == m_bShowInContextMenu;
opts.bRemoveDoneFlags = TRUE == m_bRemoveDoneFlags;
m_cfg.SetCmdMakeOpts(id, opts);
}
void SppMkPropDlg::OnSelendokComboMakecommands()
{
LOG(Logger::cDebug,"SppMkPropDlg::OnSelendokComboMakecommands(){");
SupportedCommands::CmdId old_id = (SupportedCommands::CmdId)m_MakeCommands.GetItemData(m_nOldSel);
m_nOldSel = m_MakeCommands.GetCurSel();
SupportedCommands::CmdId id = (SupportedCommands::CmdId)m_MakeCommands.GetItemData(m_MakeCommands.GetCurSel());
UpdateData(TRUE);
WriteCmdOpts(old_id);
ReadCmdOpts(id);
UpdateData(FALSE);
LOG(Logger::cDebug,"SppMkPropDlg::OnSelendokComboMakecommands()}");
}
void SppMkPropDlg::OnCheckEnablelog()
{
LOG(Logger::cDebug, "SppMkPropDlg::OnCheckEnablelog(){");
LOG(Logger::cDebug, "SppMkPropDlg::OnCheckEnablelog()}");
}
LRESULT SppMkPropDlg::OnKickIdle(WPARAM wp, LPARAM lCount)
{
LOG(Logger::cDebug, "SppMkPropDlg::OnKickIdle(0x%x, 0x%x){", wp, lCount);
UpdateDialogControls(this, FALSE);
LOG(Logger::cDebug, "SppMkPropDlg::OnKickIdle()}");
return 0;
}
void SppMkPropDlg::OnUpdateLogLevel(CCmdUI* pCmdUI)
{
pCmdUI->Enable(0 != IsDlgButtonChecked(IDC_CHECK_ENABLELOG));
}
void SppMkPropDlg::OnUpdateLogPath(CCmdUI* pCmdUI)
{
pCmdUI->Enable(0 != IsDlgButtonChecked(IDC_CHECK_ENABLELOG));
}
void SppMkPropDlg::OnUpdateShowInContextMenu(CCmdUI* pCmdUI)
{
SupportedCommands::CmdId id = (SupportedCommands::CmdId)m_MakeCommands.GetItemData(m_MakeCommands.GetCurSel());
pCmdUI->Enable(SupportedCommands::GetInstance().GetCmdInfo(id).bShowInToolbar);
}
void SppMkPropDlg::OnUpdateRemoveDoneFlags(CCmdUI* pCmdUI)
{
pCmdUI->Enable(0 != IsDlgButtonChecked(IDC_CHECK_SHOWINCONTEXTMENU));
}