123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- /*
- * AbstractVstEditor.h
- * -------------------
- * Purpose: Common plugin editor interface class. This code is shared between custom and default plugin user interfaces.
- * 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 <vector>
- #include "../soundlib/Snd_defs.h"
- #include "Moddoc.h"
- OPENMPT_NAMESPACE_BEGIN
- class IMixPlugin;
- struct UpdateHint;
- class CAbstractVstEditor: public CDialog
- {
- protected:
- CMenu m_Menu;
- CMenu m_PresetMenu;
- std::vector<std::unique_ptr<CMenu>> m_presetMenuGroup;
- CMenu m_InputMenu;
- CMenu m_OutputMenu;
- CMenu m_MacroMenu;
- CMenu m_OptionsMenu;
- static UINT m_clipboardFormat;
- int32 m_currentPresetMenu = 0;
- int32 m_clientHeight;
- int m_nLearnMacro = -1;
- int m_nCurProg = -1;
- INSTRUMENTINDEX m_nInstrument;
- bool m_isMinimized = false;
- bool m_updateDisplay = false;
- CModDoc::NoteToChannelMap m_noteChannel; // Note -> Preview channel assignment
- // Adjust window size if menu bar height changes
- class WindowSizeAdjuster
- {
- CWnd &m_wnd;
- int m_menuHeight = 0;
- public:
- WindowSizeAdjuster(CWnd &wnd);
- ~WindowSizeAdjuster();
- };
- public:
- IMixPlugin &m_VstPlugin;
- CAbstractVstEditor(IMixPlugin &plugin);
- virtual ~CAbstractVstEditor();
- void SetupMenu(bool force = false);
- void SetTitle();
- void SetLearnMacro(int inMacro);
- int GetLearnMacro();
- void SetPreset(int32 preset);
- void UpdatePresetField();
- afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
- afx_msg void OnLoadPreset();
- afx_msg void OnSavePreset();
- afx_msg void OnCopyParameters();
- afx_msg void OnPasteParameters();
- afx_msg void OnRandomizePreset();
- afx_msg void OnRenamePlugin();
- afx_msg void OnSetPreset(UINT nID);
- afx_msg void OnBypassPlug();
- afx_msg void OnRecordAutomation();
- afx_msg void OnRecordMIDIOut();
- afx_msg void OnPassKeypressesToPlug();
- afx_msg void OnSetPreviousVSTPreset();
- afx_msg void OnSetNextVSTPreset();
- afx_msg void OnVSTPresetBackwardJump();
- afx_msg void OnVSTPresetForwardJump();
- afx_msg void OnVSTPresetRename();
- afx_msg void OnCreateInstrument();
- afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hMenu);
- afx_msg LRESULT OnCustomKeyMsg(WPARAM, LPARAM);
- afx_msg LRESULT OnMidiMsg(WPARAM, LPARAM);
- afx_msg void OnDropFiles(HDROP hDropInfo);
- afx_msg void OnMove(int x, int y);
- afx_msg void OnClose() { DoClose(); }
- // Overridden methods:
- void PostNcDestroy() override;
- void OnOK() override { DoClose(); }
- void OnCancel() override { DoClose(); }
- virtual bool OpenEditor(CWnd *parent);
- virtual void DoClose();
- virtual void UpdateParamDisplays() { if(m_updateDisplay) { SetupMenu(true); m_updateDisplay = false; } }
- virtual void UpdateParam(int32 /*param*/) { }
- virtual void UpdateView(UpdateHint hint);
- virtual bool IsResizable() const = 0;
- virtual bool SetSize(int contentWidth, int contentHeight) = 0;
- void UpdateDisplay() { m_updateDisplay = true; }
- DECLARE_MESSAGE_MAP()
- protected:
- BOOL PreTranslateMessage(MSG *msg) override;
- bool HandleKeyMessage(MSG &msg);
- void UpdatePresetMenu(bool force = false);
- void GeneratePresetMenu(int32 offset, CMenu &parent);
- void UpdateInputMenu();
- void UpdateOutputMenu();
- void UpdateMacroMenu();
- void UpdateOptionsMenu();
- INSTRUMENTINDEX GetBestInstrumentCandidate() const;
- bool CheckInstrument(INSTRUMENTINDEX ins) const;
- bool ValidateCurrentInstrument();
- void OnToggleEditor(UINT nID);
- void OnSetInputInstrument(UINT nID);
- afx_msg void OnInitMenu(CMenu* pMenu);
- void PrepareToLearnMacro(UINT nID);
- void OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized);
- void StoreWindowPos();
- void RestoreWindowPos();
- };
- OPENMPT_NAMESPACE_END
- #endif // NO_PLUGINS
|