1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-03 22:19:07 +02:00

ProjectAudioManager does not depend directly on AdornedRulerPanel

This commit is contained in:
Paul Licameli 2019-06-26 12:15:17 -04:00
parent 3af2063fa3
commit a470ba00b0
5 changed files with 55 additions and 55 deletions

View File

@ -49,6 +49,7 @@
#include "tracks/ui/Scrubbing.h" #include "tracks/ui/Scrubbing.h"
#include "tracks/ui/TrackView.h" #include "tracks/ui/TrackView.h"
#include "widgets/AButton.h" #include "widgets/AButton.h"
#include "widgets/AudacityMessageBox.h"
#include "widgets/Grabber.h" #include "widgets/Grabber.h"
#include <wx/dcclient.h> #include <wx/dcclient.h>
@ -1288,7 +1289,7 @@ void AdornedRulerPanel::HandleQPClick(wxMouseEvent &evt, wxCoord mousePosX)
// Temporarily unlock locked play region // Temporarily unlock locked play region
if (mOldPlayRegion.Locked() && evt.LeftDown()) { if (mOldPlayRegion.Locked() && evt.LeftDown()) {
//mPlayRegionLock = true; //mPlayRegionLock = true;
TransportActions::DoUnlockPlayRegion(*mProject); UnlockPlayRegion();
} }
mLeftDownClickUnsnapped = mQuickPlayPosUnsnapped; mLeftDownClickUnsnapped = mQuickPlayPosUnsnapped;
@ -1541,7 +1542,7 @@ void AdornedRulerPanel::HandleQPRelease(wxMouseEvent &evt)
if (mOldPlayRegion.Locked()) { if (mOldPlayRegion.Locked()) {
// Restore Locked Play region // Restore Locked Play region
SetPlayRegion(mOldPlayRegion.GetStart(), mOldPlayRegion.GetEnd()); SetPlayRegion(mOldPlayRegion.GetStart(), mOldPlayRegion.GetEnd());
TransportActions::DoLockPlayRegion(*mProject); LockPlayRegion();
// and release local lock // and release local lock
mOldPlayRegion.SetLocked( false ); mOldPlayRegion.SetLocked( false );
} }
@ -1563,7 +1564,7 @@ auto AdornedRulerPanel::QPHandle::Cancel
mParent->mOldPlayRegion.GetStart(), mParent->mOldPlayRegion.GetEnd()); mParent->mOldPlayRegion.GetStart(), mParent->mOldPlayRegion.GetEnd());
if (mParent->mOldPlayRegion.Locked()) { if (mParent->mOldPlayRegion.Locked()) {
// Restore Locked Play region // Restore Locked Play region
TransportActions::DoLockPlayRegion(*pProject); mParent->LockPlayRegion();
// and release local lock // and release local lock
mParent->mOldPlayRegion.SetLocked( false ); mParent->mOldPlayRegion.SetLocked( false );
} }
@ -1701,7 +1702,7 @@ void AdornedRulerPanel::UpdateButtonStates()
void AdornedRulerPanel::OnTogglePinnedState(wxCommandEvent & /*event*/) void AdornedRulerPanel::OnTogglePinnedState(wxCommandEvent & /*event*/)
{ {
TransportActions::DoTogglePinnedHead(*mProject); TogglePinnedHead();
UpdateButtonStates(); UpdateButtonStates();
} }
@ -1846,9 +1847,9 @@ void AdornedRulerPanel::OnLockPlayRegion(wxCommandEvent&)
const auto &viewInfo = ViewInfo::Get( *GetProject() ); const auto &viewInfo = ViewInfo::Get( *GetProject() );
const auto &playRegion = viewInfo.playRegion; const auto &playRegion = viewInfo.playRegion;
if (playRegion.Locked()) if (playRegion.Locked())
TransportActions::DoUnlockPlayRegion(*mProject); UnlockPlayRegion();
else else
TransportActions::DoLockPlayRegion(*mProject); LockPlayRegion();
} }
@ -2220,3 +2221,44 @@ void AdornedRulerPanel::CreateOverlays()
this->AddOverlay( mOverlay->mPartner ); 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);
}

