Audacity  3.0.3
Public Member Functions | Private Member Functions | Private Attributes | List of all members
DevicePrefs Class Referencefinal

A PrefsPanel used to select recording and playback devices and other settings. More...

#include <DevicePrefs.h>

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

Public Member Functions

 DevicePrefs (wxWindow *parent, wxWindowID winid)
 
virtual ~DevicePrefs ()
 
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 GetNamesAndLabels ()
 
void OnHost (wxCommandEvent &e)
 
void OnDevice (wxCommandEvent &e)
 

Private Attributes

TranslatableStrings mHostNames
 
wxArrayStringEx mHostLabels
 
wxString mPlayDevice
 
wxString mRecordDevice
 
wxString mRecordSource
 
long mRecordChannels
 
wxChoice * mHost
 
wxChoice * mPlay
 
wxChoice * mRecord
 
wxChoice * mChannels
 

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 and playback devices and other settings.

Presents interface for user to select the recording device and playback device, from the list of choices that PortAudio makes available.

Also lets user decide how many channels to record.

Definition at line 24 of file DevicePrefs.h.

Constructor & Destructor Documentation

◆ DevicePrefs()

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

Definition at line 56 of file DevicePrefs.cpp.

57 : PrefsPanel(parent, winid, XO("Devices"))
58 {
59  Populate();
60 }

◆ ~DevicePrefs()

DevicePrefs::~DevicePrefs ( )
virtual

Definition at line 62 of file DevicePrefs.cpp.

63 {
64 }

Member Function Documentation

◆ Commit()

bool DevicePrefs::Commit ( )
overridevirtual

Implements PrefsPanel.

Definition at line 388 of file DevicePrefs.cpp.

389 {
390  ShuttleGui S(this, eIsSavingToPrefs);
392  DeviceSourceMap *map = NULL;
393 
394  if (mPlay->GetCount() > 0) {
395  map = (DeviceSourceMap *) mPlay->GetClientData(
396  mPlay->GetSelection());
397  }
398  if (map)
400 
401  map = NULL;
402  if (mRecord->GetCount() > 0) {
403  map = (DeviceSourceMap *) mRecord->GetClientData(mRecord->GetSelection());
404  }
405  if (map) {
408  if (map->totalSources >= 1)
410  else
412  AudioIORecordChannels.Write(mChannels->GetSelection() + 1);
413  }
414 
415  return true;
416 }

References AudioIOPlaybackDevice, AudioIORecordChannels, AudioIORecordingDevice, AudioIORecordingSource, AudioIORecordingSourceIndex, DeviceSourceMap::deviceString, eIsSavingToPrefs, mChannels, mPlay, mRecord, PopulateOrExchange(), Setting< T >::Reset(), DeviceSourceMap::sourceIndex, DeviceSourceMap::sourceString, DeviceSourceMap::totalSources, and Setting< T >::Write().

Here is the call graph for this function:

◆ GetDescription()

TranslatableString DevicePrefs::GetDescription ( )
overridevirtual

Implements ComponentInterface.

Definition at line 72 of file DevicePrefs.cpp.

73 {
74  return XO("Preferences for Device");
75 }

References XO.

◆ GetNamesAndLabels()

void DevicePrefs::GetNamesAndLabels ( )
private

Definition at line 109 of file DevicePrefs.cpp.

110 {
111  // Gather list of hosts. Only added hosts that have devices attached.
112  // FIXME: TRAP_ERR PaErrorCode not handled in DevicePrefs GetNamesAndLabels()
113  // With an error code won't add hosts, but won't report a problem either.
114  int nDevices = Pa_GetDeviceCount();
115  for (int i = 0; i < nDevices; i++) {
116  const PaDeviceInfo *info = Pa_GetDeviceInfo(i);
117  if ((info!=NULL)&&(info->maxOutputChannels > 0 || info->maxInputChannels > 0)) {
118  wxString name = wxSafeConvertMB2WX(Pa_GetHostApiInfo(info->hostApi)->name);
120  .contains( Verbatim( name ) )) {
121  mHostNames.push_back( Verbatim( name ) );
122  mHostLabels.push_back(name);
123  }
124  }
125  }
126 }

References make_iterator_range(), mHostLabels, mHostNames, name, and Verbatim().

Referenced by Populate().

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

◆ GetSymbol()

ComponentInterfaceSymbol DevicePrefs::GetSymbol ( )
overridevirtual

Implements ComponentInterface.

