New files for ProjectSettings

This commit is contained in:
Paul Licameli 2019-05-29 11:31:40 -04:00
parent dd10e00a2d
commit 05efeeb5bd
48 changed files with 350 additions and 235 deletions

View File

@ -162,6 +162,8 @@ src/ProjectFileIORegistry.cpp
src/ProjectFileIORegistry.h
src/ProjectFSCK.cpp
src/ProjectFSCK.h
src/ProjectSettings.cpp
src/ProjectSettings.h
src/RealFFTf.cpp
src/RealFFTf.h
src/RealFFTf48x.cpp

View File

@ -1211,6 +1211,7 @@
5E08E014217E5F66003C6C99 /* LabelMenus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E08E013217E5F66003C6C99 /* LabelMenus.cpp */; };
5E0A1CDD20E95FF7001AAF8D /* CellularPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E0A1CDB20E95FF7001AAF8D /* CellularPanel.cpp */; };
5E10D9061EC8F81300B3AC57 /* PlayableTrackButtonHandles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E10D9041EC8F81300B3AC57 /* PlayableTrackButtonHandles.cpp */; };
5E135A36229EDBE80076E983 /* ProjectSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E135A34229EDBE80076E983 /* ProjectSettings.cpp */; };
5E15123D1DB000C000702E29 /* UIHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E15123B1DB000C000702E29 /* UIHandle.cpp */; };
5E15125A1DB000DC00702E29 /* LabelTrackControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E1512401DB000DC00702E29 /* LabelTrackControls.cpp */; };
5E15125B1DB000DC00702E29 /* LabelTrackUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E1512421DB000DC00702E29 /* LabelTrackUI.cpp */; };
@ -3175,6 +3176,8 @@
5E0D233E21B468BF0057D7C3 /* ClientData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClientData.h; sourceTree = "<group>"; };
5E10D9041EC8F81300B3AC57 /* PlayableTrackButtonHandles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlayableTrackButtonHandles.cpp; sourceTree = "<group>"; };
5E10D9051EC8F81300B3AC57 /* PlayableTrackButtonHandles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayableTrackButtonHandles.h; sourceTree = "<group>"; };
5E135A34229EDBE80076E983 /* ProjectSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProjectSettings.cpp; sourceTree = "<group>"; };
5E135A35229EDBE80076E983 /* ProjectSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProjectSettings.h; sourceTree = "<group>"; };
5E1512381DB000C000702E29 /* HitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HitTestResult.h; sourceTree = "<group>"; };
5E1512391DB000C000702E29 /* RefreshCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefreshCode.h; sourceTree = "<group>"; };
5E15123A1DB000C000702E29 /* TrackPanelMouseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackPanelMouseEvent.h; sourceTree = "<group>"; };
@ -4360,6 +4363,7 @@
1790B0D009883BFD008A330A /* Project.cpp */,
5E18CFEE2291C31000E75250 /* ProjectFileIORegistry.cpp */,
5ECF728C228B307E007F2A35 /* ProjectFSCK.cpp */,
5E135A34229EDBE80076E983 /* ProjectSettings.cpp */,
28DABFBC0FF19DB100AC7848 /* RealFFTf.cpp */,
EDFCEBA218894B2A00C98E51 /* RealFFTf48x.cpp */,
1790B0D209883BFD008A330A /* Resample.cpp */,
@ -4475,6 +4479,7 @@
1790B0D109883BFD008A330A /* Project.h */,
5E18CFEF2291C31000E75250 /* ProjectFileIORegistry.h */,
5ECF728B228B307E007F2A35 /* ProjectFSCK.h */,
5E135A35229EDBE80076E983 /* ProjectSettings.h */,
28DABFBD0FF19DB100AC7848 /* RealFFTf.h */,
EDFCEBA318894B2A00C98E51 /* RealFFTf48x.h */,
5E1512391DB000C000702E29 /* RefreshCode.h */,
@ -8639,6 +8644,7 @@
5E15126D1DB0010C00702E29 /* CommonTrackPanelCell.cpp in Sources */,
284FD04217FC72A50009A025 /* ScienFilter.cpp in Sources */,
284FD04517FC72EE0009A025 /* Biquad.cpp in Sources */,
5E135A36229EDBE80076E983 /* ProjectSettings.cpp in Sources */,
28C3946D1818356800FDDAC9 /* AudacityLogger.cpp in Sources */,
28F2CED4181867BB00573D61 /* numformatter.cpp in Sources */,
28F2CED5181867BB00573D61 /* valnum.cpp in Sources */,

View File

@ -83,6 +83,7 @@ It handles initialization and termination by subclassing wxApp.
#include "MissingAliasFileDialog.h"
#include "PluginManager.h"
#include "Project.h"
#include "ProjectSettings.h"
#include "Screenshot.h"
#include "Sequence.h"
#include "WaveTrack.h"

View File

@ -25,6 +25,7 @@ processing. See also MacrosWindow and ApplyMacroDialog.
#include <wx/textfile.h>
#include "Project.h"
#include "ProjectSettings.h"
#include "commands/CommandManager.h"
#include "effects/EffectManager.h"
#include "FileNames.h"

