Audacity 3.2.0
Classes | Macros | Typedefs | Functions | Variables
Prefs.h File Reference
#include <functional>
#include <set>
#include "ComponentInterfaceSymbol.h"
#include "wxArrayStringEx.h"
#include "FileConfig.h"
#include <memory>
Include dependency graph for Prefs.h:

Go to the source code of this file.

Classes

struct  ByColumns_t
 
class  SettingBase
 Base class for settings objects. It holds a configuration key path. More...
 
class  TransactionalSettingBase
 
class  SettingScope
 Makes temporary changes to preferences, then rolls them back at destruction. More...
 
class  SettingTransaction
 Extend SettingScope with Commit() which flushes updates in a batch. More...
 
class  CachingSettingBase< T >
 Class template adds an in-memory cache of a value to SettingBase and support for SettingTransaction. More...
 
class  Setting< T >
 Class template adds default value, read, and write methods to CachingSetingBase. More...
 
class  BoolSetting
 This specialization of Setting for bool adds a Toggle method to negate the saved value. More...
 
class  IntSetting
 Specialization of Setting for int. More...
 
class  DoubleSetting
 Specialization of Setting for double. More...
 
class  StringSetting
 Specialization of Setting for strings. More...
 
class  EnumValueSymbols
 
class  ChoiceSetting
 
class  EnumSettingBase
 
class  EnumSetting< Enum >
 Adapts EnumSettingBase to a particular enumeration type. More...
 
class  PrefsListener
 A listener notified of changes in preferences. More...
 
struct  PreferenceInitializer
 

Macros

#define AUDACITY_PREFS_VERSION_STRING   "1.1.1r1"
 

Typedefs

using EnumValueSymbol = ComponentInterfaceSymbol
 

Functions

PREFERENCES_API void InitPreferences (std::unique_ptr< FileConfig > uPrefs)
 
PREFERENCES_API void ResetPreferences ()
 Call this to reset preferences to an (almost)-"new" default state. More...
 
PREFERENCES_API void FinishPreferences ()
 
PREFERENCES_API wxString WarningDialogKey (const wxString &internalDialogName)
 

Variables

PREFERENCES_API FileConfiggPrefs
 
int gMenusDirty
 
PREFERENCES_API ByColumns_t ByColumns
 
PREFERENCES_API BoolSetting DefaultUpdatesCheckingFlag
 

Macro Definition Documentation

◆ AUDACITY_PREFS_VERSION_STRING

#define AUDACITY_PREFS_VERSION_STRING   "1.1.1r1"

Definition at line 38 of file Prefs.h.

Typedef Documentation

◆ EnumValueSymbol

Definition at line 315 of file Prefs.h.

Function Documentation

◆ FinishPreferences()

PREFERENCES_API void FinishPreferences ( )

Definition at line 227 of file Prefs.cpp.

228{
229 if (gPrefs) {
230 wxConfigBase::Set(NULL);
231 ugPrefs.reset();
232 gPrefs = NULL;
233 }
234}
std::unique_ptr< FileConfig > ugPrefs
Definition: Prefs.cpp:69
FileConfig * gPrefs
Definition: Prefs.cpp:71

References gPrefs, and ugPrefs.

Referenced by AudacityApp::InitPart2(), AudacityApp::OnExit(), and AudacityApp::OnInit().

Here is the caller graph for this function:

◆ InitPreferences()

PREFERENCES_API void InitPreferences ( std::unique_ptr< FileConfig uPrefs)

Definition at line 201 of file Prefs.cpp.

202{
203 gPrefs = uPrefs.get();
204 ugPrefs = std::move(uPrefs);
205 wxConfigBase::Set(gPrefs);
206}

References gPrefs, and ugPrefs.

Referenced by AudacityApp::OnInit(), and PluginHost::PluginHost().

Here is the caller graph for this function:

◆ ResetPreferences()

PREFERENCES_API void ResetPreferences ( )

Call this to reset preferences to an (almost)-"new" default state.

There is at least one exception to that: user preferences we want to make more "sticky." Notably, whether automatic update checking is preferred.

Definition at line 208 of file Prefs.cpp.

209{
210 // Future: make this a static registry table, so the settings objects
211 // don't need to be defined in this source code file to avoid dependency
212 // cycles
213 std::pair<BoolSetting &, bool> stickyBoolSettings[] {
215 // ... others?
216 };
217 for (auto &pair : stickyBoolSettings)
218 pair.second = pair.first.Read();
219
220 bool savedValue = DefaultUpdatesCheckingFlag.Read();
221 gPrefs->DeleteAll();
222
223 for (auto &pair : stickyBoolSettings)
224 pair.first.Write(pair.second);
225}
BoolSetting DefaultUpdatesCheckingFlag
Definition: Prefs.cpp:66
virtual bool DeleteAll() wxOVERRIDE
Definition: FileConfig.cpp:229
bool Read(T *pVar) const
overload of Read returning a boolean that is true if the value was previously defined *‍/
Definition: Prefs.h:185

