Audacity 3.2.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
RecordingPrefs Class Referencefinal

A PrefsPanel used to select recording options. More...

#include <RecordingPrefs.h>

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

Public Member Functions

 RecordingPrefs (wxWindow *parent, wxWindowID winid)
 
virtual ~RecordingPrefs ()
 
ComponentInterfaceSymbol GetSymbol () const override
 
TranslatableString GetDescription () const override
 
bool Commit () override
 
ManualPageID HelpPageName () override
 If not empty string, the Help button is added below the panel. More...
 
void PopulateOrExchange (ShuttleGui &S) override
 
- Public Member Functions inherited from PrefsPanel
 PrefsPanel (wxWindow *parent, wxWindowID winid, const TranslatableString &title)
 
virtual ~PrefsPanel ()
 
virtual void Preview ()
 
virtual bool Commit ()=0
 
virtual PluginPath GetPath () const override
 
virtual VendorSymbol GetVendor () const override
 
virtual wxString GetVersion () const override
 
virtual bool ShowsPreviewButton ()
 
virtual void PopulateOrExchange (ShuttleGui &WXUNUSED(S))
 
virtual ManualPageID HelpPageName ()
 If not empty string, the Help button is added below the panel. More...
 
virtual void Cancel ()
 
- Public Member Functions inherited from wxPanelWrapper
 wxPanelWrapper ()
 
 wxPanelWrapper (wxWindow *parent, wxWindowID winid=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL|wxNO_BORDER, const TranslatableString &name=XO("Panel"))
 
bool Create (wxWindow *parent, wxWindowID winid=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL|wxNO_BORDER, const TranslatableString &name=XO("Panel"))
 
void SetLabel (const TranslatableString &label)
 
void SetName (const TranslatableString &name)
 
void SetToolTip (const TranslatableString &toolTip)
 
void SetName ()
 
- Public Member Functions inherited from wxTabTraversalWrapper< wxPanel >
 wxTabTraversalWrapper (Args &&... args)
 
 wxTabTraversalWrapper (const wxTabTraversalWrapper &)=delete
 
 wxTabTraversalWrapper (wxTabTraversalWrapper &&)=delete
 
wxTabTraversalWrapperoperator= (const wxTabTraversalWrapper &)=delete
 
wxTabTraversalWrapperoperator= (wxTabTraversalWrapper &&)=delete
 

Private Member Functions

void Populate ()
 
void OnToggleCustomName (wxCommandEvent &)
 

Private Attributes

wxTextCtrl * mToggleCustomName
 
bool mUseCustomTrackName
 
bool mOldNameChoice
 

Additional Inherited Members

- Public Types inherited from PrefsPanel
using Factories = std::vector< PrefsPanel::PrefsNode >
 
using Factory = std::function< PrefsPanel *(wxWindow *parent, wxWindowID winid, AudacityProject *) >
 
- Static Public Member Functions inherited from PrefsPanel
static FactoriesDefaultFactories ()
 

Detailed Description

A PrefsPanel used to select recording options.

Presents interface for user to update the various recording options like playthrough, latency correction, and others.

Definition at line 43 of file RecordingPrefs.h.

Constructor & Destructor Documentation

◆ RecordingPrefs()

RecordingPrefs::RecordingPrefs ( wxWindow *  parent,
wxWindowID  winid 
)

Definition at line 43 of file RecordingPrefs.cpp.

45: PrefsPanel(parent, winid, XC("Recording", "preference"))
46{
47 gPrefs->Read(wxT("/GUI/TrackNames/RecordingNameCustom"), &mUseCustomTrackName, false);
49 Populate();
50}
wxT("CloseDown"))
#define XC(s, c)
Definition: Internat.h:37
FileConfig * gPrefs
Definition: Prefs.cpp:70
PrefsPanel(wxWindow *parent, wxWindowID winid, const TranslatableString &title)
Definition: PrefsPanel.h:90
bool mUseCustomTrackName

References gPrefs, and wxT().

Here is the call graph for this function:

