12#ifndef __AUDACITY_EFFECTPLUGIN_H__
13#define __AUDACITY_EFFECTPLUGIN_H__
86 bool forceModal =
false) = 0;
126 wxWindow *pParent =
nullptr,
128 const EffectSettingsAccessPtr &pAccess =
nullptr
258 virtual bool UpdateUI();
264 virtual bool IsGraphicalUI();
270 virtual void Disconnect();
278 static bool EnableApply(wxWindow *parent,
bool enable =
true);
285 static bool EnablePreview(wxWindow *parent,
bool enable =
true);
289 template<
typename EventTag,
typename Class,
typename Event>
291 wxEvtHandler &src,
const EventTag& eventType,
void (Class::*pmf)(Event &))
293 src.Bind(eventType, pmf,
static_cast<Class *
>(
this));
299 bool mUIClosed {
false };
std::optional< std::unique_ptr< EffectSettingsAccess::Message > > OptionalMessage
std::function< DialogFactoryResults(wxWindow &parent, EffectPlugin &, EffectUIClientInterface &, EffectSettingsAccess &) > EffectDialogFactory
Type of function that creates a dialog for an effect.
static Settings & settings()
Performs effect computation.
~EffectInstanceEx() override
virtual bool Process(EffectSettings &settings)=0
Actually do the effect here.
Performs effect computation.
Hold values to send to effect output meters.
Factory of instances of an effect and of dialogs to control them.
static const wxString kUserPresetIdent
virtual void SetBatchProcessing()=0
virtual bool TransferDataToWindow(const EffectSettings &settings)=0
Update controls for the settings.
std::shared_ptr< EffectSettingsAccess > EffectSettingsAccessPtr
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.
static const wxString kFactoryPresetIdent
virtual bool TransferDataFromWindow(EffectSettings &settings)=0
Update the given settings from controls.
virtual void UnsetBatchProcessing()=0
virtual int ShowHostInterface(wxWindow &parent, const EffectDialogFactory &factory, std::shared_ptr< EffectInstance > &pInstance, EffectSettingsAccess &access, bool forceModal=false)=0
Usually applies factory to self and given access.
virtual EffectUIClientInterface * GetEffectUIClientInterface()=0
Returns the EffectUIClientInterface instance for this effect.
virtual bool SaveSettingsAsString(const EffectSettings &settings, wxString &parms) const =0
virtual const EffectSettingsManager & GetDefinition() const =0
virtual bool IsBatchProcessing() const =0
virtual OptionalMessage LoadSettingsFromString(const wxString &parms, EffectSettings &settings) const =0
static const wxString kCurrentSettingsIdent
static const wxString kFactoryDefaultsIdent
virtual void Preview(EffectSettingsAccess &access, bool dryOnly)=0
EffectPlugin & operator=(EffectPlugin &)=delete
EffectSettingsManager is an EffectDefinitionInterface that adds a factory function for EffectSettings...
EffectUIClientInterface is an abstract base class to populate a UI and validate UI values....
virtual std::unique_ptr< EffectUIValidator > PopulateUI(ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs)=0
Adds controls to a panel that is given as the parent window of S
virtual OptionalMessage ImportPresets(EffectSettings &settings)=0
virtual void ShowOptions()=0
virtual int ShowClientInterface(wxWindow &parent, wxDialog &dialog, EffectUIValidator *pValidator, bool forceModal=false)=0
virtual bool ValidateUI(EffectSettings &settings)=0
virtual ~EffectUIClientInterface()
virtual bool IsGraphicalUI()=0
virtual void ExportPresets(const EffectSettings &settings) const =0
virtual bool CanExportPresets()=0
virtual bool HasOptions()=0
Interface for transferring values from a panel of effect controls.
EffectSettingsAccess & mAccess
virtual bool ValidateUI()=0
Get settings data from the panel; may make error dialogs and return false.
virtual ~EffectUIValidator()
void BindTo(wxEvtHandler &src, const EventTag &eventType, void(Class::*pmf)(Event &))
EffectUIClientInterface & mEffect
An object that sends messages to an open-ended list of subscribed callbacks.
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
A flat linked list of tracks supporting Add, Remove, Clear, and Contains, serialization of the list o...
Used to create or clone a WaveTrack, with appropriate context from the project that will own the trac...
void OnClose(wxCommandEvent &e)
static RegisteredToolbarFactory factory
std::shared_ptr< EffectInstance > pInstance
constructed and successfully Init()-ed; or null for failure
EffectUIValidator * pValidator
Message sent by validator when a setting is changed by a user.
Externalized state of a plug-in.