aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/mptrack/PatternFindReplaceDlg.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/PatternFindReplaceDlg.h')
-rw-r--r--Src/external_dependencies/openmpt-trunk/mptrack/PatternFindReplaceDlg.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/PatternFindReplaceDlg.h b/Src/external_dependencies/openmpt-trunk/mptrack/PatternFindReplaceDlg.h
new file mode 100644
index 00000000..afd640b8
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/mptrack/PatternFindReplaceDlg.h
@@ -0,0 +1,100 @@
+/*
+ * PatternFindReplaceDlg.h
+ * -----------------------
+ * Purpose: The find/replace dialog for pattern data.
+ * Notes : (currently none)
+ * Authors: Olivier Lapicque
+ * OpenMPT Devs
+ * The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
+ */
+
+#pragma once
+
+#include "openmpt/all/BuildSettings.hpp"
+
+#include "EffectInfo.h"
+#include "PatternCursor.h"
+
+OPENMPT_NAMESPACE_BEGIN
+
+/////////////////////////////////////////////////////////////////////////
+// Search/Replace
+
+struct FindReplace;
+
+class CFindReplaceTab: public CPropertyPage
+{
+protected:
+ CComboBox m_cbnNote, m_cbnInstr, m_cbnVolCmd, m_cbnVolume, m_cbnCommand, m_cbnParam, m_cbnPCParam;
+
+ CSoundFile &m_sndFile;
+ FindReplace &m_settings;
+ EffectInfo m_effectInfo;
+ ModCommand m_initialValues;
+ bool m_isReplaceTab;
+
+ // Special ItemData values
+ enum
+ {
+ kFindAny = INT_MAX - 1,
+ kFindRange = INT_MAX - 2,
+
+ kReplaceRelative = INT_MAX - 3,
+ kReplaceMultiply = INT_MAX - 4,
+
+ kReplaceNoteMinusOne = INT_MAX - 5,
+ kReplaceNotePlusOne = INT_MAX - 6,
+ kReplaceNoteMinusOctave = INT_MAX - 7,
+ kReplaceNotePlusOctave = INT_MAX - 8,
+
+ kReplaceInstrumentMinusOne = INT_MAX - 5,
+ kReplaceInstrumentPlusOne = INT_MAX - 6,
+ };
+
+public:
+ CFindReplaceTab(UINT nIDD, bool isReplaceTab, CSoundFile &sf, FindReplace &settings, const ModCommand &initialValues)
+ : CPropertyPage(nIDD)
+ , m_sndFile(sf)
+ , m_settings(settings)
+ , m_effectInfo(sf)
+ , m_initialValues(initialValues)
+ , m_isReplaceTab(isReplaceTab)
+ { }
+
+protected:
+ BOOL OnInitDialog() override;
+ void OnOK() override;
+ void DoDataExchange(CDataExchange* pDX) override;
+
+ bool IsPCEvent() const;
+
+ void UpdateInstrumentList();
+ void UpdateVolumeList();
+ void UpdateParamList();
+
+ // When a combobox is focussed, check the corresponding checkbox.
+ void CheckOnChange(int nIDButton) { CheckDlgButton(nIDButton, BST_CHECKED); CheckReplace(nIDButton); };
+ afx_msg void OnNoteChanged();
+ afx_msg void OnInstrChanged();
+ afx_msg void OnVolCmdChanged() { CheckOnChange(IDC_CHECK3); UpdateVolumeList(); };
+ afx_msg void OnVolumeChanged();
+ afx_msg void OnEffectChanged() { CheckOnChange(IDC_CHECK5); UpdateParamList(); };
+ afx_msg void OnParamChanged();
+ afx_msg void OnPCParamChanged();
+ // When a checkbox is checked, also check "Replace By".
+ afx_msg void OnCheckNote() { CheckReplace(IDC_CHECK1); };
+ afx_msg void OnCheckInstr() { CheckReplace(IDC_CHECK2); };
+ afx_msg void OnCheckVolCmd() { CheckReplace(IDC_CHECK3); };
+ afx_msg void OnCheckVolume() { CheckReplace(IDC_CHECK4); };
+ afx_msg void OnCheckEffect() { CheckReplace(IDC_CHECK5); };
+ afx_msg void OnCheckParam() { CheckReplace(IDC_CHECK6); };
+ // Check "Replace By"
+ afx_msg void CheckReplace(int nIDButton) { if(m_isReplaceTab && IsDlgButtonChecked(nIDButton)) CheckDlgButton(IDC_CHECK7, BST_CHECKED); };
+
+ afx_msg void OnCheckChannelSearch();
+
+ void RelativeOrMultiplyPrompt(CComboBox &comboBox, FindReplace::ReplaceMode &action, int &value, int range, bool isHex);
+ DECLARE_MESSAGE_MAP()
+};
+
+OPENMPT_NAMESPACE_END