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:
parent
3af2063fa3
commit
a470ba00b0
@ -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);
|
||||||
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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 & );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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) )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user