winamp/Src/external_dependencies/openmpt-trunk/mptrack/View_gen.h
2024-09-24 14:54:57 +02:00

170 lines
5.2 KiB
C++

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