mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-02 00:29:41 +02:00
Don't use GetActiveProject in track panel pop-up menu handlers
This commit is contained in:
parent
7dbca958a6
commit
fce85d0e56
@ -120,7 +120,7 @@ void NoteTrackMenuTable::OnChangeOctave(wxCommandEvent &event)
|
||||
const bool bDown = (OnDownOctaveID == event.GetId());
|
||||
pTrack->ShiftNoteRange((bDown) ? -12 : 12);
|
||||
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
ProjectHistory::Get( *project )
|
||||
.ModifyState(false);
|
||||
mpData->result = RefreshCode::RefreshAll;
|
||||
|
@ -35,6 +35,7 @@ namespace
|
||||
struct InitMenuData
|
||||
{
|
||||
public:
|
||||
AudacityProject &project;
|
||||
NoteTrack *pTrack;
|
||||
wxRect rect;
|
||||
unsigned result;
|
||||
@ -244,7 +245,8 @@ void NoteTrackVRulerMenuTable::OnZoom( int iZoomCode ){
|
||||
mpData->pTrack->ShiftNoteRange(-12);
|
||||
break;
|
||||
}
|
||||
ProjectHistory::Get( *GetActiveProject() ).ModifyState(false);
|
||||
AudacityProject *const project = &mpData->project;
|
||||
ProjectHistory::Get( *project ).ModifyState(false);
|
||||
using namespace RefreshCode;
|
||||
mpData->result = UpdateVRuler | RefreshAll;
|
||||
}
|
||||
@ -290,7 +292,7 @@ UIHandle::Result NoteTrackVZoomHandle::Release
|
||||
!(event.ShiftDown() || event.CmdDown()))
|
||||
{
|
||||
InitMenuData data {
|
||||
pTrack.get(), mRect, RefreshCode::RefreshNone, event.m_y
|
||||
*pProject, pTrack.get(), mRect, RefreshNone, event.m_y
|
||||
};
|
||||
|
||||
PopupMenuTable *const pTable =
|
||||
|
@ -292,8 +292,6 @@ POPUP_MENU_SEPARATOR()
|
||||
POPUP_MENU_ITEM(OnZoomOutVerticalID, XO("Zoom Out\tShift-Left-Click"), OnZoomOutVertical)
|
||||
END_POPUP_MENU()
|
||||
|
||||
#include "../../../../Project.h" // for GetActiveProject
|
||||
|
||||
void SpectrumVRulerMenuTable::OnSpectrumScaleType(wxCommandEvent &evt)
|
||||
{
|
||||
WaveTrack *const wt = mpData->pTrack;
|
||||
@ -308,7 +306,7 @@ void SpectrumVRulerMenuTable::OnSpectrumScaleType(wxCommandEvent &evt)
|
||||
for (auto channel : TrackList::Channels(wt))
|
||||
channel->GetIndependentSpectrogramSettings().scaleType = newScaleType;
|
||||
|
||||
ProjectHistory::Get( *::GetActiveProject() ).ModifyState(true);
|
||||
ProjectHistory::Get( mpData->project ).ModifyState(true);
|
||||
|
||||
using namespace RefreshCode;
|
||||
mpData->result = UpdateVRuler | RefreshAll;
|
||||
|
@ -186,7 +186,7 @@ void WaveColorMenuTable::InitMenu(Menu *pMenu)
|
||||
auto WaveColorId = IdOfWaveColor( pTrack->GetWaveColorIndex());
|
||||
SetMenuChecks(*pMenu, [=](int id){ return id == WaveColorId; });
|
||||
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
bool unsafe = ProjectAudioIO::Get( *project ).IsAudioActive();
|
||||
for (int i = OnInstrument1ID; i <= OnInstrument4ID; i++) {
|
||||
pMenu->Enable(i, !unsafe);
|
||||
@ -224,7 +224,7 @@ void WaveColorMenuTable::OnWaveColorChange(wxCommandEvent & event)
|
||||
|
||||
int newWaveColor = id - OnInstrument1ID;
|
||||
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
|
||||
for (auto channel : TrackList::Channels(pTrack))
|
||||
channel->SetWaveColorIndex(newWaveColor);
|
||||
@ -284,7 +284,7 @@ void FormatMenuTable::InitMenu(Menu *pMenu)
|
||||
auto formatId = IdOfFormat(pTrack->GetSampleFormat());
|
||||
SetMenuChecks(*pMenu, [=](int id){ return id == formatId; });
|
||||
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
bool unsafe = ProjectAudioIO::Get( *project ).IsAudioActive();
|
||||
for (int i = On16BitID; i <= OnFloatID; i++) {
|
||||
pMenu->Enable(i, !unsafe);
|
||||
@ -346,7 +346,7 @@ void FormatMenuTable::OnFormatChange(wxCommandEvent & event)
|
||||
if (newFormat == pTrack->GetSampleFormat())
|
||||
return; // Nothing to do.
|
||||
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
|
||||
for (auto channel : TrackList::Channels(pTrack))
|
||||
channel->ConvertToSampleFormat(newFormat);
|
||||
@ -407,7 +407,7 @@ void RateMenuTable::InitMenu(Menu *pMenu)
|
||||
const auto rateId = IdOfRate((int)pTrack->GetRate());
|
||||
SetMenuChecks(*pMenu, [=](int id){ return id == rateId; });
|
||||
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
bool unsafe = ProjectAudioIO::Get( *project ).IsAudioActive();
|
||||
for (int i = OnRate8ID; i <= OnRateOtherID; i++) {
|
||||
pMenu->Enable(i, !unsafe);
|
||||
@ -454,7 +454,7 @@ int RateMenuTable::IdOfRate(int rate)
|
||||
/// another track, that one as well.
|
||||
void RateMenuTable::SetRate(WaveTrack * pTrack, double rate)
|
||||
{
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
for (auto channel : TrackList::Channels(pTrack))
|
||||
channel->SetRate(rate);
|
||||
|
||||
@ -645,7 +645,7 @@ void WaveTrackMenuTable::InitMenu(Menu *pMenu)
|
||||
.contains( WaveTrackViewConstants::Spectrum );
|
||||
pMenu->Enable(OnSpectrogramSettingsID, hasSpectrum && !bAudioBusy);
|
||||
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
auto &tracks = TrackList::Get( *project );
|
||||
bool unsafe = RealtimeEffectManager::Get().RealtimeIsActive() &&
|
||||
ProjectAudioIO::Get( *project ).IsAudioActive();
|
||||
@ -814,7 +814,7 @@ void WaveTrackMenuTable::OnSetDisplay(wxCommandEvent & event)
|
||||
.SetDisplay(WaveTrackView::WaveTrackDisplay(id));
|
||||
}
|
||||
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
ProjectHistory::Get( *project ).ModifyState(true);
|
||||
|
||||
using namespace RefreshCode;
|
||||
@ -873,7 +873,7 @@ void WaveTrackMenuTable::OnSpectrogramSettings(wxCommandEvent &)
|
||||
|
||||
if (0 != dialog.ShowModal()) {
|
||||
// Redraw
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
ProjectHistory::Get( *project ).ModifyState(true);
|
||||
//Bug 1725 Toolbar was left greyed out.
|
||||
//This solution is overkill, but does fix the problem and is what the
|
||||
@ -908,7 +908,7 @@ void WaveTrackMenuTable::OnChannelChange(wxCommandEvent & event)
|
||||
break;
|
||||
}
|
||||
pTrack->SetChannel(channel);
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
/* i18n-hint: The strings name a track and a channel choice (mono, left, or right) */
|
||||
ProjectHistory::Get( *project )
|
||||
.PushState(
|
||||
@ -921,7 +921,7 @@ void WaveTrackMenuTable::OnChannelChange(wxCommandEvent & event)
|
||||
/// Merge two tracks into one stereo track ??
|
||||
void WaveTrackMenuTable::OnMergeStereo(wxCommandEvent &)
|
||||
{
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
auto &tracks = TrackList::Get( *project );
|
||||
|
||||
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
|
||||
@ -983,7 +983,7 @@ void WaveTrackMenuTable::SplitStereo(bool stereo)
|
||||
{
|
||||
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
|
||||
wxASSERT(pTrack);
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
auto channels = TrackList::Channels( pTrack );
|
||||
|
||||
int totalHeight = 0;
|
||||
@ -1017,7 +1017,7 @@ void WaveTrackMenuTable::SplitStereo(bool stereo)
|
||||
/// Swap the left and right channels of a stero track...
|
||||
void WaveTrackMenuTable::OnSwapChannels(wxCommandEvent &)
|
||||
{
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
|
||||
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
|
||||
auto channels = TrackList::Channels( pTrack );
|
||||
@ -1052,7 +1052,7 @@ void WaveTrackMenuTable::OnSplitStereo(wxCommandEvent &)
|
||||
{
|
||||
SplitStereo(true);
|
||||
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
/* i18n-hint: The string names a track */
|
||||
ProjectHistory::Get( *project ).PushState(
|
||||
XO("Split stereo track '%s'").Format( pTrack->GetName() ),
|
||||
@ -1067,7 +1067,7 @@ void WaveTrackMenuTable::OnSplitStereoMono(wxCommandEvent &)
|
||||
{
|
||||
SplitStereo(false);
|
||||
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpData->pTrack);
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
/* i18n-hint: The string names a track */
|
||||
ProjectHistory::Get( *project ).PushState(
|
||||
XO("Split Stereo to Mono '%s'").Format( pTrack->GetName() ),
|
||||
|
@ -44,7 +44,7 @@ void WaveTrackVRulerMenuTable::OnZoom(
|
||||
WaveTrackViewConstants::ZoomActions iZoomCode )
|
||||
{
|
||||
mpData->doZoom(
|
||||
::GetActiveProject(), mpData->pTrack,
|
||||
&mpData->project, mpData->pTrack,
|
||||
iZoomCode, mpData->rect, mpData->yy, mpData->yy, false
|
||||
);
|
||||
|
||||
@ -115,6 +115,7 @@ UIHandle::Result WaveTrackVZoomHandle::DoRelease(
|
||||
!(event.ShiftDown() || event.CmdDown()))
|
||||
{
|
||||
WaveTrackVRulerMenuTable::InitMenuData data {
|
||||
*pProject,
|
||||
pTrack, rect, RefreshCode::RefreshNone, event.m_y, doZoom };
|
||||
|
||||
std::unique_ptr<PopupMenuTable::Menu>
|
||||
|
@ -59,6 +59,7 @@ public:
|
||||
struct InitMenuData
|
||||
{
|
||||
public:
|
||||
AudacityProject &project;
|
||||
WaveTrack *pTrack;
|
||||
wxRect rect;
|
||||
unsigned result;
|
||||
|
@ -304,8 +304,6 @@ BEGIN_POPUP_MENU(WaveformVRulerMenuTable)
|
||||
|
||||
END_POPUP_MENU()
|
||||
|
||||
#include "../../../../Project.h" // for GetActiveProject
|
||||
|
||||
void WaveformVRulerMenuTable::OnWaveformScaleType(wxCommandEvent &evt)
|
||||
{
|
||||
WaveTrack *const wt = mpData->pTrack;
|
||||
@ -322,7 +320,8 @@ void WaveformVRulerMenuTable::OnWaveformScaleType(wxCommandEvent &evt)
|
||||
channel->GetIndependentWaveformSettings().scaleType = newScaleType;
|
||||
}
|
||||
|
||||
ProjectHistory::Get( *::GetActiveProject() ).ModifyState(true);
|
||||
AudacityProject *const project = &mpData->project;
|
||||
ProjectHistory::Get( *project ).ModifyState(true);
|
||||
|
||||
using namespace RefreshCode;
|
||||
mpData->result = UpdateVRuler | RefreshAll;
|
||||
|
@ -106,7 +106,7 @@ void TimeTrackMenuTable::OnSetTimeTrackRange(wxCommandEvent & /*event*/)
|
||||
1000);
|
||||
|
||||
if (lower >= 10 && upper <= 1000 && lower < upper) {
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
pTrack->SetRangeLower((double)lower / 100.0);
|
||||
pTrack->SetRangeUpper((double)upper / 100.0);
|
||||
ProjectHistory::Get( *project )
|
||||
@ -122,7 +122,7 @@ void TimeTrackMenuTable::OnTimeTrackLin(wxCommandEvent & /*event*/)
|
||||
{
|
||||
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
|
||||
pTrack->SetDisplayLog(false);
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
ProjectHistory::Get( *project )
|
||||
.PushState(XO("Set time track display to linear"), XO("Set Display"));
|
||||
|
||||
@ -134,7 +134,7 @@ void TimeTrackMenuTable::OnTimeTrackLog(wxCommandEvent & /*event*/)
|
||||
{
|
||||
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
|
||||
pTrack->SetDisplayLog(true);
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
ProjectHistory::Get( *project )
|
||||
.PushState(XO("Set time track display to logarithmic"), XO("Set Display"));
|
||||
|
||||
@ -145,7 +145,7 @@ void TimeTrackMenuTable::OnTimeTrackLog(wxCommandEvent & /*event*/)
|
||||
void TimeTrackMenuTable::OnTimeTrackLogInt(wxCommandEvent & /*event*/)
|
||||
{
|
||||
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
|
||||
AudacityProject *const project = ::GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
if (pTrack->GetInterpolateLog()) {
|
||||
pTrack->SetInterpolateLog(false);
|
||||
ProjectHistory::Get( *project )
|
||||
|
@ -116,7 +116,7 @@ void TrackMenuTable::InitMenu(Menu *pMenu)
|
||||
{
|
||||
Track *const pTrack = mpData->pTrack;
|
||||
|
||||
const auto &tracks = TrackList::Get( *GetActiveProject() );
|
||||
const auto &tracks = TrackList::Get( mpData->project );
|
||||
|
||||
pMenu->Enable(OnMoveUpID, tracks.CanMoveUp(pTrack));
|
||||
pMenu->Enable(OnMoveDownID, tracks.CanMoveDown(pTrack));
|
||||
@ -134,7 +134,7 @@ BEGIN_POPUP_MENU(TrackMenuTable)
|
||||
OnMoveUpID,
|
||||
XO("Move Track &Up").Join(
|
||||
Verbatim(
|
||||
CommandManager::Get( *GetActiveProject() ).
|
||||
CommandManager::Get( mpData->project ).
|
||||
// using GET to compose menu item name for wxWidgets
|
||||
GetKeyFromName(wxT("TrackMoveUp")).GET() ),
|
||||
wxT("\t")
|
||||
@ -144,7 +144,7 @@ BEGIN_POPUP_MENU(TrackMenuTable)
|
||||
OnMoveDownID,
|
||||
XO("Move Track &Down").Join(
|
||||
Verbatim(
|
||||
CommandManager::Get( *GetActiveProject() ).
|
||||
CommandManager::Get( mpData->project ).
|
||||
// using GET to compose menu item name for wxWidgets
|
||||
GetKeyFromName(wxT("TrackMoveDown")).GET() ),
|
||||
wxT("\t")
|
||||
@ -154,7 +154,7 @@ BEGIN_POPUP_MENU(TrackMenuTable)
|
||||
OnMoveTopID,
|
||||
XO("Move Track to &Top").Join(
|
||||
Verbatim(
|
||||
CommandManager::Get( *GetActiveProject() ).
|
||||
CommandManager::Get( mpData->project ).
|
||||
// using GET to compose menu item name for wxWidgets
|
||||
GetKeyFromName(wxT("TrackMoveTop")).GET() ),
|
||||
wxT("\t")
|
||||
@ -164,7 +164,7 @@ BEGIN_POPUP_MENU(TrackMenuTable)
|
||||
OnMoveBottomID,
|
||||
XO("Move Track to &Bottom").Join(
|
||||
Verbatim(
|
||||
CommandManager::Get( *GetActiveProject() ).
|
||||
CommandManager::Get( mpData->project ).
|
||||
// using GET to compose menu item name for wxWidgets
|
||||
GetKeyFromName(wxT("TrackMoveBottom")).GET() ),
|
||||
wxT("\t")
|
||||
@ -214,7 +214,7 @@ void TrackMenuTable::OnSetName(wxCommandEvent &)
|
||||
Track *const pTrack = mpData->pTrack;
|
||||
if (pTrack)
|
||||
{
|
||||
AudacityProject *const proj = ::GetActiveProject();
|
||||
AudacityProject *const proj = &mpData->project;
|
||||
const wxString oldName = pTrack->GetName();
|
||||
|
||||
SetTrackNameCommand Command;
|
||||
@ -239,7 +239,7 @@ void TrackMenuTable::OnSetName(wxCommandEvent &)
|
||||
|
||||
void TrackMenuTable::OnMoveTrack(wxCommandEvent &event)
|
||||
{
|
||||
AudacityProject *const project = GetActiveProject();
|
||||
AudacityProject *const project = &mpData->project;
|
||||
TrackUtilities::MoveChoice choice;
|
||||
switch (event.GetId()) {
|
||||
default:
|
||||
@ -261,17 +261,18 @@ void TrackMenuTable::OnMoveTrack(wxCommandEvent &event)
|
||||
mpData->result = RefreshCode::RefreshAll;
|
||||
}
|
||||
|
||||
unsigned CommonTrackControls::DoContextMenu
|
||||
(const wxRect &rect, wxWindow *pParent, wxPoint *, AudacityProject*)
|
||||
unsigned CommonTrackControls::DoContextMenu(
|
||||
const wxRect &rect, wxWindow *pParent, wxPoint *, AudacityProject *pProject)
|
||||
{
|
||||
using namespace RefreshCode;
|
||||
wxRect buttonRect;
|
||||
TrackInfo::GetTitleBarRect(rect, buttonRect);
|
||||
|
||||
auto track = FindTrack();
|
||||
if (!track)
|
||||
return RefreshCode::RefreshNone;
|
||||
return RefreshNone;
|
||||
|
||||
InitMenuData data{ track.get(), pParent, RefreshCode::RefreshNone };
|
||||
InitMenuData data{ *pProject, track.get(), pParent, RefreshNone };
|
||||
|
||||
const auto pTable = &TrackMenuTable::Instance();
|
||||
auto pMenu = PopupMenuTable::BuildMenu(pParent, pTable, &data);
|
||||
|
@ -33,6 +33,7 @@ public:
|
||||
struct InitMenuData
|
||||
{
|
||||
public:
|
||||
AudacityProject &project;
|
||||
Track *pTrack;
|
||||
wxWindow *pParent;
|
||||
unsigned result;
|
||||
|
Loading…
x
Reference in New Issue
Block a user