/* * DefaultVstEditor.h * ------------------ * Purpose: Implementation of the default plugin editor that is used if a plugin does not provide an own editor GUI. * Notes : (currently none) * Authors: OpenMPT Devs * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ #pragma once #include "openmpt/all/BuildSettings.hpp" #ifndef NO_PLUGINS #include "Mptrack.h" #include "AbstractVstEditor.h" OPENMPT_NAMESPACE_BEGIN enum { PARAM_RESOLUTION = 1000, NUM_PLUGINEDITOR_PARAMETERS = 8, // Parameters on screen }; struct Measurements; class ParamControlSet { protected: CSliderCtrl valueSlider; CEdit valueEdit; CStatic nameLabel; CStatic valueLabel; CStatic perMilLabel; public: ParamControlSet(CWnd *parent, const CRect &rect, int setID, const Measurements &m); ~ParamControlSet(); void EnableControls(bool enable = true); void ResetContent(); void SetParamName(const CString &name); void SetParamValue(int value, const CString &text); int GetParamValueFromSlider() const; int GetParamValueFromEdit() const; int GetSliderID() const { return valueSlider.GetDlgCtrlID(); }; }; class CDefaultVstEditor : public CAbstractVstEditor { protected: std::vector controls; CScrollBar paramScroller; PlugParamIndex paramOffset; int m_nControlLock; public: CDefaultVstEditor(IMixPlugin &plugin); virtual ~CDefaultVstEditor(); virtual void UpdateParamDisplays() { CAbstractVstEditor::UpdateParamDisplays(); UpdateControls(false); }; virtual bool OpenEditor(CWnd *parent); // Plugins may not request to change the GUI size, since we use our own GUI. virtual bool IsResizable() const { return false; }; virtual bool SetSize(int, int) { return false; }; protected: virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() afx_msg void OnParamTextboxChanged(UINT id); afx_msg void OnParamSliderChanged(UINT id); afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); protected: void CreateControls(); void UpdateControls(bool updateParamNames); void SetParam(PlugParamIndex param, int value); void UpdateParamDisplay(PlugParamIndex param); }; OPENMPT_NAMESPACE_END #endif // NO_PLUGINS