◆ ~RecordingPrefs()

RecordingPrefs::~RecordingPrefs ( )
virtual

Definition at line 52 of file RecordingPrefs.cpp.

53{
54}

Member Function Documentation

◆ Commit()

bool RecordingPrefs::Commit ( )
overridevirtual

Implements PrefsPanel.

Definition at line 269 of file RecordingPrefs.cpp.

270{
273
276
277 #ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
278 double targetpeak, deltapeak;
279 gPrefs->Read(wxT("/AudioIO/TargetPeak"), &targetpeak);
280 gPrefs->Read(wxT("/AudioIO/DeltaPeakVolume"), &deltapeak);
281 if (targetpeak + deltapeak > 100.0 || targetpeak - deltapeak < 0.0)
282 {
283 gPrefs->Write(wxT("/AudioIO/DeltaPeakVolume"), min(100.0 - targetpeak, targetpeak));
284 }
285
286 int value;
287 gPrefs->Read(wxT("/AudioIO/AnalysisTime"), &value);
288 if (value <= 0)
289 gPrefs->Write(wxT("/AudioIO/AnalysisTime"), AILA_DEF_ANALYSIS_TIME);
290
291 gPrefs->Read(wxT("/AudioIO/NumberAnalysis"), &value);
292 if (value < 0)
293 gPrefs->Write(wxT("/AudioIO/NumberAnalysis"), AILA_DEF_NUMBER_ANALYSIS);
294 #endif
295 return true;
296}
DoubleSetting AudioIOLatencyDuration
int min(int a, int b)
@ eIsSavingToPrefs
Definition: ShuttleGui.h:49
#define S(N)
Definition: ToChars.cpp:64
void PopulateOrExchange(ShuttleGui &S) override
bool Reset()
Reset to the default value.
Definition: Prefs.h:277
bool Read(T *pVar) const
overload of Read returning a boolean that is true if the value was previously defined *‍/
Definition: Prefs.h:200
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:628

References AudioIOLatencyDuration, eIsSavingToPrefs, gPrefs, min(), PopulateOrExchange(), Setting< T >::Read(), Setting< T >::Reset(), S, and wxT().

Here is the call graph for this function:

◆ GetDescription()

TranslatableString RecordingPrefs::GetDescription ( ) const
overridevirtual

Implements ComponentInterface.

Definition at line 61 of file RecordingPrefs.cpp.

62{
63 return XO("Preferences for Recording");
64}
XO("Cut/Copy/Paste")

References XO().

Here is the call graph for this function:

◆ GetSymbol()

ComponentInterfaceSymbol RecordingPrefs::GetSymbol ( ) const
overridevirtual

Implements ComponentInterface.

Definition at line 56 of file RecordingPrefs.cpp.

57{
59}
#define RECORDING_PREFS_PLUGIN_SYMBOL

References RECORDING_PREFS_PLUGIN_SYMBOL.

◆ HelpPageName()

ManualPageID RecordingPrefs::HelpPageName ( )
overridevirtual

If not empty string, the Help button is added below the panel.

Default returns empty string.

Reimplemented from PrefsPanel.

Definition at line 66 of file RecordingPrefs.cpp.

67{
68 return "Recording_Preferences";
69}

◆ OnToggleCustomName()

void RecordingPrefs::OnToggleCustomName ( wxCommandEvent &  )
private

Definition at line 298 of file RecordingPrefs.cpp.

References mToggleCustomName, and mUseCustomTrackName.

◆ Populate()

void RecordingPrefs::Populate ( )
private

Definition at line 71 of file RecordingPrefs.cpp.

72{
73 //------------------------- Main section --------------------
74 // Now construct the GUI itself.
75 // Use 'eIsCreatingFromPrefs' so that the GUI is
76 // initialised with values from gPrefs.
79 // ----------------------- End of main section --------------
80}
@ eIsCreatingFromPrefs
Definition: ShuttleGui.h:48

References eIsCreatingFromPrefs, PopulateOrExchange(), and S.

