Audacity 3.2.0
EffectHostInterface.h
Go to the documentation of this file.
1/*!********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 @file EffectHostInterface.h
6
7 Paul Licameli
8 split from EffectInterface.h
9
10**********************************************************************/
11
12#ifndef __AUDACITY_EFFECTHOSTINTERFACE_H__
13#define __AUDACITY_EFFECTHOSTINTERFACE_H__
14
16
17#include <functional>
18#include <memory>
19
21
22class wxDialog;
23class wxWindow;
25class EffectSettings;
28
30
31using EffectDialogFactory = std::function< wxDialog* (
34
35class TrackList;
38class EffectProcessor;
39
40/*************************************************************************************/
45class AUDACITY_DLL_API EffectUIHostInterface
46{
47public:
48 using EffectSettingsAccessPtr = std::shared_ptr<EffectSettingsAccess>;
49
50 const static wxString kUserPresetIdent;
51 const static wxString kFactoryPresetIdent;
52 const static wxString kCurrentSettingsIdent;
53 const static wxString kFactoryDefaultsIdent;
54
57
58 virtual const EffectDefinitionInterface& GetDefinition() const = 0;
59
61
70 virtual int ShowHostInterface(
71 wxWindow &parent, const EffectDialogFactory &factory,
72 EffectSettingsAccess &access, bool forceModal = false
73 ) = 0;
74
75 virtual void Preview(EffectSettingsAccess &access, bool dryOnly) = 0;
77 const EffectSettings &settings, wxString & parms) const = 0;
79 const wxString & parms, EffectSettings &settings) const = 0;
80 virtual bool IsBatchProcessing() const = 0;
81 virtual void SetBatchProcessing() = 0;
82 virtual void UnsetBatchProcessing() = 0;
83
85
98 virtual bool DoEffect(
100 double projectRate, TrackList *list,
102 unsigned flags,
103 // Prompt the user for input only if the next arguments are not all null.
104 wxWindow *pParent = nullptr,
105 const EffectDialogFactory &dialogFactory = {},
106 const EffectSettingsAccessPtr &pAccess = nullptr
108 ) = 0;
109
112
115
120};
121
122#endif
static RegisteredToolbarFactory factory
std::function< wxDialog *(wxWindow &parent, EffectUIHostInterface &, EffectUIClientInterface &, EffectSettingsAccess &) > EffectDialogFactory
Type of function that creates a dialog for an effect.
static Settings & settings()
Definition: TrackInfo.cpp:87
EffectDefinitionInterface is a ComponentInterface that adds some basic read-only information about ef...
provides the ident interface to Effect, and is what makes Effect into a plug-in command....
EffectUIClientInterface is an abstract base class to populate a UI and validate UI values....
UI-related services.
virtual bool TransferDataToWindow(const EffectSettings &settings)=0
Update controls for the settings.
virtual const EffectDefinitionInterface & GetDefinition() const =0
virtual int ShowHostInterface(wxWindow &parent, const EffectDialogFactory &factory, EffectSettingsAccess &access, bool forceModal=false)=0
Usually applies factory to self and given access.
virtual bool IsBatchProcessing() const =0
virtual bool LoadSettingsFromString(const wxString &parms, EffectSettings &settings) const =0
virtual void UnsetBatchProcessing()=0
static const wxString kCurrentSettingsIdent
virtual bool InitializeInstance(EffectSettings &settings)=0
virtual void Preview(EffectSettingsAccess &access, bool dryOnly)=0
virtual void SetBatchProcessing()=0
virtual bool SaveSettingsAsString(const EffectSettings &settings, wxString &parms) const =0
static const wxString kUserPresetIdent
static const wxString kFactoryPresetIdent
EffectUIHostInterface & operator=(EffectUIHostInterface &)=delete
virtual bool DoEffect(EffectSettings &settings, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, wxWindow *pParent=nullptr, const EffectDialogFactory &dialogFactory={}, const EffectSettingsAccessPtr &pAccess=nullptr)=0
Unfortunately complicated dual-use function.
virtual bool TransferDataFromWindow(EffectSettings &settings)=0
Update the given settings from controls.
static const wxString kFactoryDefaultsIdent
virtual ~EffectUIHostInterface()
std::shared_ptr< EffectSettingsAccess > EffectSettingsAccessPtr
A flat linked list of tracks supporting Add, Remove, Clear, and Contains, serialization of the list o...
Definition: Track.h:1294
Used to create or clone a WaveTrack, with appropriate context from the project that will own the trac...
Definition: WaveTrack.h:606
Externalized state of a plug-in.