Make objects attached to AudacityProject non-copyable...

... except for Tags; also some uses of final and explicit

This caught a mistake in Scrubbing.cpp
This commit is contained in:
Paul Licameli 2019-07-02 18:57:53 -04:00
parent 6adb2abc98
commit 2a06b10884
26 changed files with 61 additions and 4 deletions

View File

@ -100,6 +100,8 @@ class PROFILE_DLL_API DirManager final
static std::shared_ptr< DirManager > Create();
DirManager( const DirManager & ) PROHIBITED;
DirManager &operator=( const DirManager & ) PROHIBITED;
virtual ~DirManager();
size_t NumBlockFiles() const { return mBlockFileHash.size(); }

View File

@ -62,7 +62,10 @@ public:
static MenuManager &Get( AudacityProject &project );
static const MenuManager &Get( const AudacityProject &project );
explicit
MenuManager( AudacityProject &project );
MenuManager( const MenuManager & ) PROHIBITED;
MenuManager &operator=( const MenuManager & ) PROHIBITED;
~MenuManager();
static void ModifyUndoMenuItems(AudacityProject &project);

View File

@ -26,6 +26,8 @@ public:
static const ProjectAudioIO &Get( const AudacityProject &project );
explicit ProjectAudioIO( AudacityProject &project );
ProjectAudioIO( const ProjectAudioIO & ) PROHIBITED;
ProjectAudioIO &operator=( const ProjectAudioIO & ) PROHIBITED;
~ProjectAudioIO();
int GetAudioIOToken() const;

View File

@ -29,6 +29,8 @@ public:
explicit ProjectAudioManager( AudacityProject &project )
: mProject{ project }
{}
ProjectAudioManager( const ProjectAudioManager & ) PROHIBITED;
ProjectAudioManager &operator=( const ProjectAudioManager & ) PROHIBITED;
~ProjectAudioManager() override;
bool IsTimerRecordCancelled() { return mTimerRecordCanceled; }

View File

@ -29,6 +29,8 @@ public:
static const ProjectFileIO &Get( const AudacityProject &project );
explicit ProjectFileIO( AudacityProject &project );
ProjectFileIO( const ProjectFileIO & ) PROHIBITED;
ProjectFileIO &operator=( const ProjectFileIO & ) PROHIBITED;
~ProjectFileIO();
bool WarnOfLegacyFile( );

View File

@ -38,6 +38,8 @@ public:
static const ProjectFileManager &Get( const AudacityProject &project );
explicit ProjectFileManager( AudacityProject &project );
ProjectFileManager( const ProjectFileManager & ) PROHIBITED;
ProjectFileManager &operator=( const ProjectFileManager & ) PROHIBITED;
~ProjectFileManager();
struct ReadProjectResults

View File

@ -27,6 +27,8 @@ public:
explicit ProjectHistory( AudacityProject &project )
: mProject{ project }
{}
ProjectHistory( const ProjectHistory & ) PROHIBITED;
ProjectHistory &operator=( const ProjectHistory & ) PROHIBITED;
~ProjectHistory() override;
void InitialState();

View File

@ -34,6 +34,8 @@ public:
static const ProjectManager &Get( const AudacityProject &project );
explicit ProjectManager( AudacityProject &project );
ProjectManager( const ProjectManager & ) PROHIBITED;
ProjectManager &operator=( const ProjectManager & ) PROHIBITED;
~ProjectManager() override;
// This is the factory for projects:

View File

@ -27,6 +27,9 @@ public:
static const ProjectSelectionManager &Get( const AudacityProject &project );
explicit ProjectSelectionManager( AudacityProject &project );
ProjectSelectionManager( const ProjectSelectionManager & ) PROHIBITED;
ProjectSelectionManager &operator=(
const ProjectSelectionManager & ) PROHIBITED;
~ProjectSelectionManager() override;
// SelectionBarListener callback methods

View File

@ -60,7 +60,9 @@ public:
ChangedSyncLock,
};
ProjectSettings( AudacityProject &project );
explicit ProjectSettings( AudacityProject &project );
ProjectSettings( const ProjectSettings & ) PROHIBITED;
ProjectSettings &operator=( const ProjectSettings & ) PROHIBITED;
sampleFormat GetDefaultFormat() const { return mDefaultFormat; }

View File

