Audacity 3.2.0
Classes | Macros | Typedefs | Functions | Variables
Prefs.h File Reference
#include <functional>
#include <set>
#include <vector>
#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
 
struct  SettingPath
 
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 TransactionalSettingBase and support for SettingTransaction. More...
 
class  Setting< T >
 
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 39 of file Prefs.h.

Typedef Documentation

◆ EnumValueSymbol

Definition at line 368 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:68
FileConfig * gPrefs
Definition: Prefs.cpp:70

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 200 of file Prefs.cpp.

201{
202 gPrefs = uPrefs.get();
203 ugPrefs = std::move(uPrefs);
204 wxConfigBase::Set(gPrefs);
206}
static void Broadcast(int id=0)
Call this static function to notify all PrefsListener objects.
Definition: Prefs.cpp:97

References PrefsListener::Broadcast(), gPrefs, and ugPrefs.

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

Here is the call graph for this function:
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:65
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:200

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

Referenced by anonymous_namespace{PluginMenus.cpp}::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 469 of file Prefs.cpp.

470{
471 return wxT("/Warnings/") + internalDialogName;
472}
wxT("CloseDown"))

References wxT().

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

Here is the call graph for this function:
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 71 of file Prefs.cpp.

◆ gPrefs

PREFERENCES_API FileConfig* gPrefs
extern

Definition at line 70 of file Prefs.cpp.