View File

@ -53,6 +53,7 @@ AliasedFile s.
#include "DirManager.h"
#include "Prefs.h"
#include "Project.h"
#include "ProjectSettings.h"
#include "Sequence.h"
#include "ShuttleGui.h"
#include "WaveTrack.h"

View File

@ -63,6 +63,7 @@ for drawing different aspects of the label and its text box.
#include "AllThemeResources.h"
#include "AColor.h"
#include "Project.h"
#include "ProjectSettings.h"
#include "ProjectFileIORegistry.h"
#include "TrackArtist.h"
#include "TrackPanel.h"

View File

@ -213,6 +213,8 @@ audacity_SOURCES = \
ProjectFileIORegistry.h \
ProjectFSCK.cpp \
ProjectFSCK.h \
ProjectSettings.cpp \
ProjectSettings.h \
RealFFTf.cpp \
RealFFTf.h \
RealFFTf48x.cpp \

View File

@ -321,14 +321,14 @@ am__audacity_SOURCES_DIST = BlockFile.cpp BlockFile.h DirManager.cpp \
PluginManager.cpp PluginManager.h Printing.cpp Printing.h \
Profiler.cpp Profiler.h Project.cpp Project.h \
ProjectFileIORegistry.cpp ProjectFileIORegistry.h \
ProjectFSCK.cpp ProjectFSCK.h RealFFTf.cpp RealFFTf.h \
RealFFTf48x.cpp RealFFTf48x.h RefreshCode.h Resample.cpp \
Resample.h RevisionIdent.h RingBuffer.cpp RingBuffer.h \
Screenshot.cpp Screenshot.h SelectedRegion.cpp \
SelectedRegion.h SelectionState.cpp SelectionState.h \
Shuttle.cpp Shuttle.h ShuttleGetDefinition.cpp \
ShuttleGetDefinition.h ShuttleGui.cpp ShuttleGui.h \
ShuttlePrefs.cpp ShuttlePrefs.h Snap.cpp Snap.h \
ProjectFSCK.cpp ProjectFSCK.h ProjectSettings.cpp \
ProjectSettings.h RealFFTf.cpp RealFFTf.h RealFFTf48x.cpp \
RealFFTf48x.h RefreshCode.h Resample.cpp Resample.h \
RevisionIdent.h RingBuffer.cpp RingBuffer.h Screenshot.cpp \
Screenshot.h SelectedRegion.cpp SelectedRegion.h \
SelectionState.cpp SelectionState.h Shuttle.cpp Shuttle.h \
ShuttleGetDefinition.cpp ShuttleGetDefinition.h ShuttleGui.cpp \
ShuttleGui.h ShuttlePrefs.cpp ShuttlePrefs.h Snap.cpp Snap.h \
SoundActivatedRecord.cpp SoundActivatedRecord.h Spectrum.cpp \
Spectrum.h SplashDialog.cpp SplashDialog.h SseMathFuncs.cpp \
SseMathFuncs.h Tags.cpp Tags.h Theme.cpp Theme.h \
@ -665,7 +665,8 @@ am_audacity_OBJECTS = $(am__objects_1) audacity-AboutDialog.$(OBJEXT) \
audacity-PluginManager.$(OBJEXT) audacity-Printing.$(OBJEXT) \
audacity-Profiler.$(OBJEXT) audacity-Project.$(OBJEXT) \
audacity-ProjectFileIORegistry.$(OBJEXT) \
audacity-ProjectFSCK.$(OBJEXT) audacity-RealFFTf.$(OBJEXT) \
audacity-ProjectFSCK.$(OBJEXT) \
audacity-ProjectSettings.$(OBJEXT) audacity-RealFFTf.$(OBJEXT) \
audacity-RealFFTf48x.$(OBJEXT) audacity-Resample.$(OBJEXT) \
audacity-RingBuffer.$(OBJEXT) audacity-Screenshot.$(OBJEXT) \
audacity-SelectedRegion.$(OBJEXT) \
@ -1383,14 +1384,14 @@ audacity_SOURCES = $(libaudacity_la_SOURCES) AboutDialog.cpp \
PluginManager.cpp PluginManager.h Printing.cpp Printing.h \
Profiler.cpp Profiler.h Project.cpp Project.h \
ProjectFileIORegistry.cpp ProjectFileIORegistry.h \
ProjectFSCK.cpp ProjectFSCK.h RealFFTf.cpp RealFFTf.h \
RealFFTf48x.cpp RealFFTf48x.h RefreshCode.h Resample.cpp \
Resample.h RevisionIdent.h RingBuffer.cpp RingBuffer.h \
Screenshot.cpp Screenshot.h SelectedRegion.cpp \
SelectedRegion.h SelectionState.cpp SelectionState.h \
Shuttle.cpp Shuttle.h ShuttleGetDefinition.cpp \
ShuttleGetDefinition.h ShuttleGui.cpp ShuttleGui.h \
ShuttlePrefs.cpp ShuttlePrefs.h Snap.cpp Snap.h \
ProjectFSCK.cpp ProjectFSCK.h ProjectSettings.cpp \
ProjectSettings.h RealFFTf.cpp RealFFTf.h RealFFTf48x.cpp \
RealFFTf48x.h RefreshCode.h Resample.cpp Resample.h \
RevisionIdent.h RingBuffer.cpp RingBuffer.h Screenshot.cpp \
Screenshot.h SelectedRegion.cpp SelectedRegion.h \
SelectionState.cpp SelectionState.h Shuttle.cpp Shuttle.h \
ShuttleGetDefinition.cpp ShuttleGetDefinition.h ShuttleGui.cpp \
ShuttleGui.h ShuttlePrefs.cpp ShuttlePrefs.h Snap.cpp Snap.h \
SoundActivatedRecord.cpp SoundActivatedRecord.h Spectrum.cpp \
Spectrum.h SplashDialog.cpp SplashDialog.h SseMathFuncs.cpp \
SseMathFuncs.h Tags.cpp Tags.h Theme.cpp Theme.h \
@ -2559,6 +2560,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity-Project.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity-ProjectFSCK.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity-ProjectFileIORegistry.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity-ProjectSettings.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity-RealFFTf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity-RealFFTf48x.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity-Resample.Po@am__quote@
@ -3988,6 +3990,20 @@ audacity-ProjectFSCK.obj: ProjectFSCK.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -c -o audacity-ProjectFSCK.obj `if test -f 'ProjectFSCK.cpp'; then $(CYGPATH_W) 'ProjectFSCK.cpp'; else $(CYGPATH_W) '$(srcdir)/ProjectFSCK.cpp'; fi`
audacity-ProjectSettings.o: ProjectSettings.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -MT audacity-ProjectSettings.o -MD -MP -MF $(DEPDIR)/audacity-ProjectSettings.Tpo -c -o audacity-ProjectSettings.o `test -f 'ProjectSettings.cpp' || echo '$(srcdir)/'`ProjectSettings.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/audacity-ProjectSettings.Tpo $(DEPDIR)/audacity-ProjectSettings.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ProjectSettings.cpp' object='audacity-ProjectSettings.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -c -o audacity-ProjectSettings.o `test -f 'ProjectSettings.cpp' || echo '$(srcdir)/'`ProjectSettings.cpp
audacity-ProjectSettings.obj: ProjectSettings.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -MT audacity-ProjectSettings.obj -MD -MP -MF $(DEPDIR)/audacity-ProjectSettings.Tpo -c -o audacity-ProjectSettings.obj `if test -f 'ProjectSettings.cpp'; then $(CYGPATH_W) 'ProjectSettings.cpp'; else $(CYGPATH_W) '$(srcdir)/ProjectSettings.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/audacity-ProjectSettings.Tpo $(DEPDIR)/audacity-ProjectSettings.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ProjectSettings.cpp' object='audacity-ProjectSettings.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -c -o audacity-ProjectSettings.obj `if test -f 'ProjectSettings.cpp'; then $(CYGPATH_W) 'ProjectSettings.cpp'; else $(CYGPATH_W) '$(srcdir)/ProjectSettings.cpp'; fi`
audacity-RealFFTf.o: RealFFTf.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -MT audacity-RealFFTf.o -MD -MP -MF $(DEPDIR)/audacity-RealFFTf.Tpo -c -o audacity-RealFFTf.o `test -f 'RealFFTf.cpp' || echo '$(srcdir)/'`RealFFTf.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/audacity-RealFFTf.Tpo $(DEPDIR)/audacity-RealFFTf.Po

View File

@ -40,6 +40,7 @@
#endif // USE_MIDI
#include "Prefs.h"
#include "Project.h"
#include "ProjectSettings.h"
#include "TrackPanel.h"
#include "UndoManager.h"
#include "ViewInfo.h"

View File

@ -38,6 +38,7 @@
#include "KeyboardCapture.h"
#include "Prefs.h" // for RTL_WORKAROUND
#include "Project.h"
#include "ProjectSettings.h"
#include "TrackPanel.h" // for EVT_TRACK_PANEL_TIMER
#include "UndoManager.h"
#include "WaveTrack.h"

View File

@ -52,6 +52,7 @@ scroll information. It also has some status flags.
#include "Project.h"
#include "ProjectFileIORegistry.h"
#include "ProjectSettings.h"
#include "Experimental.h"
@ -1375,36 +1376,6 @@ DefaultSpeedPlayOptions( AudacityProject &project )
return options;
}
void ProjectSettings::UpdatePrefs()
{
gPrefs->Read(wxT("/AudioFiles/ShowId3Dialog"), &mShowId3Dialog, true);
gPrefs->Read(wxT("/AudioFiles/NormalizeOnLoad"),&mNormalizeOnLoad, false);
gPrefs->Read(wxT("/GUI/EmptyCanBeDirty"), &mEmptyCanBeDirty, true );
gPrefs->Read(wxT("/GUI/ShowSplashScreen"), &mShowSplashScreen, true);
gPrefs->Read(wxT("/GUI/Solo"), &mSoloPref, wxT("Simple"));
// Update the old default to the NEW default.
if (mSoloPref == wxT("Standard"))
mSoloPref = wxT("Simple");
gPrefs->Read(wxT("/GUI/TracksFitVerticallyZoomed"), &mTracksFitVerticallyZoomed, false);
// gPrefs->Read(wxT("/GUI/UpdateSpectrogram"), &mViewInfo.bUpdateSpectrogram, true);
// This code to change an empty projects rate is currently disabled, after discussion.
// The rule 'Default sample rate' only affects newly created projects was felt to
// be simpler and better.
#if 0
// The DefaultProjectSample rate is the rate for new projects.
// Do not change this project's rate, unless there are no tracks.
if( TrackList::Get( *this ).size() == 0){
gPrefs->Read(wxT("/SamplingRate/DefaultProjectSampleRate"), &mRate, AudioIO::GetOptimalSupportedSampleRate());
// If necessary, we change this rate in the selection toolbar too.
auto bar = SelectionBar::Get( *this );
bar.SetRate( mRate );
}
#endif
mDefaultFormat = QualityPrefs::SampleFormatChoice();
}
void AudacityProject::UpdatePrefs()
{
SetProjectTitle();
@ -1680,36 +1651,6 @@ void AudacityProject::SSBL_ModifySpectralSelection(double &bottom, double &top,
#endif
}
const NumericFormatSymbol & ProjectSettings::GetFrequencySelectionFormatName() const
{
return mFrequencySelectionFormatName;
}
void ProjectSettings::SetFrequencySelectionFormatName(const NumericFormatSymbol & formatName)
{
mFrequencySelectionFormatName = formatName;
}
const NumericFormatSymbol & ProjectSettings::GetBandwidthSelectionFormatName() const
{
return mBandwidthSelectionFormatName;
}
void ProjectSettings::SetBandwidthSelectionFormatName(const NumericFormatSymbol & formatName)
{
mBandwidthSelectionFormatName = formatName;
}
void ProjectSettings::SetSelectionFormat(const NumericFormatSymbol & format)
{
mSelectionFormat = format;
}
const NumericFormatSymbol & ProjectSettings::GetSelectionFormat() const
{
return mSelectionFormat;
}
void AudacityProject::AS_ModifySelection(double &start, double &end, bool done)
{
@ -5195,34 +5136,6 @@ void AudacityProject::OnAudioIONewBlockFiles(const AutoSaveFile & blockFileLog)
}
}
void ProjectSettings::SetSnapTo(int snap)
{
mSnapTo = snap;
}
int ProjectSettings::GetSnapTo() const
{
return mSnapTo;
}
bool ProjectSettings::IsSyncLocked() const
{
#ifdef EXPERIMENTAL_SYNC_LOCK
return mIsSyncLocked;
#else
return false;
#endif
}
void ProjectSettings::SetSyncLock(bool flag)
{
auto &project = mProject;
if (flag != mIsSyncLocked) {
mIsSyncLocked = flag;
TrackPanel::Get( project ).Refresh(false);
}
}
bool AudacityProject::IsProjectSaved() {
auto &project = *this;
auto &dirManager = DirManager::Get( project );
@ -5537,51 +5450,3 @@ void AudacityProject::CloseLock()
mLastSavedTracks.reset();
}
}
static const AudacityProject::AttachedObjects::RegisteredFactory sProjectSettingsKey{
[]( AudacityProject &project ){
auto result = std::make_shared< ProjectSettings >( project );
return result;
}
};
ProjectSettings &ProjectSettings::Get( AudacityProject &project )
{
return project.AttachedObjects::Get< ProjectSettings >( sProjectSettingsKey );
}
const ProjectSettings &ProjectSettings::Get( const AudacityProject &project )
{
return Get( const_cast< AudacityProject & >( project ) );
}
ProjectSettings::ProjectSettings( AudacityProject &project )
: mProject{ project }
, mSelectionFormat{ NumericTextCtrl::LookupFormat(
NumericConverter::TIME,
gPrefs->Read(wxT("/SelectionFormat"), wxT("")) )
}
, mFrequencySelectionFormatName{ NumericTextCtrl::LookupFormat(
NumericConverter::FREQUENCY,
gPrefs->Read(wxT("/FrequencySelectionFormatName"), wxT("")) )
}
, mBandwidthSelectionFormatName{ NumericTextCtrl::LookupFormat(
NumericConverter::BANDWIDTH,
gPrefs->Read(wxT("/BandwidthSelectionFormatName"), wxT("")) )
}
, mDefaultFormat{ QualityPrefs::SampleFormatChoice() }
, mSnapTo( gPrefs->Read(wxT("/SnapTo"), SNAP_OFF) )
{
if (!gPrefs->Read(wxT("/SamplingRate/DefaultProjectSampleRate"), &mRate,
AudioIO::GetOptimalSupportedSampleRate())) {
// The default given above can vary with host/devices. So unless there is
// an entry for the default sample rate in audacity.cfg, Audacity can open
// with a rate which is different from the rate with which it closed.
// See bug 1879.
gPrefs->Write(wxT("/SamplingRate/DefaultProjectSampleRate"), mRate);
gPrefs->Flush();
}
gPrefs->Read(wxT("/GUI/SyncLockTracks"), &mIsSyncLocked, false);
UpdatePrefs();
}

View File

@ -599,82 +599,6 @@ inline const wxFrame *FindProjectFrame( const AudacityProject *project ) {
return project ? &GetProjectFrame( *project ) : nullptr;
}
class ProjectSettings final
: public ClientData::Base
, private PrefsListener
{
public:
static ProjectSettings &Get( AudacityProject &project );
static const ProjectSettings &Get( const AudacityProject &project );
ProjectSettings( AudacityProject &project );
sampleFormat GetDefaultFormat() const { return mDefaultFormat; }
double GetRate() const { return mRate; }
void SetRate( double value ) { mRate = value; }
bool GetTracksFitVerticallyZoomed() const { return mTracksFitVerticallyZoomed; } //lda
void SetTracksFitVerticallyZoomed(bool flag) { mTracksFitVerticallyZoomed = flag; } //lda
bool GetShowId3Dialog() const { return mShowId3Dialog; } //lda
void SetShowId3Dialog(bool flag) { mShowId3Dialog = flag; } //lda
bool GetNormalizeOnLoad() const { return mNormalizeOnLoad; } //lda
void SetNormalizeOnLoad(bool flag) { mNormalizeOnLoad = flag; } //lda
bool IsSyncLocked() const;
void SetSyncLock(bool flag);
// Snap To
void SetSnapTo(int snap);
int GetSnapTo() const;
// Selection Format
void SetSelectionFormat(const NumericFormatSymbol & format);
const NumericFormatSymbol & GetSelectionFormat() const;
// Spectral Selection Formats
void SetFrequencySelectionFormatName(const NumericFormatSymbol & format);
const NumericFormatSymbol & GetFrequencySelectionFormatName() const;
void SetBandwidthSelectionFormatName(const NumericFormatSymbol & format);
const NumericFormatSymbol & GetBandwidthSelectionFormatName() const;
bool IsSoloSimple() const { return mSoloPref == wxT("Simple"); }
bool IsSoloNone() const { return mSoloPref == wxT("None"); }
bool EmptyCanBeDirty() const { return mEmptyCanBeDirty; }
bool GetShowSplashScreen() const { return mShowSplashScreen; }
private:
void UpdatePrefs() override;
AudacityProject &mProject;
NumericFormatSymbol mSelectionFormat;
NumericFormatSymbol mFrequencySelectionFormatName;
NumericFormatSymbol mBandwidthSelectionFormatName;
wxString mSoloPref;
double mRate;
sampleFormat mDefaultFormat;
int mSnapTo;
bool mTracksFitVerticallyZoomed{ false }; //lda
bool mShowId3Dialog{ true }; //lda
bool mNormalizeOnLoad; //lda
bool mIsSyncLocked{ false };
bool mEmptyCanBeDirty;
bool mShowSplashScreen;
};
AudioIOStartStreamOptions DefaultPlayOptions( AudacityProject &project );
AudioIOStartStreamOptions DefaultSpeedPlayOptions( AudacityProject &project );

163
src/ProjectSettings.cpp Normal file
View File

@ -0,0 +1,163 @@
/**********************************************************************
Audacity: A Digital Audio Editor
ProjectSettings.cpp
Paul Licameli split from AudacityProject.cpp
**********************************************************************/
#include "ProjectSettings.h"
#include "AudioIO.h"
#include "Project.h"
#include "Snap.h"
#include "TrackPanel.h"
#include "prefs/QualityPrefs.h"
static const AudacityProject::AttachedObjects::RegisteredFactory
sProjectSettingsKey{
[]( AudacityProject &project ){
auto result = std::make_shared< ProjectSettings >( project );
return result;
}
};
ProjectSettings &ProjectSettings::Get( AudacityProject &project )
{
return project.AttachedObjects::Get< ProjectSettings >(
sProjectSettingsKey );
}
const ProjectSettings &ProjectSettings::Get( const AudacityProject &project )
{
return Get( const_cast< AudacityProject & >( project ) );
}
ProjectSettings::ProjectSettings( AudacityProject &project )
: mProject{ project }
, mSelectionFormat{ NumericTextCtrl::LookupFormat(
NumericConverter::TIME,
gPrefs->Read(wxT("/SelectionFormat"), wxT("")) )
}
, mFrequencySelectionFormatName{ NumericTextCtrl::LookupFormat(
NumericConverter::FREQUENCY,
gPrefs->Read(wxT("/FrequencySelectionFormatName"), wxT("")) )
}
, mBandwidthSelectionFormatName{ NumericTextCtrl::LookupFormat(
NumericConverter::BANDWIDTH,
gPrefs->Read(wxT("/BandwidthSelectionFormatName"), wxT("")) )
}
, mDefaultFormat{ QualityPrefs::SampleFormatChoice() }
, mSnapTo( gPrefs->Read(wxT("/SnapTo"), SNAP_OFF) )
{
if (!gPrefs->Read(wxT("/SamplingRate/DefaultProjectSampleRate"), &mRate,
AudioIO::GetOptimalSupportedSampleRate())) {
// The default given above can vary with host/devices. So unless there is
// an entry for the default sample rate in audacity.cfg, Audacity can open
// with a rate which is different from the rate with which it closed.
// See bug 1879.
gPrefs->Write(wxT("/SamplingRate/DefaultProjectSampleRate"), mRate);
gPrefs->Flush();
}
gPrefs->Read(wxT("/GUI/SyncLockTracks"), &mIsSyncLocked, false);
UpdatePrefs();
}
void ProjectSettings::UpdatePrefs()
{
gPrefs->Read(wxT("/AudioFiles/ShowId3Dialog"), &mShowId3Dialog, true);
gPrefs->Read(wxT("/AudioFiles/NormalizeOnLoad"),&mNormalizeOnLoad, false);
gPrefs->Read(wxT("/GUI/EmptyCanBeDirty"), &mEmptyCanBeDirty, true );
gPrefs->Read(wxT("/GUI/ShowSplashScreen"), &mShowSplashScreen, true);
gPrefs->Read(wxT("/GUI/Solo"), &mSoloPref, wxT("Simple"));
// Update the old default to the NEW default.
if (mSoloPref == wxT("Standard"))
mSoloPref = wxT("Simple");
gPrefs->Read(wxT("/GUI/TracksFitVerticallyZoomed"),
&mTracksFitVerticallyZoomed, false);
// gPrefs->Read(wxT("/GUI/UpdateSpectrogram"),
// &mViewInfo.bUpdateSpectrogram, true);
// This code to change an empty projects rate is currently disabled, after
// discussion. The rule 'Default sample rate' only affects newly created
// projects was felt to be simpler and better.
#if 0
// The DefaultProjectSample rate is the rate for new projects.
// Do not change this project's rate, unless there are no tracks.
if( TrackList::Get( *this ).size() == 0){
gPrefs->Read(wxT("/SamplingRate/DefaultProjectSampleRate"), &mRate,
AudioIO::GetOptimalSupportedSampleRate());
// If necessary, we change this rate in the selection toolbar too.
auto bar = SelectionBar::Get( *this );
bar.SetRate( mRate );
}
#endif
mDefaultFormat = QualityPrefs::SampleFormatChoice();
}
const NumericFormatSymbol &
ProjectSettings::GetFrequencySelectionFormatName() const
{
return mFrequencySelectionFormatName;
}
void ProjectSettings::SetFrequencySelectionFormatName(
const NumericFormatSymbol & formatName)
{
mFrequencySelectionFormatName = formatName;
}
const NumericFormatSymbol &
ProjectSettings::GetBandwidthSelectionFormatName() const
{
return mBandwidthSelectionFormatName;
}
void ProjectSettings::SetBandwidthSelectionFormatName(
const NumericFormatSymbol & formatName)
{
mBandwidthSelectionFormatName = formatName;
}
void ProjectSettings::SetSelectionFormat(const NumericFormatSymbol & format)
{
mSelectionFormat = format;
}
const NumericFormatSymbol & ProjectSettings::GetSelectionFormat() const
{
return mSelectionFormat;
}
void ProjectSettings::SetSnapTo(int snap)
{
mSnapTo = snap;
}
int ProjectSettings::GetSnapTo() const
{
return mSnapTo;
}
bool ProjectSettings::IsSyncLocked() const
{
#ifdef EXPERIMENTAL_SYNC_LOCK
return mIsSyncLocked;
#else
return false;
#endif
}
void ProjectSettings::SetSyncLock(bool flag)
{
auto &project = mProject;
if (flag != mIsSyncLocked) {
mIsSyncLocked = flag;
TrackPanel::Get( project ).Refresh(false);
}
}

97
src/ProjectSettings.h Normal file
View File

@ -0,0 +1,97 @@
/**********************************************************************
Audacity: A Digital Audio Editor
ProjectSettings.h
Paul Licameli split from AudacityProject.h
**********************************************************************/
#ifndef __AUDACITY_PROJECT_SETTINGS__
#define __AUDACITY_PROJECT_SETTINGS__
#include "ClientData.h" // to inherit
#include "Prefs.h" // to inherit
class AudacityProject;
///\brief Holds various per-project settings values, including the sample rate,
/// and sends events to the project when certain values change
class ProjectSettings final
: public ClientData::Base
, private PrefsListener
{
public:
static ProjectSettings &Get( AudacityProject &project );
static const ProjectSettings &Get( const AudacityProject &project );
ProjectSettings( AudacityProject &project );
sampleFormat GetDefaultFormat() const { return mDefaultFormat; }
double GetRate() const { return mRate; }
void SetRate( double value ) { mRate = value; }
bool GetTracksFitVerticallyZoomed() const { return mTracksFitVerticallyZoomed; } //lda
void SetTracksFitVerticallyZoomed(bool flag) { mTracksFitVerticallyZoomed = flag; } //lda
bool GetShowId3Dialog() const { return mShowId3Dialog; } //lda
void SetShowId3Dialog(bool flag) { mShowId3Dialog = flag; } //lda
bool GetNormalizeOnLoad() const { return mNormalizeOnLoad; } //lda
void SetNormalizeOnLoad(bool flag) { mNormalizeOnLoad = flag; } //lda
bool IsSyncLocked() const;
void SetSyncLock(bool flag);
// Snap To
void SetSnapTo(int snap);
int GetSnapTo() const;
// Selection Format
void SetSelectionFormat(const NumericFormatSymbol & format);
const NumericFormatSymbol & GetSelectionFormat() const;
// Spectral Selection Formats
void SetFrequencySelectionFormatName(const NumericFormatSymbol & format);
const NumericFormatSymbol & GetFrequencySelectionFormatName() const;
void SetBandwidthSelectionFormatName(const NumericFormatSymbol & format);
const NumericFormatSymbol & GetBandwidthSelectionFormatName() const;
bool IsSoloSimple() const { return mSoloPref == wxT("Simple"); }
bool IsSoloNone() const { return mSoloPref == wxT("None"); }
bool EmptyCanBeDirty() const { return mEmptyCanBeDirty; }
bool GetShowSplashScreen() const { return mShowSplashScreen; }
private:
void UpdatePrefs() override;
AudacityProject &mProject;
NumericFormatSymbol mSelectionFormat;
NumericFormatSymbol mFrequencySelectionFormatName;
NumericFormatSymbol mBandwidthSelectionFormatName;
wxString mSoloPref;
double mRate;
sampleFormat mDefaultFormat;
int mSnapTo;
bool mTracksFitVerticallyZoomed{ false }; //lda
bool mShowId3Dialog{ true }; //lda
bool mNormalizeOnLoad; //lda
bool mIsSyncLocked{ false };
bool mEmptyCanBeDirty;
bool mShowSplashScreen;
};
#endif

View File

@ -15,6 +15,7 @@
#include <cstdlib>
#include "Project.h"
#include "ProjectSettings.h"
#include "LabelTrack.h"
#include "NoteTrack.h"
#include "WaveClip.h"

View File

@ -27,6 +27,7 @@
#include "Envelope.h"
#include "Prefs.h"
#include "Project.h"
#include "ProjectSettings.h"
#include "ProjectFileIORegistry.h"
#include "TrackArtist.h"
#include "ViewInfo.h"

View File

@ -40,6 +40,7 @@ and TimeTrack.
#include "NoteTrack.h"
#include "LabelTrack.h"
#include "Project.h"
#include "ProjectSettings.h"
#include "DirManager.h"
#include "InconsistencyException.h"

View File

@ -49,6 +49,7 @@ Track classes.
#include "Project.h"
#include "ProjectFileIORegistry.h"
#include "ProjectSettings.h"
#include "AudioIO.h"
#include "Prefs.h"

View File

@ -15,6 +15,7 @@
#include "../WaveTrack.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../ShuttleGui.h"
#include "../FileNames.h"
#include "../ViewInfo.h"

View File

@ -55,6 +55,7 @@ greater use in future.
#include "../PluginManager.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../PluginManager.h"
#include "../ShuttleGui.h"
#include "../Shuttle.h"

View File

@ -98,6 +98,7 @@
#include "../FFT.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../TrackArtist.h"
#include "../WaveClip.h"
#include "../ViewInfo.h"

View File

@ -56,6 +56,7 @@ a graph for EffectScienFilter.
#include "../PlatformCompatibility.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Shuttle.h"
#include "../ShuttleGui.h"
#include "../WaveTrack.h"

View File

@ -29,6 +29,7 @@ frequency changes smoothly during the tone.
#include <wx/valgen.h>
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Shuttle.h"
#include "../ShuttleGui.h"
#include "../widgets/valnum.h"

View File

@ -29,6 +29,7 @@
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Shuttle.h"
#include "../ShuttleGui.h"
#include "../WaveTrack.h"

View File

@ -61,6 +61,7 @@ effects from this one class.
#include "../../TimeTrack.h"
#include "../../prefs/SpectrogramSettings.h"
#include "../../Project.h"
#include "../../ProjectSettings.h"
#include "../../ShuttleGetDefinition.h"
#include "../../ShuttleGui.h"
#include "../../ViewInfo.h"

View File

@ -65,6 +65,7 @@
#include "../Mix.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../ShuttleGui.h"
#include "../WaveTrack.h"
#include "../widgets/AudacityMessageBox.h"

View File

@ -14,7 +14,7 @@
#include "../Audacity.h"
#include "ExportCL.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include <wx/app.h>
#include <wx/button.h>

View File

@ -37,7 +37,7 @@ function.
#include "../FileFormats.h"
#include "../Mix.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Tags.h"
#include "../Track.h"
#include "../widgets/AudacityMessageBox.h"

View File

@ -32,7 +32,7 @@ and libvorbis examples, Monty <monty@xiph.org>
#include "FLAC++/encoder.h"
#include "../float_cast.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Mix.h"
#include "../Prefs.h"
#include "../ShuttleGui.h"

View File

@ -50,7 +50,7 @@
#include "../FileIO.h"
#include "../Mix.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../ShuttleGui.h"
#include "../Tags.h"
#include "../Track.h"

View File

@ -85,6 +85,7 @@
#include "../Mix.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../ShuttleGui.h"
#include "../Tags.h"
#include "../Track.h"

View File

@ -43,6 +43,7 @@
#include "../FileNames.h"
#include "../LabelTrack.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Prefs.h"
#include "../SelectionState.h"
#include "../ShuttleGui.h"

View File

@ -28,7 +28,7 @@
#include <vorbis/vorbisenc.h>
#include "../FileIO.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Mix.h"
#include "../Prefs.h"
#include "../ShuttleGui.h"

View File

@ -28,7 +28,7 @@
#include "../FileFormats.h"
#include "../Mix.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../ShuttleGui.h"
#include "../Tags.h"
#include "../Track.h"

View File

@ -1,4 +1,5 @@
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../TrackPanel.h"
#include "../UndoManager.h"
#include "../WaveClip.h"

View File

@ -6,6 +6,7 @@
#include "../NoteTrack.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Tags.h"
#include "../TimeTrack.h"
#include "../TrackPanel.h"

View File

@ -10,6 +10,7 @@
#include "../PluginManager.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Screenshot.h"
#include "../TrackPanel.h"
#include "../ViewInfo.h"

View File

@ -7,6 +7,7 @@
#include "../Menus.h" // for PrefsListener
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../SelectionState.h"
#include "../TimeDialog.h"
#include "../TrackPanel.h"

View File

@ -8,6 +8,7 @@
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../PluginManager.h"
#include "../ShuttleGui.h"
#include "../TimeTrack.h"

View File

@ -8,6 +8,7 @@
#include "../Menus.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../SoundActivatedRecord.h"
#include "../TimerRecordDialog.h"
#include "../TrackPanel.h"

View File

@ -66,6 +66,7 @@
#include "../Menus.h"
#include "../Prefs.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../ViewInfo.h"
#include "../widgets/AButton.h"
#include "../widgets/Meter.h"

View File

@ -16,6 +16,7 @@ Paul Licameli split from TrackPanel.cpp
#include "../../../../HitTestResult.h"
#include "../../../../NoteTrack.h"
#include "../../../../Project.h"
#include "../../../../ProjectSettings.h"
#include "../../../../RefreshCode.h"
#include "../../../../TrackPanelMouseEvent.h"
#include "../../../../UndoManager.h"

View File

@ -14,6 +14,7 @@ Paul Licameli split from TrackPanel.cpp
#include "../../../commands/CommandManager.h"
#include "../../../Menus.h"
#include "../../../Project.h"
#include "../../../ProjectSettings.h"
#include "../../../RefreshCode.h"
#include "../../../Track.h"
#include "../../../TrackPanel.h"

View File

@ -21,6 +21,7 @@ Paul Licameli split from TrackPanel.cpp
#include "../../Menus.h"
#include "../../NumberScale.h"
#include "../../Project.h"
#include "../../ProjectSettings.h"
#include "../../RefreshCode.h"
#include "../../SelectionState.h"
#include "../../TrackPanel.h"

View File

@ -18,6 +18,7 @@ Paul Licameli split from TrackPanel.cpp
#include "../../HitTestResult.h"
#include "../../NoteTrack.h"
#include "../../Project.h"
#include "../../ProjectSettings.h"
#include "../../RefreshCode.h"
#include "../../TrackPanelMouseEvent.h"
#include "../../toolbars/ToolsToolBar.h"

View File

@ -67,6 +67,7 @@
#include "../ImageManipulation.h"
#include "../prefs/GUISettings.h"
#include "../Project.h"
#include "../ProjectSettings.h"
#include "../Prefs.h"
#include "../ShuttleGui.h"

View File

@ -223,6 +223,7 @@
<ClCompile Include="..\..\..\src\Project.cpp" />
<ClCompile Include="..\..\..\src\ProjectFileIORegistry.cpp" />
<ClCompile Include="..\..\..\src\ProjectFSCK.cpp" />
<ClCompile Include="..\..\..\src\ProjectSettings.cpp" />
<ClCompile Include="..\..\..\src\RealFFTf.cpp" />
<ClCompile Include="..\..\..\src\RealFFTf48x.cpp" />
<ClCompile Include="..\..\..\src\Resample.cpp" />
@ -650,6 +651,7 @@
<ClInclude Include="..\..\..\src\Project.h" />
<ClInclude Include="..\..\..\src\ProjectFileIORegistry.h" />
<ClInclude Include="..\..\..\src\ProjectFSCK.h" />
<ClInclude Include="..\..\..\src\ProjectSettings.h" />
<ClInclude Include="..\..\..\src\RealFFTf.h" />
<ClInclude Include="..\..\..\src\Resample.h" />
<ClInclude Include="..\..\..\src\RingBuffer.h" />

View File

@ -266,6 +266,9 @@
<ClCompile Include="..\..\..\src\ProjectFSCK.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\ProjectSettings.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\RealFFTf.cpp">
<Filter>src</Filter>
</ClCompile>
@ -1324,6 +1327,9 @@
<ClInclude Include="..\..\..\src\ProjectFSCK.h">
<Filter>src</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\ProjectSettings.h">
<Filter>src</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\RealFFTf.h">
<Filter>src</Filter>
</ClInclude>