diff --git a/src/Menus.cpp b/src/Menus.cpp index 589b363dc..0f538f06b 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -4910,9 +4910,15 @@ void AudacityProject::OnPreferences(const CommandContext &WXUNUSED(context) ) } } + +#include "./prefs/SpectrogramSettings.h" +#include "./prefs/WaveformSettings.h" void AudacityProject::OnReloadPreferences(const CommandContext &WXUNUSED(context) ) { { + SpectrogramSettings::defaults().LoadPrefs(); + WaveformSettings::defaults().LoadPrefs(); + GlobalPrefsDialog dialog(this /* parent */ ); wxCommandEvent Evt; //dialog.Show(); diff --git a/src/WaveTrack.cpp b/src/WaveTrack.cpp index d938d51a9..41d968b8d 100644 --- a/src/WaveTrack.cpp +++ b/src/WaveTrack.cpp @@ -739,6 +739,23 @@ void WaveTrack::SetSpectrogramSettings(std::unique_ptr &&pS } } +void WaveTrack::UseSpectralPrefs( bool bUse ) +{ + if( bUse ){ + if( !mpSpectrumSettings ) + return; + // reset it, and next we will be getting the defaults. + mpSpectrumSettings.reset(); + } + else { + if( mpSpectrumSettings ) + return; + GetIndependentSpectrogramSettings(); + } +} + + + const WaveformSettings &WaveTrack::GetWaveformSettings() const { if (mpWaveformSettings) diff --git a/src/WaveTrack.h b/src/WaveTrack.h index d461f4b53..a142fc792 100644 --- a/src/WaveTrack.h +++ b/src/WaveTrack.h @@ -155,7 +155,7 @@ private: WaveformSettings &GetWaveformSettings(); WaveformSettings &GetIndependentWaveformSettings(); void SetWaveformSettings(std::unique_ptr &&pSettings); - + void UseSpectralPrefs( bool bUse=true ); // // High-level editing // diff --git a/src/commands/SetTrackInfoCommand.cpp b/src/commands/SetTrackInfoCommand.cpp index aad714a06..eadf47ed0 100644 --- a/src/commands/SetTrackInfoCommand.cpp +++ b/src/commands/SetTrackInfoCommand.cpp @@ -109,6 +109,8 @@ bool SetTrackCommand::DefineParams( ShuttleParams & S ){ S.OptionalN( bHasScaleType ).DefineEnum( mScaleType, wxT("Scale"), kLinear, scales ); S.OptionalN( bHasColour ).DefineEnum( mColour, wxT("Color"), kColour0, colours ); S.OptionalN( bHasVZoom ).DefineEnum( mVZoom, wxT("VZoom"), kReset, vzooms ); + S.OptionalN( bHasUseSpecPrefs ).Define( bUseSpecPrefs, wxT("SpecPrefs"), false ); + S.OptionalN( bHasSpectralSelect ).Define( bSpectralSelect, wxT("SpectralSel"),true ); S.OptionalN( bHasGrayScale ).Define( bGrayScale, wxT("GrayScale"), false ); // There is also a select command. This is an alternative. @@ -144,12 +146,13 @@ void SetTrackCommand::PopulateOrExchange(ShuttleGui & S) S.EndMultiColumn(); S.StartMultiColumn(2, wxALIGN_CENTER); { - S.Optional( bHasSpectralSelect ).TieCheckBox( _("Spectral Select:"), bSpectralSelect ); - S.Optional( bHasGrayScale ).TieCheckBox( _("Gray Scale:"), bGrayScale ); - S.Optional( bHasSelected ).TieCheckBox( _("Selected:"), bSelected ); - S.Optional( bHasFocused ).TieCheckBox( _("Focused:"), bFocused); - S.Optional( bHasSolo ).TieCheckBox( _("Solo:"), bSolo); - S.Optional( bHasMute ).TieCheckBox( _("Mute:"), bMute); + S.Optional( bHasUseSpecPrefs ).TieCheckBox( _("Use Spectral Prefs:"), bUseSpecPrefs ); + S.Optional( bHasSpectralSelect ).TieCheckBox( _("Spectral Select:"), bSpectralSelect); + S.Optional( bHasGrayScale ).TieCheckBox( _("Gray Scale:"), bGrayScale ); + S.Optional( bHasSelected ).TieCheckBox( _("Selected:"), bSelected ); + S.Optional( bHasFocused ).TieCheckBox( _("Focused:"), bFocused); + S.Optional( bHasSolo ).TieCheckBox( _("Solo:"), bSolo); + S.Optional( bHasMute ).TieCheckBox( _("Mute:"), bMute); } S.EndMultiColumn(); } @@ -197,6 +200,10 @@ bool SetTrackCommand::Apply(const CommandContext & context) (mScaleType==kLinear) ? WaveformSettings::stLinear : WaveformSettings::stLogarithmic; + + if( wt && bHasUseSpecPrefs ){ + wt->UseSpectralPrefs( bUseSpecPrefs ); + } if( wt && bHasSpectralSelect ) wt->GetSpectrogramSettings().spectralSelection = bSpectralSelect; if( wt && bHasGrayScale ) @@ -209,7 +216,6 @@ bool SetTrackCommand::Apply(const CommandContext & context) case kHalfWave: wt->SetDisplayBounds(0,1); break; } } - // These ones don't make sense on the second channel of a stereo track. if( !bIsSecondChannel ){ if( bHasSelected ) diff --git a/src/commands/SetTrackInfoCommand.h b/src/commands/SetTrackInfoCommand.h index 61076b94c..d673d588b 100644 --- a/src/commands/SetTrackInfoCommand.h +++ b/src/commands/SetTrackInfoCommand.h @@ -48,6 +48,7 @@ public: int mDisplayType; int mScaleType; int mVZoom; + bool bUseSpecPrefs; bool bSpectralSelect; bool bGrayScale; bool bSelected; @@ -66,6 +67,7 @@ public: bool bHasDisplayType; bool bHasScaleType; bool bHasVZoom; + bool bHasUseSpecPrefs; bool bHasSpectralSelect; bool bHasGrayScale; bool bHasSelected; diff --git a/src/prefs/PrefsDialog.cpp b/src/prefs/PrefsDialog.cpp index 027baf04d..cd63e9534 100644 --- a/src/prefs/PrefsDialog.cpp +++ b/src/prefs/PrefsDialog.cpp @@ -517,6 +517,7 @@ void PrefsDialog::OnOK(wxCommandEvent & WXUNUSED(event)) } WaveformSettings::defaults().LoadPrefs(); + SpectrogramSettings::defaults().LoadPrefs(); if( IsModal() ) EndModal(true);