123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*
- * 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
|