diff --git a/src/Menus.cpp b/src/Menus.cpp index 0aa854920..12ca8bf94 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -134,6 +134,7 @@ simplifies construction of menu items. #endif /* EXPERIMENTAL_SCOREALIGN */ #include "tracks/ui/Scrubbing.h" +#include "prefs/TracksPrefs.h" enum { kAlignStartZero = 0, @@ -928,6 +929,16 @@ void AudacityProject::CreateMenusAndCommands() ////////////////////////////////////////////////////////////////////////// + c->AddSeparator(); + c->AddCheck(wxT("ScrollLeftOfZero"), _("Scroll left of zero"), + FN(OnToggleScrollLeftOfZero), + gPrefs->ReadBool( + TracksPrefs::ScrollingPreferenceKey(), + TracksPrefs::ScrollingPreferenceDefault()), + AudioIONotBusyFlag, AudioIONotBusyFlag); + + ////////////////////////////////////////////////////////////////////////// + c->EndMenu(); // All of this is a bit hacky until we can get more things connected into @@ -2511,6 +2522,15 @@ void AudacityProject::OnSortName() mTrackPanel->Refresh(false); } +void AudacityProject::OnToggleScrollLeftOfZero() +{ + auto key = TracksPrefs::ScrollingPreferenceKey(); + auto value = gPrefs->ReadBool(key, TracksPrefs::ScrollingPreferenceDefault()); + gPrefs->Write(key, !value); + gPrefs->Flush(); + UpdatePrefs(); +} + void AudacityProject::OnSkipStart() { wxCommandEvent evt; diff --git a/src/Menus.h b/src/Menus.h index 7a32590d7..d88c187d3 100644 --- a/src/Menus.h +++ b/src/Menus.h @@ -179,6 +179,8 @@ double GetTime(const Track *t); void OnSortTime(); void OnSortName(); +void OnToggleScrollLeftOfZero(); + void OnSnapToOff(); void OnSnapToNearest(); void OnSnapToPrior(); diff --git a/src/ViewInfo.cpp b/src/ViewInfo.cpp index b3ea4db9d..34d747df0 100644 --- a/src/ViewInfo.cpp +++ b/src/ViewInfo.cpp @@ -18,6 +18,7 @@ Paul Licameli #include "prefs/GUISettings.h" #include "Prefs.h" #include "xml/XMLWriter.h" +#include "prefs/TracksPrefs.h" namespace { static const double gMaxZoom = 6000000; @@ -133,7 +134,8 @@ void ViewInfo::UpdatePrefs() { ZoomInfo::UpdatePrefs(); #ifdef EXPERIMENTAL_SCROLLING_LIMITS - gPrefs->Read(wxT("/GUI/ScrollBeyondZero"), &bScrollBeyondZero, false); + gPrefs->Read(TracksPrefs::ScrollingPreferenceKey(), &bScrollBeyondZero, + TracksPrefs::ScrollingPreferenceDefault()); #endif } diff --git a/src/prefs/TracksPrefs.cpp b/src/prefs/TracksPrefs.cpp index 5507979cf..990720139 100644 --- a/src/prefs/TracksPrefs.cpp +++ b/src/prefs/TracksPrefs.cpp @@ -45,6 +45,12 @@ TracksPrefs::~TracksPrefs() { } +const wxChar *TracksPrefs::ScrollingPreferenceKey() +{ + static auto string = wxT("/GUI/ScrollBeyondZero"); + return string; +} + void TracksPrefs::Populate() { mSoloCodes.Add(wxT("Simple")); @@ -134,8 +140,8 @@ void TracksPrefs::PopulateOrExchange(ShuttleGui & S) true); #ifdef EXPERIMENTAL_SCROLLING_LIMITS S.TieCheckBox(_("Enable scrolling left of &zero"), - wxT("/GUI/ScrollBeyondZero"), - false); + ScrollingPreferenceKey(), + ScrollingPreferenceDefault()); #endif S.AddSpace(10); diff --git a/src/prefs/TracksPrefs.h b/src/prefs/TracksPrefs.h index b8edba17b..b8df5001f 100644 --- a/src/prefs/TracksPrefs.h +++ b/src/prefs/TracksPrefs.h @@ -29,6 +29,9 @@ class TracksPrefs final : public PrefsPanel ~TracksPrefs(); bool Apply() override; + static const wxChar *ScrollingPreferenceKey(); + static inline bool ScrollingPreferenceDefault() { return false; } + private: void Populate(); void PopulateOrExchange(ShuttleGui & S); diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index 8e1f78b48..c48e8b9ff 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -82,6 +82,7 @@ array of Ruler::Label. #include "../Prefs.h" #include "../Snap.h" #include "../tracks/ui/Scrubbing.h" +#include "../prefs/TracksPrefs.h" //#define SCRUB_ABOVE #define RULER_DOUBLE_CLICK @@ -2044,7 +2045,8 @@ void AdornedRulerPanel::UpdatePrefs() #ifdef EXPERIMENTAL_TWO_TONE_TIME_RULER { bool scrollBeyondZero = false; - gPrefs->Read(wxT("/GUI/ScrollBeyondZero"), &scrollBeyondZero, false); + gPrefs->Read(TracksPrefs::ScrollingPreferenceKey(), &scrollBeyondZero, + TracksPrefs::ScrollingPreferenceDefault()); mRuler.SetTwoTone(scrollBeyondZero); } #endif