Audacity 3.2.0
Public Member Functions | List of all members
BasicEffectUIServices Class Reference

#include <BasicEffectUIServices.h>

Inheritance diagram for BasicEffectUIServices:
[legend]
Collaboration diagram for BasicEffectUIServices:
[legend]

Public Member Functions

int ShowClientInterface (const EffectPlugin &plugin, wxWindow &parent, wxDialog &dialog, EffectEditor *pEditor, bool forceModal) const override
 
void ExportPresets (const EffectPlugin &plugin, const EffectSettings &settings) const override
 
OptionalMessage ImportPresets (const EffectPlugin &plugin, EffectSettings &settings) const override
 
void ShowOptions (const EffectPlugin &plugin) const override
 
bool ValidateUI (const EffectPlugin &context, EffectSettings &) const override
 
bool CloseUI () const override
 
- Public Member Functions inherited from EffectUIServices
virtual ~EffectUIServices ()
 
virtual int ShowHostInterface (EffectBase &plugin, wxWindow &parent, const EffectDialogFactory &factory, std::shared_ptr< EffectInstance > &pInstance, EffectSettingsAccess &access, bool forceModal=false)
 
virtual int ShowClientInterface (const EffectPlugin &plugin, wxWindow &parent, wxDialog &dialog, EffectEditor *pEditor, bool forceModal=false) const =0
 
virtual std::unique_ptr< EffectEditorPopulateUI (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 More...
 
virtual void ExportPresets (const EffectPlugin &plugin, const EffectSettings &settings) const =0
 
virtual OptionalMessage ImportPresets (const EffectPlugin &plugin, EffectSettings &settings) const =0
 
virtual void ShowOptions (const EffectPlugin &plugin) const =0
 
virtual bool ValidateUI (const EffectPlugin &context, EffectSettings &settings) const =0
 
virtual bool CloseUI () const =0
 

Additional Inherited Members

- Public Types inherited from EffectUIServices
enum  : long { DefaultMessageBoxStyle = wxOK | wxCENTRE }
 
- Static Public Member Functions inherited from EffectUIServices
static int DoMessageBox (const EffectPlugin &plugin, const TranslatableString &message, long style=DefaultMessageBoxStyle, const TranslatableString &titleStr={})
 

Detailed Description

Supplies implementations of all pure virtual functions of the base class except PopulateUI

Definition at line 21 of file BasicEffectUIServices.h.

Member Function Documentation

◆ CloseUI()

bool BasicEffectUIServices::CloseUI ( ) const
overridevirtual

Implements EffectUIServices.

Reimplemented in LV2Effect.

Definition at line 46 of file BasicEffectUIServices.cpp.

47{
48 return true;
49}

Referenced by VST3Effect::~VST3Effect().

Here is the caller graph for this function:

◆ ExportPresets()

void BasicEffectUIServices::ExportPresets ( const EffectPlugin plugin,
const EffectSettings settings 
) const
overridevirtual

Implements EffectUIServices.

Reimplemented in LadspaEffect, LV2Effect, VSTEffect, and VST3Effect.

Definition at line 60 of file BasicEffectUIServices.cpp.

62{
63 wxString params;
65 auto commandId = plugin.GetSquashedName(plugin.GetSymbol().Internal());
66 params = commandId.GET() + ":" + params;
67
68 auto path = SelectFile(FileNames::Operation::Presets,
69 XO("Export Effect Parameters"),
70 wxEmptyString,
71 wxEmptyString,
72 wxEmptyString,
74 wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxRESIZE_BORDER,
75 nullptr);
76 if (path.empty()) {
77 return;
78 }
79
80 // Create/Open the file
81 wxFFile f(path, wxT("wb"));
82 if (!f.IsOpened())
83 {
85 XO("Could not open file: \"%s\"").Format( path ),
86 XO("Error Saving Effect Presets"),
87 wxICON_EXCLAMATION,
88 NULL);
89 return;
90 }
91
92 f.Write(params);
93 if (f.Error())
94 {
96 XO("Error writing to file: \"%s\"").Format( path ),
97 XO("Error Saving Effect Presets"),
98 wxICON_EXCLAMATION,
99 NULL);
100 }
101
102 f.Close();
103
104
105 //SetWindowTitle();
106
107}
wxT("CloseDown"))
int AudacityMessageBox(const TranslatableString &message, const TranslatableString &caption, long style, wxWindow *parent, int x, int y)
static const FileNames::FileTypes & PresetTypes()
EffectDistortionSettings params
Definition: Distortion.cpp:77
XO("Cut/Copy/Paste")
FilePath SelectFile(FileNames::Operation op, const TranslatableString &message, const FilePath &default_path, const FilePath &default_filename, const FileExtension &default_extension, const FileTypes &fileTypes, int flags, wxWindow *parent)
Definition: SelectFile.cpp:17
static Settings & settings()
Definition: TrackInfo.cpp:83
virtual ComponentInterfaceSymbol GetSymbol() const =0
const wxString & Internal() const
static Identifier GetSquashedName(const Identifier &ident)
A utility that strips spaces and CamelCases a name.
virtual bool SaveSettingsAsString(const EffectSettings &settings, wxString &parms) const =0
Abstract base class used in importing a file.

