1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-10 16:43:33 +02:00

Split out class CommonTrackControls...

... so base class TrackControls can be used by TrackPanel to define its
subdivision, not depending on any special callbacks in CommonTrackControls
This commit is contained in:
Paul Licameli
2019-06-18 11:40:11 -04:00
parent d7753f7acd
commit 2bb823e1b6
10 changed files with 42 additions and 37 deletions

View File

@@ -31,7 +31,7 @@ std::vector<UIHandlePtr> LabelTrackControls::HitTest
(const TrackPanelMouseState & state,
const AudacityProject *pProject)
{
return TrackControls::HitTest(state, pProject);
return CommonTrackControls::HitTest(state, pProject);
}
class LabelTrackMenuTable : public PopupMenuTable
@@ -44,7 +44,7 @@ public:
void InitMenu(Menu*, void *pUserData) override
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
}
void DestroyMenu() override
@@ -52,7 +52,7 @@ public:
mpData = nullptr;
}
TrackControls::InitMenuData *mpData;
CommonTrackControls::InitMenuData *mpData;
void OnSetFont(wxCommandEvent &);
};

View File

@@ -13,7 +13,7 @@ Paul Licameli split from TrackPanel.cpp
#include "../../ui/TrackControls.h"
class LabelTrackControls final : public TrackControls
class LabelTrackControls final : public CommonTrackControls
{
LabelTrackControls(const LabelTrackControls&) = delete;
LabelTrackControls &operator=(const LabelTrackControls&) = delete;
@@ -21,7 +21,7 @@ class LabelTrackControls final : public TrackControls
public:
explicit
LabelTrackControls( std::shared_ptr<Track> pTrack )
: TrackControls( pTrack ) {}
: CommonTrackControls( pTrack ) {}
~LabelTrackControls();
std::vector<UIHandlePtr> HitTest

View File

@@ -67,7 +67,7 @@ std::vector<UIHandlePtr> NoteTrackControls::HitTest
}
}
return TrackControls::HitTest(st, pProject);
return CommonTrackControls::HitTest(st, pProject);
}
class NoteTrackMenuTable : public PopupMenuTable
@@ -81,7 +81,7 @@ public:
private:
void InitMenu(Menu*, void *pUserData) override
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
}
void DestroyMenu() override
@@ -89,7 +89,7 @@ private:
mpData = nullptr;
}
TrackControls::InitMenuData *mpData;
CommonTrackControls::InitMenuData *mpData;
void OnChangeOctave(wxCommandEvent &);
};

View File

@@ -18,7 +18,7 @@ class NoteTrackButtonHandle;
class VelocitySliderHandle;
///////////////////////////////////////////////////////////////////////////////
class NoteTrackControls : public TrackControls
class NoteTrackControls : public CommonTrackControls
{
NoteTrackControls(const NoteTrackControls&) = delete;
NoteTrackControls &operator=(const NoteTrackControls&) = delete;
@@ -31,7 +31,7 @@ class NoteTrackControls : public TrackControls
public:
explicit
NoteTrackControls( std::shared_ptr<Track> pTrack )
: TrackControls( pTrack ) {}
: CommonTrackControls( pTrack ) {}
~NoteTrackControls();
std::vector<UIHandlePtr> HitTest

View File

@@ -94,7 +94,7 @@ std::vector<UIHandlePtr> WaveTrackControls::HitTest
}
}
return TrackControls::HitTest(st, pProject);
return CommonTrackControls::HitTest(st, pProject);
}
enum {
@@ -158,7 +158,7 @@ private:
mpData = NULL;
}
TrackControls::InitMenuData *mpData;
CommonTrackControls::InitMenuData *mpData;
int IdOfWaveColor(int WaveColor);
void OnWaveColorChange(wxCommandEvent & event);
@@ -172,7 +172,7 @@ WaveColorMenuTable &WaveColorMenuTable::Instance()
void WaveColorMenuTable::InitMenu(Menu *pMenu, void *pUserData)
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
auto WaveColorId = IdOfWaveColor( pTrack->GetWaveColorIndex());
SetMenuChecks(*pMenu, [=](int id){ return id == WaveColorId; });
@@ -251,7 +251,7 @@ private:
mpData = NULL;
}
TrackControls::InitMenuData *mpData;
CommonTrackControls::InitMenuData *mpData;
int IdOfFormat(int format);
@@ -266,7 +266,7 @@ FormatMenuTable &FormatMenuTable::Instance()
void FormatMenuTable::InitMenu(Menu *pMenu, void *pUserData)
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
auto formatId = IdOfFormat(pTrack->GetSampleFormat());
SetMenuChecks(*pMenu, [=](int id){ return id == formatId; });
@@ -368,7 +368,7 @@ private:
mpData = NULL;
}
TrackControls::InitMenuData *mpData;
CommonTrackControls::InitMenuData *mpData;
int IdOfRate(int rate);
void SetRate(WaveTrack * pTrack, double rate);
@@ -385,7 +385,7 @@ RateMenuTable &RateMenuTable::Instance()
void RateMenuTable::InitMenu(Menu *pMenu, void *pUserData)
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
const auto rateId = IdOfRate((int)pTrack->GetRate());
SetMenuChecks(*pMenu, [=](int id){ return id == rateId; });
@@ -558,7 +558,7 @@ protected:
DECLARE_POPUP_MENU(WaveTrackMenuTable);
TrackControls::InitMenuData *mpData;
CommonTrackControls::InitMenuData *mpData;
void OnSetDisplay(wxCommandEvent & event);
void OnSpectrogramSettings(wxCommandEvent & event);
@@ -590,7 +590,7 @@ WaveTrackMenuTable &WaveTrackMenuTable::Instance( Track * pTrack )
void WaveTrackMenuTable::InitMenu(Menu *pMenu, void *pUserData)
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
std::vector<int> checkedIds;
@@ -621,7 +621,7 @@ void WaveTrackMenuTable::InitMenu(Menu *pMenu, void *pUserData)
if ( isMono )
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
WaveTrack *const pTrack2 = static_cast<WaveTrack*>(mpData->pTrack);
auto next = * ++ tracks.Find(pTrack2);