Definition at line 67 of file DevicePrefs.cpp.

68 {
70 }

References DEVICE_PREFS_PLUGIN_SYMBOL.

◆ HelpPageName()

ManualPageID DevicePrefs::HelpPageName ( )
overridevirtual

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

Default returns empty string.

Reimplemented from PrefsPanel.

Definition at line 77 of file DevicePrefs.cpp.

78 {
79  return "Devices_Preferences";
80 }

◆ OnDevice()

void DevicePrefs::OnDevice ( wxCommandEvent &  e)
private

Definition at line 324 of file DevicePrefs.cpp.

325 {
326  int ndx = mRecord->GetCurrentSelection();
327  if (ndx == wxNOT_FOUND) {
328  ndx = 0;
329  }
330 
331  int sel = mChannels->GetSelection();
332  int cnt = 0;
333 
334  DeviceSourceMap *inMap = (DeviceSourceMap *) mRecord->GetClientData(ndx);
335  if (inMap != NULL) {
336  cnt = inMap->numChannels;
337  }
338 
339  if (sel != wxNOT_FOUND) {
340  mRecordChannels = sel + 1;
341  }
342 
343  mChannels->Clear();
344 
345  // Mimic old behavior
346  if (cnt <= 0) {
347  cnt = 16;
348  }
349 
350  // Place an artificial limit on the number of channels to prevent an
351  // outrageous number. I don't know if this is really necessary, but
352  // it doesn't hurt.
353  if (cnt > 256) {
354  cnt = 256;
355  }
356 
357  wxArrayStringEx channelnames;
358 
359  // Channel counts, mono, stereo etc...
360  for (int i = 0; i < cnt; i++) {
361  wxString name;
362 
363  if (i == 0) {
364  name = _("1 (Mono)");
365  }
366  else if (i == 1) {
367  name = _("2 (Stereo)");
368  }
369  else {
370  name = wxString::Format(wxT("%d"), i + 1);
371  }
372 
373  channelnames.push_back(name);
374  int index = mChannels->Append(name);
375  if (i == mRecordChannels - 1) {
376  mChannels->SetSelection(index);
377  }
378  }
379 
380  if (mChannels->GetCount() && mChannels->GetCurrentSelection() == wxNOT_FOUND) {
381  mChannels->SetSelection(0);
382  }
383 
384  ShuttleGui::SetMinSize(mChannels, channelnames);
385  Layout();
386 }

References _, mChannels, mRecord, mRecordChannels, name, DeviceSourceMap::numChannels, and ShuttleGui::SetMinSize().

Referenced by OnHost().

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

◆ OnHost()

void DevicePrefs::OnHost ( wxCommandEvent &  e)
private

Definition at line 212 of file DevicePrefs.cpp.