References AudacityMessageBox(), EffectDefinitionInterface::GetSquashedName(), ComponentInterface::GetSymbol(), ComponentInterfaceSymbol::Internal(), params, PresetTypes(), EffectPlugin::SaveSettingsAsString(), SelectFile(), settings(), wxT(), and XO().

Here is the call graph for this function:

◆ ImportPresets()

OptionalMessage BasicEffectUIServices::ImportPresets ( const EffectPlugin plugin,
EffectSettings settings 
) const
overridevirtual
Returns
nullopt for failure

Implements EffectUIServices.

Reimplemented in LadspaEffect, LV2Effect, VSTEffect, and VST3Effect.

Definition at line 109 of file BasicEffectUIServices.cpp.

111{
112 wxString params;
113
114 auto path = SelectFile(FileNames::Operation::Presets,
115 XO("Import Effect Parameters"),
116 wxEmptyString,
117 wxEmptyString,
118 wxEmptyString,
119 PresetTypes(),
120 wxFD_OPEN | wxRESIZE_BORDER,
121 nullptr);
122 if (path.empty()) {
123 return {};
124 }
125
126 wxFFile f(path);
127 if (!f.IsOpened())
128 return {};
129
130 OptionalMessage result{};
131
132 if (f.ReadAll(&params)) {
133 wxString ident = params.BeforeFirst(':');
134 params = params.AfterFirst(':');
135
136 auto commandId = plugin.GetSquashedName(plugin.GetSymbol().Internal());
137
138 if (ident != commandId) {
139 // effect identifiers are a sensible length!
140 // must also have some params.
141 if ((params.Length() < 2 ) || (ident.Length() < 2) ||
142 (ident.Length() > 30))
143 {
145 /* i18n-hint %s will be replaced by a file name */
146 XO("%s: is not a valid presets file.\n")
147 .Format(wxFileNameFromPath(path)));
148 }
149 else
150 {
152 /* i18n-hint %s will be replaced by a file name */
153 XO("%s: is for a different Effect, Generator or Analyzer.\n")
154 .Format(wxFileNameFromPath(path)));
155 }
156 return {};
157 }
158 result = plugin.LoadSettingsFromString(params, settings);
159 }
160
161 //SetWindowTitle();
162
163 return result;
164}
std::optional< std::unique_ptr< EffectSettingsAccess::Message > > OptionalMessage
static CommandHandlerObject & ident(AudacityProject &project)
virtual OptionalMessage LoadSettingsFromString(const wxString &parms, EffectSettings &settings) const =0
static int DoMessageBox(const EffectPlugin &plugin, const TranslatableString &message, long style=DefaultMessageBoxStyle, const TranslatableString &titleStr={})

References EffectUIServices::DoMessageBox(), EffectDefinitionInterface::GetSquashedName(), ComponentInterface::GetSymbol(), ident(), ComponentInterfaceSymbol::Internal(), EffectPlugin::LoadSettingsFromString(), params, PresetTypes(), SelectFile(), settings(), and XO().

Here is the call graph for this function:

◆ ShowClientInterface()

int BasicEffectUIServices::ShowClientInterface ( const EffectPlugin plugin,
wxWindow &  parent,
wxDialog &  dialog,
EffectEditor pEditor,
bool  forceModal 
) const
overridevirtual
Returns
0 if destructive effect processing should not proceed (and there may be a non-modal dialog still opened); otherwise, modal dialog return code

