Audacity  3.0.3
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 () override
 
TranslatableString GetDescription () 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 PluginPath GetPath ()
 
virtual VendorSymbol GetVendor ()
 
virtual wxString GetVersion ()
 
virtual bool ShowsPreviewButton ()
 
virtual void PopulateOrExchange (ShuttleGui &WXUNUSED(S))
 
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 }

References gPrefs.

◆ ~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 {
271  ShuttleGui S(this, eIsSavingToPrefs);
273 
274  if (AudioIOLatencyDuration.Read() < 0)
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 }

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

Here is the call graph for this function:

◆ GetDescription()

TranslatableString RecordingPrefs::GetDescription ( )
overridevirtual

Implements ComponentInterface.

Definition at line 61 of file RecordingPrefs.cpp.

62 {
63  return XO("Preferences for Recording");
64 }

References XO.

◆ GetSymbol()

ComponentInterfaceSymbol RecordingPrefs::GetSymbol ( )
overridevirtual

Implements ComponentInterface.

Definition at line 56 of file RecordingPrefs.cpp.

57 {
59 }

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 }

References eIsCreatingFromPrefs, and PopulateOrExchange().

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 }

References _, ShuttleGuiBase::AddFixedText(), ShuttleGuiBase::AddUnits(), AUDIO_PRE_ROLL_KEY, AUDIO_ROLL_CROSSFADE_KEY, DecibelScaleCutoff, DEFAULT_PRE_ROLL_SECONDS, DEFAULT_ROLL_CROSSFADE_MS, ShuttleGuiBase::EndMultiColumn(), ShuttleGuiBase::EndScroller(), ShuttleGuiBase::EndStatic(), ShuttleGuiBase::EndThreeColumn(), ShuttleGui::Id(), mToggleCustomName, mUseCustomTrackName, ShuttleGui::Name(), ShuttleGui::NameSuffix(), Setting< T >::Read(), ShuttleGuiBase::SetBorder(), ShuttleGuiBase::SetStretchyCol(), ShuttleGuiBase::StartMultiColumn(), ShuttleGuiBase::StartScroller(), ShuttleGuiBase::StartStatic(), ShuttleGuiBase::StartThreeColumn(), ShuttleGuiBase::TieCheckBox(), ShuttleGuiBase::TieIntegerTextBox(), ShuttleGuiBase::TieSlider(), ShuttleGuiBase::TieTextBox(), UseCustomTrackNameID, WarningDialogKey(), 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:
RecordingPrefs::mToggleCustomName
wxTextCtrl * mToggleCustomName
Definition: RecordingPrefs.h:59
ShuttleGui::NameSuffix
ShuttleGui & NameSuffix(const TranslatableString &suffix)
Definition: ShuttleGui.h:671
ShuttleGuiBase::EndThreeColumn
void EndThreeColumn()
Definition: ShuttleGui.h:369
gPrefs
FileConfig * gPrefs
Definition: Prefs.cpp:70
RECORDING_PREFS_PLUGIN_SYMBOL
#define RECORDING_PREFS_PLUGIN_SYMBOL
Definition: RecordingPrefs.h:31
ShuttleGuiBase::TieCheckBox
wxCheckBox * TieCheckBox(const TranslatableString &Prompt, bool &Var)
Definition: ShuttleGui.cpp:1629
ShuttleGuiBase::TieSlider
wxSlider * TieSlider(const TranslatableString &Prompt, int &pos, const int max, const int min=0)
Definition: ShuttleGui.cpp:1687
XO
#define XO(s)
Definition: Internat.h:31
XC
#define XC(s, c)
Definition: Internat.h:37
ShuttleGuiBase::EndMultiColumn
void EndMultiColumn()
Definition: ShuttleGui.cpp:1238
RecordingPrefs::PopulateOrExchange
void PopulateOrExchange(ShuttleGui &S) override
Definition: RecordingPrefs.cpp:82
RecordingPrefs::Populate
void Populate()
Definition: RecordingPrefs.cpp:71
ShuttleGui::Id
ShuttleGui & Id(int id)
Definition: ShuttleGui.cpp:2274
ShuttleGuiBase::TieTextBox
wxTextCtrl * TieTextBox(const TranslatableString &Caption, wxString &Value, const int nChars=0)
Definition: ShuttleGui.cpp:1652
DEFAULT_PRE_ROLL_SECONDS
#define DEFAULT_PRE_ROLL_SECONDS
Definition: RecordingPrefs.h:38
Setting::Read
bool Read(T *pVar) const
overload of Read returning a boolean that is true if the value was previously defined *‍/
Definition: Prefs.h:128
ShuttleGuiBase::EndScroller
void EndScroller()
Definition: ShuttleGui.cpp:971
DEFAULT_ROLL_CROSSFADE_MS
#define DEFAULT_ROLL_CROSSFADE_MS
Definition: RecordingPrefs.h:41
AudioIOLatencyDuration
DoubleSetting AudioIOLatencyDuration
Definition: AudioIOBase.cpp:968
RecordingPrefs::mUseCustomTrackName
bool mUseCustomTrackName
Definition: RecordingPrefs.h:60
XXO
#define XXO(s)
Definition: Internat.h:44
ShuttleGuiBase::StartScroller
wxScrolledWindow * StartScroller(int iStyle=0)
Definition: ShuttleGui.cpp:938
AUDIO_PRE_ROLL_KEY
#define AUDIO_PRE_ROLL_KEY
Definition: RecordingPrefs.h:37
ShuttleGuiBase::StartMultiColumn
void StartMultiColumn(int nCols, int PositionFlags=wxALIGN_LEFT)
Definition: ShuttleGui.cpp:1229
ShuttleGuiBase::AddUnits
void AddUnits(const TranslatableString &Prompt, int wrapWidth=0)
Left aligned text string.
Definition: ShuttleGui.cpp:263
ShuttleGuiBase::AddFixedText
void AddFixedText(const TranslatableString &Str, bool bCenter=false, int wrapWidth=0)
Definition: ShuttleGui.cpp:440
ShuttleGuiBase::StartThreeColumn
void StartThreeColumn()
Definition: ShuttleGui.h:368
AUDIO_ROLL_CROSSFADE_KEY
#define AUDIO_ROLL_CROSSFADE_KEY
Definition: RecordingPrefs.h:40
DecibelScaleCutoff
IntSetting DecibelScaleCutoff
Negation of this value is the lowest dB level that should be shown in dB scales.
Definition: Decibels.cpp:12
ShuttleGuiBase::StartStatic
wxStaticBox * StartStatic(const TranslatableString &Str, int iProp=0)
Definition: ShuttleGui.cpp:893
eIsSavingToPrefs
@ eIsSavingToPrefs
Definition: ShuttleGui.h:48
min
int min(int a, int b)
Definition: CompareAudioCommand.cpp:106
ShuttleGui::Name
ShuttleGui & Name(const TranslatableString &name)
Definition: ShuttleGui.h:663
_
#define _(s)
Definition: Internat.h:75
UseCustomTrackNameID
@ UseCustomTrackNameID
Definition: RecordingPrefs.cpp:36
ShuttleGuiBase::TieIntegerTextBox
virtual wxTextCtrl * TieIntegerTextBox(const TranslatableString &Prompt, const IntSetting &Setting, const int nChars)
Definition: ShuttleGui.cpp:1932
WarningDialogKey
wxString WarningDialogKey(const wxString &internalDialogName)
Definition: Prefs.cpp:415
Setting::Reset
bool Reset()
Reset to the default value.
Definition: Prefs.h:183
ShuttleGuiBase::SetBorder
void SetBorder(int Border)
Definition: ShuttleGui.h:489
RecordingPrefs::mOldNameChoice
bool mOldNameChoice
Definition: RecordingPrefs.h:61
eIsCreatingFromPrefs
@ eIsCreatingFromPrefs
Definition: ShuttleGui.h:47
ShuttleGuiBase::EndStatic
void EndStatic()
Definition: ShuttleGui.cpp:922
ShuttleGuiBase::SetStretchyCol
void SetStretchyCol(int i)
Used to modify an already placed FlexGridSizer to make a column stretchy.
Definition: ShuttleGui.cpp:202
ShuttleGui
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:631
PrefsPanel::PrefsPanel
PrefsPanel(wxWindow *parent, wxWindowID winid, const TranslatableString &title)
Definition: PrefsPanel.h:90