Lower ViewActions as member functions of ProjectWindow

This commit is contained in:
Paul Licameli 2019-06-21 23:08:31 -04:00
parent b6077fd3cd
commit c6478f43af
7 changed files with 52 additions and 57 deletions

View File

@ -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 );

View File

@ -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;
}

View File

@ -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 ){

View File

@ -89,6 +89,8 @@ public:
void ZoomOutByFactor( double ZoomFactor );
void ZoomBy(double multiplier);
void ZoomAfterImport(Track *pTrack);
double GetZoomOfToFit() const;
void DoZoomFit();
void ApplyUpdatedTheme();

View File

@ -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();

View File

@ -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) {

View File

@ -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)