Implements EffectUIServices.

Reimplemented in LadspaEffect, LV2Effect, VSTEffect, and VST3Effect.

Definition at line 24 of file BasicEffectUIServices.cpp.

26{
27 dialog.Layout();
28 dialog.Fit();
29 dialog.SetMinSize(dialog.GetSize());
30 if (VetoDialogHook::Call(&dialog))
31 return 0;
32 if (plugin.SupportsRealtime() && !forceModal) {
33 dialog.Show();
34 // Return false to bypass effect processing
35 return 0;
36 }
37 return dialog.ShowModal();
38}
static result_type Call(Arguments &&...arguments)
Null check of the installed function is done for you.

References GlobalHook< VetoDialogHook, bool(wxDialog *) >::Call(), and EffectDefinitionInterface::SupportsRealtime().

Here is the call graph for this function:

◆ ShowOptions()

void BasicEffectUIServices::ShowOptions ( const EffectPlugin plugin) const
overridevirtual

Implements EffectUIServices.

Reimplemented in LadspaEffect, LV2Effect, VSTEffect, and VST3Effect.

Definition at line 166 of file BasicEffectUIServices.cpp.

167{
168}

◆ ValidateUI()

bool BasicEffectUIServices::ValidateUI ( const EffectPlugin context,
EffectSettings  
) const
overridevirtual

Implements EffectUIServices.

Reimplemented in EffectEqualization.

Definition at line 40 of file BasicEffectUIServices.cpp.

42{
43 return true;
44}

Referenced by EffectBassTreble::Editor::OnBassSlider(), EffectBassTreble::Editor::OnBassText(), EffectDistortion::Editor::OnDCBlockCheckbox(), EffectPhaser::Editor::OnDepthSlider(), EffectWahwah::Editor::OnDepthSlider(), EffectPhaser::Editor::OnDepthText(), EffectWahwah::Editor::OnDepthText(), EffectPhaser::Editor::OnDryWetSlider(), EffectPhaser::Editor::OnDryWetText(), EffectPhaser::Editor::OnFeedbackSlider(), EffectPhaser::Editor::OnFeedbackText(), EffectWahwah::Editor::OnFreqOffSlider(), EffectWahwah::Editor::OnFreqOffText(), EffectPhaser::Editor::OnFreqSlider(), EffectWahwah::Editor::OnFreqSlider(), EffectPhaser::Editor::OnFreqText(), EffectWahwah::Editor::OnFreqText(), EffectBassTreble::Editor::OnGainSlider(), EffectPhaser::Editor::OnGainSlider(), EffectWahwah::Editor::OnGainSlider(), EffectBassTreble::Editor::OnGainText(), EffectPhaser::Editor::OnGainText(), EffectWahwah::Editor::OnGainText(), EffectBassTreble::Editor::OnLinkCheckbox(), EffectDistortion::Editor::OnNoiseFloorSlider(), EffectDistortion::Editor::OnNoiseFloorText(), EffectDistortion::Editor::OnParam1Slider(), EffectDistortion::Editor::OnParam1Text(), EffectDistortion::Editor::OnParam2Slider(), EffectDistortion::Editor::OnParam2Text(), EffectPhaser::Editor::OnPhaseSlider(), EffectWahwah::Editor::OnPhaseSlider(), EffectPhaser::Editor::OnPhaseText(), EffectWahwah::Editor::OnPhaseText(), EffectDistortion::Editor::OnRepeatsSlider(), EffectDistortion::Editor::OnRepeatsText(), EffectWahwah::Editor::OnResonanceSlider(), EffectWahwah::Editor::OnResonanceText(), EffectPhaser::Editor::OnStagesSlider(), EffectPhaser::Editor::OnStagesText(), EffectDistortion::Editor::OnThresholdSlider(), EffectDistortion::Editor::OnThresholdText(), EffectBassTreble::Editor::OnTrebleSlider(), EffectBassTreble::Editor::OnTrebleText(), EffectDistortion::Editor::OnTypeChoice(), and SpinSliderHandlers().

Here is the caller graph for this function:

The documentation for this class was generated from the following files: