From a470ba00b023d315ea9b14a4f2179047cc5fdf4d Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 26 Jun 2019 12:15:17 -0400 Subject: [PATCH] ProjectAudioManager does not depend directly on AdornedRulerPanel --- src/AdornedRulerPanel.cpp | 54 ++++++++++++++++++++++++++++++++---- src/AdornedRulerPanel.h | 3 ++ src/ProjectAudioManager.cpp | 43 ---------------------------- src/ProjectAudioManager.h | 3 -- src/menus/TransportMenus.cpp | 7 +++-- 5 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/AdornedRulerPanel.cpp b/src/AdornedRulerPanel.cpp index 9ad0149a9..35b773152 100644 --- a/src/AdornedRulerPanel.cpp +++ b/src/AdornedRulerPanel.cpp @@ -49,6 +49,7 @@ #include "tracks/ui/Scrubbing.h" #include "tracks/ui/TrackView.h" #include "widgets/AButton.h" +#include "widgets/AudacityMessageBox.h" #include "widgets/Grabber.h" #include @@ -1288,7 +1289,7 @@ void AdornedRulerPanel::HandleQPClick(wxMouseEvent &evt, wxCoord mousePosX) // Temporarily unlock locked play region if (mOldPlayRegion.Locked() && evt.LeftDown()) { //mPlayRegionLock = true; - TransportActions::DoUnlockPlayRegion(*mProject); + UnlockPlayRegion(); } mLeftDownClickUnsnapped = mQuickPlayPosUnsnapped; @@ -1541,7 +1542,7 @@ void AdornedRulerPanel::HandleQPRelease(wxMouseEvent &evt) if (mOldPlayRegion.Locked()) { // Restore Locked Play region SetPlayRegion(mOldPlayRegion.GetStart(), mOldPlayRegion.GetEnd()); - TransportActions::DoLockPlayRegion(*mProject); + LockPlayRegion(); // and release local lock mOldPlayRegion.SetLocked( false ); } @@ -1563,7 +1564,7 @@ auto AdornedRulerPanel::QPHandle::Cancel mParent->mOldPlayRegion.GetStart(), mParent->mOldPlayRegion.GetEnd()); if (mParent->mOldPlayRegion.Locked()) { // Restore Locked Play region - TransportActions::DoLockPlayRegion(*pProject); + mParent->LockPlayRegion(); // and release local lock mParent->mOldPlayRegion.SetLocked( false ); } @@ -1701,7 +1702,7 @@ void AdornedRulerPanel::UpdateButtonStates() void AdornedRulerPanel::OnTogglePinnedState(wxCommandEvent & /*event*/) { - TransportActions::DoTogglePinnedHead(*mProject); + TogglePinnedHead(); UpdateButtonStates(); } @@ -1846,9 +1847,9 @@ void AdornedRulerPanel::OnLockPlayRegion(wxCommandEvent&) const auto &viewInfo = ViewInfo::Get( *GetProject() ); const auto &playRegion = viewInfo.playRegion; if (playRegion.Locked()) - TransportActions::DoUnlockPlayRegion(*mProject); + UnlockPlayRegion(); else - TransportActions::DoLockPlayRegion(*mProject); + LockPlayRegion(); } @@ -2220,3 +2221,44 @@ void AdornedRulerPanel::CreateOverlays() this->AddOverlay( mOverlay->mPartner ); } } + +void AdornedRulerPanel::LockPlayRegion() +{ + auto &project = *mProject; + auto &tracks = TrackList::Get( project ); + + auto &viewInfo = ViewInfo::Get( project ); + auto &playRegion = viewInfo.playRegion; + if (playRegion.GetStart() >= tracks.GetEndTime()) { + AudacityMessageBox(_("Cannot lock region beyond\nend of project."), + _("Error")); + } + else { + playRegion.SetLocked( true ); + Refresh(false); + } +} + +void AdornedRulerPanel::UnlockPlayRegion() +{ + auto &project = *mProject; + auto &viewInfo = ViewInfo::Get( project ); + auto &playRegion = viewInfo.playRegion; + playRegion.SetLocked( false ); + Refresh(false); +} + +void AdornedRulerPanel::TogglePinnedHead() +{ + bool value = !TracksPrefs::GetPinnedHeadPreference(); + TracksPrefs::SetPinnedHeadPreference(value, true); + MenuManager::ModifyAllProjectToolbarMenus(); + + auto &project = *mProject; + // Update button image + UpdateButtonStates(); + + auto &scrubber = Scrubber::Get( project ); + if (scrubber.HasMark()) + scrubber.SetScrollScrubbing(value); +} diff --git a/src/AdornedRulerPanel.h b/src/AdornedRulerPanel.h index 96a3d03f1..1f4ede0e3 100644 --- a/src/AdornedRulerPanel.h +++ b/src/AdornedRulerPanel.h @@ -54,6 +54,9 @@ public: void SetPlayRegion(double playRegionStart, double playRegionEnd); void ClearPlayRegion(); + void LockPlayRegion(); + void UnlockPlayRegion(); + void TogglePinnedHead(); void GetMaxSize(wxCoord *width, wxCoord *height); diff --git a/src/ProjectAudioManager.cpp b/src/ProjectAudioManager.cpp index 50e97987b..62fa52dc1 100644 --- a/src/ProjectAudioManager.cpp +++ b/src/ProjectAudioManager.cpp @@ -26,7 +26,6 @@ Paul Licameli split from ProjectManager.cpp #include "TimeTrack.h" #include "UndoManager.h" #include "toolbars/ControlToolBar.h" -#include "widgets/ErrorDialog.h" #include "widgets/Warning.h" static AudacityProject::AttachedObjects::RegisteredFactory @@ -252,7 +251,6 @@ DefaultSpeedPlayOptions( AudacityProject &project ) return options; } -#include "AdornedRulerPanel.h" #include "Menus.h" #include "ViewInfo.h" #include "prefs/TracksPrefs.h" @@ -358,47 +356,6 @@ void DoRecord( AudacityProject &project ) controlToolBar.OnRecord(false); } -void DoLockPlayRegion( AudacityProject &project ) -{ - auto &tracks = TrackList::Get( project ); - auto &ruler = AdornedRulerPanel::Get( project ); - - auto &viewInfo = ViewInfo::Get( project ); - auto &playRegion = viewInfo.playRegion; - if (playRegion.GetStart() >= tracks.GetEndTime()) { - AudacityMessageBox(_("Cannot lock region beyond\nend of project."), - _("Error")); - } - else { - playRegion.SetLocked( true ); - ruler.Refresh(false); - } -} - -void DoUnlockPlayRegion( AudacityProject &project ) -{ - auto &ruler = AdornedRulerPanel::Get( project ); - auto &viewInfo = ViewInfo::Get( project ); - auto &playRegion = viewInfo.playRegion; - playRegion.SetLocked( false ); - ruler.Refresh(false); -} - -void DoTogglePinnedHead( AudacityProject &project ) -{ - bool value = !TracksPrefs::GetPinnedHeadPreference(); - TracksPrefs::SetPinnedHeadPreference(value, true); - MenuManager::ModifyAllProjectToolbarMenus(); - - auto &ruler = AdornedRulerPanel::Get( project ); - // Update button image - ruler.UpdateButtonStates(); - - auto &scrubber = Scrubber::Get( project ); - if (scrubber.HasMark()) - scrubber.SetScrollScrubbing(value); -} - void DoStop( AudacityProject &project ) { wxCommandEvent evt; diff --git a/src/ProjectAudioManager.h b/src/ProjectAudioManager.h index d8ad04644..7aa4faf7d 100644 --- a/src/ProjectAudioManager.h +++ b/src/ProjectAudioManager.h @@ -94,9 +94,6 @@ bool DoPlayStopSelect( AudacityProject &project, bool click, bool shift ); void DoPlayStopSelect( AudacityProject &project ); void DoStop( AudacityProject & ); void DoPause( AudacityProject & ); -void DoLockPlayRegion( AudacityProject & ); -void DoUnlockPlayRegion( AudacityProject & ); -void DoTogglePinnedHead( AudacityProject & ); void DoRecord( AudacityProject & ); } diff --git a/src/menus/TransportMenus.cpp b/src/menus/TransportMenus.cpp index d87f0ca08..c77aae4f6 100644 --- a/src/menus/TransportMenus.cpp +++ b/src/menus/TransportMenus.cpp @@ -1,6 +1,7 @@ #include "../Audacity.h" #include "../Experimental.h" +#include "../AdornedRulerPanel.h" #include "../AudioIO.h" #include "../CommonCommandFlags.h" #include "../DeviceManager.h" @@ -468,12 +469,12 @@ void OnPunchAndRoll(const CommandContext &context) void OnLockPlayRegion(const CommandContext &context) { - DoLockPlayRegion( context.project ); + AdornedRulerPanel::Get( context.project ).LockPlayRegion(); } void OnUnlockPlayRegion(const CommandContext &context) { - DoUnlockPlayRegion( context.project ); + AdornedRulerPanel::Get( context.project ).UnlockPlayRegion(); } void OnRescanDevices(const CommandContext &WXUNUSED(context) ) @@ -500,7 +501,7 @@ void OnToggleSoundActivated(const CommandContext &WXUNUSED(context) ) void OnTogglePinnedHead(const CommandContext &context) { - DoTogglePinnedHead( context.project ); + AdornedRulerPanel::Get( context.project ).TogglePinnedHead(); } void OnTogglePlayRecording(const CommandContext &WXUNUSED(context) )