@ -22,6 +22,10 @@ class SelectionState final
: public ClientData::Base
{
public:
SelectionState() = default;
SelectionState( const SelectionState & ) PROHIBITED;
SelectionState &operator=( const SelectionState & ) PROHIBITED;
static SelectionState &Get( AudacityProject &project );
static const SelectionState &Get( const AudacityProject &project );

View File

@ -1579,6 +1579,8 @@ class AUDACITY_DLL_API TrackFactory final
, mZoomInfo(zoomInfo)
{
}
TrackFactory( const TrackFactory & ) PROHIBITED;
TrackFactory &operator=( const TrackFactory & ) PROHIBITED;
private:
const std::shared_ptr<DirManager> mDirManager;

View File

@ -73,6 +73,10 @@ public:
class AUDACITY_DLL_API TrackPanelCell /* not final */ : public TrackPanelNode
{
public:
TrackPanelCell() = default;
TrackPanelCell( const TrackPanelCell & ) PROHIBITED;
TrackPanelCell &operator=( const TrackPanelCell & ) PROHIBITED;
virtual ~TrackPanelCell () = 0;
// May supply default cursor, status message, and tooltip, when there is no

View File

@ -108,13 +108,14 @@ inline UndoPush operator | (UndoPush a, UndoPush b)
inline UndoPush operator & (UndoPush a, UndoPush b)
{ return static_cast<UndoPush>(static_cast<int>(a) & static_cast<int>(b)); }
class AUDACITY_DLL_API UndoManager
class AUDACITY_DLL_API UndoManager final
: public ClientData::Base
{
public:
static UndoManager &Get( AudacityProject &project );
static const UndoManager &Get( const AudacityProject &project );
explicit
UndoManager( AudacityProject &project );
~UndoManager();

View File

@ -96,6 +96,8 @@ public:
static const ViewInfo &Get( const AudacityProject &project );
ViewInfo(double start, double screenDuration, double pixelsPerSecond);
ViewInfo( const ViewInfo & ) PROHIBITED;
ViewInfo &operator=( const ViewInfo & ) PROHIBITED;
int GetHeight() const { return mHeight; }
void SetHeight( int height ) { mHeight = height; }

View File

@ -534,6 +534,8 @@ Handler()
{
UpdatePrefs();
}
Handler( const Handler & ) PROHIBITED;
Handler &operator=( const Handler & ) PROHIBITED;
}; // struct Handler

View File

@ -1005,6 +1005,8 @@ Handler()
{
UpdatePrefs();
}
Handler( const Handler & ) PROHIBITED;
Handler &operator=( const Handler & ) PROHIBITED;
}; // struct Handler

View File

@ -408,6 +408,8 @@ Handler( AudacityProject &project )
{
mProject.Unbind( EVT_UNDO_PUSHED, &Handler::OnUndoPushed, this );
}
Handler( const Handler & ) PROHIBITED;
Handler &operator=( const Handler & ) PROHIBITED;
AudacityProject &mProject;

View File

@ -58,6 +58,8 @@ class ToolManager final
static const ToolManager &Get( const AudacityProject &project );
ToolManager( AudacityProject *parent, wxWindow *topDockParent );
ToolManager( const ToolManager & ) PROHIBITED;
ToolManager &operator=( const ToolManager & ) PROHIBITED;
~ToolManager();
void LayoutToolBars();

View File

@ -30,6 +30,7 @@ public:
static BackgroundCell &Get( AudacityProject &project );
static const BackgroundCell &Get( const AudacityProject &project );
explicit
BackgroundCell(AudacityProject *pProject)
: mpProject(pProject)
{}

View File

@ -22,6 +22,7 @@ class EditCursorOverlay final
, public ClientData::Base
{
public:
explicit
EditCursorOverlay(AudacityProject *project, bool isMaster = true);
private:

View File

@ -50,6 +50,7 @@ protected:
class PlayIndicatorOverlay final : public PlayIndicatorOverlayBase
{
public:
explicit
PlayIndicatorOverlay(AudacityProject *project);
private:

View File

@ -744,7 +744,7 @@ bool Scrubber::IsScrubbing() const
{
if (mScrubToken <= 0)
return false;
auto projectAudioIO = ProjectAudioIO::Get( *mProject );
auto &projectAudioIO = ProjectAudioIO::Get( *mProject );
if (mScrubToken == projectAudioIO.GetAudioIOToken() &&
projectAudioIO.IsAudioActive())
return true;

View File

@ -44,7 +44,10 @@ public:
static Scrubber &Get( AudacityProject &project );
static const Scrubber &Get( const AudacityProject &project );
explicit
Scrubber(AudacityProject *project);
Scrubber( const Scrubber & ) PROHIBITED;
Scrubber &operator=( const Scrubber & ) PROHIBITED;
~Scrubber();
static bool ShouldScrubPinned();
@ -192,6 +195,7 @@ class ScrubbingOverlay final
, public ClientData::Base
{
public:
explicit
ScrubbingOverlay(AudacityProject *project);
private:

View File

@ -166,7 +166,7 @@ namespace {
// Attach an object to each project. It receives track list events and updates
// track Y coordinates
struct TrackPositioner : ClientData::Base, wxEvtHandler
struct TrackPositioner final : ClientData::Base, wxEvtHandler
{
AudacityProject &mProject;
@ -182,6 +182,8 @@ struct TrackPositioner : ClientData::Base, wxEvtHandler
TrackList::Get( project ).Bind(
EVT_TRACKLIST_RESIZING, &TrackPositioner::OnUpdate, this );
}
TrackPositioner( const TrackPositioner & ) PROHIBITED;
TrackPositioner &operator=( const TrackPositioner & ) PROHIBITED;
void OnUpdate( TrackListEvent & e )
{

View File

@ -9,6 +9,8 @@
#ifndef __AUDACITY_OVERLAY__
#define __AUDACITY_OVERLAY__
#include "../Audacity.h"
#include <utility>
class OverlayPanel;
@ -91,6 +93,9 @@ AdornedRulerPanel.
class Overlay
{
public:
Overlay() = default;
Overlay( const Overlay & ) PROHIBITED;
Overlay &operator=( const Overlay & ) PROHIBITED;
virtual ~Overlay() = 0;
///\brief This number determines an ordering of overlays, so that those