/* * MoveFXSlotDialog.h * ------------------ * Purpose: Implementationof OpenMPT's move plugin dialog. * Notes : (currently none) * Authors: OpenMPT Devs * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ #include "stdafx.h" #include "Mptrack.h" #include "MoveFXSlotDialog.h" OPENMPT_NAMESPACE_BEGIN void CMoveFXSlotDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO1, m_CbnEmptySlots); } CMoveFXSlotDialog::CMoveFXSlotDialog(CWnd *pParent, PLUGINDEX currentSlot, const std::vector &emptySlots, PLUGINDEX defaultIndex, bool clone, bool hasChain) : CDialog(CMoveFXSlotDialog::IDD, pParent), m_EmptySlots(emptySlots), m_nDefaultSlot(defaultIndex), moveChain(hasChain) { if(clone) { m_csPrompt.Format(_T("Clone plugin in slot %d to the following empty slot:"), currentSlot + 1); m_csTitle = _T("Clone To Slot..."); m_csChain = _T("&Clone follow-up plugin chain if possible"); } else { m_csPrompt.Format(_T("Move plugin in slot %d to the following empty slot:"), currentSlot + 1); m_csTitle = _T("Move To Slot..."); m_csChain = _T("&Move follow-up plugin chain if possible"); } } BOOL CMoveFXSlotDialog::OnInitDialog() { CDialog::OnInitDialog(); SetDlgItemText(IDC_STATIC1, m_csPrompt); SetDlgItemText(IDC_CHECK1, m_csChain); SetWindowText(m_csTitle); if(m_EmptySlots.empty()) { Reporting::Error("No empty plugin slots are availabe."); OnCancel(); return TRUE; } CString slotText; std::size_t defaultSlot = 0; bool foundDefault = false; for(size_t nSlot = 0; nSlot < m_EmptySlots.size(); nSlot++) { slotText.Format(_T("FX%d"), m_EmptySlots[nSlot] + 1); m_CbnEmptySlots.SetItemData(m_CbnEmptySlots.AddString(slotText), nSlot); if(m_EmptySlots[nSlot] >= m_nDefaultSlot && !foundDefault) { defaultSlot = nSlot; foundDefault = true; } } m_CbnEmptySlots.SetCurSel(static_cast(defaultSlot)); GetDlgItem(IDC_CHECK1)->EnableWindow(moveChain ? TRUE : FALSE); CheckDlgButton(IDC_CHECK1, moveChain ? BST_CHECKED : BST_UNCHECKED); return TRUE; } void CMoveFXSlotDialog::OnOK() { m_nToSlot = m_CbnEmptySlots.GetItemData(m_CbnEmptySlots.GetCurSel()); moveChain = IsDlgButtonChecked(IDC_CHECK1) != BST_UNCHECKED; CDialog::OnOK(); } OPENMPT_NAMESPACE_END