213 {
214  // Bail if we have no hosts
215  if (mHostNames.size() < 1)
216  return;
217 
218  // Find the index for the host API selected
219  int index = -1;
220  auto apiName = mHostLabels[mHost->GetCurrentSelection()];
221  int nHosts = Pa_GetHostApiCount();
222  for (int i = 0; i < nHosts; ++i) {
223  wxString name = wxSafeConvertMB2WX(Pa_GetHostApiInfo(i)->name);
224  if (name == apiName) {
225  index = i;
226  break;
227  }
228  }
229  // We should always find the host!
230  if (index < 0) {
231  wxLogDebug(wxT("DevicePrefs::OnHost(): API index not found"));
232  return;
233  }
234 
235  int nDevices = Pa_GetDeviceCount();
236 
237  // FIXME: TRAP_ERR PaErrorCode not handled. nDevices can be negative number.
238  if (nDevices == 0) {
239  mHost->Clear();
240  mHost->Append(_("No audio interfaces"), (void *) NULL);
241  mHost->SetSelection(0);
242  }
243 
244  const std::vector<DeviceSourceMap> &inMaps = DeviceManager::Instance()->GetInputDeviceMaps();
245  const std::vector<DeviceSourceMap> &outMaps = DeviceManager::Instance()->GetOutputDeviceMaps();
246 
247  wxArrayString playnames;
248  wxArrayString recordnames;
249  size_t i;
250  int devindex; /* temp variable to hold the numeric ID of each device in turn */
251  wxString device;
252  wxString recDevice;
253 
254  recDevice = mRecordDevice;
255  if (!this->mRecordSource.empty())
256  recDevice += wxT(": ") + mRecordSource;
257 
258  mRecord->Clear();
259  for (i = 0; i < inMaps.size(); i++) {
260  if (index == inMaps[i].hostIndex) {
261  device = MakeDeviceSourceString(&inMaps[i]);
262  devindex = mRecord->Append(device);
263  // We need to const cast here because SetClientData is a wx function
264  // It is okay because the original variable is non-const.
265  mRecord->SetClientData(devindex, const_cast<DeviceSourceMap *>(&inMaps[i]));
266  if (device == recDevice) { /* if this is the default device, select it */
267  mRecord->SetSelection(devindex);
268  }
269  }
270  }
271 
272  mPlay->Clear();
273  for (i = 0; i < outMaps.size(); i++) {
274  if (index == outMaps[i].hostIndex) {
275  device = MakeDeviceSourceString(&outMaps[i]);
276  devindex = mPlay->Append(device);
277  mPlay->SetClientData(devindex, const_cast<DeviceSourceMap *>(&outMaps[i]));
278  if (device == mPlayDevice) { /* if this is the default device, select it */
279  mPlay->SetSelection(devindex);
280  }
281  }
282  }
283 
284  /* deal with not having any devices at all */
285  if (mPlay->GetCount() == 0) {
286  playnames.push_back(_("No devices found"));
287  mPlay->Append(playnames[0], (void *) NULL);
288  mPlay->SetSelection(0);
289  }
290  if (mRecord->GetCount() == 0) {
291  recordnames.push_back(_("No devices found"));
292  mRecord->Append(recordnames[0], (void *) NULL);
293  mRecord->SetSelection(0);
294  }
295 
296  /* what if we have no device selected? we should choose the default on
297  * this API, as defined by PortAudio. We then fall back to using 0 only if
298  * that fails */
299  if (mPlay->GetCount() && mPlay->GetSelection() == wxNOT_FOUND) {
301  if (defaultMap)
302  mPlay->SetStringSelection(MakeDeviceSourceString(defaultMap));
303 
304  if (mPlay->GetSelection() == wxNOT_FOUND) {
305  mPlay->SetSelection(0);
306  }
307  }
308 
309  if (mRecord->GetCount() && mRecord->GetSelection() == wxNOT_FOUND) {
311  if (defaultMap)
312  mRecord->SetStringSelection(MakeDeviceSourceString(defaultMap));
313 
314  if (mPlay->GetSelection() == wxNOT_FOUND) {
315  mPlay->SetSelection(0);
316  }
317  }
318 
319  ShuttleGui::SetMinSize(mPlay, mPlay->GetStrings());
320  ShuttleGui::SetMinSize(mRecord, mRecord->GetStrings());
321  OnDevice(e);
322 }

References _, DeviceManager::GetDefaultInputDevice(), DeviceManager::GetDefaultOutputDevice(), DeviceManager::GetInputDeviceMaps(), DeviceManager::GetOutputDeviceMaps(), DeviceManager::Instance(), MakeDeviceSourceString(), mHost, mHostLabels, mHostNames, mPlay, mPlayDevice, mRecord, mRecordDevice, mRecordSource, name, OnDevice(), and ShuttleGui::SetMinSize().

Referenced by Populate().

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

◆ Populate()

void DevicePrefs::Populate ( )
private

Definition at line 82 of file DevicePrefs.cpp.

83 {
84  // First any pre-processing for constructing the GUI.
86 
87  // Get current setting for devices
92 
93  //------------------------- Main section --------------------
94  // Now construct the GUI itself.
95  // Use 'eIsCreatingFromPrefs' so that the GUI is
96  // initialised with values from gPrefs.
99  // ----------------------- End of main section --------------
100 
101  wxCommandEvent e;
102  OnHost(e);
103 }

References AudioIOPlaybackDevice, AudioIORecordChannels, AudioIORecordingDevice, AudioIORecordingSource, eIsCreatingFromPrefs, GetNamesAndLabels(), mPlayDevice, mRecordChannels, mRecordDevice, mRecordSource, OnHost(), PopulateOrExchange(), and Setting< T >::Read().

Here is the call graph for this function:

◆ PopulateOrExchange()

void DevicePrefs::PopulateOrExchange ( ShuttleGui S)
override

Definition at line 128 of file DevicePrefs.cpp.

