Audacity  3.0.3
TracksPrefs.cpp
Go to the documentation of this file.
1 /**********************************************************************
2 
3  Audacity: A Digital Audio Editor
4 
5  TracksPrefs.cpp
6 
7  Brian Gunlogson
8  Joshua Haberman
9  Dominic Mazzoni
10  James Crook
11 
12 
13 *******************************************************************//*******************************************************************/
19 
20 
21 #include "TracksPrefs.h"
22 
23 //#include <algorithm>
24 //#include <wx/defs.h>
25 
26 #include "Prefs.h"
27 #include "../ShuttleGui.h"
28 #include "../tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h"
29 
31 
32 namespace {
33  const wxChar *PinnedHeadPreferenceKey()
34  {
35  return wxT("/AudioIO/PinnedHead");
36  }
37 
39  {
40  return false;
41  }
42 
44  {
45  return wxT("/AudioIO/PinnedHeadPosition");
46  }
47 
49  {
50  return 0.5;
51  }
52 }
53 
54 
55 namespace {
56  const auto waveformScaleKey = wxT("/GUI/DefaultWaveformScaleChoice");
57  const auto dbValueString = wxT("dB");
58 }
59 
62  {
63  { XO("Linear") },
64  { dbValueString, XO("Logarithmic (dB)") },
65  },
66 
67  0, // linear
68 
69  {
72  }
73 };
74 
76 // There is a complicated migration history here!
77 namespace {
78  const auto key0 = wxT("/GUI/DefaultViewMode");
79  const auto key1 = wxT("/GUI/DefaultViewModeNew");
80  const auto key2 = wxT("/GUI/DefaultViewModeChoice");
81  const auto key3 = wxT("/GUI/DefaultViewModeChoiceNew");
82 
83  const wxString obsoleteValue{ wxT("WaveformDB") };
84 };
85 
87  : public EnumSetting< WaveTrackViewConstants::Display > {
88 public:
90 
91  void Migrate( wxString &value ) override
92  {
93  // Special logic for this preference which was three times migrated!
94 
95  // PRL: Bugs 1043, 1044
96  // 2.1.1 writes a NEW key for this preference, which got NEW values,
97  // to avoid confusing version 2.1.0 if it reads the preference file afterwards.
98  // Prefer the NEW preference key if it is present
99 
100  static const EnumValueSymbol waveformSymbol{ XO("Waveform") };
101  static const EnumValueSymbol spectrumSymbol{ XO("Spectrogram") };
102 
104  int oldMode;
105  wxString newValue;
106  auto stringValue =
107  []( WaveTrackViewConstants::Display display ){
108  switch ( display ) {
110  return spectrumSymbol.Internal();
112  return obsoleteValue;
113  default:
114  return waveformSymbol.Internal();
115  }
116  };
117 
118  if ( gPrefs->Read(key0, // The very old key
119  &oldMode,
122  newValue = stringValue( viewMode );
123  }
124  else if ( gPrefs->Read(key1,
125  &oldMode,
127  viewMode = static_cast<WaveTrackViewConstants::Display>( oldMode );
128  newValue = stringValue( viewMode );
129  }
130  else
131  gPrefs->Read( key2, &newValue );
132 
133  if ( !gPrefs->Read( key3, &value ) ) {
134  if (newValue == obsoleteValue) {
135  newValue = waveformSymbol.Internal();
137  }
138 
139  Write( value = newValue );
140  gPrefs->Flush();
141  return;
142  }
143  }
144 };
145 
147 {
148  // Do a delayed computation, so that registration of sub-view types completes
149  // first
150  const auto &types = WaveTrackSubViewType::All();
151  auto symbols = transform_container< EnumValueSymbols >(
152  types, std::mem_fn( &WaveTrackSubViewType::name ) );
153  auto ids = transform_container< std::vector< WaveTrackSubViewType::Display > >(
154  types, std::mem_fn( &WaveTrackSubViewType::id ) );
155 
156  // Special entry for multi
157  symbols.push_back( WaveTrackViewConstants::MultiViewSymbol );
158  ids.push_back( WaveTrackViewConstants::MultiView );
159 
160  return {
161  key3,
162  symbols,
163  0, // Waveform
164  ids
165  };
166 }
167 
169 {
170  return viewModeSetting().ReadEnum();
171 }
172 
174 {
175  return waveformScaleSetting.ReadEnum();
176 }
177 
181  wxT("/GUI/SampleViewChoice"),
182  {
183  { wxT("ConnectDots"), XO("Connect dots") },
184  { wxT("StemPlot"), XO("Stem plot") }
185  },
186  1, // StemPlot
187 
188  // for migrating old preferences:
189  {
192  },
193  wxT("/GUI/SampleView")
194 };
195 
197 {
198  return sampleDisplaySetting.ReadEnum();
199 }
200 
202 static const std::initializer_list<EnumValueSymbol> choicesZoom{
203  { wxT("FitToWidth"), XO("Fit to Width") },
204  { wxT("ZoomToSelection"), XO("Zoom to Selection") },
205  { wxT("ZoomDefault"), XO("Zoom Default") },
206  { XO("Minutes") },
207  { XO("Seconds") },
208  { wxT("FifthsOfSeconds"), XO("5ths of Seconds") },
209  { wxT("TenthsOfSeconds"), XO("10ths of Seconds") },
210  { wxT("TwentiethsOfSeconds"), XO("20ths of Seconds") },
211  { wxT("FiftiethsOfSeconds"), XO("50ths of Seconds") },
212  { wxT("HundredthsOfSeconds"), XO("100ths of Seconds") },
213  { wxT("FiveHundredthsOfSeconds"), XO("500ths of Seconds") },
214  { XO("MilliSeconds") },
215  { XO("Samples") },
216  { wxT("FourPixelsPerSample"), XO("4 Pixels per Sample") },
217  { wxT("MaxZoom"), XO("Max Zoom") },
218 };
219 static auto enumChoicesZoom = {
235 };
236 
238  wxT("/GUI/ZoomPreset1Choice"),
239  choicesZoom,
240  2, // kZoomDefault
241 
242  // for migrating old preferences:
244  wxT("/GUI/ZoomPreset1")
245 };
246 
248  wxT("/GUI/ZoomPreset2Choice"),
249  choicesZoom,
250  13, // kZoom4To1
251 
252  // for migrating old preferences:
254  wxT("/GUI/ZoomPreset2")
255 };
256 
258 {
259  return zoom1Setting.ReadEnum();
260 }
261 
263 {
264  return zoom2Setting.ReadEnum();
265 }
266 
268 TracksPrefs::TracksPrefs(wxWindow * parent, wxWindowID winid)
269 /* i18n-hint: "Tracks" include audio recordings but also other collections of
270  * data associated with a time line, such as sequences of labels, and musical
271  * notes */
272 : PrefsPanel(parent, winid, XO("Tracks"))
273 {
274  Populate();
275 }
276 
278 {
279 }
280 
282 {
284 }
285 
287 {
288  return XO("Preferences for Tracks");
289 }
290 
292 {
293  return "Tracks_Preferences";
294 }
295 
297 {
298  // Keep view choices and codes in proper correspondence --
299  // we don't display them by increasing integer values.
300 
301 
302  // How samples are displayed when zoomed in:
303 
304 
305  //------------------------- Main section --------------------
306  // Now construct the GUI itself.
307  // Use 'eIsCreatingFromPrefs' so that the GUI is
308  // initialised with values from gPrefs.
311  // ----------------------- End of main section --------------
312 }
313 
315 {
316  S.SetBorder(2);
317  S.StartScroller();
318 
319  S.StartStatic(XO("Display"));
320  {
321  S.TieCheckBox(XXO("Auto-&fit track height"),
322  {wxT("/GUI/TracksFitVerticallyZoomed"),
323  false});
324  S.TieCheckBox(XXO("Sho&w track name as overlay"),
325  {wxT("/GUI/ShowTrackNameInWaveform"),
326  false});
327 #ifdef EXPERIMENTAL_HALF_WAVE
328  S.TieCheckBox(XXO("Use &half-wave display when collapsed"),
329  {wxT("/GUI/CollapseToHalfWave"),
330  false});
331 #endif
332 #ifdef SHOW_PINNED_UNPINNED_IN_PREFS
333  S.TieCheckBox(XXO("&Pinned Recording/Playback head"),
336 #endif
337  S.TieCheckBox(XXO("A&uto-scroll if head unpinned"),
338  {wxT("/GUI/AutoScroll"),
339  true});
340 
341  S.AddSpace(10);
342 
343  S.StartMultiColumn(2);
344  {
345 #ifdef SHOW_PINNED_POSITION_IN_PREFS
347  XXO("Pinned &head position"),
350  30
351  );
352 #endif
353 
354  S.TieChoice(XXO("Default &view mode:"),
355  viewModeSetting() );
356 
357  S.TieChoice(XXO("Default Waveform scale:"),
359 
360  S.TieChoice(XXO("Display &samples:"),
362 
363  S.TieTextBox(XXO("Default audio track &name:"),
364  {wxT("/GUI/TrackNames/DefaultTrackName"),
365  _("Audio Track")},
366  30);
367  }
368  S.EndMultiColumn();
369  }
370  S.EndStatic();
371 
372  S.StartStatic(XO("Zoom Toggle"));
373  {
374  S.StartMultiColumn(4);
375  {
376  S.TieChoice(XXO("Preset 1:"),
377  zoom1Setting );
378 
379  S.TieChoice(XXO("Preset 2:"),
380  zoom2Setting );
381  }
382  }
383  S.EndStatic();
384  S.EndScroller();
385 }
386 
388 {
389  // JKC: Cache this setting as it is read many times during drawing, and otherwise causes screen flicker.
390  // Correct solution would be to re-write wxFileConfig to be efficient.
391  if( iPreferencePinned >= 0 )
392  return iPreferencePinned == 1;
393  bool bResult = gPrefs->ReadBool(PinnedHeadPreferenceKey(), PinnedHeadPreferenceDefault());
394  iPreferencePinned = bResult ? 1: 0;
395  return bResult;
396 }
397 
398 void TracksPrefs::SetPinnedHeadPreference(bool value, bool flush)
399 {
400  iPreferencePinned = value ? 1 :0;
401  gPrefs->Write(PinnedHeadPreferenceKey(), value);
402  if(flush)
403  gPrefs->Flush();
404 }
405 
407 {
408  auto value = gPrefs->ReadDouble(
411  return std::max(0.0, std::min(1.0, value));
412 }
413 
414 void TracksPrefs::SetPinnedHeadPositionPreference(double value, bool flush)
415 {
416  value = std::max(0.0, std::min(1.0, value));
417  gPrefs->Write(PinnedHeadPositionPreferenceKey(), value);
418  if(flush)
419  gPrefs->Flush();
420 }
421 
423 {
424  const auto name =
425  gPrefs->Read(wxT("/GUI/TrackNames/DefaultTrackName"), wxT(""));
426 
427  if (name.empty() || ( name == "Audio Track" ))
428  // When nothing was specified,
429  // the default-default is whatever translation of...
430  /* i18n-hint: The default name for an audio track. */
431  return _("Audio Track");
432  else
433  return name;
434 }
435 
437 {
438  // Bug 1583: Clear the caching of the preference pinned state.
439  iPreferencePinned = -1;
440  ShuttleGui S(this, eIsSavingToPrefs);
442 
443  // Bug 1661: Don't store the name for new tracks if the name is the
444  // default in that language.
445  if (GetDefaultAudioTrackNamePreference() == _("Audio Track")) {
446  gPrefs->DeleteEntry(wxT("/GUI/TrackNames/DefaultTrackName"));
447  gPrefs->Flush();
448  }
449 
450  return true;
451 }
452 
453 namespace{
455  [](wxWindow *parent, wxWindowID winid, AudacityProject *)
456  {
457  wxASSERT(parent); // to justify safenew
458  return safenew TracksPrefs(parent, winid);
459  }
460 };
461 }
TracksPrefs::Zoom1Choice
static WaveTrackViewConstants::ZoomPresets Zoom1Choice()
Definition: TracksPrefs.cpp:257
TranslatableString
Holds a msgid for the translation catalog; may also bind format arguments.
Definition: TranslatableString.h:32
zoom1Setting
static EnumSetting< WaveTrackViewConstants::ZoomPresets > zoom1Setting
Definition: TracksPrefs.cpp:237
TranslatableString::empty
bool empty() const
Definition: TranslatableString.h:72
TracksPrefs::GetSymbol
ComponentInterfaceSymbol GetSymbol() override
Definition: TracksPrefs.cpp:281
TracksPrefs::Commit
bool Commit() override
Definition: TracksPrefs.cpp:436
WaveTrackViewConstants::kZoomToSelection
@ kZoomToSelection
Definition: WaveTrackViewConstants.h:53
anonymous_namespace{TracksPrefs.cpp}::PinnedHeadPositionPreferenceDefault
double PinnedHeadPositionPreferenceDefault()
Definition: TracksPrefs.cpp:48
gPrefs
FileConfig * gPrefs
Definition: Prefs.cpp:70
viewModeSetting
static TracksViewModeEnumSetting viewModeSetting()
Definition: TracksPrefs.cpp:146
WaveformSettings::ScaleTypeValues
ScaleTypeValues
Definition: WaveformSettings.h:58
WaveTrackSubViewType::id
Display id
Definition: WaveTrackViewConstants.h:96
TracksPrefs::GetDescription
TranslatableString GetDescription() override
Definition: TracksPrefs.cpp:286
WaveTrackViewConstants::obsoleteWaveformDBDisplay
@ obsoleteWaveformDBDisplay
Definition: WaveTrackViewConstants.h:27
ShuttleGuiBase::TieCheckBox
wxCheckBox * TieCheckBox(const TranslatableString &Prompt, bool &Var)
Definition: ShuttleGui.cpp:1629
enumChoicesZoom
static auto enumChoicesZoom
Definition: TracksPrefs.cpp:219
TracksPrefs::Populate
void Populate()
Definition: TracksPrefs.cpp:296
TracksPrefs.h
WaveTrackViewConstants::kZoomSeconds
@ kZoomSeconds
Definition: WaveTrackViewConstants.h:56
WaveTrackViewConstants::kZoomDefault
@ kZoomDefault
Definition: WaveTrackViewConstants.h:54
ShuttleGui::AddSpace
wxSizerItem * AddSpace(int width, int height, int prop=0)
Definition: ShuttleGui.cpp:2459
PrefsPanel::Registration
Definition: PrefsPanel.h:84
FileConfig::DeleteEntry
virtual bool DeleteEntry(const wxString &key, bool bDeleteGroupIfEmpty=true) wxOVERRIDE
Definition: FileConfig.cpp:209
XO
#define XO(s)
Definition: Internat.h:31
zoom2Setting
static EnumSetting< WaveTrackViewConstants::ZoomPresets > zoom2Setting
Definition: TracksPrefs.cpp:247
TracksPrefs::HelpPageName
ManualPageID HelpPageName() override
If not empty string, the Help button is added below the panel.
Definition: TracksPrefs.cpp:291
TracksPrefs::iPreferencePinned
static int iPreferencePinned
Definition: TracksPrefs.h:56
WaveTrackViewConstants::ConvertLegacyDisplayValue
Display ConvertLegacyDisplayValue(int oldValue)
Definition: WaveTrackViewConstants.cpp:16
ShuttleGuiBase::EndMultiColumn
void EndMultiColumn()
Definition: ShuttleGui.cpp:1238
waveformScaleSetting
static EnumSetting< WaveformSettings::ScaleTypeValues > waveformScaleSetting
Definition: TracksPrefs.cpp:60
WaveTrackViewConstants::Display
Display
Definition: WaveTrackViewConstants.h:18
sampleDisplaySetting
static EnumSetting< WaveTrackViewConstants::SampleDisplay > sampleDisplaySetting
Definition: TracksPrefs.cpp:180
TracksPrefs::GetDefaultAudioTrackNamePreference
static wxString GetDefaultAudioTrackNamePreference()
Definition: TracksPrefs.cpp:422
anonymous_namespace{TracksPrefs.cpp}::PinnedHeadPreferenceKey
const wxChar * PinnedHeadPreferenceKey()
Definition: TracksPrefs.cpp:33
TracksPrefs::SetPinnedHeadPositionPreference
static void SetPinnedHeadPositionPreference(double value, bool flush=false)
Definition: TracksPrefs.cpp:414
ComponentInterfaceSymbol
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
Definition: ComponentInterfaceSymbol.h:27
TracksViewModeEnumSetting
Definition: TracksPrefs.cpp:87
ShuttleGuiBase::TieTextBox
wxTextCtrl * TieTextBox(const TranslatableString &Caption, wxString &Value, const int nChars=0)
Definition: ShuttleGui.cpp:1652
WaveformSettings::stLogarithmic
@ stLogarithmic
Definition: WaveformSettings.h:60
key2
static const AudacityProject::AttachedObjects::RegisteredFactory key2
Definition: WaveTrack.cpp:2886
ShuttleGuiBase::EndScroller
void EndScroller()
Definition: ShuttleGui.cpp:971
TracksPrefs::ViewModeChoice
static WaveTrackViewConstants::Display ViewModeChoice()
Definition: TracksPrefs.cpp:168
anonymous_namespace{TracksPrefs.cpp}::obsoleteValue
const wxString obsoleteValue
Definition: TracksPrefs.cpp:83
anonymous_namespace{TracksPrefs.cpp}::key1
const auto key1
Definition: TracksPrefs.cpp:79
XXO
#define XXO(s)
Definition: Internat.h:44
ShuttleGuiBase::StartScroller
wxScrolledWindow * StartScroller(int iStyle=0)
Definition: ShuttleGui.cpp:938
WaveTrackViewConstants::kZoom500ths
@ kZoom500ths
Definition: WaveTrackViewConstants.h:62
TracksPrefs::GetPinnedHeadPositionPreference
static double GetPinnedHeadPositionPreference()
Definition: TracksPrefs.cpp:406
ShuttleGuiBase::StartMultiColumn
void StartMultiColumn(int nCols, int PositionFlags=wxALIGN_LEFT)
Definition: ShuttleGui.cpp:1229
choicesZoom
static const std::initializer_list< EnumValueSymbol > choicesZoom
Definition: TracksPrefs.cpp:202
anonymous_namespace{TracksPrefs.cpp}::PinnedHeadPreferenceDefault
bool PinnedHeadPreferenceDefault()
Definition: TracksPrefs.cpp:38
WaveTrackViewConstants::kZoom5ths
@ kZoom5ths
Definition: WaveTrackViewConstants.h:57
WaveTrackViewConstants::MultiViewSymbol
AUDACITY_DLL_API const EnumValueSymbol MultiViewSymbol
String identifier for a preference for one of each type of view.
Definition: WaveTrackViewConstants.cpp:105
WaveTrackViewConstants::kZoomSamples
@ kZoomSamples
Definition: WaveTrackViewConstants.h:64
TracksPrefs::~TracksPrefs
~TracksPrefs()
Definition: TracksPrefs.cpp:277
name
const TranslatableString name
Definition: Distortion.cpp:98
WaveTrackSubViewType::All
static const std::vector< WaveTrackSubViewType > & All()
Discover all registered types.
Definition: WaveTrackViewConstants.cpp:90
anonymous_namespace{TracksPrefs.cpp}::waveformScaleKey
const auto waveformScaleKey
Definition: TracksPrefs.cpp:56
WaveTrackViewConstants::kZoom100ths
@ kZoom100ths
Definition: WaveTrackViewConstants.h:61
WaveTrackViewConstants::kZoomMinutes
@ kZoomMinutes
Definition: WaveTrackViewConstants.h:55
WaveTrackViewConstants::kZoomMilliSeconds
@ kZoomMilliSeconds
Definition: WaveTrackViewConstants.h:63
anonymous_namespace{TracksPrefs.cpp}::key0
const auto key0
Definition: TracksPrefs.cpp:78
ShuttleGuiBase::TieNumericTextBox
wxTextCtrl * TieNumericTextBox(const TranslatableString &Prompt, int &Value, const int nChars=0)
Definition: ShuttleGui.cpp:1673
WaveTrackViewConstants::kZoom10ths
@ kZoom10ths
Definition: WaveTrackViewConstants.h:58
anonymous_namespace{TracksPrefs.cpp}::sAttachment
PrefsPanel::Registration sAttachment
Definition: TracksPrefs.cpp:454
WaveTrackViewConstants::SampleDisplay
SampleDisplay
Definition: WaveTrackViewConstants.h:45
TracksPrefs
A PrefsPanel for track display and behavior properties.
Definition: TracksPrefs.h:28
WaveTrackViewConstants::kZoom20ths
@ kZoom20ths
Definition: WaveTrackViewConstants.h:59
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
TracksPrefs::GetPinnedHeadPreference
static bool GetPinnedHeadPreference()
Definition: TracksPrefs.cpp:387
TracksPrefs::PopulateOrExchange
void PopulateOrExchange(ShuttleGui &S) override
Definition: TracksPrefs.cpp:314
FileConfig::Flush
virtual bool Flush(bool bCurrentOnly=false) wxOVERRIDE
Definition: FileConfig.cpp:143
EnumSetting::ReadEnum
Enum ReadEnum() const
Definition: Prefs.h:373
TaggedIdentifier< ManualPageIDTag >
_
#define _(s)
Definition: Internat.h:75
WaveTrackSubViewType::name
EnumValueSymbol name
Definition: WaveTrackViewConstants.h:99
AudacityProject
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition: Project.h:92
TracksPrefs::SampleViewChoice
static WaveTrackViewConstants::SampleDisplay SampleViewChoice()
Definition: TracksPrefs.cpp:196
anonymous_namespace{TracksPrefs.cpp}::key3
const auto key3
Definition: TracksPrefs.cpp:81
WaveTrackViewConstants::StemPlot
@ StemPlot
Definition: WaveTrackViewConstants.h:47
anonymous_namespace{TracksPrefs.cpp}::dbValueString
const auto dbValueString
Definition: TracksPrefs.cpp:57
WaveTrackViewConstants::kMaxZoom
@ kMaxZoom
Definition: WaveTrackViewConstants.h:66
WaveTrackViewConstants::LinearInterpolate
@ LinearInterpolate
Definition: WaveTrackViewConstants.h:46
WaveTrackViewConstants::ZoomPresets
ZoomPresets
Definition: WaveTrackViewConstants.h:51
WaveTrackViewConstants::Spectrum
@ Spectrum
Definition: WaveTrackViewConstants.h:29
EnumSetting
Adapts EnumSettingBase to a particular enumeration type.
Definition: Prefs.h:354
WaveTrackViewConstants::kZoom50ths
@ kZoom50ths
Definition: WaveTrackViewConstants.h:60
anonymous_namespace{TracksPrefs.cpp}::PinnedHeadPositionPreferenceKey
const wxChar * PinnedHeadPositionPreferenceKey()
Definition: TracksPrefs.cpp:43
PrefsPanel
Base class for a panel in the PrefsDialog. Classes derived from this class include BatchPrefs,...
Definition: PrefsPanel.h:51
Prefs.h
ShuttleGuiBase::SetBorder
void SetBorder(int Border)
Definition: ShuttleGui.h:489
eIsCreatingFromPrefs
@ eIsCreatingFromPrefs
Definition: ShuttleGui.h:47
ShuttleGuiBase::EndStatic
void EndStatic()
Definition: ShuttleGui.cpp:922
safenew
#define safenew
Definition: MemoryX.h:10
WaveTrackViewConstants::kZoom4To1
@ kZoom4To1
Definition: WaveTrackViewConstants.h:65
TracksPrefs::WaveformScaleChoice
static WaveformSettings::ScaleTypeValues WaveformScaleChoice()
Definition: TracksPrefs.cpp:173
TracksViewModeEnumSetting::Migrate
void Migrate(wxString &value) override
Definition: TracksPrefs.cpp:91
WaveformSettings::stLinear
@ stLinear
Definition: WaveformSettings.h:59
WaveTrackViewConstants::MultiView
@ MultiView
"Multi" is special, not really a view type on par with the others.
Definition: WaveTrackViewConstants.h:20
ShuttleGuiBase::TieChoice
wxChoice * TieChoice(const TranslatableString &Prompt, TranslatableString &Selected, const TranslatableStrings &choices)
Definition: ShuttleGui.cpp:1727
TracksPrefs::TracksPrefs
TracksPrefs(wxWindow *parent, wxWindowID winid)
Definition: TracksPrefs.cpp:268
WaveTrackViewConstants::Waveform
@ Waveform
Definition: WaveTrackViewConstants.h:24
TracksPrefs::SetPinnedHeadPreference
static void SetPinnedHeadPreference(bool value, bool flush=false)
Definition: TracksPrefs.cpp:398
ShuttleGui
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:631
WaveTrackViewConstants::kZoomToFit
@ kZoomToFit
Definition: WaveTrackViewConstants.h:52
TRACKS_PREFS_PLUGIN_SYMBOL
#define TRACKS_PREFS_PLUGIN_SYMBOL
Definition: TracksPrefs.h:25
TracksPrefs::Zoom2Choice
static WaveTrackViewConstants::ZoomPresets Zoom2Choice()
Definition: TracksPrefs.cpp:262