diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/external_dependencies/openmpt-trunk/mptrack/MoveFXSlotDialog.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/MoveFXSlotDialog.cpp')
-rw-r--r-- | Src/external_dependencies/openmpt-trunk/mptrack/MoveFXSlotDialog.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/MoveFXSlotDialog.cpp b/Src/external_dependencies/openmpt-trunk/mptrack/MoveFXSlotDialog.cpp new file mode 100644 index 00000000..6f9ec2aa --- /dev/null +++ b/Src/external_dependencies/openmpt-trunk/mptrack/MoveFXSlotDialog.cpp @@ -0,0 +1,90 @@ +/* + * 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<PLUGINDEX> &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<int>(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 |