aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/mptrack/SampleConfigDlg.cpp
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/external_dependencies/openmpt-trunk/mptrack/SampleConfigDlg.cpp
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/SampleConfigDlg.cpp')
-rw-r--r--Src/external_dependencies/openmpt-trunk/mptrack/SampleConfigDlg.cpp132
1 files changed, 132 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/SampleConfigDlg.cpp b/Src/external_dependencies/openmpt-trunk/mptrack/SampleConfigDlg.cpp
new file mode 100644
index 00000000..01bf61f0
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/mptrack/SampleConfigDlg.cpp
@@ -0,0 +1,132 @@
+/*
+ * SampleConfigDlg.cpp
+ * -------------------
+ * Purpose: Implementation of the sample/instrument editor settings 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 "Mainfrm.h"
+#include "Moddoc.h"
+#include "SampleConfigDlg.h"
+
+
+OPENMPT_NAMESPACE_BEGIN
+
+BEGIN_MESSAGE_MAP(COptionsSampleEditor, CPropertyPage)
+ ON_WM_HSCROLL()
+ ON_EN_CHANGE(IDC_EDIT_UNDOSIZE, &COptionsSampleEditor::OnUndoSizeChanged)
+ ON_EN_CHANGE(IDC_EDIT_FINETUNE, &COptionsSampleEditor::OnSettingsChanged)
+ ON_EN_CHANGE(IDC_FLAC_COMPRESSION, &COptionsSampleEditor::OnSettingsChanged)
+ ON_CBN_SELCHANGE(IDC_DEFAULT_FORMAT, &COptionsSampleEditor::OnSettingsChanged)
+ ON_CBN_SELCHANGE(IDC_VOLUME_HANDLING, &COptionsSampleEditor::OnSettingsChanged)
+ ON_COMMAND(IDC_RADIO1, &COptionsSampleEditor::OnSettingsChanged)
+ ON_COMMAND(IDC_RADIO2, &COptionsSampleEditor::OnSettingsChanged)
+ ON_COMMAND(IDC_RADIO3, &COptionsSampleEditor::OnSettingsChanged)
+ ON_COMMAND(IDC_COMPRESS_ITI, &COptionsSampleEditor::OnSettingsChanged)
+ ON_COMMAND(IDC_PREVIEW_SAMPLES, &COptionsSampleEditor::OnSettingsChanged)
+ ON_COMMAND(IDC_NORMALIZE, &COptionsSampleEditor::OnSettingsChanged)
+ ON_COMMAND(IDC_CURSORINHEX, &COptionsSampleEditor::OnSettingsChanged)
+END_MESSAGE_MAP()
+
+
+void COptionsSampleEditor::DoDataExchange(CDataExchange* pDX)
+{
+ CPropertyPage::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(COptionsSampleEditor)
+ DDX_Control(pDX, IDC_DEFAULT_FORMAT, m_cbnDefaultSampleFormat);
+ DDX_Control(pDX, IDC_VOLUME_HANDLING, m_cbnDefaultVolumeHandling);
+ //}}AFX_DATA_MAP
+}
+
+
+BOOL COptionsSampleEditor::OnInitDialog()
+{
+ CPropertyPage::OnInitDialog();
+ SetDlgItemInt(IDC_EDIT_UNDOSIZE, TrackerSettings::Instance().m_SampleUndoBufferSize.Get().GetSizeInPercent());
+ SetDlgItemInt(IDC_EDIT_FINETUNE, TrackerSettings::Instance().m_nFinetuneStep);
+ static_cast<CSpinButtonCtrl *>(GetDlgItem(IDC_SPIN1))->SetRange32(0, 100);
+ static_cast<CSpinButtonCtrl *>(GetDlgItem(IDC_SPIN2))->SetRange32(1, 200);
+ RecalcUndoSize();
+
+ m_cbnDefaultSampleFormat.SetItemData(m_cbnDefaultSampleFormat.AddString(_T("FLAC")), dfFLAC);
+ m_cbnDefaultSampleFormat.SetItemData(m_cbnDefaultSampleFormat.AddString(_T("WAV")), dfWAV);
+ m_cbnDefaultSampleFormat.SetItemData(m_cbnDefaultSampleFormat.AddString(_T("RAW")), dfRAW);
+ m_cbnDefaultSampleFormat.SetItemData(m_cbnDefaultSampleFormat.AddString(_T("S3I")), dfS3I);
+ m_cbnDefaultSampleFormat.SetCurSel(TrackerSettings::Instance().m_defaultSampleFormat);
+
+ CSliderCtrl *slider = static_cast<CSliderCtrl *>(GetDlgItem(IDC_SLIDER1));
+ slider->SetRange(0, 8);
+ slider->SetTicFreq(1);
+ slider->SetPos(TrackerSettings::Instance().m_FLACCompressionLevel);
+
+ CheckRadioButton(IDC_RADIO1, IDC_RADIO3, IDC_RADIO1 + TrackerSettings::Instance().sampleEditorKeyBehaviour);
+
+ CheckDlgButton(IDC_COMPRESS_ITI, TrackerSettings::Instance().compressITI ? BST_CHECKED : BST_UNCHECKED);
+
+ m_cbnDefaultVolumeHandling.SetItemData(m_cbnDefaultVolumeHandling.AddString(_T("MIDI volume")), PLUGIN_VOLUMEHANDLING_MIDI);
+ m_cbnDefaultVolumeHandling.SetItemData(m_cbnDefaultVolumeHandling.AddString(_T("Dry/Wet ratio")), PLUGIN_VOLUMEHANDLING_DRYWET);
+ m_cbnDefaultVolumeHandling.SetItemData(m_cbnDefaultVolumeHandling.AddString(_T("None")), PLUGIN_VOLUMEHANDLING_IGNORE);
+ m_cbnDefaultVolumeHandling.SetCurSel(TrackerSettings::Instance().DefaultPlugVolumeHandling);
+
+ CheckDlgButton(IDC_PREVIEW_SAMPLES, TrackerSettings::Instance().previewInFileDialogs ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(IDC_NORMALIZE, TrackerSettings::Instance().m_MayNormalizeSamplesOnLoad ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(IDC_CURSORINHEX, TrackerSettings::Instance().cursorPositionInHex ? BST_CHECKED : BST_UNCHECKED);
+
+ return TRUE;
+}
+
+
+void COptionsSampleEditor::OnOK()
+{
+ CPropertyPage::OnOK();
+
+ TrackerSettings::Instance().m_nFinetuneStep = GetDlgItemInt(IDC_EDIT_FINETUNE);
+ TrackerSettings::Instance().m_SampleUndoBufferSize = SampleUndoBufferSize(GetDlgItemInt(IDC_EDIT_UNDOSIZE));
+ TrackerSettings::Instance().m_defaultSampleFormat = static_cast<SampleEditorDefaultFormat>(m_cbnDefaultSampleFormat.GetItemData(m_cbnDefaultSampleFormat.GetCurSel()));
+ TrackerSettings::Instance().m_FLACCompressionLevel = static_cast<CSliderCtrl *>(GetDlgItem(IDC_SLIDER1))->GetPos();
+ TrackerSettings::Instance().sampleEditorKeyBehaviour = static_cast<SampleEditorKeyBehaviour>(GetCheckedRadioButton(IDC_RADIO1, IDC_RADIO3) - IDC_RADIO1);
+ TrackerSettings::Instance().compressITI = IsDlgButtonChecked(IDC_COMPRESS_ITI) != BST_UNCHECKED;
+ TrackerSettings::Instance().DefaultPlugVolumeHandling = static_cast<PlugVolumeHandling>(m_cbnDefaultVolumeHandling.GetItemData(m_cbnDefaultVolumeHandling.GetCurSel()));
+ TrackerSettings::Instance().previewInFileDialogs = IsDlgButtonChecked(IDC_PREVIEW_SAMPLES) != BST_UNCHECKED;
+ TrackerSettings::Instance().m_MayNormalizeSamplesOnLoad = IsDlgButtonChecked(IDC_NORMALIZE) != BST_UNCHECKED;
+ TrackerSettings::Instance().cursorPositionInHex = IsDlgButtonChecked(IDC_CURSORINHEX) != BST_UNCHECKED;
+
+ auto docs = theApp.GetOpenDocuments();
+ for(auto modDoc : docs)
+ {
+ modDoc->GetSampleUndo().RestrictBufferSize();
+ }
+}
+
+
+BOOL COptionsSampleEditor::OnSetActive()
+{
+ CMainFrame::m_nLastOptionsPage = OPTIONS_PAGE_SAMPLEDITOR;
+ return CPropertyPage::OnSetActive();
+}
+
+
+void COptionsSampleEditor::OnUndoSizeChanged()
+{
+ RecalcUndoSize();
+ OnSettingsChanged();
+}
+
+
+void COptionsSampleEditor::RecalcUndoSize()
+{
+ UINT sizePercent = GetDlgItemInt(IDC_EDIT_UNDOSIZE);
+ uint32 sizeMB = mpt::saturate_cast<uint32>(SampleUndoBufferSize(sizePercent).GetSizeInBytes() >> 20);
+ CString text = _T("% of physical memory (");
+ if(sizePercent)
+ text.AppendFormat(_T("%u MiB)"), sizeMB);
+ else
+ text.Append(_T("disabled)"));
+ SetDlgItemText(IDC_UNDOSIZE, text);
+}
+
+OPENMPT_NAMESPACE_END