Audacity 3.2.0
EffectUIServices.h
Go to the documentation of this file.
1/*!********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 @file EffectUIServices.h
6
7 Paul Licameli split from EffectPlugin.h
8
9**********************************************************************/
10#ifndef __AUDACITY_EFFECT_UI_SERVICES__
11#define __AUDACITY_EFFECT_UI_SERVICES__
12
13#include "EffectInterface.h"
14#include <memory>
15#include <optional>
16
17class EffectEditor;
18class EffectInstance;
19class EffectPlugin;
20class EffectSettings;
21class EffectOutputs;
23class ShuttleGui;
24class wxWindow;
25class wxDialog;
26
28 std::optional<std::unique_ptr<EffectSettingsAccess::Message>>;
29
31 wxDialog *pDialog{};
33 std::shared_ptr<EffectInstance> pInstance{};
35};
36
38
40 wxWindow &parent, EffectPlugin &, EffectUIServices &,
42
45class AUDACITY_DLL_API EffectUIServices /* not final */
46{
47public:
48 // Display a message box, using effect's (translated) name as the prefix
49 // for the title.
50 enum : long { DefaultMessageBoxStyle = wxOK | wxCENTRE };
51 static int DoMessageBox(const EffectPlugin &plugin,
52 const TranslatableString& message,
53 long style = DefaultMessageBoxStyle,
54 const TranslatableString &titleStr = {});
55
57
60
74 virtual int ShowHostInterface(EffectPlugin &plugin,
75 wxWindow &parent, const EffectDialogFactory &factory,
76 std::shared_ptr<EffectInstance> &pInstance, EffectSettingsAccess &access,
77 bool forceModal = false);
78
83 virtual int ShowClientInterface(const EffectPlugin &plugin,
84 wxWindow &parent, wxDialog &dialog,
85 EffectEditor *pEditor, bool forceModal = false) const = 0;
86
88
101 virtual std::unique_ptr<EffectEditor> PopulateUI(
102 const EffectPlugin &plugin, ShuttleGui &S,
103 EffectInstance &instance, EffectSettingsAccess &access,
104 const EffectOutputs *pOutputs) const = 0;
105
106 virtual void ExportPresets(
107 const EffectPlugin &plugin, const EffectSettings &settings) const = 0;
109 [[nodiscard]] virtual OptionalMessage ImportPresets(
110 const EffectPlugin &plugin, EffectSettings &settings) const = 0;
111
112 virtual void ShowOptions(const EffectPlugin &plugin) const = 0;
113
114 virtual bool ValidateUI(
115 const EffectPlugin &context, EffectSettings &settings) const = 0;
116 virtual bool CloseUI() const = 0;
117};
118
119#endif
std::optional< std::unique_ptr< EffectSettingsAccess::Message > > OptionalMessage
std::function< DialogFactoryResults(wxWindow &parent, EffectPlugin &, EffectUIServices &, EffectSettingsAccess &) > EffectDialogFactory
Type of function that creates a dialog for an effect.
static BasicUI::MessageBoxResult DoMessageBox(const TranslatableString &msg)
#define S(N)
Definition: ToChars.cpp:64
static Settings & settings()
Definition: TrackInfo.cpp:83
Performs effect computation.
Hold values to send to effect output meters.
Factory of instances of an effect.
Definition: EffectPlugin.h:36
virtual void ShowOptions(const EffectPlugin &plugin) const =0
virtual bool ValidateUI(const EffectPlugin &context, EffectSettings &settings) const =0
virtual bool CloseUI() const =0
virtual std::unique_ptr< EffectEditor > PopulateUI(const EffectPlugin &plugin, ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) const =0
Adds controls to a panel that is given as the parent window of S
virtual OptionalMessage ImportPresets(const EffectPlugin &plugin, EffectSettings &settings) const =0
virtual void ExportPresets(const EffectPlugin &plugin, const EffectSettings &settings) const =0
virtual ~EffectUIServices()
virtual int ShowClientInterface(const EffectPlugin &plugin, wxWindow &parent, wxDialog &dialog, EffectEditor *pEditor, bool forceModal=false) const =0
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:625
Holds a msgid for the translation catalog; may also bind format arguments.
static RegisteredToolbarFactory factory
std::shared_ptr< EffectInstance > pInstance
constructed and successfully Init()-ed; or null for failure
EffectEditor * pEditor
Externalized state of a plug-in.