mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-15 15:49:36 +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;
|
||||
|
||||
protected:
|
||||
std::shared_ptr<TrackControls> GetControls() override;
|
||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls() override;
|
||||
std::shared_ptr<TrackControls> DoGetControls() override;
|
||||
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||
friend class GetInfoCommand; // to get labels.
|
||||
friend class SetLabelCommand; // to set labels.
|
||||
};
|
||||
|
@ -270,8 +270,8 @@ class AUDACITY_DLL_API NoteTrack final
|
||||
std::weak_ptr<StretchHandle> mStretchHandle;
|
||||
|
||||
protected:
|
||||
std::shared_ptr<TrackControls> GetControls() override;
|
||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls() override;
|
||||
std::shared_ptr<TrackControls> DoGetControls() override;
|
||||
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||
};
|
||||
|
||||
#endif // USE_MIDI
|
||||
|
@ -160,8 +160,8 @@ class TimeTrack final : public Track {
|
||||
friend class TrackFactory;
|
||||
|
||||
protected:
|
||||
std::shared_ptr<TrackControls> GetControls() override;
|
||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls() override;
|
||||
std::shared_ptr<TrackControls> DoGetControls() 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();
|
||||
}
|
||||
|
15
src/Track.h
15
src/Track.h
@ -269,8 +269,7 @@ class AUDACITY_DLL_API Track /* not final */
|
||||
final override;
|
||||
|
||||
// Delegates the handling to the related TCP cell
|
||||
std::shared_ptr<TrackPanelCell> ContextMenuDelegate() override
|
||||
{ return GetTrackControl(); }
|
||||
std::shared_ptr<TrackPanelCell> ContextMenuDelegate() override;
|
||||
|
||||
public:
|
||||
|
||||
@ -284,11 +283,13 @@ class AUDACITY_DLL_API Track /* not final */
|
||||
|
||||
// Return another, associated TrackPanelCell object that implements the
|
||||
// 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
|
||||
// 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
|
||||
// click and drag to resize
|
||||
@ -737,11 +738,11 @@ public:
|
||||
bool IsSelectedLeader() const;
|
||||
|
||||
protected:
|
||||
std::shared_ptr<Track> FindTrack() override;
|
||||
std::shared_ptr<Track> DoFindTrack() override;
|
||||
|
||||
// These are called to create controls on demand:
|
||||
virtual std::shared_ptr<TrackControls> GetControls() = 0;
|
||||
virtual std::shared_ptr<TrackVRulerControls> GetVRulerControls() = 0;
|
||||
virtual std::shared_ptr<TrackControls> DoGetControls() = 0;
|
||||
virtual std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() = 0;
|
||||
|
||||
// These hold the controls:
|
||||
std::shared_ptr<TrackControls> mpControls;
|
||||
|
@ -86,6 +86,9 @@ is time to refresh some aspect of the screen.
|
||||
#include "toolbars/ControlToolBar.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.
|
||||
#include "../images/Cursors.h"
|
||||
|
||||
@ -2016,7 +2019,7 @@ struct EmptyCell final : CommonTrackPanelCell {
|
||||
std::vector< UIHandlePtr > HitTest(
|
||||
const TrackPanelMouseState &, const AudacityProject *) override
|
||||
{ return {}; }
|
||||
virtual std::shared_ptr< Track > FindTrack() override { return {}; }
|
||||
virtual std::shared_ptr< Track > DoFindTrack() override { return {}; }
|
||||
static std::shared_ptr<EmptyCell> Instance()
|
||||
{
|
||||
static auto instance = std::make_shared< EmptyCell >();
|
||||
|
@ -27,7 +27,10 @@ public:
|
||||
std::vector<UIHandlePtr> HitTest
|
||||
(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:
|
||||
std::weak_ptr<Track> mpTrack;
|
||||
|
||||
|
@ -480,7 +480,7 @@ void WaveTrack::DoSetMinimized(bool isMinimized){
|
||||
if( bHalfWave )
|
||||
{
|
||||
// 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'.
|
||||
// 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;
|
||||
|
||||
protected:
|
||||
std::shared_ptr<TrackControls> GetControls() override;
|
||||
std::shared_ptr<TrackVRulerControls> GetVRulerControls() override;
|
||||
std::shared_ptr<TrackControls> DoGetControls() override;
|
||||
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||
};
|
||||
|
||||
// This is meant to be a short-lived object, during whose lifetime,
|
||||
|
@ -42,12 +42,12 @@ std::vector<UIHandlePtr> LabelTrack::DetailedHitTest
|
||||
return results;
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackControls> LabelTrack::GetControls()
|
||||
std::shared_ptr<TrackControls> LabelTrack::DoGetControls()
|
||||
{
|
||||
return std::make_shared<LabelTrackControls>( SharedPointer() );
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackVRulerControls> LabelTrack::GetVRulerControls()
|
||||
std::shared_ptr<TrackVRulerControls> LabelTrack::DoGetVRulerControls()
|
||||
{
|
||||
return std::make_shared<LabelTrackVRulerControls>( SharedPointer() );
|
||||
}
|
||||
|
@ -41,12 +41,12 @@ std::vector<UIHandlePtr> NoteTrack::DetailedHitTest
|
||||
return results;
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackControls> NoteTrack::GetControls()
|
||||
std::shared_ptr<TrackControls> NoteTrack::DoGetControls()
|
||||
{
|
||||
return std::make_shared<NoteTrackControls>( SharedPointer() );
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackVRulerControls> NoteTrack::GetVRulerControls()
|
||||
std::shared_ptr<TrackVRulerControls> NoteTrack::DoGetVRulerControls()
|
||||
{
|
||||
return std::make_shared<NoteTrackVRulerControls>( SharedPointer() );
|
||||
}
|
||||
|
@ -101,12 +101,12 @@ std::vector<UIHandlePtr> WaveTrack::DetailedHitTest
|
||||
return results;
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackControls> WaveTrack::GetControls()
|
||||
std::shared_ptr<TrackControls> WaveTrack::DoGetControls()
|
||||
{
|
||||
return std::make_shared<WaveTrackControls>( SharedPointer() );
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackVRulerControls> WaveTrack::GetVRulerControls()
|
||||
std::shared_ptr<TrackVRulerControls> WaveTrack::DoGetVRulerControls()
|
||||
{
|
||||
return std::make_shared<WaveTrackVRulerControls>( SharedPointer() );
|
||||
}
|
||||
|
@ -30,12 +30,12 @@ std::vector<UIHandlePtr> TimeTrack::DetailedHitTest
|
||||
return results;
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackControls> TimeTrack::GetControls()
|
||||
std::shared_ptr<TrackControls> TimeTrack::DoGetControls()
|
||||
{
|
||||
return std::make_shared<TimeTrackControls>( SharedPointer() );
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackVRulerControls> TimeTrack::GetVRulerControls()
|
||||
std::shared_ptr<TrackVRulerControls> TimeTrack::DoGetVRulerControls()
|
||||
{
|
||||
return std::make_shared<TimeTrackVRulerControls>( SharedPointer() );
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ std::vector<UIHandlePtr> BackgroundCell::HitTest
|
||||
return results;
|
||||
}
|
||||
|
||||
std::shared_ptr<Track> BackgroundCell::FindTrack()
|
||||
std::shared_ptr<Track> BackgroundCell::DoFindTrack()
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ protected:
|
||||
(const TrackPanelMouseState &state,
|
||||
const AudacityProject *) override;
|
||||
|
||||
std::shared_ptr<Track> FindTrack() override;
|
||||
std::shared_ptr<Track> DoFindTrack() override;
|
||||
|
||||
private:
|
||||
AudacityProject *mpProject;
|
||||
|
@ -31,9 +31,13 @@ public:
|
||||
HitTestPreview DefaultPreview
|
||||
(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:
|
||||
virtual std::shared_ptr<Track> DoFindTrack() = 0;
|
||||
|
||||
unsigned HandleWheelRotation
|
||||
(const TrackPanelMouseEvent &event,
|
||||
AudacityProject *pProject) override;
|
||||
|
@ -35,7 +35,7 @@ TrackControls::~TrackControls()
|
||||
{
|
||||
}
|
||||
|
||||
std::shared_ptr<Track> TrackControls::FindTrack()
|
||||
std::shared_ptr<Track> TrackControls::DoFindTrack()
|
||||
{
|
||||
return mwTrack.lock();
|
||||
}
|
||||
|
@ -30,8 +30,6 @@ public:
|
||||
|
||||
virtual ~TrackControls() = 0;
|
||||
|
||||
std::shared_ptr<Track> FindTrack() override;
|
||||
|
||||
// This is passed to the InitMenu() methods of the PopupMenuTable
|
||||
// objects returned by GetMenuExtension:
|
||||
struct InitMenuData
|
||||
@ -43,6 +41,8 @@ public:
|
||||
};
|
||||
|
||||
protected:
|
||||
std::shared_ptr<Track> DoFindTrack() override;
|
||||
|
||||
// An override is supplied for derived classes to call through but it is
|
||||
// still marked pure virtual
|
||||
virtual std::vector<UIHandlePtr> HitTest
|
||||
|
@ -78,22 +78,37 @@ std::vector<UIHandlePtr> Track::HitTest
|
||||
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)
|
||||
// create on demand
|
||||
mpControls = GetControls();
|
||||
mpControls = DoGetControls();
|
||||
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)
|
||||
// create on demand
|
||||
mpVRulerContols = GetVRulerControls();
|
||||
mpVRulerContols = DoGetVRulerControls();
|
||||
return mpVRulerContols;
|
||||
}
|
||||
|
||||
std::shared_ptr<const TrackVRulerControls> Track::GetVRulerControl() const
|
||||
{
|
||||
return const_cast< Track* >( this )->GetVRulerControl();
|
||||
}
|
||||
|
||||
#include "../../TrackPanelResizeHandle.h"
|
||||
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();
|
||||
}
|
||||
|
@ -27,8 +27,6 @@ public:
|
||||
|
||||
virtual ~TrackVRulerControls() = 0;
|
||||
|
||||
std::shared_ptr<Track> FindTrack() override;
|
||||
|
||||
// Define a default hit test method, just for message and cursor
|
||||
std::vector<UIHandlePtr> HitTest
|
||||
(const TrackPanelMouseState &state,
|
||||
@ -39,6 +37,8 @@ public:
|
||||
int zoomStart, int zoomEnd);
|
||||
|
||||
protected:
|
||||
std::shared_ptr<Track> DoFindTrack() override;
|
||||
|
||||
Track *GetTrack() const;
|
||||
|
||||
std::weak_ptr<Track> mwTrack;
|
||||
|
Loading…
x
Reference in New Issue
Block a user