129 {
130  S.SetBorder(2);
131  S.StartScroller();
132 
133  /* i18n-hint Software interface to audio devices */
134  S.StartStatic(XC("Interface", "device"));
135  {
136  S.StartMultiColumn(2);
137  {
138  S.Id(HostID);
139  mHost = S.TieChoice( XXO("&Host:"),
140  {
141  AudioIOHost,
143  }
144  );
145 
146  S.AddPrompt(XXO("Using:"));
147  S.AddFixedText( Verbatim(wxSafeConvertMB2WX(Pa_GetVersionText() ) ) );
148  }
149  S.EndMultiColumn();
150  }
151  S.EndStatic();
152 
153  S.StartStatic(XO("Playback"));
154  {
155  S.StartMultiColumn(2);
156  {
157  S.Id(PlayID);
158  mPlay = S.AddChoice(XXO("&Device:"),
159  {} );
160  }
161  S.EndMultiColumn();
162  }
163  S.EndStatic();
164 
165  // i18n-hint: modifier as in "Recording preferences", not progressive verb
166  S.StartStatic(XC("Recording", "preference"));
167  {
168  S.StartMultiColumn(2);
169  {
170  S.Id(RecordID);
171  mRecord = S.AddChoice(XXO("De&vice:"),
172  {} );
173 
174  S.Id(ChannelsID);
175  mChannels = S.AddChoice(XXO("Cha&nnels:"),
176  {} );
177  }
178  S.EndMultiColumn();
179  }
180  S.EndStatic();
181 
182  // These previously lived in recording preferences.
183  // However they are liable to become device specific.
184  // Buffering also affects playback, not just recording, so is a device characteristic.
185  S.StartStatic( XO("Latency"));
186  {
187  S.StartThreeColumn();
188  {
189  wxTextCtrl *w;
190  // only show the following controls if we use Portaudio v19, because
191  // for Portaudio v18 we always use default buffer sizes
192  w = S
193  .NameSuffix(XO("milliseconds"))
194  .TieNumericTextBox(XXO("&Buffer length:"),
196  9);
197  S.AddUnits(XO("milliseconds"));
198 
199  w = S
200  .NameSuffix(XO("milliseconds"))
201  .TieNumericTextBox(XXO("&Latency compensation:"),
203  S.AddUnits(XO("milliseconds"));
204  }
205  S.EndThreeColumn();
206  }
207  S.EndStatic();
208  S.EndScroller();
209 
210 }

References ShuttleGuiBase::AddChoice(), ShuttleGuiBase::AddFixedText(), ShuttleGuiBase::AddPrompt(), ShuttleGuiBase::AddUnits(), AudioIOHost, AudioIOLatencyCorrection, AudioIOLatencyDuration, ByColumns, ChannelsID, ShuttleGuiBase::EndMultiColumn(), ShuttleGuiBase::EndScroller(), ShuttleGuiBase::EndStatic(), ShuttleGuiBase::EndThreeColumn(), HostID, ShuttleGui::Id(), mChannels, mHost, mHostLabels, mHostNames, mPlay, mRecord, ShuttleGui::NameSuffix(), PlayID, RecordID, ShuttleGuiBase::SetBorder(), ShuttleGuiBase::StartMultiColumn(), ShuttleGuiBase::StartScroller(), ShuttleGuiBase::StartStatic(), ShuttleGuiBase::StartThreeColumn(), ShuttleGuiBase::TieChoice(), ShuttleGuiBase::TieNumericTextBox(), Verbatim(), XC, 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

◆ mChannels

wxChoice* DevicePrefs::mChannels
private

Definition at line 54 of file DevicePrefs.h.

Referenced by Commit(), OnDevice(), and PopulateOrExchange().

◆ mHost

wxChoice* DevicePrefs::mHost
private

Definition at line 51 of file DevicePrefs.h.

Referenced by OnHost(), and PopulateOrExchange().

◆ mHostLabels

wxArrayStringEx DevicePrefs::mHostLabels
private

Definition at line 44 of file DevicePrefs.h.

Referenced by GetNamesAndLabels(), OnHost(), and PopulateOrExchange().

◆ mHostNames

TranslatableStrings DevicePrefs::mHostNames
private

Definition at line 43 of file DevicePrefs.h.

Referenced by GetNamesAndLabels(), OnHost(), and PopulateOrExchange().

◆ mPlay

wxChoice* DevicePrefs::mPlay
private

Definition at line 52 of file DevicePrefs.h.

Referenced by Commit(), OnHost(), and PopulateOrExchange().

◆ mPlayDevice

wxString DevicePrefs::mPlayDevice
private

Definition at line 46 of file DevicePrefs.h.

Referenced by OnHost(), and Populate().

◆ mRecord

wxChoice* DevicePrefs::mRecord
private

Definition at line 53 of file DevicePrefs.h.

Referenced by Commit(), OnDevice(), OnHost(), and PopulateOrExchange().

◆ mRecordChannels

long DevicePrefs::mRecordChannels
private

Definition at line 49 of file DevicePrefs.h.

Referenced by OnDevice(), and Populate().

◆ mRecordDevice

wxString DevicePrefs::mRecordDevice
private

Definition at line 47 of file DevicePrefs.h.

Referenced by OnHost(), and Populate().

◆ mRecordSource

wxString DevicePrefs::mRecordSource
private

Definition at line 48 of file DevicePrefs.h.

Referenced by OnHost(), and Populate().


The documentation for this class was generated from the following files:
AudioIORecordingDevice
StringSetting AudioIORecordingDevice
Definition: AudioIOBase.cpp:1071
PlayID
@ PlayID
Definition: DevicePrefs.cpp:46
ShuttleGui::NameSuffix
ShuttleGui & NameSuffix(const TranslatableString &suffix)
Definition: ShuttleGui.h:671
AudioIOLatencyCorrection
DoubleSetting AudioIOLatencyCorrection
Definition: AudioIOBase.cpp:1063
AudioIOPlaybackDevice
StringSetting AudioIOPlaybackDevice
Definition: AudioIOBase.cpp:1067
DevicePrefs::PopulateOrExchange
void PopulateOrExchange(ShuttleGui &S) override
Definition: DevicePrefs.cpp:128
ShuttleGuiBase::AddChoice
wxChoice * AddChoice(const TranslatableString &Prompt, const TranslatableStrings &choices, int Selected=-1)
Definition: ShuttleGui.cpp:398
make_iterator_range
IteratorRange< Iterator > make_iterator_range(const Iterator &i1, const Iterator &i2)
Definition: MemoryX.h:549
ShuttleGui::SetMinSize
static void SetMinSize(wxWindow *window, const TranslatableStrings &items)
Definition: ShuttleGui.cpp:2470
DeviceSourceMap::numChannels
int numChannels
Definition: DeviceManager.h:40
ChannelsID
@ ChannelsID
Definition: DevicePrefs.cpp:48
ShuttleGuiBase::EndThreeColumn
void EndThreeColumn()
Definition: ShuttleGui.h:369
DevicePrefs::OnDevice
void OnDevice(wxCommandEvent &e)
Definition: DevicePrefs.cpp:324
RecordID
@ RecordID
Definition: DevicePrefs.cpp:47
DevicePrefs::GetNamesAndLabels
void GetNamesAndLabels()
Definition: DevicePrefs.cpp:109
Setting::Write
bool Write(const T &value)
Write value to config and return true if successful.
Definition: Prefs.h:172
DevicePrefs::OnHost
void OnHost(wxCommandEvent &e)
Definition: DevicePrefs.cpp:212
MakeDeviceSourceString
wxString MakeDeviceSourceString(const DeviceSourceMap *map)
Definition: DeviceManager.cpp:54
DeviceSourceMap::deviceString
wxString deviceString
Definition: DeviceManager.h:42
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
wxArrayStringEx
Extend wxArrayString with move operations and construction and insertion fromstd::initializer_list.
Definition: wxArrayStringEx.h:18
DeviceSourceMap
Definition: DeviceManager.h:35
DevicePrefs::mRecordChannels
long mRecordChannels
Definition: DevicePrefs.h:49
ShuttleGui::Id
ShuttleGui & Id(int id)
Definition: ShuttleGui.cpp:2274
AudioIORecordingSourceIndex
IntSetting AudioIORecordingSourceIndex
Definition: AudioIOBase.cpp:1075
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
DevicePrefs::mHost
wxChoice * mHost
Definition: DevicePrefs.h:51
ShuttleGuiBase::EndScroller
void EndScroller()
Definition: ShuttleGui.cpp:971
DevicePrefs::mPlay
wxChoice * mPlay
Definition: DevicePrefs.h:52
DevicePrefs::Populate
void Populate()
Definition: DevicePrefs.cpp:82
AudioIOLatencyDuration
DoubleSetting AudioIOLatencyDuration
Definition: AudioIOBase.cpp:1065
DeviceManager::GetDefaultOutputDevice
DeviceSourceMap * GetDefaultOutputDevice(int hostIndex)
Definition: DeviceManager.cpp:84
XXO
#define XXO(s)
Definition: Internat.h:44
ShuttleGuiBase::StartScroller
wxScrolledWindow * StartScroller(int iStyle=0)
Definition: ShuttleGui.cpp:938
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
AudioIORecordingSource
StringSetting AudioIORecordingSource
Definition: AudioIOBase.cpp:1073
DevicePrefs::mRecord
wxChoice * mRecord
Definition: DevicePrefs.h:53
name
const TranslatableString name
Definition: Distortion.cpp:98
DevicePrefs::mChannels
wxChoice * mChannels
Definition: DevicePrefs.h:54
ShuttleGuiBase::StartThreeColumn
void StartThreeColumn()
Definition: ShuttleGui.h:368
ShuttleGuiBase::TieNumericTextBox
wxTextCtrl * TieNumericTextBox(const TranslatableString &Prompt, int &Value, const int nChars=0)
Definition: ShuttleGui.cpp:1673
DeviceSourceMap::totalSources
int totalSources
Definition: DeviceManager.h:39
DEVICE_PREFS_PLUGIN_SYMBOL
#define DEVICE_PREFS_PLUGIN_SYMBOL
Definition: DevicePrefs.h:22
DeviceSourceMap::sourceIndex
int sourceIndex
Definition: DeviceManager.h:37
ShuttleGuiBase::StartStatic
wxStaticBox * StartStatic(const TranslatableString &Str, int iProp=0)
Definition: ShuttleGui.cpp:893
eIsSavingToPrefs
@ eIsSavingToPrefs
Definition: ShuttleGui.h:48
DevicePrefs::mRecordSource
wxString mRecordSource
Definition: DevicePrefs.h:48
_
#define _(s)
Definition: Internat.h:75
AudioIOHost
StringSetting AudioIOHost
Definition: AudioIOBase.cpp:1061
DeviceManager::GetDefaultInputDevice
DeviceSourceMap * GetDefaultInputDevice(int hostIndex)
Definition: DeviceManager.cpp:88
DeviceManager::Instance
static DeviceManager * Instance()
Gets the singleton instance.
Definition: DeviceManager.cpp:35
Setting::Reset
bool Reset()
Reset to the default value.
Definition: Prefs.h:183
DevicePrefs::mHostNames
TranslatableStrings mHostNames
Definition: DevicePrefs.h:43
Verbatim
TranslatableString Verbatim(wxString str)
Require calls to the one-argument constructor to go through this distinct global function name.
Definition: TranslatableString.h:321
DeviceManager::GetInputDeviceMaps
const std::vector< DeviceSourceMap > & GetInputDeviceMaps()
Definition: DeviceManager.cpp:40
HostID
@ HostID
Definition: DevicePrefs.cpp:45
DeviceSourceMap::sourceString
wxString sourceString
Definition: DeviceManager.h:41
DeviceManager::GetOutputDeviceMaps
const std::vector< DeviceSourceMap > & GetOutputDeviceMaps()
Definition: DeviceManager.cpp:46
ShuttleGuiBase::AddPrompt
void AddPrompt(const TranslatableString &Prompt, int wrapWidth=0)
Right aligned text string.
Definition: ShuttleGui.cpp:238
ShuttleGuiBase::SetBorder
void SetBorder(int Border)
Definition: ShuttleGui.h:489
ByColumns
ByColumns_t ByColumns
Definition: Prefs.cpp:420
eIsCreatingFromPrefs
@ eIsCreatingFromPrefs
Definition: ShuttleGui.h:47
ShuttleGuiBase::EndStatic
void EndStatic()
Definition: ShuttleGui.cpp:922
DevicePrefs::mPlayDevice
wxString mPlayDevice
Definition: DevicePrefs.h:46
ShuttleGuiBase::TieChoice
wxChoice * TieChoice(const TranslatableString &Prompt, TranslatableString &Selected, const TranslatableStrings &choices)
Definition: ShuttleGui.cpp:1727
DevicePrefs::mHostLabels
wxArrayStringEx mHostLabels
Definition: DevicePrefs.h:44
AudioIORecordChannels
IntSetting AudioIORecordChannels
Definition: AudioIOBase.cpp:1069
DevicePrefs::mRecordDevice
wxString mRecordDevice
Definition: DevicePrefs.h:47
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