Here is the call graph for this function:

◆ PopulateOrExchange()

void RecordingPrefs::PopulateOrExchange ( ShuttleGui S)
override

Definition at line 82 of file RecordingPrefs.cpp.

83{
84 S.SetBorder(2);
85 S.StartScroller();
86
87 S.StartStatic(XO("Options"));
88 {
89 // Start wording of options with a verb, if possible.
90 S.TieCheckBox(XXO("Play &other tracks while recording (overdub)"),
91 {wxT("/AudioIO/Duplex"),
92#ifdef EXPERIMENTAL_DA
93 false
94#else
95 true
96#endif
97 });
98
99//#if defined(__WXMAC__)
100// Bug 388. Feature not supported on any Mac Hardware.
101#if 0
102 S.TieCheckBox(XO("Use &hardware to play other tracks"),
103 {wxT("/AudioIO/Playthrough"),
104 false});
105#endif
106 S.TieCheckBox(XXO("&Software playthrough of input"),
107 {wxT("/AudioIO/SWPlaythrough"),
108 false});
109#if !defined(__WXMAC__)
110 //S.AddUnits(XO(" (uncheck when recording computer playback)"));
111#endif
112
113 S.TieCheckBox(XXO("Record on a new track"),
114 {wxT("/GUI/PreferNewTrackRecord"),
115 false});
116
117/* i18n-hint: Dropout is a loss of a short sequence audio sample data from the recording */
118 S.TieCheckBox(XXO("Detect dropouts"),
119 {WarningDialogKey(wxT("DropoutDetected")),
120 true});
121
122
123 }
124 S.EndStatic();
125
126 S.StartStatic(XO("Sound Activated Recording"));
127 {
128 S.TieCheckBox(XXO("&Enable"),
129 {wxT("/AudioIO/SoundActivatedRecord"),
130 false});
131
132 S.StartMultiColumn(2, wxEXPAND);
133 {
134 S.SetStretchyCol(1);
135
136 S.TieSlider(XXO("Le&vel (dB):"),
137 {wxT("/AudioIO/SilenceLevel"),
138 -50},
139 0,
141 }
142 S.EndMultiColumn();
143 }
144 S.EndStatic();
145
146 /* i18n-hint: start of two-part phrase, "Name newly recorded tracks with:" */
147 S.StartStatic(XO("Name newly recorded tracks"));
148 {
149 // Nested multicolumns to indent by 'With:' width, in a way that works if
150 // translated.
151 // This extra step is worth doing to get the check boxes lined up nicely.
152 S.StartMultiColumn( 2 );
153 {
154 /* i18n-hint: end of two-part phrase, "Name newly recorded tracks with:" */
155 S.AddFixedText(XO("With:")) ;
156 S.StartMultiColumn(3);
157 {
158 S.Id(UseCustomTrackNameID).TieCheckBox(XXO("Custom Track &Name"),
159 {wxT("/GUI/TrackNames/RecordingNameCustom"),
161
163 .Name(XO("Custom name text"))
164 .Disable(!mUseCustomTrackName)
165 .TieTextBox( {},
166 {wxT("/GUI/TrackNames/RecodingTrackName"),
167 _("Recorded_Audio")},
168 30);
169 }
170
171 S.EndMultiColumn();
172
173 S.AddFixedText( {} );
174 S.StartMultiColumn(3);
175 {
176 S.TieCheckBox(XXO("&Track Number"),
177 {wxT("/GUI/TrackNames/TrackNumber"),
178 false});
179
180 S.TieCheckBox(XXO("System &Date"),
181 {wxT("/GUI/TrackNames/DateStamp"),
182 false});
183
184 S.TieCheckBox(XXO("System T&ime"),
185 {wxT("/GUI/TrackNames/TimeStamp"),
186 false});
187 }
188 S.EndMultiColumn();
189 }
190 S.EndMultiColumn();
191 }
192 S.EndStatic();
193
194 #ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
195 S.StartStatic(XO("Automated Recording Level Adjustment"));
196 {
197 S.TieCheckBox(XXO("Enable Automated Recording Level Adjustment."),
198 {wxT("/AudioIO/AutomatedInputLevelAdjustment"),
199 false});
200
201 S.StartMultiColumn(2, wxEXPAND);
202 {
203 S.SetStretchyCol(1);
204
205 /* i18n-hint: Desired maximum (peak) volume for sound */
206 S.TieSlider(XXO("Target Peak:"),
207 {wxT("/AudioIO/TargetPeak"),
208 AILA_DEF_TARGET_PEAK},
209 100,
210 0);
211
212 S.TieSlider(XXO("Within:"),
213 {wxT("/AudioIO/DeltaPeakVolume"),
214 AILA_DEF_DELTA_PEAK},
215 100,
216 0);
217 }
218 S.EndMultiColumn();
219
220 S.StartThreeColumn();
221 {
222 S.TieIntegerTextBox(XXO("Analysis Time:"),
223 {wxT("/AudioIO/AnalysisTime"),
224 AILA_DEF_ANALYSIS_TIME},
225 9);
226 S.AddUnits(XO("milliseconds (time of one analysis)"));
227
228 S.TieIntegerTextBox(XXO("Number of consecutive analysis:"),
229 {wxT("/AudioIO/NumberAnalysis"),
230 AILA_DEF_NUMBER_ANALYSIS},
231 2);
232 S.AddUnits(XO("0 means endless"));
233 }
234 S.EndThreeColumn();
235 }
236 S.EndStatic();
237 #endif
238
239#ifdef EXPERIMENTAL_PUNCH_AND_ROLL
240 S.StartStatic(XO("Punch and Roll Recording"));
241 {
242 S.StartThreeColumn();
243 {
244 auto w = S
245 .NameSuffix(XO("seconds"))
246 .TieNumericTextBox(XXO("Pre-ro&ll:"),
249 9);
250 S.AddUnits(XO("seconds"));
251 }
252 {
253 auto w = S
254 .NameSuffix(XO("milliseconds"))
255 .TieNumericTextBox(XXO("Cross&fade:"),
258 9);
259 S.AddUnits(XO("milliseconds"));
260 }
261 S.EndThreeColumn();
262 }
263 S.EndStatic();
264#endif
265
266 S.EndScroller();
267}
IntSetting DecibelScaleCutoff
Negation of this value is the lowest dB level that should be shown in dB scales.
Definition: Decibels.cpp:12
XXO("&Cut/Copy/Paste Toolbar")
#define _(s)
Definition: Internat.h:75
wxString WarningDialogKey(const wxString &internalDialogName)
Definition: Prefs.cpp:468
@ UseCustomTrackNameID
#define AUDIO_PRE_ROLL_KEY
#define DEFAULT_PRE_ROLL_SECONDS
#define DEFAULT_ROLL_CROSSFADE_MS
#define AUDIO_ROLL_CROSSFADE_KEY

References _, AUDIO_PRE_ROLL_KEY, AUDIO_ROLL_CROSSFADE_KEY, DecibelScaleCutoff, DEFAULT_PRE_ROLL_SECONDS, DEFAULT_ROLL_CROSSFADE_MS, mToggleCustomName, mUseCustomTrackName, Setting< T >::Read(), S, UseCustomTrackNameID, WarningDialogKey(), wxT(), XO(), and XXO().

Referenced by Commit(), and Populate().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ mOldNameChoice

bool RecordingPrefs::mOldNameChoice
private

Definition at line 61 of file RecordingPrefs.h.

◆ mToggleCustomName

wxTextCtrl* RecordingPrefs::mToggleCustomName
private

Definition at line 59 of file RecordingPrefs.h.

Referenced by OnToggleCustomName(), and PopulateOrExchange().

◆ mUseCustomTrackName

bool RecordingPrefs::mUseCustomTrackName
private

Definition at line 60 of file RecordingPrefs.h.

Referenced by OnToggleCustomName(), and PopulateOrExchange().


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