1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-21 08:27:13 +01:00

Accessors to get the project window...

... as a preparation for splitting up class AudacityProject.

Use ProjectWindow as an alias for AudacityProject, and fetch it from the
project with a static member function, where certain of its services are used;
pretending they are not the same class.

Use global accessor functions to get wxFrame from the project where only
wxFrame's member functions are needed, so there will be less dependency on
ProjectWindow when it becomes a distinct class.
This commit is contained in:
Paul Licameli
2019-05-28 13:12:56 -04:00
parent 02afcbca8c
commit 82663892dc
49 changed files with 451 additions and 296 deletions

View File

@@ -47,10 +47,11 @@ double GetZoomOfSelection( const AudacityProject &project )
{
auto &viewInfo = ViewInfo::Get( project );
auto &trackPanel = TrackPanel::Get( project );
auto &window = ProjectWindow::Get( project );
const double lowerBound =
std::max(viewInfo.selectedRegion.t0(),
project.ScrollingLowerBoundTime());
window.ScrollingLowerBoundTime());
const double denom =
viewInfo.selectedRegion.t1() - lowerBound;
if (denom <= 0.0)
@@ -165,13 +166,14 @@ 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;
project.Zoom( GetZoomOfToFit( project ) );
project.TP_ScrollWindow(start);
window.Zoom( GetZoomOfToFit( project ) );
window.TP_ScrollWindow(start);
}
void DoZoomFitV(AudacityProject &project)
@@ -209,31 +211,35 @@ struct Handler : CommandHandlerObject {
void OnZoomIn(const CommandContext &context)
{
auto &project = context.project;
project.ZoomInByFactor( 2.0 );
auto &window = ProjectWindow::Get( project );
window.ZoomInByFactor( 2.0 );
}
void OnZoomNormal(const CommandContext &context)
{
auto &project = context.project;
auto &trackPanel = TrackPanel::Get( project );
auto &window = ProjectWindow::Get( project );
project.Zoom(ZoomInfo::GetDefaultZoom());
window.Zoom(ZoomInfo::GetDefaultZoom());
trackPanel.Refresh(false);
}
void OnZoomOut(const CommandContext &context)
{
auto &project = context.project;
project.ZoomOutByFactor( 1 /2.0 );
auto &window = ProjectWindow::Get( project );
window.ZoomOutByFactor( 1 /2.0 );
}
void OnZoomSel(const CommandContext &context)
{
auto &project = context.project;
auto &selectedRegion = ViewInfo::Get( project ).selectedRegion;
auto &window = ProjectWindow::Get( project );
project.Zoom( GetZoomOfSelection( project ) );
project.TP_ScrollWindow(selectedRegion.t0());
window.Zoom( GetZoomOfSelection( project ) );
window.TP_ScrollWindow(selectedRegion.t0());
}
void OnZoomToggle(const CommandContext &context)
@@ -241,6 +247,7 @@ void OnZoomToggle(const CommandContext &context)
auto &project = context.project;
auto &viewInfo = ViewInfo::Get( project );
auto &trackPanel = TrackPanel::Get( project );
auto &window = ProjectWindow::Get( project );
// const double origLeft = viewInfo.h;
// const double origWidth = GetScreenEndTime() - origLeft;
@@ -252,7 +259,7 @@ void OnZoomToggle(const CommandContext &context)
double ChosenZoom =
fabs(log(Zoom1 / Z)) > fabs(log( Z / Zoom2)) ? Zoom1:Zoom2;
project.Zoom(ChosenZoom);
window.Zoom(ChosenZoom);
trackPanel.Refresh(false);
// const double newWidth = GetScreenEndTime() - viewInfo.h;
// const double newh = origLeft + (origWidth - newWidth) / 2;
@@ -267,11 +274,12 @@ void OnZoomFit(const CommandContext &context)
void OnZoomFitV(const CommandContext &context)
{
auto &project = context.project;
auto &window = ProjectWindow::Get( project );
DoZoomFitV(project);
project.GetVerticalScrollBar().SetThumbPosition(0);
project.RedrawProject();
window.GetVerticalScrollBar().SetThumbPosition(0);
window.RedrawProject();
project.ModifyState(true);
}
@@ -291,24 +299,26 @@ void OnCollapseAllTracks(const CommandContext &context)
{
auto &project = context.project;
auto &tracks = TrackList::Get( project );
auto &window = ProjectWindow::Get( project );
for (auto t : tracks.Any())
t->SetMinimized(true);
project.ModifyState(true);
project.RedrawProject();
window.RedrawProject();
}
void OnExpandAllTracks(const CommandContext &context)
{
auto &project = context.project;
auto &tracks = TrackList::Get( project );
auto &window = ProjectWindow::Get( project );
for (auto t : tracks.Any())
t->SetMinimized(false);
project.ModifyState(true);
project.RedrawProject();
window.RedrawProject();
}
void OnGoSelStart(const CommandContext &context)
@@ -317,11 +327,12 @@ void OnGoSelStart(const CommandContext &context)
auto &viewInfo = ViewInfo::Get( project );
auto &selectedRegion = viewInfo.selectedRegion;
auto &trackPanel = TrackPanel::Get( project );
auto &window = ProjectWindow::Get( project );
if (selectedRegion.isPoint())
return;
project.TP_ScrollWindow(
window.TP_ScrollWindow(
selectedRegion.t0() - ((trackPanel.GetScreenEndTime() - viewInfo.h) / 2));
}
@@ -331,11 +342,12 @@ void OnGoSelEnd(const CommandContext &context)
auto &viewInfo = ViewInfo::Get( project );
auto &selectedRegion = viewInfo.selectedRegion;
auto &trackPanel = TrackPanel::Get( project );
auto &window = ProjectWindow::Get( project );
if (selectedRegion.isPoint())
return;
project.TP_ScrollWindow(
window.TP_ScrollWindow(
selectedRegion.t1() - ((trackPanel.GetScreenEndTime() - viewInfo.h) / 2));
}