View File

@@ -18,7 +18,7 @@ class SoloButtonHandle;
class GainSliderHandle;
class PanSliderHandle;
class WaveTrackControls final : public TrackControls
class WaveTrackControls final : public CommonTrackControls
{
WaveTrackControls(const WaveTrackControls&) = delete;
WaveTrackControls &operator=(const WaveTrackControls&) = delete;
@@ -26,7 +26,7 @@ class WaveTrackControls final : public TrackControls
public:
explicit
WaveTrackControls( std::shared_ptr<Track> pTrack )
: TrackControls( pTrack ) {}
: CommonTrackControls( pTrack ) {}
~WaveTrackControls();
std::vector<UIHandlePtr> HitTest

View File

@@ -27,7 +27,7 @@ std::vector<UIHandlePtr> TimeTrackControls::HitTest
(const TrackPanelMouseState & state,
const AudacityProject *pProject)
{
return TrackControls::HitTest(state, pProject);
return CommonTrackControls::HitTest(state, pProject);
}
enum
@@ -49,7 +49,7 @@ public:
private:
void InitMenu(Menu *pMenu, void *pUserData) override
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
pMenu->Check(OnTimeTrackLogIntID, pTrack->GetInterpolateLog());
@@ -64,7 +64,7 @@ private:
mpData = nullptr;
}
TrackControls::InitMenuData *mpData;
CommonTrackControls::InitMenuData *mpData;
void OnSetTimeTrackRange(wxCommandEvent & /*event*/);
void OnTimeTrackLin(wxCommandEvent & /*event*/);

View File

@@ -13,7 +13,7 @@ Paul Licameli split from TrackPanel.cpp
#include "../../ui/TrackControls.h"
class TimeTrackControls final : public TrackControls
class TimeTrackControls final : public CommonTrackControls
{
TimeTrackControls(const TimeTrackControls&) = delete;
TimeTrackControls &operator=(const TimeTrackControls&) = delete;
@@ -21,7 +21,7 @@ class TimeTrackControls final : public TrackControls
public:
explicit
TimeTrackControls( std::shared_ptr<Track> pTrack )
: TrackControls( pTrack ) {}
: CommonTrackControls( pTrack ) {}
~TimeTrackControls();
std::vector<UIHandlePtr> HitTest

View File

@@ -42,7 +42,7 @@ std::shared_ptr<Track> TrackControls::DoFindTrack()
return mwTrack.lock();
}
std::vector<UIHandlePtr> TrackControls::HitTest
std::vector<UIHandlePtr> CommonTrackControls::HitTest
(const TrackPanelMouseState &st,
const AudacityProject *WXUNUSED(project))
{
@@ -112,7 +112,7 @@ private:
mpData = nullptr;
}
TrackControls::InitMenuData *mpData;
CommonTrackControls::InitMenuData *mpData;
};
TrackMenuTable &TrackMenuTable::Instance()
@@ -123,7 +123,7 @@ TrackMenuTable &TrackMenuTable::Instance()
void TrackMenuTable::InitMenu(Menu *pMenu, void *pUserData)
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
mpData = static_cast<CommonTrackControls::InitMenuData*>(pUserData);
Track *const pTrack = mpData->pTrack;
const auto &tracks = TrackList::Get( *GetActiveProject() );
@@ -260,7 +260,7 @@ void TrackMenuTable::OnMoveTrack(wxCommandEvent &event)
mpData->result = RefreshCode::RefreshAll;
}
unsigned TrackControls::DoContextMenu
unsigned CommonTrackControls::DoContextMenu
(const wxRect &rect, wxWindow *pParent, wxPoint *)
{
wxRect buttonRect;

View File

@@ -30,6 +30,17 @@ public:
virtual ~TrackControls() = 0;
protected:
std::shared_ptr<Track> DoFindTrack() override;
std::weak_ptr<Track> mwTrack;
};
class CommonTrackControls /* not final */ : public TrackControls
{
public:
using TrackControls::TrackControls;
// This is passed to the InitMenu() methods of the PopupMenuTable
// objects returned by GetMenuExtension:
struct InitMenuData
@@ -41,8 +52,6 @@ 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
@@ -53,10 +62,6 @@ protected:
(const wxRect &rect, wxWindow *pParent, wxPoint *pPosition) override;
virtual PopupMenuTable *GetMenuExtension(Track *pTrack) = 0;
Track *GetTrack() const;
std::weak_ptr<Track> mwTrack;
std::weak_ptr<CloseButtonHandle> mCloseHandle;
std::weak_ptr<MenuButtonHandle> mMenuHandle;
std::weak_ptr<MinimizeButtonHandle> mMinimizeHandle;