mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-02 17:09:26 +02:00
Specific types, const versions: getting track & vruler controls...
... See changes to classes CommonTrackPanelCell and Track; the rest follows
This commit is contained in:
parent
43899da80d
commit
6f31a9f7dc
@ -324,8 +324,8 @@ private:
|
|||||||
std::weak_ptr<LabelTextHandle> mTextHandle;
|
std::weak_ptr<LabelTextHandle> mTextHandle;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<TrackControls> GetControls() override;
|
std::shared_ptr<TrackControls> DoGetControls() override;
|
||||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls() override;
|
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||||
friend class GetInfoCommand; // to get labels.
|
friend class GetInfoCommand; // to get labels.
|
||||||
friend class SetLabelCommand; // to set labels.
|
friend class SetLabelCommand; // to set labels.
|
||||||
};
|
};
|
||||||
|
@ -270,8 +270,8 @@ class AUDACITY_DLL_API NoteTrack final
|
|||||||
std::weak_ptr<StretchHandle> mStretchHandle;
|
std::weak_ptr<StretchHandle> mStretchHandle;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<TrackControls> GetControls() override;
|
std::shared_ptr<TrackControls> DoGetControls() override;
|
||||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls() override;
|
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // USE_MIDI
|
#endif // USE_MIDI
|
||||||
|
@ -160,8 +160,8 @@ class TimeTrack final : public Track {
|
|||||||
friend class TrackFactory;
|
friend class TrackFactory;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<TrackControls> GetControls() override;
|
std::shared_ptr<TrackControls> DoGetControls() override;
|
||||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls() override;
|
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -372,7 +372,7 @@ void Track::SyncLockAdjust(double oldT1, double newT1)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Track> Track::FindTrack()
|
std::shared_ptr<Track> Track::DoFindTrack()
|
||||||
{
|
{
|
||||||
return SharedPointer();
|
return SharedPointer();
|
||||||
}
|
}
|
||||||
|
15
src/Track.h
15
src/Track.h
@ -269,8 +269,7 @@ class AUDACITY_DLL_API Track /* not final */
|
|||||||
final override;
|
final override;
|
||||||
|
|
||||||
// Delegates the handling to the related TCP cell
|
// Delegates the handling to the related TCP cell
|
||||||
std::shared_ptr<TrackPanelCell> ContextMenuDelegate() override
|
std::shared_ptr<TrackPanelCell> ContextMenuDelegate() override;
|
||||||
{ return GetTrackControl(); }
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -284,11 +283,13 @@ class AUDACITY_DLL_API Track /* not final */
|
|||||||
|
|
||||||
// Return another, associated TrackPanelCell object that implements the
|
// Return another, associated TrackPanelCell object that implements the
|
||||||
// drop-down, close and minimize buttons, etc.
|
// drop-down, close and minimize buttons, etc.
|
||||||
std::shared_ptr<TrackPanelCell> GetTrackControl();
|
std::shared_ptr<TrackControls> GetTrackControl();
|
||||||
|
std::shared_ptr<const TrackControls> GetTrackControl() const;
|
||||||
|
|
||||||
// Return another, associated TrackPanelCell object that implements the
|
// Return another, associated TrackPanelCell object that implements the
|
||||||
// mouse actions for the vertical ruler
|
// mouse actions for the vertical ruler
|
||||||
std::shared_ptr<TrackPanelCell> GetVRulerControl();
|
std::shared_ptr<TrackVRulerControls> GetVRulerControl();
|
||||||
|
std::shared_ptr<const TrackVRulerControls> GetVRulerControl() const;
|
||||||
|
|
||||||
// Return another, associated TrackPanelCell object that implements the
|
// Return another, associated TrackPanelCell object that implements the
|
||||||
// click and drag to resize
|
// click and drag to resize
|
||||||
@ -737,11 +738,11 @@ public:
|
|||||||
bool IsSelectedLeader() const;
|
bool IsSelectedLeader() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<Track> FindTrack() override;
|
std::shared_ptr<Track> DoFindTrack() override;
|
||||||
|
|
||||||
// These are called to create controls on demand:
|
// These are called to create controls on demand:
|
||||||
virtual std::shared_ptr<TrackControls> GetControls() = 0;
|
virtual std::shared_ptr<TrackControls> DoGetControls() = 0;
|
||||||
virtual std::shared_ptr<TrackVRulerControls> GetVRulerControls() = 0;
|
virtual std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() = 0;
|
||||||
|
|
||||||
// These hold the controls:
|
// These hold the controls:
|
||||||
std::shared_ptr<TrackControls> mpControls;
|
std::shared_ptr<TrackControls> mpControls;
|
||||||
|
@ -86,6 +86,9 @@ is time to refresh some aspect of the screen.
|
|||||||
#include "toolbars/ControlToolBar.h"
|
#include "toolbars/ControlToolBar.h"
|
||||||
#include "toolbars/ToolsToolBar.h"
|
#include "toolbars/ToolsToolBar.h"
|
||||||
|
|
||||||
|
#include "tracks/ui/TrackControls.h" // for inheritance relation
|
||||||
|
#include "tracks/ui/TrackVRulerControls.h" // for inheritance relation
|
||||||
|
|
||||||
//This loads the appropriate set of cursors, depending on platform.
|
//This loads the appropriate set of cursors, depending on platform.
|
||||||
#include "../images/Cursors.h"
|
#include "../images/Cursors.h"
|
||||||
|
|
||||||
@ -2016,7 +2019,7 @@ struct EmptyCell final : CommonTrackPanelCell {
|
|||||||
std::vector< UIHandlePtr > HitTest(
|
std::vector< UIHandlePtr > HitTest(
|
||||||
const TrackPanelMouseState &, const AudacityProject *) override
|
const TrackPanelMouseState &, const AudacityProject *) override
|
||||||
{ return {}; }
|
{ return {}; }
|
||||||
virtual std::shared_ptr< Track > FindTrack() override { return {}; }
|
virtual std::shared_ptr< Track > DoFindTrack() override { return {}; }
|
||||||
static std::shared_ptr<EmptyCell> Instance()
|
static std::shared_ptr<EmptyCell> Instance()
|
||||||
{
|
{
|
||||||
static auto instance = std::make_shared< EmptyCell >();
|
static auto instance = std::make_shared< EmptyCell >();
|
||||||
|
@ -27,7 +27,10 @@ public:
|
|||||||
std::vector<UIHandlePtr> HitTest
|
std::vector<UIHandlePtr> HitTest
|
||||||
(const TrackPanelMouseState &, const AudacityProject *) override;
|
(const TrackPanelMouseState &, const AudacityProject *) override;
|
||||||
|
|
||||||
std::shared_ptr<Track> FindTrack() override { return mpTrack.lock(); };
|
protected:
|
||||||
|
std::shared_ptr<Track> DoFindTrack() override
|
||||||
|
{ return mpTrack.lock(); };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::weak_ptr<Track> mpTrack;
|
std::weak_ptr<Track> mpTrack;
|
||||||
|
|
||||||
|
@ -480,7 +480,7 @@ void WaveTrack::DoSetMinimized(bool isMinimized){
|
|||||||
if( bHalfWave )
|
if( bHalfWave )
|
||||||
{
|
{
|
||||||
// Show half wave on collapse, full on restore.
|
// Show half wave on collapse, full on restore.
|
||||||
std::shared_ptr<TrackVRulerControls> pTvc = GetVRulerControls();
|
std::shared_ptr<TrackVRulerControls> pTvc = GetVRulerControl();
|
||||||
|
|
||||||
// An awkward workaround for a function that lives 'in the wrong place'.
|
// An awkward workaround for a function that lives 'in the wrong place'.
|
||||||
// We use magic numbers, 0 and 1, to tell it to zoom reset or zoom half-wave.
|
// We use magic numbers, 0 and 1, to tell it to zoom reset or zoom half-wave.
|
||||||
|
@ -657,8 +657,8 @@ private:
|
|||||||
std::weak_ptr<EnvelopeHandle> mEnvelopeHandle;
|
std::weak_ptr<EnvelopeHandle> mEnvelopeHandle;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<TrackControls> GetControls() override;
|
std::shared_ptr<TrackControls> DoGetControls() override;
|
||||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls() override;
|
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// This is meant to be a short-lived object, during whose lifetime,
|
// This is meant to be a short-lived object, during whose lifetime,
|
||||||
|
@ -42,12 +42,12 @@ std::vector<UIHandlePtr> LabelTrack::DetailedHitTest
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackControls> LabelTrack::GetControls()
|
std::shared_ptr<TrackControls> LabelTrack::DoGetControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<LabelTrackControls>( SharedPointer() );
|
return std::make_shared<LabelTrackControls>( SharedPointer() );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackVRulerControls> LabelTrack::GetVRulerControls()
|
std::shared_ptr<TrackVRulerControls> LabelTrack::DoGetVRulerControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<LabelTrackVRulerControls>( SharedPointer() );
|
return std::make_shared<LabelTrackVRulerControls>( SharedPointer() );
|
||||||
}
|
}
|
||||||
|
@ -41,12 +41,12 @@ std::vector<UIHandlePtr> NoteTrack::DetailedHitTest
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackControls> NoteTrack::GetControls()
|
std::shared_ptr<TrackControls> NoteTrack::DoGetControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<NoteTrackControls>( SharedPointer() );
|
return std::make_shared<NoteTrackControls>( SharedPointer() );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackVRulerControls> NoteTrack::GetVRulerControls()
|
std::shared_ptr<TrackVRulerControls> NoteTrack::DoGetVRulerControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<NoteTrackVRulerControls>( SharedPointer() );
|
return std::make_shared<NoteTrackVRulerControls>( SharedPointer() );
|
||||||
}
|
}
|
||||||
|
@ -101,12 +101,12 @@ std::vector<UIHandlePtr> WaveTrack::DetailedHitTest
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackControls> WaveTrack::GetControls()
|
std::shared_ptr<TrackControls> WaveTrack::DoGetControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<WaveTrackControls>( SharedPointer() );
|
return std::make_shared<WaveTrackControls>( SharedPointer() );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackVRulerControls> WaveTrack::GetVRulerControls()
|
std::shared_ptr<TrackVRulerControls> WaveTrack::DoGetVRulerControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<WaveTrackVRulerControls>( SharedPointer() );
|
return std::make_shared<WaveTrackVRulerControls>( SharedPointer() );
|
||||||
}
|
}
|
||||||
|
@ -30,12 +30,12 @@ std::vector<UIHandlePtr> TimeTrack::DetailedHitTest
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackControls> TimeTrack::GetControls()
|
std::shared_ptr<TrackControls> TimeTrack::DoGetControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<TimeTrackControls>( SharedPointer() );
|
return std::make_shared<TimeTrackControls>( SharedPointer() );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackVRulerControls> TimeTrack::GetVRulerControls()
|
std::shared_ptr<TrackVRulerControls> TimeTrack::DoGetVRulerControls()
|
||||||
{
|
{
|
||||||
return std::make_shared<TimeTrackVRulerControls>( SharedPointer() );
|
return std::make_shared<TimeTrackVRulerControls>( SharedPointer() );
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ std::vector<UIHandlePtr> BackgroundCell::HitTest
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Track> BackgroundCell::FindTrack()
|
std::shared_ptr<Track> BackgroundCell::DoFindTrack()
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ protected:
|
|||||||
(const TrackPanelMouseState &state,
|
(const TrackPanelMouseState &state,
|
||||||
const AudacityProject *) override;
|
const AudacityProject *) override;
|
||||||
|
|
||||||
std::shared_ptr<Track> FindTrack() override;
|
std::shared_ptr<Track> DoFindTrack() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
AudacityProject *mpProject;
|
AudacityProject *mpProject;
|
||||||
|
@ -31,9 +31,13 @@ public:
|
|||||||
HitTestPreview DefaultPreview
|
HitTestPreview DefaultPreview
|
||||||
(const TrackPanelMouseState &, const AudacityProject *) override;
|
(const TrackPanelMouseState &, const AudacityProject *) override;
|
||||||
|
|
||||||
virtual std::shared_ptr<Track> FindTrack() = 0;
|
std::shared_ptr<Track> FindTrack() { return DoFindTrack(); }
|
||||||
|
std::shared_ptr<const Track> FindTrack() const
|
||||||
|
{ return const_cast<CommonTrackPanelCell*>(this)->DoFindTrack(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual std::shared_ptr<Track> DoFindTrack() = 0;
|
||||||
|
|
||||||
unsigned HandleWheelRotation
|
unsigned HandleWheelRotation
|
||||||
(const TrackPanelMouseEvent &event,
|
(const TrackPanelMouseEvent &event,
|
||||||
AudacityProject *pProject) override;
|
AudacityProject *pProject) override;
|
||||||
|
@ -35,7 +35,7 @@ TrackControls::~TrackControls()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Track> TrackControls::FindTrack()
|
std::shared_ptr<Track> TrackControls::DoFindTrack()
|
||||||
{
|
{
|
||||||
return mwTrack.lock();
|
return mwTrack.lock();
|
||||||
}
|
}
|
||||||
|
@ -30,8 +30,6 @@ public:
|
|||||||
|
|
||||||
virtual ~TrackControls() = 0;
|
virtual ~TrackControls() = 0;
|
||||||
|
|
||||||
std::shared_ptr<Track> FindTrack() override;
|
|
||||||
|
|
||||||
// This is passed to the InitMenu() methods of the PopupMenuTable
|
// This is passed to the InitMenu() methods of the PopupMenuTable
|
||||||
// objects returned by GetMenuExtension:
|
// objects returned by GetMenuExtension:
|
||||||
struct InitMenuData
|
struct InitMenuData
|
||||||
@ -43,6 +41,8 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
std::shared_ptr<Track> DoFindTrack() override;
|
||||||
|
|
||||||
// An override is supplied for derived classes to call through but it is
|
// An override is supplied for derived classes to call through but it is
|
||||||
// still marked pure virtual
|
// still marked pure virtual
|
||||||
virtual std::vector<UIHandlePtr> HitTest
|
virtual std::vector<UIHandlePtr> HitTest
|
||||||
|
@ -78,22 +78,37 @@ std::vector<UIHandlePtr> Track::HitTest
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackPanelCell> Track::GetTrackControl()
|
std::shared_ptr<TrackPanelCell> Track::ContextMenuDelegate()
|
||||||
|
{
|
||||||
|
return FindTrack()->GetTrackControl();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<TrackControls> Track::GetTrackControl()
|
||||||
{
|
{
|
||||||
if (!mpControls)
|
if (!mpControls)
|
||||||
// create on demand
|
// create on demand
|
||||||
mpControls = GetControls();
|
mpControls = DoGetControls();
|
||||||
return mpControls;
|
return mpControls;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TrackPanelCell> Track::GetVRulerControl()
|
std::shared_ptr<const TrackControls> Track::GetTrackControl() const
|
||||||
|
{
|
||||||
|
return const_cast< Track* >( this )->GetTrackControl();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<TrackVRulerControls> Track::GetVRulerControl()
|
||||||
{
|
{
|
||||||
if (!mpVRulerContols)
|
if (!mpVRulerContols)
|
||||||
// create on demand
|
// create on demand
|
||||||
mpVRulerContols = GetVRulerControls();
|
mpVRulerContols = DoGetVRulerControls();
|
||||||
return mpVRulerContols;
|
return mpVRulerContols;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<const TrackVRulerControls> Track::GetVRulerControl() const
|
||||||
|
{
|
||||||
|
return const_cast< Track* >( this )->GetVRulerControl();
|
||||||
|
}
|
||||||
|
|
||||||
#include "../../TrackPanelResizeHandle.h"
|
#include "../../TrackPanelResizeHandle.h"
|
||||||
std::shared_ptr<TrackPanelCell> Track::GetResizer()
|
std::shared_ptr<TrackPanelCell> Track::GetResizer()
|
||||||
{
|
{
|
||||||
|
@ -27,7 +27,7 @@ TrackVRulerControls::~TrackVRulerControls()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Track> TrackVRulerControls::FindTrack()
|
std::shared_ptr<Track> TrackVRulerControls::DoFindTrack()
|
||||||
{
|
{
|
||||||
return mwTrack.lock();
|
return mwTrack.lock();
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,6 @@ public:
|
|||||||
|
|
||||||
virtual ~TrackVRulerControls() = 0;
|
virtual ~TrackVRulerControls() = 0;
|
||||||
|
|
||||||
std::shared_ptr<Track> FindTrack() override;
|
|
||||||
|
|
||||||
// Define a default hit test method, just for message and cursor
|
// Define a default hit test method, just for message and cursor
|
||||||
std::vector<UIHandlePtr> HitTest
|
std::vector<UIHandlePtr> HitTest
|
||||||
(const TrackPanelMouseState &state,
|
(const TrackPanelMouseState &state,
|
||||||
@ -39,6 +37,8 @@ public:
|
|||||||
int zoomStart, int zoomEnd);
|
int zoomStart, int zoomEnd);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
std::shared_ptr<Track> DoFindTrack() override;
|
||||||
|
|
||||||
Track *GetTrack() const;
|
Track *GetTrack() const;
|
||||||
|
|
||||||
std::weak_ptr<Track> mwTrack;
|
std::weak_ptr<Track> mwTrack;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user