Audacity 3.2.0
VSTEditor.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 VSTEditor.h
6
7 Dominic Mazzoni
8
9 Paul Licameli split from VSTEffect.h
10
11**********************************************************************/
12
13#ifndef __AUDACITY_VST_EDITOR__
14#define __AUDACITY_VST_EDITOR__
15
16#include "VSTWrapper.h"
17#include "../EffectEditor.h"
18
19#include <wx/weakref.h>
20#include <wx/event.h>
21
22class VSTInstance;
23class wxSlider;
24class wxStaticText;
25class NumericTextCtrl;
26class VSTControl;
27
28class VSTTimer;
29
30class VSTEditor final
31 : public wxEvtHandler
32 , public EffectEditor
33 , public VSTUIWrapper
34{
35public:
36
37 VSTEditor(VSTInstance& instance, EffectType type, bool gui,
38 const EffectUIServices& services,
40 wxWindow* pParent,
41 int numParams
42 );
43
44 ~VSTEditor() override;
45
46 VSTInstance& GetInstance() const;
47
48 bool ValidateUI() override;
49 bool UpdateUI() override;
50
51 void OnClose() override;
52
53 void BuildPlain(EffectSettingsAccess& access, EffectType effectType, double projectRate);
54 void BuildFancy(EffectInstance& instance);
55
56 void OnTimer();
57
58 std::unique_ptr<VSTTimer> mTimer;
59
60 void RefreshParameters(int skip = -1) const;
61
62 void Automate(int index, float value) override;
63
64 void OnSlider(wxCommandEvent& evt);
65
66 int ShowDialog(bool nonModal);
67
68 bool IsGraphicalUI() override;
69
70 void Flush() override;
71
72protected:
73 void SizeWindow(int w, int h) override;
74
75private:
76 void NotifyParameterChanged(int index, float value);
77 void OnIdle(wxIdleEvent &evt);
78
81 const bool mGui;
82
85 void NeedEditIdle(bool state);
86 void NeedIdle() override;
87 void Idle() override;
88
89 void OnSizeWindow(wxCommandEvent& evt);
90
91 int mTimerGuard{ 0 };
92
93 bool mWantsEditIdle{ false };
94 bool mWantsIdle{ false };
95
96 // Remembers last slider movements until idle time
97 std::vector<std::pair<int, double>> mLastMovements{};
98
104
105 wxWindow* mParent;
106 wxWeakRef<wxDialog> mDialog;
107
109
110 // Mapping from parameter ID to string
111 std::vector<wxString> mParamNames;
112
113 int mNumParams{ 0 };
114};
115
116#endif
EffectType
static Settings & settings()
Definition: TrackInfo.cpp:69
Performs effect computation.
void BuildPlain(EffectSettingsAccess &access, EffectType effectType, double projectRate)
Definition: VSTEditor.cpp:285
VSTControl * mControl
Definition: VSTEditor.h:108
wxWindow * mParent
Definition: VSTEditor.h:105
ArrayOf< wxStaticText * > mLabels
Definition: VSTEditor.h:102
void NeedIdle() override
Definition: VSTEditor.cpp:136
bool IsGraphicalUI() override
Definition: VSTEditor.cpp:101
bool FetchSettingsFromInstance(EffectSettings &settings)
Definition: VSTEditor.cpp:567
void BuildFancy(EffectInstance &instance)
Definition: VSTEditor.cpp:242
void NotifyParameterChanged(int index, float value)
Definition: VSTEditor.cpp:153
bool mWantsEditIdle
Definition: VSTEditor.h:93
void OnSizeWindow(wxCommandEvent &evt)
Definition: VSTEditor.cpp:468
std::unique_ptr< VSTTimer > mTimer
Definition: VSTEditor.h:58
bool mWantsIdle
Definition: VSTEditor.h:94
void Flush() override
Definition: VSTEditor.cpp:106
std::vector< wxString > mParamNames
Definition: VSTEditor.h:111
bool StoreSettingsToInstance(const EffectSettings &settings)
Definition: VSTEditor.cpp:572
void Automate(int index, float value) override
Definition: VSTEditor.cpp:559
void OnSlider(wxCommandEvent &evt)
Definition: VSTEditor.cpp:490
void NeedEditIdle(bool state)
Definition: VSTEditor.cpp:147
ArrayOf< wxStaticText * > mDisplays
Definition: VSTEditor.h:101
const bool mGui
Definition: VSTEditor.h:81
int mTimerGuard
Definition: VSTEditor.h:91
wxWeakRef< wxDialog > mDialog
Definition: VSTEditor.h:106
void SizeWindow(int w, int h) override
Definition: VSTEditor.cpp:210
int mNumParams
Definition: VSTEditor.h:113
void OnClose() override
Definition: VSTEditor.cpp:592
bool ValidateUI() override
Get settings data from the panel; may make error dialogs and return false.
Definition: VSTEditor.cpp:577
ArrayOf< wxStaticText * > mNames
Definition: VSTEditor.h:99
const EffectType mType
Definition: VSTEditor.h:80
void RefreshParameters(int skip=-1) const
Definition: VSTEditor.cpp:417
void Idle() override
Definition: VSTEditor.cpp:142
int ShowDialog(bool nonModal)
Definition: VSTEditor.cpp:88
void OnIdle(wxIdleEvent &evt)
Definition: VSTEditor.cpp:177
std::vector< std::pair< int, double > > mLastMovements
Definition: VSTEditor.h:97
VSTInstance & GetInstance() const
Definition: VSTEditor.cpp:554
~VSTEditor() override
Definition: VSTEditor.cpp:510
NumericTextCtrl * mDuration
Definition: VSTEditor.h:103
bool UpdateUI() override
Update appearance of the panel for changes in settings.
Definition: VSTEditor.cpp:502
VSTEditor(VSTInstance &instance, EffectType type, bool gui, const EffectUIServices &services, EffectSettingsAccess &access, wxWindow *pParent, int numParams)
Definition: VSTEditor.cpp:516
void OnTimer()
Definition: VSTEditor.cpp:111
VSTInstance & mInstance
Definition: VSTEditor.h:79
ArrayOf< wxSlider * > mSliders
Definition: VSTEditor.h:100
Externalized state of a plug-in.