Referenced by AdornedRulerPanel::AdornedRulerPanel(), PluginManager::Iterator::Advance(), EffectTruncSilence::Analyze(), GetPreferenceCommand::Apply(), SetPreferenceCommand::Apply(), MacroCommands::ApplyMacro(), ApplyMacroDialog::ApplyMacroToProject(), ProjectSelectionManager::AS_SetSelectionFormat(), AudacityApp::AssociateFileTypes(), ProgressDialog::Beep(), ScreenshotCommand::CapturePreferences(), DeviceToolBar::ChangeHost(), AudioSetupToolBar::ChangeHost(), ExportMP3::CheckFileName(), cloud::audiocom::UserService::ClearUserData(), SettingTransaction::Commit(), DevicePrefs::Commit(), GUIPrefs::Commit(), KeyConfigPrefs::Commit(), RecordingPrefs::Commit(), TracksPrefs::Commit(), LabelTrackView::ComputeLayout(), ControlToolBar::ControlToolBar(), DeduceSnapTo(), anonymous_namespace{LabelMenus.cpp}::DoAddLabel(), cloud::audiocom::OAuthService::DoAuthorise(), LabelTrackView::DoCaptureKey(), LabelTrackView::DoChar(), TagsEditorDialog::DoEditMetadata(), ProjectAudioManager::DoRecord(), WaveTrackVZoomHandle::DoRelease(), SpectrumView::DoSetMinimized(), WaveformView::DoSetMinimized(), ToolsToolBar::DoToolChanged(), cloud::audiocom::UserService::DownloadAvatar(), EffectNoiseRemoval::EffectNoiseRemoval(), EffectPreview(), 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(), AudioSetupToolBar::FillHostDevices(), DeviceToolBar::FillHostDevices(), MP3Exporter::FindLibrary(), FinishPreferences(), anonymous_namespace{Registry.cpp}::ItemOrdering::Get(), ModulePrefs::GetAllModuleStatuses(), SettingBase::GetConfig(), 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(), EQCurveReader::LoadCurves(), Tags::LoadDefaults(), LoadEncoding(), LoadFFmpeg(), LoadOtherFormat(), ToolBar::MakeButtonBackgroundsLarge(), ToolBar::MakeButtonBackgroundsSmall(), CommandManager::Options::MakeCheckFn(), EnumSettingBase::Migrate(), SpectrogramSettings::ColorSchemeEnumSetting::Migrate(), TracksViewModeEnumSetting::Migrate(), MP3Exporter::MP3Exporter(), CommandManager::NewIdentifier(), FileHistory::NotifyMenus(), NyqBench::NyqBench(), ViewActions::Handler::OnAdvancedVZoom(), anonymous_namespace{TrackMenus.cpp}::OnAlign(), ApplyMacroDialog::OnApplyToFiles(), AdornedRulerPanel::OnAutoScroll(), PrefsDialog::OnCancel(), BrowserDialog::OnClose(), ScreenshotBigDialog::OnClose(), FrequencyPlotDialog::OnCloseButton(), ScreenshotBigDialog::OnCloseWindow(), AudioPasteDialog::OnContinue(), anonymous_namespace{EditMenus.cpp}::OnCut(), anonymous_namespace{LabelMenus.cpp}::OnCutLabels(), ScreenshotBigDialog::OnDirChoose(), SplashDialog::OnDontShow(), TagsEditorDialog::OnDontShow(), AudacityApp::OnExit(), ExportMultipleDialog::OnExport(), ExportFFmpegOptions::OnExportPresets(), NyqBench::OnFind(), NyqBench::OnFindDialog(), KeyConfigPrefs::OnImportDefaults(), ExportFFmpegOptions::OnImportPresets(), ExportMP3Options::OnMono(), anonymous_namespace{TrackMenus.cpp}::OnMoveSelectionWithTracks(), PrefsDialog::OnOK(), ExportFFmpegOptions::OnOK(), SoundActivatedRecordDialog::OnOK(), TagsEditorDialog::OnOk(), TimerRecordDialog::OnOK(), FFmpegNotFoundDialog::OnOk(), NyqBench::OnOpen(), anonymous_namespace{TransportMenus.cpp}::OnPlayAfterSelectionEnd(), anonymous_namespace{TransportMenus.cpp}::OnPlayAfterSelectionStart(), anonymous_namespace{TransportMenus.cpp}::OnPlayBeforeAndAfterSelectionEnd(), anonymous_namespace{TransportMenus.cpp}::OnPlayBeforeAndAfterSelectionStart(), anonymous_namespace{TransportMenus.cpp}::OnPlayBeforeSelectionEnd(), anonymous_namespace{TransportMenus.cpp}::OnPlayBeforeSelectionStart(), MeterPanel::OnPreferences(), ProjectAudioManager::OnRecord(), anonymous_namespace{PluginMenus.cpp}::OnResetConfig(), NyqBench::OnSaveAs(), TagsEditorDialog::OnSaveDefaults(), LabelTrackMenuTable::OnSetFont(), ViewActions::Handler::OnShowClipping(), ViewActions::Handler::OnShowExtraMenus(), ViewActions::Handler::OnShowNameOverlay(), anonymous_namespace{TrackMenus.cpp}::OnSyncLock(), AdornedRulerPanel::OnSyncSelToQuickPlay(), DirectoriesPrefs::OnTempBrowse(), anonymous_namespace{TimerRecordDialog.cpp}::OnTimerRecord(), anonymous_namespace{TransportMenus.cpp}::OnTogglePlayRecording(), anonymous_namespace{TransportMenus.cpp}::OnToggleSoundActivated(), anonymous_namespace{TransportMenus.cpp}::OnToggleSWPlaythrough(), anonymous_namespace{LabelMenus.cpp}::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(), Exporter::Process(), NyquistEffect::Process(), EffectPaulstretch::ProcessOne(), PerTrackEffect::ProcessPass(), ProjectRate::ProjectRate(), ProjectSettings::ProjectSettings(), ToolBarConfiguration::Read(), ToolManager::ReadConfig(), Importer::ReadImportItems(), anonymous_namespace{NoiseReduction.cpp}::readPrefs(), LabelDialog::ReadSize(), ReadSnapMode(), ReadSnapTo(), 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(), Importer::SetDefaultOpenType(), AudioSetupToolBar::SetDevices(), DeviceToolBar::SetDevices(), GUISettings::SetLang(), Importer::SetLastOpenType(), ProjectTimeSignature::SetLowerTimeSignature(), CommandManager::SetMaxList(), ModuleSettings::SetModuleStatus(), ExportMP3::SetNumExportChannels(), TracksPrefs::SetPinnedHeadPositionPreference(), TracksPrefs::SetPinnedHeadPreference(), Journal::SetRecordEnabled(), ProjectSnap::SetSnapMode(), ProjectSnap::SetSnapTo(), ProjectTimeSignature::SetTempo(), ProjectTimeSignature::SetUpperTimeSignature(), 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(), ToolsToolBar::ToolsToolBar(), ShuttlePrefs::TransferBool(), ExportCLOptions::TransferDataFromWindow(), ExportFFmpegAC3Options::TransferDataFromWindow(), ExportFFmpegAACOptions::TransferDataFromWindow(), ExportFFmpegAMRNBOptions::TransferDataFromWindow(), ExportFFmpegOPUSOptions::TransferDataFromWindow(), ExportFFmpegWMAOptions::TransferDataFromWindow(), ExportFLACOptions::TransferDataFromWindow(), ExportMP3Options::TransferDataFromWindow(), ExportOGGOptions::TransferDataFromWindow(), ExportWavPackOptions::TransferDataFromWindow(), TimerRecordDialog::TransferDataFromWindow(), ExportFFmpegCustomOptions::TransferDataToWindow(), ShuttlePrefs::TransferDouble(), ShuttlePrefs::TransferInt(), ShuttlePrefs::TransferString(), anonymous_namespace{TransportMenus.cpp}::TransportMenu(), ProjectSelectionManager::TT_SetAudioTimeFormat(), cloud::audiocom::OAuthService::UnlinkAccount(), EQCurveReader::UpdateDefaultCurves(), ViewInfo::UpdatePrefs(), AdornedRulerPanel::UpdatePrefs(), MenuManager::UpdatePrefs(), NavigationActions::Handler::UpdatePrefs(), SelectActions::Handler::UpdatePrefs(), ProjectSettings::UpdatePrefs(), ControlToolBar::UpdatePrefs(), SelectionBar::UpdatePrefs(), MeterPanel::UpdatePrefs(), ViewInfo::UpdateSelectedPrefs(), TrackArtist::UpdateSelectedPrefs(), anonymous_namespace{SelectionBar.cpp}::UpdateSelectionMode(), cloud::audiocom::UserService::UpdateUserData(), 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().