diff --git a/src/TrackArtist.cpp b/src/TrackArtist.cpp index cab96d37f..72198d1b4 100644 --- a/src/TrackArtist.cpp +++ b/src/TrackArtist.cpp @@ -176,6 +176,7 @@ audio tracks. #include "Prefs.h" #include "prefs/GUISettings.h" #include "prefs/SpectrogramSettings.h" +#include "prefs/TracksPrefs.h" #include "prefs/WaveformSettings.h" #include "Spectrum.h" #include "ViewInfo.h" @@ -3311,7 +3312,7 @@ void TrackArtist::UpdatePrefs() { mdBrange = gPrefs->Read(ENV_DB_KEY, mdBrange); mShowClipping = gPrefs->Read(wxT("/GUI/ShowClipping"), mShowClipping); - gPrefs->Read(wxT("/GUI/SampleView"), &mSampleDisplay, 1); + mSampleDisplay = TracksPrefs::SampleViewChoice(); SetColours(0); } diff --git a/src/TrackArtist.h b/src/TrackArtist.h index d3072090d..04c509a23 100644 --- a/src/TrackArtist.h +++ b/src/TrackArtist.h @@ -179,7 +179,7 @@ class AUDACITY_DLL_API TrackArtist { // Preference values float mdBrange; // "/GUI/EnvdBRange" long mShowClipping; // "/GUI/ShowClipping" - int mSampleDisplay; // "/GUI/SampleView" + int mSampleDisplay; bool mbShowTrackNameInWaveform; // "/GUI/ShowTrackNameInWaveform" int mMarginLeft; diff --git a/src/prefs/TracksPrefs.cpp b/src/prefs/TracksPrefs.cpp index 837550f5c..ca93f4076 100644 --- a/src/prefs/TracksPrefs.cpp +++ b/src/prefs/TracksPrefs.cpp @@ -118,6 +118,34 @@ WaveTrack::WaveTrackDisplay TracksPrefs::ViewModeChoice() return (WaveTrack::WaveTrackDisplay) viewModeSetting.ReadInt(); } +////////// +static const IdentInterfaceSymbol choicesSampleDisplay[] = { + { wxT("ConnectDots"), XO("Connect dots") }, + { wxT("StemPlot"), XO("Stem plot") } +}; +static const size_t nChoicesSampleDisplay = WXSIZEOF( choicesSampleDisplay ); +static const int intChoicesSampleDisplay[] = { + (int) WaveTrack::LinearInterpolate, + (int) WaveTrack::StemPlot +}; +static_assert( + nChoicesSampleDisplay == WXSIZEOF(intChoicesSampleDisplay), "size mismatch" ); + +static const size_t defaultChoiceSampleDisplay = 1; + +static EncodedEnumSetting sampleDisplaySetting{ + wxT("/GUI/SampleViewChoice"), + choicesSampleDisplay, nChoicesSampleDisplay, defaultChoiceSampleDisplay, + + intChoicesSampleDisplay, + wxT("/GUI/SampleView") +}; + +WaveTrack::SampleDisplay TracksPrefs::SampleViewChoice() +{ + return (WaveTrack::SampleDisplay) sampleDisplaySetting.ReadInt(); +} + ////////// TracksPrefs::TracksPrefs(wxWindow * parent, wxWindowID winid) /* i18n-hint: "Tracks" include audio recordings but also other collections of @@ -140,12 +168,6 @@ void TracksPrefs::Populate() // How samples are displayed when zoomed in: - mSampleDisplayChoices.Add(_("Connect dots")); - mSampleDisplayCodes.push_back((int) WaveTrack::LinearInterpolate); - - mSampleDisplayChoices.Add(_("Stem plot")); - mSampleDisplayCodes.push_back((int) WaveTrack::StemPlot); - mZoomChoices.Add( _("Fit to Width") ); mZoomCodes.push_back( WaveTrack::kZoomToFit ); mZoomChoices.Add( _("Zoom to Selection") ); @@ -216,10 +238,7 @@ void TracksPrefs::PopulateOrExchange(ShuttleGui & S) viewModeSetting ); S.TieChoice(_("Display &samples:"), - wxT("/GUI/SampleView"), - 1, - mSampleDisplayChoices, - mSampleDisplayCodes); + sampleDisplaySetting ); S.TieTextBox(_("Default audio track &name:"), wxT("/GUI/TrackNames/DefaultTrackName"), diff --git a/src/prefs/TracksPrefs.h b/src/prefs/TracksPrefs.h index d12e6bb3e..2e63f0fbb 100644 --- a/src/prefs/TracksPrefs.h +++ b/src/prefs/TracksPrefs.h @@ -38,6 +38,7 @@ class TracksPrefs final : public PrefsPanel static wxString GetDefaultAudioTrackNamePreference(); static WaveTrack::WaveTrackDisplay ViewModeChoice(); + static WaveTrack::SampleDisplay SampleViewChoice(); private: void Populate(); @@ -45,8 +46,6 @@ class TracksPrefs final : public PrefsPanel static int iPreferencePinned; - std::vector mSampleDisplayCodes; - wxArrayString mSampleDisplayChoices; std::vector mZoomCodes; wxArrayString mZoomChoices; };