diff --git a/src/commands/SetProjectCommand.cpp b/src/commands/SetProjectCommand.cpp index a8b130bdb..bec6f2d4e 100644 --- a/src/commands/SetProjectCommand.cpp +++ b/src/commands/SetProjectCommand.cpp @@ -25,6 +25,7 @@ #include "../WaveTrack.h" #include "../ShuttleGui.h" #include "CommandContext.h" +#include "toolbars/SelectionBar.h" SetProjectCommand::SetProjectCommand() { @@ -33,6 +34,7 @@ SetProjectCommand::SetProjectCommand() bool SetProjectCommand::DefineParams( ShuttleParams & S ){ S.OptionalN( bHasName ).Define( mName, wxT("Name"), _("Project") ); + S.OptionalY( bHasRate ).Define( mRate, wxT("Rate"), 44100.0, 1.0, 1000000.0); S.OptionalY( bHasSizing ).Define( mPosX, wxT("X"), 10.0, 0.0, 2000.0); S.OptionalY( bHasSizing ).Define( mPosY, wxT("Y"), 10.0, 0.0, 2000.0); S.OptionalY( bHasSizing ).Define( mWidth, wxT("Width"), 1000.0, 200.0, 4000.0); @@ -46,7 +48,9 @@ void SetProjectCommand::PopulateOrExchange(ShuttleGui & S) S.StartMultiColumn(3, wxALIGN_CENTER); { S.Optional( bHasName ).TieTextBox( _("Name:"), mName ); + S.Optional( bHasName ).TieTextBox( _("Rate:"), mRate ); S.TieCheckBox( _("Resize:"), bHasSizing ); + S.AddSpace(0,0); } S.EndMultiColumn(); S.StartMultiColumn(2, wxALIGN_CENTER); @@ -64,6 +68,15 @@ bool SetProjectCommand::Apply(const CommandContext & context) AudacityProject * pProj = context.GetProject(); if( bHasName ) pProj->SetLabel(mName); + + if( bHasRate && mRate >= 1 && mRate <= 1000000 ) + { + auto *bar = pProj->GetSelectionBar(); + if( bar ){ + bar->SetRate( mRate ); + } + } + if( bHasSizing ) { pProj->SetPosition( wxPoint( mPosX, mPosY)); diff --git a/src/commands/SetProjectCommand.h b/src/commands/SetProjectCommand.h index f9200e07e..a662e5f76 100644 --- a/src/commands/SetProjectCommand.h +++ b/src/commands/SetProjectCommand.h @@ -44,10 +44,12 @@ public: int mPosY; int mWidth; int mHeight; + double mRate; // For tracking optional parameters. bool bHasName; bool bHasSizing; + bool bHasRate; };