aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/mptrack/MoveFXSlotDialog.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/external_dependencies/openmpt-trunk/mptrack/MoveFXSlotDialog.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-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.cpp90
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