From f0b75832b41c5fd2f6f67a69db26fcd68f292334 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Sat, 4 Jan 2020 13:52:24 -0500 Subject: [PATCH] Remove uses of GetActiveProject in some dialogs --- src/FreqWindow.cpp | 4 ---- src/LabelDialog.cpp | 10 ++++++---- src/LabelDialog.h | 4 ++++ src/Screenshot.cpp | 20 +++++++++++++------- src/Screenshot.h | 4 +++- src/menus/HelpMenus.cpp | 15 +++++++++------ src/menus/PluginMenus.cpp | 4 ++-- src/tracks/labeltrack/ui/LabelTrackView.cpp | 2 +- 8 files changed, 38 insertions(+), 25 deletions(-) diff --git a/src/FreqWindow.cpp b/src/FreqWindow.cpp index 876dffaf9..94f91bb66 100644 --- a/src/FreqWindow.cpp +++ b/src/FreqWindow.cpp @@ -213,10 +213,6 @@ FrequencyPlotDialog::FrequencyPlotDialog(wxWindow * parent, wxWindowID id, mRate = 0; mDataLen = 0; - p = GetActiveProject(); - if (!p) - return; - TranslatableStrings algChoices{ XO("Spectrum") , XO("Standard Autocorrelation") , diff --git a/src/LabelDialog.cpp b/src/LabelDialog.cpp index 4fcb3af9f..3af8b81ef 100644 --- a/src/LabelDialog.cpp +++ b/src/LabelDialog.cpp @@ -95,6 +95,7 @@ BEGIN_EVENT_TABLE(LabelDialog, wxDialogWrapper) END_EVENT_TABLE() LabelDialog::LabelDialog(wxWindow *parent, + AudacityProject &project, TrackFactory &factory, TrackList *tracks, LabelTrack *selectedTrack, @@ -108,9 +109,10 @@ LabelDialog::LabelDialog(wxWindow *parent, XO("Edit Labels"), wxDefaultPosition, wxSize(800, 600), - wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), - mFactory(factory), - mTracks(tracks) + wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + , mProject{ project } + , mFactory(factory) + , mTracks(tracks) , mSelectedTrack(selectedTrack) , mIndex(index) , mViewInfo(&viewinfo), @@ -748,7 +750,7 @@ void LabelDialog::OnSelectCell(wxGridEvent &event) RowData &rd = mData[event.GetRow()]; mViewInfo->selectedRegion = rd.selectedRegion; - ProjectWindow::Get( *GetActiveProject() ).RedrawProject(); + ProjectWindow::Get( mProject ).RedrawProject(); } event.Skip(); diff --git a/src/LabelDialog.h b/src/LabelDialog.h index 91fdb959f..693a5a783 100644 --- a/src/LabelDialog.h +++ b/src/LabelDialog.h @@ -19,6 +19,7 @@ class wxArrayString; class wxGridEvent; +class AudacityProject; class ChoiceEditor; class Grid; class NumericEditor; @@ -37,6 +38,7 @@ class LabelDialog final : public wxDialogWrapper public: LabelDialog(wxWindow *parent, + AudacityProject &project, TrackFactory &factory, TrackList *tracks, @@ -93,6 +95,8 @@ class LabelDialog final : public wxDialogWrapper private: + AudacityProject &mProject; + Grid *mGrid; ChoiceEditor *mChoiceEditor; NumericEditor *mTimeEditor; diff --git a/src/Screenshot.cpp b/src/Screenshot.cpp index 1385e04db..51a9058b9 100644 --- a/src/Screenshot.cpp +++ b/src/Screenshot.cpp @@ -58,7 +58,8 @@ class ScreenshotBigDialog final : public wxFrame { public: // constructors and destructors - ScreenshotBigDialog(wxWindow *parent, wxWindowID id); + ScreenshotBigDialog( + wxWindow *parent, wxWindowID id, AudacityProject &project); virtual ~ScreenshotBigDialog(); bool ProcessEvent(wxEvent & event) override; @@ -95,6 +96,8 @@ class ScreenshotBigDialog final : public wxFrame void OnMedTracks(wxCommandEvent & event); void OnTallTracks(wxCommandEvent & event); + AudacityProject &mProject; + std::unique_ptr CreateCommand(); wxCheckBox *mDelayCheckBox; @@ -118,7 +121,7 @@ ScreenshotBigDialogPtr mFrame; //////////////////////////////////////////////////////////////////////////////// -void OpenScreenshotTools() +void OpenScreenshotTools( AudacityProject &project ) { if (!mFrame) { auto parent = wxTheApp->GetTopWindow(); @@ -126,7 +129,8 @@ void OpenScreenshotTools() wxASSERT(false); return; } - mFrame = ScreenshotBigDialogPtr{ safenew ScreenshotBigDialog(parent, -1) }; + mFrame = ScreenshotBigDialogPtr{ + safenew ScreenshotBigDialog(parent, -1, project) }; } mFrame->Show(); mFrame->Raise(); @@ -263,7 +267,8 @@ std::unique_ptr ScreenshotBigDialog::CreateCommand() return std::make_unique();//*type, std::move(output), this); } -ScreenshotBigDialog::ScreenshotBigDialog(wxWindow * parent, wxWindowID id) +ScreenshotBigDialog::ScreenshotBigDialog( + wxWindow * parent, wxWindowID id, AudacityProject &project) : wxFrame(parent, id, _("Screen Capture Frame"), wxDefaultPosition, wxDefaultSize, @@ -279,8 +284,9 @@ ScreenshotBigDialog::ScreenshotBigDialog(wxWindow * parent, wxWindowID id) #endif - wxSYSTEM_MENU|wxCAPTION|wxCLOSE_BOX), - mContext( *GetActiveProject() ) + wxSYSTEM_MENU|wxCAPTION|wxCLOSE_BOX) + , mProject{ project } + , mContext( project ) { mDelayCheckBox = NULL; mDirectoryTextBox = NULL; @@ -530,7 +536,7 @@ void ScreenshotBigDialog::OnGetURL(wxCommandEvent & WXUNUSED(event)) void ScreenshotBigDialog::OnUIUpdate(wxUpdateUIEvent & WXUNUSED(event)) { #ifdef __WXMAC__ - wxTopLevelWindow *top = mCommand->GetFrontWindow(GetActiveProject()); + wxTopLevelWindow *top = mCommand->GetFrontWindow(&mProject); bool needupdate = false; bool enable = false; diff --git a/src/Screenshot.h b/src/Screenshot.h index 9c377ccdf..db7b4cdfc 100644 --- a/src/Screenshot.h +++ b/src/Screenshot.h @@ -23,7 +23,9 @@ #include -void OpenScreenshotTools(); +class AudacityProject; + +void OpenScreenshotTools( AudacityProject &project ); void CloseScreenshotTools(); #endif // __AUDACITY_SCREENSHOT__ diff --git a/src/menus/HelpMenus.cpp b/src/menus/HelpMenus.cpp index f73606b12..2a79f55b2 100644 --- a/src/menus/HelpMenus.cpp +++ b/src/menus/HelpMenus.cpp @@ -88,7 +88,7 @@ void ShowDiagnostics( class QuickFixDialog : public wxDialogWrapper { public: - QuickFixDialog(wxWindow * pParent); + QuickFixDialog(wxWindow * pParent, AudacityProject &project); void Populate(); void PopulateOrExchange(ShuttleGui & S); void AddStuck( ShuttleGui & S, bool & bBool, wxString Pref, @@ -101,6 +101,8 @@ public: wxString StringFromEvent( wxCommandEvent &event ); + AudacityProject &mProject; + int mItem; bool mbSyncLocked; bool mbInSnapTo; @@ -120,10 +122,11 @@ BEGIN_EVENT_TABLE(QuickFixDialog, wxDialogWrapper) EVT_COMMAND_RANGE(HelpButtonID, FakeButtonID-1, wxEVT_BUTTON, QuickFixDialog::OnHelp) END_EVENT_TABLE(); -QuickFixDialog::QuickFixDialog(wxWindow * pParent) : +QuickFixDialog::QuickFixDialog(wxWindow * pParent, AudacityProject &project) : wxDialogWrapper(pParent, wxID_ANY, XO("Do you have these problems?"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE ) + , mProject{ project } { const long SNAP_OFF = 0; @@ -255,19 +258,19 @@ void QuickFixDialog::OnFix(wxCommandEvent &event) gPrefs->Write( Str, 0); gPrefs->Flush(); - if ( auto pProject = GetActiveProject() ) { + { // Sadly SnapTo has to be handled specially, as it is not part of the standard // preference dialogs. if( Str == "/SnapTo" ) { - ProjectSelectionManager::Get( *pProject ).AS_SetSnapTo( 0 ); + ProjectSelectionManager::Get( mProject ).AS_SetSnapTo( 0 ); } else { // This is overkill (aka slow), as all preferences are reloaded and all // toolbars recreated. // Overkill probably doesn't matter, as this command is infrequently used. - DoReloadPreferences( *pProject ); + DoReloadPreferences( mProject ); } } @@ -295,7 +298,7 @@ struct Handler : CommandHandlerObject { void OnQuickFix(const CommandContext &context) { auto &project = context.project; - QuickFixDialog dlg( &GetProjectFrame( project ) ); + QuickFixDialog dlg( &GetProjectFrame( project ), project ); dlg.ShowModal(); } diff --git a/src/menus/PluginMenus.cpp b/src/menus/PluginMenus.cpp index d01a748dc..6d3895894 100644 --- a/src/menus/PluginMenus.cpp +++ b/src/menus/PluginMenus.cpp @@ -503,9 +503,9 @@ void OnApplyMacrosPalette(const CommandContext &context ) } } -void OnScreenshot(const CommandContext &WXUNUSED(context) ) +void OnScreenshot(const CommandContext &context ) { - ::OpenScreenshotTools(); + ::OpenScreenshotTools( context.project ); } void OnBenchmark(const CommandContext &context) diff --git a/src/tracks/labeltrack/ui/LabelTrackView.cpp b/src/tracks/labeltrack/ui/LabelTrackView.cpp index 0bac8bdba..f64be8bc3 100644 --- a/src/tracks/labeltrack/ui/LabelTrackView.cpp +++ b/src/tracks/labeltrack/ui/LabelTrackView.cpp @@ -2049,7 +2049,7 @@ void LabelTrackView::DoEditLabels auto &viewInfo = ViewInfo::Get( project ); auto &window = ProjectWindow::Get( project ); - LabelDialog dlg(&window, trackFactory, &tracks, + LabelDialog dlg(&window, project, trackFactory, &tracks, lt, index, viewInfo, rate, format, freqFormat);