View File

@ -54,6 +54,9 @@ public:
void SetPlayRegion(double playRegionStart, double playRegionEnd); void SetPlayRegion(double playRegionStart, double playRegionEnd);
void ClearPlayRegion(); void ClearPlayRegion();
void LockPlayRegion();
void UnlockPlayRegion();
void TogglePinnedHead();
void GetMaxSize(wxCoord *width, wxCoord *height); void GetMaxSize(wxCoord *width, wxCoord *height);

View File

@ -26,7 +26,6 @@ Paul Licameli split from ProjectManager.cpp
#include "TimeTrack.h" #include "TimeTrack.h"
#include "UndoManager.h" #include "UndoManager.h"
#include "toolbars/ControlToolBar.h" #include "toolbars/ControlToolBar.h"
#include "widgets/ErrorDialog.h"
#include "widgets/Warning.h" #include "widgets/Warning.h"
static AudacityProject::AttachedObjects::RegisteredFactory static AudacityProject::AttachedObjects::RegisteredFactory
@ -252,7 +251,6 @@ DefaultSpeedPlayOptions( AudacityProject &project )
return options; return options;
} }
#include "AdornedRulerPanel.h"
#include "Menus.h" #include "Menus.h"
#include "ViewInfo.h" #include "ViewInfo.h"
#include "prefs/TracksPrefs.h" #include "prefs/TracksPrefs.h"
@ -358,47 +356,6 @@ void DoRecord( AudacityProject &project )
controlToolBar.OnRecord(false); 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 ) void DoStop( AudacityProject &project )
{ {
wxCommandEvent evt; wxCommandEvent evt;

View File

@ -94,9 +94,6 @@ bool DoPlayStopSelect( AudacityProject &project, bool click, bool shift );
void DoPlayStopSelect( AudacityProject &project ); void DoPlayStopSelect( AudacityProject &project );
void DoStop( AudacityProject & ); void DoStop( AudacityProject & );
void DoPause( AudacityProject & ); void DoPause( AudacityProject & );
void DoLockPlayRegion( AudacityProject & );
void DoUnlockPlayRegion( AudacityProject & );
void DoTogglePinnedHead( AudacityProject & );
void DoRecord( AudacityProject & ); void DoRecord( AudacityProject & );
} }

View File

@ -1,6 +1,7 @@
#include "../Audacity.h" #include "../Audacity.h"
#include "../Experimental.h" #include "../Experimental.h"
#include "../AdornedRulerPanel.h"
#include "../AudioIO.h" #include "../AudioIO.h"
#include "../CommonCommandFlags.h" #include "../CommonCommandFlags.h"
#include "../DeviceManager.h" #include "../DeviceManager.h"
@ -468,12 +469,12 @@ void OnPunchAndRoll(const CommandContext &context)
void OnLockPlayRegion(const CommandContext &context) void OnLockPlayRegion(const CommandContext &context)
{ {
DoLockPlayRegion( context.project ); AdornedRulerPanel::Get( context.project ).LockPlayRegion();
} }
void OnUnlockPlayRegion(const CommandContext &context) void OnUnlockPlayRegion(const CommandContext &context)
{ {
DoUnlockPlayRegion( context.project ); AdornedRulerPanel::Get( context.project ).UnlockPlayRegion();
} }
void OnRescanDevices(const CommandContext &WXUNUSED(context) ) void OnRescanDevices(const CommandContext &WXUNUSED(context) )
@ -500,7 +501,7 @@ void OnToggleSoundActivated(const CommandContext &WXUNUSED(context) )
void OnTogglePinnedHead(const CommandContext &context) void OnTogglePinnedHead(const CommandContext &context)
{ {
DoTogglePinnedHead( context.project ); AdornedRulerPanel::Get( context.project ).TogglePinnedHead();
} }
void OnTogglePlayRecording(const CommandContext &WXUNUSED(context) ) void OnTogglePlayRecording(const CommandContext &WXUNUSED(context) )