mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-01 16:19:43 +02:00
static ::Get functions for overlays on TrackPanel...
... not member functions of AudacityProject. AdornedRulerPanel is not (yet) made similarly independent of its overlay code. Two .cpp files implementing overlays escape dependency cycles to higher levels.
This commit is contained in:
parent
004997cec1
commit
52abbcdc4b
@ -161,8 +161,6 @@ scroll information. It also has some status flags.
|
||||
#include "toolbars/ToolsToolBar.h"
|
||||
#include "toolbars/TranscriptionToolBar.h"
|
||||
|
||||
#include "tracks/ui/EditCursorOverlay.h"
|
||||
#include "tracks/ui/PlayIndicatorOverlay.h"
|
||||
#include "tracks/ui/Scrubbing.h"
|
||||
|
||||
#include "commands/ScriptCommandRelay.h"
|
||||
@ -1228,24 +1226,9 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
|
||||
this,
|
||||
mRuler);
|
||||
}
|
||||
|
||||
mCursorOverlay = std::make_shared<EditCursorOverlay>(this);
|
||||
|
||||
#ifdef EXPERIMENTAL_SCRUBBING_BASIC
|
||||
mScrubOverlay = std::make_shared<ScrubbingOverlay>(this);
|
||||
#endif
|
||||
|
||||
mPlaybackScroller = std::make_unique<PlaybackScroller>(this);
|
||||
|
||||
mIndicatorOverlay = std::make_shared<PlayIndicatorOverlay>(this);
|
||||
|
||||
// Add the overlays
|
||||
mTrackPanel->AddOverlay( mIndicatorOverlay );
|
||||
mTrackPanel->AddOverlay( mCursorOverlay );
|
||||
#ifdef EXPERIMENTAL_SCRUBBING_BASIC
|
||||
mTrackPanel->AddOverlay( mScrubOverlay );
|
||||
#endif
|
||||
|
||||
MenuManager::Get( project ).CreateMenusAndCommands( project );
|
||||
|
||||
// LLL: When Audacity starts or becomes active after returning from
|
||||
|
@ -55,7 +55,6 @@ class AudacityProject;
|
||||
class AutoSaveFile;
|
||||
class Importer;
|
||||
class ODLock;
|
||||
class Overlay;
|
||||
class RecordingRecoveryHandler;
|
||||
namespace ProjectFileIORegistry{ struct Entry; }
|
||||
class TrackList;
|
||||
@ -649,15 +648,6 @@ public:
|
||||
private:
|
||||
bool mbInitializingScrollbar{ false };
|
||||
|
||||
// TrackPanelOverlay objects
|
||||
std::shared_ptr<Overlay>
|
||||
mIndicatorOverlay, mCursorOverlay;
|
||||
|
||||
#ifdef EXPERIMENTAL_SCRUBBING_BASIC
|
||||
std::shared_ptr<Overlay> mScrubOverlay;
|
||||
private:
|
||||
#endif
|
||||
|
||||
public:
|
||||
class PlaybackScroller final : public wxEvtHandler
|
||||
{
|
||||
|
@ -29,6 +29,14 @@ namespace {
|
||||
}
|
||||
}
|
||||
|
||||
static const AudacityProject::AttachedObjects::RegisteredFactory sOverlayKey{
|
||||
[]( AudacityProject &parent ){
|
||||
auto result = std::make_shared< EditCursorOverlay >( &parent );
|
||||
parent.GetTrackPanel()->AddOverlay( result );
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
EditCursorOverlay::EditCursorOverlay(AudacityProject *project, bool isMaster)
|
||||
: mProject(project)
|
||||
, mIsMaster(isMaster)
|
||||
|
@ -12,11 +12,14 @@ Paul Licameli split from TrackPanel.cpp
|
||||
#define __AUDACITY_EDIT_CURSOR_OVERLAY__
|
||||
|
||||
#include <memory>
|
||||
#include "../../ClientData.h" // to inherit
|
||||
#include "../../widgets/Overlay.h" // to inherit
|
||||
|
||||
class AudacityProject;
|
||||
|
||||
class EditCursorOverlay final : public Overlay
|
||||
class EditCursorOverlay final
|
||||
: public Overlay
|
||||
, public ClientData::Base
|
||||
{
|
||||
public:
|
||||
EditCursorOverlay(AudacityProject *project, bool isMaster = true);
|
||||
|
@ -115,6 +115,14 @@ void PlayIndicatorOverlayBase::Draw(OverlayPanel &panel, wxDC &dc)
|
||||
wxASSERT(false);
|
||||
}
|
||||
|
||||
static const AudacityProject::AttachedObjects::RegisteredFactory sOverlayKey{
|
||||
[]( AudacityProject &parent ){
|
||||
auto result = std::make_shared< PlayIndicatorOverlay >( &parent );
|
||||
parent.GetTrackPanel()->AddOverlay( result );
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
PlayIndicatorOverlay::PlayIndicatorOverlay(AudacityProject *project)
|
||||
: PlayIndicatorOverlayBase(project, true)
|
||||
{
|
||||
|
@ -13,13 +13,17 @@ Paul Licameli split from TrackPanel.cpp
|
||||
|
||||
#include <wx/event.h> // to inherit
|
||||
#include "../../MemoryX.h"
|
||||
#include "../../ClientData.h"
|
||||
#include "../../widgets/Overlay.h" // to inherit
|
||||
|
||||
class AudacityProject;
|
||||
|
||||
|
||||
// Common class for overlaying track panel or ruler
|
||||
class PlayIndicatorOverlayBase : public wxEvtHandler, public Overlay
|
||||
class PlayIndicatorOverlayBase
|
||||
: public wxEvtHandler
|
||||
, public Overlay
|
||||
, public ClientData::Base
|
||||
{
|
||||
public:
|
||||
PlayIndicatorOverlayBase(AudacityProject *project, bool isMaster);
|
||||
|
@ -882,6 +882,14 @@ void Scrubber::Forwarder::OnMouse(wxMouseEvent &event)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// class ScrubbingOverlay is responsible for drawing the speed numbers
|
||||
|
||||
static const AudacityProject::AttachedObjects::RegisteredFactory sOverlayKey{
|
||||
[]( AudacityProject &parent ){
|
||||
auto result = std::make_shared< ScrubbingOverlay >( &parent );
|
||||
parent.GetTrackPanel()->AddOverlay( result );
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
ScrubbingOverlay::ScrubbingOverlay(AudacityProject *project)
|
||||
: mProject(project)
|
||||
, mLastScrubRect()
|
||||
|
@ -216,7 +216,10 @@ private:
|
||||
};
|
||||
|
||||
// Specialist in drawing the scrub speed, and listening for certain events
|
||||
class ScrubbingOverlay final : public wxEvtHandler, public Overlay
|
||||
class ScrubbingOverlay final
|
||||
: public wxEvtHandler
|
||||
, public Overlay
|
||||
, public ClientData::Base
|
||||
{
|
||||
public:
|
||||
ScrubbingOverlay(AudacityProject *project);
|
||||
|
Loading…
x
Reference in New Issue
Block a user