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:
@@ -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 &);
|
||||
};
|
||||
|
@@ -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
|
||||
|
@@ -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 &);
|
||||
};
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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*/);
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user