References DefaultUpdatesCheckingFlag, FileConfig::DeleteAll(), gPrefs, and Setting< T >::Read().

Referenced by PluginActions::Handler::OnResetConfig(), and anonymous_namespace{AudacityApp.cpp}::PopulatePreferences().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WarningDialogKey()

PREFERENCES_API wxString WarningDialogKey ( const wxString &  internalDialogName)

Return the config file key associated with a warning dialog identified by internalDialogName. When the box is checked, the value at the key becomes false.

Definition at line 460 of file Prefs.cpp.

461{
462 return wxT("/Warnings/") + internalDialogName;
463}

Referenced by RecordingPrefs::PopulateOrExchange(), ShowWarningDialog(), and AudioIO::StartStream().

Here is the caller graph for this function:

Variable Documentation

◆ ByColumns

PREFERENCES_API ByColumns_t ByColumns
extern

◆ DefaultUpdatesCheckingFlag

PREFERENCES_API BoolSetting DefaultUpdatesCheckingFlag
extern

◆ gMenusDirty

int gMenusDirty
extern

Definition at line 72 of file Prefs.cpp.

◆ gPrefs

PREFERENCES_API FileConfig* gPrefs
extern

Definition at line 71 of file Prefs.cpp.

Referenced by anonymous_namespace{PluginMenus.cpp}::AddEffectMenuItemGroup(), AdornedRulerPanel::AdornedRulerPanel(), PluginManager::Iterator::Advance(), EffectTruncSilence::Analyze(), GetPreferenceCommand::Apply(), SetPreferenceCommand::Apply(), MacroCommands::ApplyMacro(), ApplyMacroDialog::ApplyMacroToProject(), ProjectSelectionManager::AS_SetSelectionFormat(), ProjectSelectionManager::AS_SetSnapTo(), AudacityApp::AssociateFileTypes(), ProgressDialog::Beep(), ScreenshotCommand::CapturePreferences(), DeviceToolBar::ChangeHost(), ExportMP3::CheckFileName(), SettingTransaction::Commit(), GUIPrefs::Commit(), KeyConfigPrefs::Commit(), QualityPrefs::Commit(), RecordingPrefs::Commit(), TracksPrefs::Commit(), LabelTrackView::ComputeLayout(), ControlToolBar::ControlToolBar(), anonymous_namespace{LabelMenus.cpp}::DoAddLabel(), LabelTrackView::DoCaptureKey(), LabelTrackView::DoChar(), Exporter::DoEditMetadata(), ProjectAudioManager::DoRecord(), WaveTrackVZoomHandle::DoRelease(), SpectrumView::DoSetMinimized(), WaveformView::DoSetMinimized(), ToolsToolBar::DoToolChanged(), EffectNoiseRemoval::EffectNoiseRemoval(), EVT_COMMAND_RANGE(), Exporter::ExamineTracks(), ExportFFmpeg::Export(), ExportMP3::Export(), ExportOGG::Export(), ExportCLOptions::ExportCLOptions(), ExportFFmpegOptions::ExportFFmpegOptions(), ExportMP3Options::ExportMP3Options(), ExportMultipleDialog::ExportMultipleByLabel(), ExportMultipleDialog::ExportMultipleByTrack(), ExportOGGOptions::ExportOGGOptions(), anonymous_namespace{ExtraMenus.cpp}::ExtraMenu(), DeviceToolBar::FillHostDevices(), MP3Exporter::FindLibrary(), FinishPreferences(), EditToolBar::ForAllButtons(), anonymous_namespace{Registry.cpp}::ItemOrdering::Get(), ModulePrefs::GetAllModuleStatuses(), SettingBase::GetConfig(), GetEditClipsCanMove(), Exporter::GetFilename(), ModuleSettings::GetModuleStatus(), TracksPrefs::GetPinnedHeadPositionPreference(), TracksPrefs::GetPinnedHeadPreference(), GlobalPrefsDialog::GetPreferredPage(), ExportCL::GetSettings(), PlaybackPrefs::GetUnpinnedScrubbingPreference(), FileHistory::Global(), NoteTrackVZoomHandle::HitPreview(), WaveTrackVZoomHandle::HitPreview(), Importer::Import(), AudioIO::Init(), EffectNoiseRemoval::Init(), ExportFFmpeg::InitCodecs(), AudacityApp::InitPart2(), InitPreferences(), anonymous_namespace{NoteTrackVZoomHandle.cpp}::IsDragZooming(), WaveTrackVZoomHandle::IsDragZooming(), UpdateManager::IsTimeForUpdatesChecking(), EffectEqualization::LoadCurves(), Tags::LoadDefaults(), LoadEncoding(), LoadFFmpeg(), LoadOtherFormat(), ToolBar::MakeButtonBackgroundsLarge(), ToolBar::MakeButtonBackgroundsSmall(), CommandManager::Options::MakeCheckFn(), EnumSettingBase::Migrate(), SpectrogramSettings::ColorSchemeEnumSetting::Migrate(), TracksViewModeEnumSetting::Migrate(), MenuManager::ModifyToolbarMenus(), MP3Exporter::MP3Exporter(), CommandManager::NewIdentifier(), FileHistory::NotifyMenus(), NyqBench::NyqBench(), ViewActions::Handler::OnAdvancedVZoom(), TrackActions::Handler::OnAlign(), ApplyMacroDialog::OnApplyToFiles(), AdornedRulerPanel::OnAutoScroll(), PrefsDialog::OnCancel(), ScreenshotBigDialog::OnClose(), BrowserDialog::OnClose(), FrequencyPlotDialog::OnCloseButton(), ScreenshotBigDialog::OnCloseWindow(), EditActions::Handler::OnCut(), LabelEditActions::Handler::OnCutLabels(), ScreenshotBigDialog::OnDirChoose(), SplashDialog::OnDontShow(), TagsEditorDialog::OnDontShow(), AudacityApp::OnExit(), ExportMultipleDialog::OnExport(), ExportFFmpegOptions::OnExportPresets(), EffectUIHost::OnFFwd(), NyqBench::OnFind(), NyqBench::OnFindDialog(), KeyConfigPrefs::OnImportDefaults(), ExportFFmpegOptions::OnImportPresets(), ExportMP3Options::OnMono(), TrackActions::Handler::OnMoveSelectionWithTracks(), PrefsDialog::OnOK(), ExportFFmpegOptions::OnOK(), SoundActivatedRecordDialog::OnOK(), TagsEditorDialog::OnOk(), TimerRecordDialog::OnOK(), FFmpegNotFoundDialog::OnOk(), NyqBench::OnOpen(), TransportActions::Handler::OnPlayAfterSelectionEnd(), TransportActions::Handler::OnPlayAfterSelectionStart(), TransportActions::Handler::OnPlayBeforeAndAfterSelectionEnd(), TransportActions::Handler::OnPlayBeforeAndAfterSelectionStart(), TransportActions::Handler::OnPlayBeforeSelectionEnd(), TransportActions::Handler::OnPlayBeforeSelectionStart(), MeterPanel::OnPreferences(), ProjectAudioManager::OnRecord(), PluginActions::Handler::OnResetConfig(), EffectUIHost::OnRewind(), NyqBench::OnSaveAs(), TagsEditorDialog::OnSaveDefaults(), LabelTrackMenuTable::OnSetFont(), ViewActions::Handler::OnShowClipping(), ViewActions::Handler::OnShowExtraMenus(), ViewActions::Handler::OnShowNameOverlay(), TrackActions::Handler::OnSyncLock(), AdornedRulerPanel::OnSyncSelToQuickPlay(), DirectoriesPrefs::OnTempBrowse(), TransportActions::Handler::OnTimerRecord(), TransportActions::Handler::OnTogglePlayRecording(), TransportActions::Handler::OnToggleSoundActivated(), TransportActions::Handler::OnToggleSWPlaythrough(), LabelEditActions::Handler::OnToggleTypeToCreateLabel(), FFmpegImportPlugin::Open(), Registry::OrderingPreferenceInitializer::operator()(), TranscriptionToolBar::PlayAtSpeed(), ProjectAudioManager::PlayPlayRegion(), ApplyMacroDialog::Populate(), MacrosWindow::Populate(), ControlToolBar::Populate(), SplashDialog::Populate(), ExportFFmpegOptions::PopulateOrExchange(), ExportMP3Options::PopulateOrExchange(), ExportMultipleDialog::PopulateOrExchange(), anonymous_namespace{HelpMenus.cpp}::QuickFixDialog::PopulateOrExchange(), ScreenshotBigDialog::PopulateOrExchange(), TagsEditorDialog::PopulateOrExchange(), TimerRecordDialog::PopulateOrExchange(), anonymous_namespace{AudacityApp.cpp}::PopulatePreferences(), PrefsDialog::PrefsDialog(), EffectNoiseReduction::Settings::PrefsIO(), EffectBase::Preview(), Exporter::Process(), NyquistEffect::Process(), EffectPaulstretch::ProcessOne(), PerTrackEffect::ProcessTrack(), ProjectRate::ProjectRate(), ProjectSettings::ProjectSettings(), ToolBarConfiguration::Read(), ToolManager::ReadConfig(), Importer::ReadImportItems(), anonymous_namespace{NoiseReduction.cpp}::readPrefs(), LabelDialog::ReadSize(), ChoiceSetting::ReadWithDefault(), RecordingPrefs::RecordingPrefs(), ControlToolBar::RegenerateTooltips(), LabelStruct::RegionRelation(), NoteTrackVZoomHandle::Release(), CommandManager::RemoveDuplicateShortcuts(), MacroCommands::ReportAndSkip(), LabelTrackView::ResetFont(), ResetPreferences(), MacrosWindow::SaveChanges(), SaveEncoding(), DependencyDialog::SaveFutureActionChoice(), SaveOtherFormat(), GlobalPrefsDialog::SavePreferredPage(), NyqBench::SavePrefs(), SelectUtilities::SelectAllIfNoneAndAllowed(), Importer::SelectDefaultOpenType(), SelectionBar::SelectionBar(), SelectionBar::SelectionModeUpdated(), Importer::SetDefaultOpenType(), DeviceToolBar::SetDevices(), GUISettings::SetLang(), Importer::SetLastOpenType(), CommandManager::SetMaxList(), ModuleSettings::SetModuleStatus(), ExportMP3::SetNumExportChannels(), TracksPrefs::SetPinnedHeadPositionPreference(), TracksPrefs::SetPinnedHeadPreference(), Journal::SetRecordEnabled(), HelpSystem::ShowHelp(), EffectNoiseRemoval::ShowHostInterface(), ShowWarningDialog(), ProjectSelectionManager::SSBL_SetBandwidthSelectionFormatName(), ProjectSelectionManager::SSBL_SetFrequencySelectionFormatName(), UpdateManager::Start(), WaveTrackAffordanceControls::StartEditClipName(), AudioIO::StartMonitoring(), ControlToolBar::StartScrolling(), AudioIO::StartStream(), TagsEditorDialog::TagsEditorDialog(), TempDirectory::TempDir(), ShuttlePrefs::TransferBool(), ExportCLOptions::TransferDataFromWindow(), ExportFFmpegAC3Options::TransferDataFromWindow(), ExportFFmpegAACOptions::TransferDataFromWindow(), ExportFFmpegAMRNBOptions::TransferDataFromWindow(), ExportFFmpegOPUSOptions::TransferDataFromWindow(), ExportFFmpegWMAOptions::TransferDataFromWindow(), ExportFLACOptions::TransferDataFromWindow(), ExportMP3Options::TransferDataFromWindow(), ExportOGGOptions::TransferDataFromWindow(), TimerRecordDialog::TransferDataFromWindow(), ExportFFmpegCustomOptions::TransferDataToWindow(), ShuttlePrefs::TransferDouble(), ShuttlePrefs::TransferInt(), ShuttlePrefs::TransferString(), anonymous_namespace{TransportMenus.cpp}::TransportMenu(), ProjectSelectionManager::TT_SetAudioTimeFormat(), EffectEqualization::UpdateDefaultCurves(), ViewInfo::UpdatePrefs(), AdornedRulerPanel::UpdatePrefs(), MenuManager::UpdatePrefs(), NavigationActions::Handler::UpdatePrefs(), SelectActions::Handler::UpdatePrefs(), ProjectSettings::UpdatePrefs(), ControlToolBar::UpdatePrefs(), DeviceToolBar::UpdatePrefs(), SelectionBar::UpdatePrefs(), MeterPanel::UpdatePrefs(), ViewInfo::UpdateSelectedPrefs(), TrackArtist::UpdateSelectedPrefs(), ProjectAudioManager::UseDuplex(), Registry::Visit(), anonymous_namespace{Registry.cpp}::VisitItems(), FileNames::WithDefaultPath(), ToolBarConfiguration::Write(), ChoiceSetting::Write(), ToolManager::WriteConfig(), Importer::WriteImportItems(), anonymous_namespace{NoiseReduction.cpp}::writePrefs(), and LabelDialog::WriteSize().