123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- /*
- * view_gen.h
- * ----------
- * Purpose: General tab, lower panel.
- * 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 "ColorPickerButton.h"
- OPENMPT_NAMESPACE_BEGIN
- //Note: Changing this won't increase the number of tabs in general view. Most
- //of the code use plain number 4.
- #define CHANNELS_IN_TAB 4
- class CViewGlobals: public CFormView
- {
- protected:
- CRect m_rcClient;
- CTabCtrl m_TabCtrl;
- CComboBox m_CbnEffects[CHANNELS_IN_TAB];
- CComboBox m_CbnPlugin, m_CbnParam, m_CbnOutput;
- CSliderCtrl m_sbVolume[CHANNELS_IN_TAB], m_sbPan[CHANNELS_IN_TAB], m_sbValue, m_sbDryRatio;
- ColorPickerButton m_channelColor[CHANNELS_IN_TAB];
- CComboBox m_CbnPreset;
- CSliderCtrl m_sbWetDry;
- CSpinButtonCtrl m_spinVolume[CHANNELS_IN_TAB], m_spinPan[CHANNELS_IN_TAB];
- CButton m_BtnSelect, m_BtnEdit;
- int m_nLockCount = 1;
- PlugParamIndex m_nCurrentParam = 0;
- CHANNELINDEX m_nActiveTab = 0;
- CHANNELINDEX m_lastEdit = CHANNELINDEX_INVALID;
- PLUGINDEX m_nCurrentPlugin = 0;
- CComboBox m_CbnSpecialMixProcessing;
- CSpinButtonCtrl m_SpinMixGain;
- enum {AdjustPattern = true, NoPatternAdjust = false};
- protected:
- CViewGlobals() : CFormView(IDD_VIEW_GLOBALS) { }
- DECLARE_SERIAL(CViewGlobals)
- public:
- CModDoc* GetDocument() const { return static_cast<CModDoc *>(m_pDocument); }
- void RecalcLayout();
- void LockControls() { m_nLockCount++; }
- void UnlockControls() { PostMessage(WM_MOD_UNLOCKCONTROLS); }
- bool IsLocked() const noexcept { return (m_nLockCount > 0); }
- int GetDlgItemIntEx(UINT nID);
- void PopulateChannelPlugins(PLUGINDEX plugin = PLUGINDEX_INVALID);
- void BuildEmptySlotList(std::vector<PLUGINDEX> &emptySlots);
- bool MovePlug(PLUGINDEX src, PLUGINDEX dest, bool bAdjustPat = AdjustPattern);
- public:
- //{{AFX_VIRTUAL(CViewGlobals)
- void OnInitialUpdate() override;
- void DoDataExchange(CDataExchange *pDX) override;
- void OnUpdate(CView *pSender, LPARAM lHint, CObject *pHint) override;
- void UpdateView(UpdateHint hint, CObject *pObj = nullptr);
- LRESULT OnModViewMsg(WPARAM, LPARAM);
- LRESULT OnMidiMsg(WPARAM midiData, LPARAM);
- private:
- void PrepareUndo(CHANNELINDEX chnMod4);
- void UndoRedo(bool undo);
- void OnEditColor(const CHANNELINDEX chnMod4);
- void OnMute(const CHANNELINDEX chnMod4, const UINT itemID);
- void OnSurround(const CHANNELINDEX chnMod4, const UINT itemID);
- void OnEditVol(const CHANNELINDEX chnMod4, const UINT itemID);
- void OnEditPan(const CHANNELINDEX chnMod4, const UINT itemID);
- void OnEditName(const CHANNELINDEX chnMod4, const UINT itemID);
- void OnFxChanged(const CHANNELINDEX chnMod4);
- IMixPlugin *GetCurrentPlugin() const;
- void FillPluginProgramBox(int32 firstProg, int32 lastProg);
- void SetPluginModified();
- void UpdateDryWetDisplay();
- protected:
- //{{AFX_MSG(CViewGlobals)
- afx_msg void OnEditUndo();
- afx_msg void OnEditRedo();
- afx_msg void OnUpdateUndo(CCmdUI *pCmdUI);
- afx_msg void OnUpdateRedo(CCmdUI *pCmdUI);
- afx_msg void OnEditColor1();
- afx_msg void OnEditColor2();
- afx_msg void OnEditColor3();
- afx_msg void OnEditColor4();
- afx_msg void OnMute1();
- afx_msg void OnMute2();
- afx_msg void OnMute3();
- afx_msg void OnMute4();
- afx_msg void OnSurround1();
- afx_msg void OnSurround2();
- afx_msg void OnSurround3();
- afx_msg void OnSurround4();
- afx_msg void OnEditVol1();
- afx_msg void OnEditVol2();
- afx_msg void OnEditVol3();
- afx_msg void OnEditVol4();
- afx_msg void OnEditPan1();
- afx_msg void OnEditPan2();
- afx_msg void OnEditPan3();
- afx_msg void OnEditPan4();
- afx_msg void OnEditName1();
- afx_msg void OnEditName2();
- afx_msg void OnEditName3();
- afx_msg void OnEditName4();
- afx_msg void OnFx1Changed();
- afx_msg void OnFx2Changed();
- afx_msg void OnFx3Changed();
- afx_msg void OnFx4Changed();
- afx_msg void OnPluginChanged();
- afx_msg void OnPluginNameChanged();
- afx_msg void OnFillParamCombo();
- afx_msg void OnParamChanged();
- afx_msg void OnFocusParam();
- afx_msg void OnFillProgramCombo();
- afx_msg void OnProgramChanged();
- afx_msg void OnLoadParam();
- afx_msg void OnSaveParam();
- afx_msg void OnSelectPlugin();
- afx_msg void OnRemovePlugin();
- afx_msg void OnSetParameter();
- afx_msg void OnEditPlugin();
- afx_msg void OnMixModeChanged();
- afx_msg void OnBypassChanged();
- afx_msg void OnDryMixChanged();
- afx_msg void OnMovePlugToSlot();
- afx_msg void OnInsertSlot();
- afx_msg void OnClonePlug();
- LRESULT OnParamAutomated(WPARAM plugin, LPARAM param);
- LRESULT OnDryWetRatioChangedFromPlayer(WPARAM plugin, LPARAM);
- afx_msg void OnWetDryExpandChanged();
- afx_msg void OnSpecialMixProcessingChanged();
- afx_msg void OnOutputRoutingChanged();
- afx_msg void OnPrevPlugin();
- afx_msg void OnNextPlugin();
- afx_msg void OnDestroy();
- afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnTabSelchange(NMHDR* pNMHDR, LRESULT* pResult);
- afx_msg LRESULT OnMDIDeactivate(WPARAM, LPARAM);
- afx_msg LRESULT OnUnlockControls(WPARAM, LPARAM) { if (m_nLockCount > 0) m_nLockCount--; return 0; }
- afx_msg BOOL OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *pResult);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- OPENMPT_NAMESPACE_END
|