From c6478f43afc3a8c884217296336b6b32fee64bf3 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Fri, 21 Jun 2019 23:08:31 -0400 Subject: [PATCH] Lower ViewActions as member functions of ProjectWindow --- src/Menus.h | 6 ----- src/ProjectManager.cpp | 7 ++--- src/ProjectWindow.cpp | 39 +++++++++++++++++++++++++++- src/ProjectWindow.h | 2 ++ src/effects/EffectManager.cpp | 2 +- src/menus/TrackMenus.cpp | 5 ++-- src/menus/ViewMenus.cpp | 48 ++++------------------------------- 7 files changed, 52 insertions(+), 57 deletions(-) diff --git a/src/Menus.h b/src/Menus.h index 9229831ea..97d42d615 100644 --- a/src/Menus.h +++ b/src/Menus.h @@ -104,12 +104,6 @@ public: // Exported helper functions from various menu handling source files -/// Namespace for functions for View menu -namespace ViewActions { -double GetZoomOfToFit( const AudacityProject &project ); -void DoZoomFit( AudacityProject &project ); -} - /// Namespace for functions for Transport menu namespace TransportActions { void StopIfPaused( AudacityProject &project ); diff --git a/src/ProjectManager.cpp b/src/ProjectManager.cpp index ea7f74507..5827f7cdb 100644 --- a/src/ProjectManager.cpp +++ b/src/ProjectManager.cpp @@ -722,9 +722,10 @@ AudacityProject *ProjectManager::OpenProject( ProjectFileManager::Get( *pProject ).OpenFile( fileNameArg, addtohistory ); pNewProject = nullptr; auto &projectFileIO = ProjectFileIO::Get( *pProject ); - if( projectFileIO.IsRecovered() ) - ProjectWindow::Get( *pProject ).Zoom( - ViewActions::GetZoomOfToFit( *pProject ) ); + if( projectFileIO.IsRecovered() ) { + auto &window = ProjectWindow::Get( *pProject ); + window.Zoom( window.GetZoomOfToFit() ); + } return pProject; } diff --git a/src/ProjectWindow.cpp b/src/ProjectWindow.cpp index effa0cc8f..809372143 100644 --- a/src/ProjectWindow.cpp +++ b/src/ProjectWindow.cpp @@ -1606,7 +1606,7 @@ void ProjectWindow::ZoomAfterImport(Track *pTrack) auto &project = mProject; auto &trackPanel = TrackPanel::Get( project ); - ViewActions::DoZoomFit( project ); + DoZoomFit(); trackPanel.SetFocus(); RedrawProject(); @@ -1888,6 +1888,43 @@ void ProjectWindow::ZoomOutByFactor( double ZoomFactor ) TP_ScrollWindow(newh); } +double ProjectWindow::GetZoomOfToFit() const +{ + auto &project = mProject; + auto &tracks = TrackList::Get( project ); + auto &viewInfo = ViewInfo::Get( project ); + auto &trackPanel = TrackPanel::Get( project ); + + const double end = tracks.GetEndTime(); + const double start = viewInfo.bScrollBeyondZero + ? std::min( tracks.GetStartTime(), 0.0) + : 0; + const double len = end - start; + + if (len <= 0.0) + return viewInfo.GetZoom(); + + int w; + trackPanel.GetTracksUsableArea(&w, NULL); + w -= 10; + return w/len; +} + +void ProjectWindow::DoZoomFit() +{ + auto &project = mProject; + auto &viewInfo = ViewInfo::Get( project ); + auto &tracks = TrackList::Get( project ); + auto &window = *this; + + const double start = viewInfo.bScrollBeyondZero + ? std::min(tracks.GetStartTime(), 0.0) + : 0; + + window.Zoom( window.GetZoomOfToFit() ); + window.TP_ScrollWindow(start); +} + static struct InstallTopPanelHook{ InstallTopPanelHook() { ToolManager::SetGetTopPanelHook( []( wxWindow &window ){ diff --git a/src/ProjectWindow.h b/src/ProjectWindow.h index 8ef7fa16c..9f7156bc8 100644 --- a/src/ProjectWindow.h +++ b/src/ProjectWindow.h @@ -89,6 +89,8 @@ public: void ZoomOutByFactor( double ZoomFactor ); void ZoomBy(double multiplier); void ZoomAfterImport(Track *pTrack); + double GetZoomOfToFit() const; + void DoZoomFit(); void ApplyUpdatedTheme(); diff --git a/src/effects/EffectManager.cpp b/src/effects/EffectManager.cpp index c5cccc4b6..369350e02 100644 --- a/src/effects/EffectManager.cpp +++ b/src/effects/EffectManager.cpp @@ -203,7 +203,7 @@ void EffectManager::UnregisterEffect(const PluginID & ID) if (type == EffectTypeGenerate) { if (count == 0 || (clean && selectedRegion.t0() == 0.0)) - ViewActions::DoZoomFit(project); + window.DoZoomFit(); // trackPanel->Refresh(false); } window.RedrawProject(); diff --git a/src/menus/TrackMenus.cpp b/src/menus/TrackMenus.cpp index 07ed175e6..ffe61516b 100644 --- a/src/menus/TrackMenus.cpp +++ b/src/menus/TrackMenus.cpp @@ -285,9 +285,8 @@ void DoAlign if (index == kAlignEndToEnd) newPos += (trackEnd - trackStart); } - if (index == kAlignEndToEnd) { - ViewActions::DoZoomFit(project); - } + if (index == kAlignEndToEnd) + window.DoZoomFit(); } if (delta != 0.0) { diff --git a/src/menus/ViewMenus.cpp b/src/menus/ViewMenus.cpp index e311aaebd..2a591ea04 100644 --- a/src/menus/ViewMenus.cpp +++ b/src/menus/ViewMenus.cpp @@ -88,7 +88,8 @@ double GetZoomOfPreset( const AudacityProject &project, int preset ) const double pixelsPerUnit = 5.0; double result = 1.0; - double zoomToFit = ViewActions::GetZoomOfToFit( project ); + auto &window = ProjectWindow::Get( project ); + double zoomToFit = window.GetZoomOfToFit(); using namespace WaveTrackViewConstants; switch( preset ){ default: @@ -145,47 +146,6 @@ double GetZoomOfPreset( const AudacityProject &project, int preset ) } -namespace ViewActions { - -// exported helper functions - -double GetZoomOfToFit( const AudacityProject &project ) -{ - auto &tracks = TrackList::Get( project ); - auto &viewInfo = ViewInfo::Get( project ); - auto &trackPanel = TrackPanel::Get( project ); - - const double end = tracks.GetEndTime(); - const double start = viewInfo.bScrollBeyondZero - ? std::min( tracks.GetStartTime(), 0.0) - : 0; - const double len = end - start; - - if (len <= 0.0) - return viewInfo.GetZoom(); - - int w; - trackPanel.GetTracksUsableArea(&w, NULL); - w -= 10; - return w/len; -} - -void DoZoomFit(AudacityProject &project) -{ - auto &viewInfo = ViewInfo::Get( project ); - auto &tracks = TrackList::Get( project ); - auto &window = ProjectWindow::Get( project ); - - const double start = viewInfo.bScrollBeyondZero - ? std::min(tracks.GetStartTime(), 0.0) - : 0; - - window.Zoom( GetZoomOfToFit( project ) ); - window.TP_ScrollWindow(start); -} - -} - namespace { void DoZoomFitV(AudacityProject &project) { @@ -288,7 +248,9 @@ void OnZoomToggle(const CommandContext &context) void OnZoomFit(const CommandContext &context) { - DoZoomFit( context.project ); + auto &project = context.project; + auto &window = ProjectWindow::Get( project ); + window.DoZoomFit(); } void OnZoomFitV(const CommandContext &context)