From e110f66ff8c58cd01cd86506a41545339e208f25 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Sun, 19 Jan 2020 20:53:03 -0500 Subject: [PATCH] PrefsPanel classes registered; PrefsDialog.cpp independent of headers --- src/prefs/BatchPrefs.cpp | 15 ++++-- src/prefs/BatchPrefs.h | 3 -- src/prefs/DevicePrefs.cpp | 14 +++--- src/prefs/DevicePrefs.h | 3 -- src/prefs/DirectoriesPrefs.cpp | 6 +++ src/prefs/EffectsPrefs.cpp | 13 +++-- src/prefs/EffectsPrefs.h | 4 -- src/prefs/ExtImportPrefs.cpp | 13 +++-- src/prefs/ExtImportPrefs.h | 3 -- src/prefs/GUIPrefs.cpp | 13 +++-- src/prefs/GUIPrefs.h | 3 -- src/prefs/ImportExportPrefs.cpp | 14 ++++-- src/prefs/ImportExportPrefs.h | 3 -- src/prefs/KeyConfigPrefs.cpp | 5 ++ src/prefs/LibraryPrefs.cpp | 15 ++++-- src/prefs/LibraryPrefs.h | 2 - src/prefs/MidiIOPrefs.cpp | 15 ++++-- src/prefs/MidiIOPrefs.h | 2 - src/prefs/ModulePrefs.cpp | 17 +++++-- src/prefs/ModulePrefs.h | 2 - src/prefs/MousePrefs.cpp | 13 +++-- src/prefs/MousePrefs.h | 2 - src/prefs/PlaybackPrefs.cpp | 14 +++--- src/prefs/PlaybackPrefs.h | 4 -- src/prefs/PrefsDialog.cpp | 81 +++--------------------------- src/prefs/ProjectsPrefs.cpp | 17 +++++-- src/prefs/ProjectsPrefs.h | 2 - src/prefs/QualityPrefs.cpp | 13 +++-- src/prefs/QualityPrefs.h | 2 - src/prefs/RecordingPrefs.cpp | 13 +++-- src/prefs/RecordingPrefs.h | 2 - src/prefs/SpectrumPrefs.cpp | 7 +++ src/prefs/ThemePrefs.cpp | 17 +++++-- src/prefs/ThemePrefs.h | 2 - src/prefs/TracksBehaviorsPrefs.cpp | 13 +++-- src/prefs/TracksBehaviorsPrefs.h | 4 -- src/prefs/TracksPrefs.cpp | 14 ++++-- src/prefs/TracksPrefs.h | 2 - src/prefs/WarningsPrefs.cpp | 13 +++-- src/prefs/WarningsPrefs.h | 2 - src/prefs/WaveformPrefs.cpp | 8 +++ 41 files changed, 198 insertions(+), 212 deletions(-) diff --git a/src/prefs/BatchPrefs.cpp b/src/prefs/BatchPrefs.cpp index 0e2778644..535f5c6a9 100644 --- a/src/prefs/BatchPrefs.cpp +++ b/src/prefs/BatchPrefs.cpp @@ -95,9 +95,14 @@ BatchPrefs::~BatchPrefs() { } -PrefsPanel::Factory -BatchPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew BatchPrefs(parent, winid); +#if 0 +namespace{ +PrefsPanel::Registration sAttachment{ 190, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew BatchPrefs(parent, winid); + } }; +} +#endif diff --git a/src/prefs/BatchPrefs.h b/src/prefs/BatchPrefs.h index f732669e8..4be21e6fa 100644 --- a/src/prefs/BatchPrefs.h +++ b/src/prefs/BatchPrefs.h @@ -38,7 +38,4 @@ private: DECLARE_EVENT_TABLE() }; - -/// A PrefsPanel::Factory that creates one BatchPrefs panel. -extern PrefsPanel::Factory BatchPrefsFactory; #endif diff --git a/src/prefs/DevicePrefs.cpp b/src/prefs/DevicePrefs.cpp index cbf8631ea..8ecc90c42 100644 --- a/src/prefs/DevicePrefs.cpp +++ b/src/prefs/DevicePrefs.cpp @@ -422,10 +422,12 @@ bool DevicePrefs::Commit() return true; } -PrefsPanel::Factory -DevicePrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) - -{ - wxASSERT(parent); // to justify safenew - return safenew DevicePrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 10, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew DevicePrefs(parent, winid); + } }; +} diff --git a/src/prefs/DevicePrefs.h b/src/prefs/DevicePrefs.h index e98bad9aa..c8bdc22b4 100644 --- a/src/prefs/DevicePrefs.h +++ b/src/prefs/DevicePrefs.h @@ -57,7 +57,4 @@ class DevicePrefs final : public PrefsPanel DECLARE_EVENT_TABLE() }; -/// A PrefsPanel::Factory that creates one DevicePrefs panel. -extern PrefsPanel::Factory DevicePrefsFactory; - #endif diff --git a/src/prefs/DirectoriesPrefs.cpp b/src/prefs/DirectoriesPrefs.cpp index d3c5e83eb..909058b62 100644 --- a/src/prefs/DirectoriesPrefs.cpp +++ b/src/prefs/DirectoriesPrefs.cpp @@ -298,3 +298,9 @@ DirectoriesPrefsFactory() { return safenew DirectoriesPrefs(parent, winid); }; } + +namespace{ +PrefsPanel::Registration sAttachment{ 150, + DirectoriesPrefsFactory() }; +}; + diff --git a/src/prefs/EffectsPrefs.cpp b/src/prefs/EffectsPrefs.cpp index 407f6c1d2..f632e64b7 100644 --- a/src/prefs/EffectsPrefs.cpp +++ b/src/prefs/EffectsPrefs.cpp @@ -250,9 +250,12 @@ bool EffectsPrefs::Commit() return true; } -PrefsPanel::Factory -EffectsPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew EffectsPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 170, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew EffectsPrefs(parent, winid); + } }; +} diff --git a/src/prefs/EffectsPrefs.h b/src/prefs/EffectsPrefs.h index 997fd6c5a..30aa373ee 100644 --- a/src/prefs/EffectsPrefs.h +++ b/src/prefs/EffectsPrefs.h @@ -38,9 +38,5 @@ class EffectsPrefs final : public PrefsPanel void Populate(); }; -/// A PrefsPanel::Factory that creates one EffectsPrefs panel. -extern PrefsPanel::Factory EffectsPrefsFactory; - extern ChoiceSetting EffectsGroupBy; - #endif diff --git a/src/prefs/ExtImportPrefs.cpp b/src/prefs/ExtImportPrefs.cpp index 4a06a2b16..964e468c1 100644 --- a/src/prefs/ExtImportPrefs.cpp +++ b/src/prefs/ExtImportPrefs.cpp @@ -826,9 +826,12 @@ void ExtImportPrefsDropTarget::OnLeave() { } -PrefsPanel::Factory -ExtImportPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew ExtImportPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 120, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew ExtImportPrefs(parent, winid); + } }; +} diff --git a/src/prefs/ExtImportPrefs.h b/src/prefs/ExtImportPrefs.h index ee7eb77a5..ce1a080be 100644 --- a/src/prefs/ExtImportPrefs.h +++ b/src/prefs/ExtImportPrefs.h @@ -113,7 +113,4 @@ class ExtImportPrefs final : public PrefsPanel DECLARE_EVENT_TABLE() }; - -/// A PrefsPanel::Factory that creates one ExtImportPrefs panel. -extern PrefsPanel::Factory ExtImportPrefsFactory; #endif diff --git a/src/prefs/GUIPrefs.cpp b/src/prefs/GUIPrefs.cpp index e8e4e41ca..b9f50b63c 100644 --- a/src/prefs/GUIPrefs.cpp +++ b/src/prefs/GUIPrefs.cpp @@ -377,9 +377,12 @@ int ShowClippingPrefsID() return value; } -PrefsPanel::Factory -GUIPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew GUIPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 60, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew GUIPrefs(parent, winid); + } }; +} diff --git a/src/prefs/GUIPrefs.h b/src/prefs/GUIPrefs.h index 3dfcc8789..55365d842 100644 --- a/src/prefs/GUIPrefs.h +++ b/src/prefs/GUIPrefs.h @@ -64,9 +64,6 @@ class GUIPrefs final : public PrefsPanel int mDefaultRangeIndex; }; -/// A PrefsPanel::Factory that creates one GUIPrefs panel. -extern PrefsPanel::Factory GUIPrefsFactory; - int ShowClippingPrefsID(); extern ChoiceSetting diff --git a/src/prefs/ImportExportPrefs.cpp b/src/prefs/ImportExportPrefs.cpp index 56c86296d..0f16a5109 100644 --- a/src/prefs/ImportExportPrefs.cpp +++ b/src/prefs/ImportExportPrefs.cpp @@ -149,9 +149,13 @@ bool ImportExportPrefs::Commit() return true; } -PrefsPanel::Factory -ImportExportPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew ImportExportPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 110, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew ImportExportPrefs(parent, winid); + }, + 1 }; +} diff --git a/src/prefs/ImportExportPrefs.h b/src/prefs/ImportExportPrefs.h index f4af7f42f..95fcb8eee 100644 --- a/src/prefs/ImportExportPrefs.h +++ b/src/prefs/ImportExportPrefs.h @@ -42,7 +42,4 @@ class ImportExportPrefs final : public PrefsPanel void Populate(); }; -/// A PrefsPanel::Factory that creates one ImportExportPrefs panel. -extern PrefsPanel::Factory ImportExportPrefsFactory; - #endif diff --git a/src/prefs/KeyConfigPrefs.cpp b/src/prefs/KeyConfigPrefs.cpp index 7dc87a1d2..9c10c2066 100644 --- a/src/prefs/KeyConfigPrefs.cpp +++ b/src/prefs/KeyConfigPrefs.cpp @@ -722,3 +722,8 @@ KeyConfigPrefsFactory( const CommandID &name ) return result; }; } +namespace{ +PrefsPanel::Registration sAttachment{ 200, + KeyConfigPrefsFactory() +}; +} diff --git a/src/prefs/LibraryPrefs.cpp b/src/prefs/LibraryPrefs.cpp index d54759127..83cc8c063 100644 --- a/src/prefs/LibraryPrefs.cpp +++ b/src/prefs/LibraryPrefs.cpp @@ -261,9 +261,14 @@ bool LibraryPrefs::Commit() return true; } -PrefsPanel::Factory -LibraryPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew LibraryPrefs(parent, winid); +#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || !defined(DISABLE_DYNAMIC_LOADING_LAME) +namespace{ +PrefsPanel::Registration sAttachment{ 140, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew LibraryPrefs(parent, winid); + } }; +} +#endif diff --git a/src/prefs/LibraryPrefs.h b/src/prefs/LibraryPrefs.h index f508707bf..886a3afef 100644 --- a/src/prefs/LibraryPrefs.h +++ b/src/prefs/LibraryPrefs.h @@ -50,6 +50,4 @@ class LibraryPrefs final : public PrefsPanel DECLARE_EVENT_TABLE() }; -/// A PrefsPanel::Factory that creates one LibraryPrefs panel. -extern PrefsPanel::Factory LibraryPrefsFactory; #endif diff --git a/src/prefs/MidiIOPrefs.cpp b/src/prefs/MidiIOPrefs.cpp index 79395c676..ddd854bbf 100644 --- a/src/prefs/MidiIOPrefs.cpp +++ b/src/prefs/MidiIOPrefs.cpp @@ -301,11 +301,16 @@ bool MidiIOPrefs::Validate() return true; } -PrefsPanel::Factory -MidiIOPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew MidiIOPrefs(parent, winid); +#ifdef EXPERIMENTAL_MIDI_OUT +namespace{ +PrefsPanel::Registration sAttachment{ 40, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew MidiIOPrefs(parent, winid); + } }; +} +#endif #endif diff --git a/src/prefs/MidiIOPrefs.h b/src/prefs/MidiIOPrefs.h index e845f3299..b22fb73ad 100644 --- a/src/prefs/MidiIOPrefs.h +++ b/src/prefs/MidiIOPrefs.h @@ -68,8 +68,6 @@ class MidiIOPrefs final : public PrefsPanel DECLARE_EVENT_TABLE() }; -/// A PrefsPanel::Factory that creates one MidiIOPrefs panel. -extern PrefsPanel::Factory MidiIOPrefsFactory; #endif #endif diff --git a/src/prefs/ModulePrefs.cpp b/src/prefs/ModulePrefs.cpp index 9745edb84..604159b40 100644 --- a/src/prefs/ModulePrefs.cpp +++ b/src/prefs/ModulePrefs.cpp @@ -18,6 +18,8 @@ with names like mnod-script-pipe that add NEW features. #include "../Audacity.h" #include "ModulePrefs.h" +#include "Experimental.h" + #include #include @@ -187,9 +189,14 @@ void ModulePrefs::SetModuleStatus(const FilePath &fname, int iStatus){ gPrefs->Flush(); } -PrefsPanel::Factory -ModulePrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew ModulePrefs(parent, winid); +#ifdef EXPERIMENTAL_MODULE_PREFS +namespace{ +PrefsPanel::Registration sAttachment{ 220, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew ModulePrefs(parent, winid); + } }; +} +#endif diff --git a/src/prefs/ModulePrefs.h b/src/prefs/ModulePrefs.h index 1e4fdc301..6ec489a25 100644 --- a/src/prefs/ModulePrefs.h +++ b/src/prefs/ModulePrefs.h @@ -55,6 +55,4 @@ class ModulePrefs final : public PrefsPanel FilePaths mPaths; }; -/// A PrefsPanel::Factory that creates one ModulePrefs panel. -extern PrefsPanel::Factory ModulePrefsFactory; #endif diff --git a/src/prefs/MousePrefs.cpp b/src/prefs/MousePrefs.cpp index 3a228a37b..705c379c2 100644 --- a/src/prefs/MousePrefs.cpp +++ b/src/prefs/MousePrefs.cpp @@ -222,9 +222,12 @@ bool MousePrefs::Commit() return true; } -PrefsPanel::Factory -MousePrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew MousePrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 210, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew MousePrefs(parent, winid); + } }; +} diff --git a/src/prefs/MousePrefs.h b/src/prefs/MousePrefs.h index bbbe56982..618afe47d 100644 --- a/src/prefs/MousePrefs.h +++ b/src/prefs/MousePrefs.h @@ -42,6 +42,4 @@ class MousePrefs final : public PrefsPanel wxListCtrl * mList; }; -/// A PrefsPanel::Factory that creates one MousePrefs panel. -extern PrefsPanel::Factory MousePrefsFactory; #endif diff --git a/src/prefs/PlaybackPrefs.cpp b/src/prefs/PlaybackPrefs.cpp index 5a0767e09..1b4f57fb5 100644 --- a/src/prefs/PlaybackPrefs.cpp +++ b/src/prefs/PlaybackPrefs.cpp @@ -182,10 +182,12 @@ bool PlaybackPrefs::Commit() return true; } -PrefsPanel::Factory -PlaybackPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew PlaybackPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 20, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew PlaybackPrefs(parent, winid); + } }; - +} diff --git a/src/prefs/PlaybackPrefs.h b/src/prefs/PlaybackPrefs.h index 400bb7db8..f58e2e798 100644 --- a/src/prefs/PlaybackPrefs.h +++ b/src/prefs/PlaybackPrefs.h @@ -38,8 +38,4 @@ class PlaybackPrefs final : public PrefsPanel void Populate(); }; - -/// A PrefsPanel::Factory that creates one PlaybackPrefs panel. -extern PrefsPanel::Factory PlaybackPrefsFactory; - #endif diff --git a/src/prefs/PrefsDialog.cpp b/src/prefs/PrefsDialog.cpp index d39952289..951819270 100644 --- a/src/prefs/PrefsDialog.cpp +++ b/src/prefs/PrefsDialog.cpp @@ -17,8 +17,6 @@ #include "../Audacity.h" // for USE_* macros #include "PrefsDialog.h" -#include "../Experimental.h" - #include #include // for wxUSE_* macros #include @@ -40,33 +38,7 @@ #include "../Prefs.h" #include "../ShuttleGui.h" -#include "BatchPrefs.h" -#include "DevicePrefs.h" -#include "DirectoriesPrefs.h" -#include "EffectsPrefs.h" -#include "GUIPrefs.h" -#include "ImportExportPrefs.h" -#include "KeyConfigPrefs.h" -#include "LibraryPrefs.h" -#include "MousePrefs.h" -#ifdef EXPERIMENTAL_MODULE_PREFS -#include "ModulePrefs.h" -#endif -#include "PlaybackPrefs.h" -#include "ProjectsPrefs.h" -#include "QualityPrefs.h" -#include "RecordingPrefs.h" -#include "SpectrumPrefs.h" -#include "ThemePrefs.h" -#include "TracksPrefs.h" -#include "TracksBehaviorsPrefs.h" -#include "WarningsPrefs.h" -// #include "WaveformPrefs.h" -#include "ExtImportPrefs.h" - -#ifdef EXPERIMENTAL_MIDI_OUT -#include "MidiIOPrefs.h" -#endif +#include "PrefsPanel.h" #include "../widgets/HelpSystem.h" @@ -511,51 +483,14 @@ PrefsPanel::Registration::Registration( unsigned sequenceNumber, PrefsDialog::Factories &PrefsDialog::DefaultFactories() { - // To do, perhaps: create this table by registration, without including each PrefsPanel - // class... and thus allowing a plug-in protocol + static Factories factories; + static std::once_flag flag; - static PrefsNode nodes[] = { - DevicePrefsFactory, - PlaybackPrefsFactory, - RecordingPrefsFactory, -#ifdef EXPERIMENTAL_MIDI_OUT - MidiIOPrefsFactory, -#endif - QualityPrefsFactory, - GUIPrefsFactory, - - // Group other page(s) - PrefsNode(TracksPrefsFactory, 2), - // WaveformPrefsFactory(), - TracksBehaviorsPrefsFactory, - SpectrumPrefsFactory(), - - // Group one other page - PrefsNode(ImportExportPrefsFactory, 1), - ExtImportPrefsFactory, - -#ifdef EXPERIMENTAL_OD_DATA - ProjectsPrefsFactory, -#endif - -#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || !defined(DISABLE_DYNAMIC_LOADING_LAME) - LibraryPrefsFactory, -#endif - DirectoriesPrefsFactory(), - WarningsPrefsFactory, - EffectsPrefsFactory, -#ifdef EXPERIMENTAL_THEME_PREFS - ThemePrefsFactory, -#endif - // &batchPrefsFactory, - KeyConfigPrefsFactory(), - MousePrefsFactory, -#ifdef EXPERIMENTAL_MODULE_PREFS - ModulePrefsFactory, -#endif - }; - - static Factories factories(nodes, nodes + sizeof(nodes) / sizeof(nodes[0])); + std::call_once( flag, []{ + for ( const auto &entry : Registry() ) { + factories.push_back( entry.node ); + } + } ); return factories; } diff --git a/src/prefs/ProjectsPrefs.cpp b/src/prefs/ProjectsPrefs.cpp index cc20ba59f..092ab3e03 100644 --- a/src/prefs/ProjectsPrefs.cpp +++ b/src/prefs/ProjectsPrefs.cpp @@ -19,6 +19,8 @@ handling. #include "../Audacity.h" #include "ProjectsPrefs.h" +#include "../Experimental.h" + #include #include @@ -95,9 +97,14 @@ bool ProjectsPrefs::Commit() return true; } -PrefsPanel::Factory -ProjectsPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew ProjectsPrefs(parent, winid); +#ifdef EXPERIMENTAL_OD_DATA +namespace{ +PrefsPanel::Registration sAttachment{ 130, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew ProjectsPrefs(parent, winid); + } }; +} +#endif diff --git a/src/prefs/ProjectsPrefs.h b/src/prefs/ProjectsPrefs.h index 66c14d97a..39e4ff74b 100644 --- a/src/prefs/ProjectsPrefs.h +++ b/src/prefs/ProjectsPrefs.h @@ -37,6 +37,4 @@ class ProjectsPrefs final : public PrefsPanel void Populate(); }; -/// A PrefsPanel::Factory that creates one ProjectPrefs panel. -extern PrefsPanel::Factory ProjectsPrefsFactory; #endif diff --git a/src/prefs/QualityPrefs.cpp b/src/prefs/QualityPrefs.cpp index eab6c8fcf..88a424bc0 100644 --- a/src/prefs/QualityPrefs.cpp +++ b/src/prefs/QualityPrefs.cpp @@ -233,12 +233,15 @@ bool QualityPrefs::Commit() return true; } -PrefsPanel::Factory -QualityPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew QualityPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 50, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew QualityPrefs(parent, winid); + } }; +} sampleFormat QualityPrefs::SampleFormatChoice() { diff --git a/src/prefs/QualityPrefs.h b/src/prefs/QualityPrefs.h index cff97c5d1..395e9c8af 100644 --- a/src/prefs/QualityPrefs.h +++ b/src/prefs/QualityPrefs.h @@ -56,6 +56,4 @@ class QualityPrefs final : public PrefsPanel DECLARE_EVENT_TABLE() }; -/// A PrefsPanel::Factory that creates one QualityPrefs panel. -extern PrefsPanel::Factory QualityPrefsFactory; #endif diff --git a/src/prefs/RecordingPrefs.cpp b/src/prefs/RecordingPrefs.cpp index e66308915..bf04ed74e 100644 --- a/src/prefs/RecordingPrefs.cpp +++ b/src/prefs/RecordingPrefs.cpp @@ -304,9 +304,12 @@ void RecordingPrefs::OnToggleCustomName(wxCommandEvent & /* Evt */) mToggleCustomName->Enable(mUseCustomTrackName); } -PrefsPanel::Factory -RecordingPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew RecordingPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 30, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew RecordingPrefs(parent, winid); + } }; +} diff --git a/src/prefs/RecordingPrefs.h b/src/prefs/RecordingPrefs.h index 220009fba..c97ef0999 100644 --- a/src/prefs/RecordingPrefs.h +++ b/src/prefs/RecordingPrefs.h @@ -63,6 +63,4 @@ class RecordingPrefs final : public PrefsPanel DECLARE_EVENT_TABLE() }; -/// A PrefsPanel::Factory that creates one RecordingPrefs panel. -extern PrefsPanel::Factory RecordingPrefsFactory; #endif diff --git a/src/prefs/SpectrumPrefs.cpp b/src/prefs/SpectrumPrefs.cpp index 5fe2dae89..09dcb0ec7 100644 --- a/src/prefs/SpectrumPrefs.cpp +++ b/src/prefs/SpectrumPrefs.cpp @@ -600,3 +600,10 @@ SpectrumPrefsFactory( WaveTrack *wt ) return safenew SpectrumPrefs(parent, winid, pProject, wt); }; } + +namespace{ +PrefsPanel::Registration sAttachment{ 100, + SpectrumPrefsFactory( nullptr ), + false +}; +} diff --git a/src/prefs/ThemePrefs.cpp b/src/prefs/ThemePrefs.cpp index 891e8b659..2d1d0ddfd 100644 --- a/src/prefs/ThemePrefs.cpp +++ b/src/prefs/ThemePrefs.cpp @@ -31,6 +31,8 @@ Provides: #include "../Audacity.h" #include "ThemePrefs.h" +#include "../Experimental.h" + #include #include #include "../Prefs.h" @@ -229,9 +231,14 @@ bool ThemePrefs::Commit() return true; } -PrefsPanel::Factory -ThemePrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew ThemePrefs(parent, winid); +#ifdef EXPERIMENTAL_THEME_PREFS +namespace{ +PrefsPanel::Registration sAttachment{ 180, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew ThemePrefs(parent, winid); + } }; +} +#endif diff --git a/src/prefs/ThemePrefs.h b/src/prefs/ThemePrefs.h index 4c659a1f3..9be36ded8 100644 --- a/src/prefs/ThemePrefs.h +++ b/src/prefs/ThemePrefs.h @@ -53,6 +53,4 @@ class ThemePrefs final : public PrefsPanel DECLARE_EVENT_TABLE() }; -/// A PrefsPanel::Factory that creates one ThemePrefs panel. -extern PrefsPanel::Factory ThemePrefsFactory; #endif diff --git a/src/prefs/TracksBehaviorsPrefs.cpp b/src/prefs/TracksBehaviorsPrefs.cpp index e299ff5f1..2cd89ff79 100644 --- a/src/prefs/TracksBehaviorsPrefs.cpp +++ b/src/prefs/TracksBehaviorsPrefs.cpp @@ -131,9 +131,12 @@ bool TracksBehaviorsPrefs::Commit() return true; } -PrefsPanel::Factory -TracksBehaviorsPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew TracksBehaviorsPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 90, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew TracksBehaviorsPrefs(parent, winid); + } }; +} diff --git a/src/prefs/TracksBehaviorsPrefs.h b/src/prefs/TracksBehaviorsPrefs.h index 9261516c9..c15d28665 100644 --- a/src/prefs/TracksBehaviorsPrefs.h +++ b/src/prefs/TracksBehaviorsPrefs.h @@ -41,9 +41,5 @@ class TracksBehaviorsPrefs final : public PrefsPanel void PopulateOrExchange(ShuttleGui & S) override; }; -/// A PrefsPanel::Factory that creates one TracksBehaviorsPrefs panel. -extern PrefsPanel::Factory TracksBehaviorsPrefsFactory; - extern ChoiceSetting TracksBehaviorsSolo; - #endif diff --git a/src/prefs/TracksPrefs.cpp b/src/prefs/TracksPrefs.cpp index 48b13de94..2916cc2ab 100644 --- a/src/prefs/TracksPrefs.cpp +++ b/src/prefs/TracksPrefs.cpp @@ -447,9 +447,13 @@ bool TracksPrefs::Commit() return true; } -PrefsPanel::Factory -TracksPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew TracksPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 70, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew TracksPrefs(parent, winid); + }, + 2 }; +} diff --git a/src/prefs/TracksPrefs.h b/src/prefs/TracksPrefs.h index ba84a85a3..6e751e95e 100644 --- a/src/prefs/TracksPrefs.h +++ b/src/prefs/TracksPrefs.h @@ -56,6 +56,4 @@ class TracksPrefs final : public PrefsPanel static int iPreferencePinned; }; -/// A PrefsPanel::Factory that creates one TracksPrefs panel. -extern PrefsPanel::Factory TracksPrefsFactory; #endif diff --git a/src/prefs/WarningsPrefs.cpp b/src/prefs/WarningsPrefs.cpp index 4bd23133a..2ad2a306f 100644 --- a/src/prefs/WarningsPrefs.cpp +++ b/src/prefs/WarningsPrefs.cpp @@ -106,9 +106,12 @@ bool WarningsPrefs::Commit() return true; } -PrefsPanel::Factory -WarningsPrefsFactory = [](wxWindow *parent, wxWindowID winid, AudacityProject *) -{ - wxASSERT(parent); // to justify safenew - return safenew WarningsPrefs(parent, winid); +namespace{ +PrefsPanel::Registration sAttachment{ 160, + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew WarningsPrefs(parent, winid); + } }; +} diff --git a/src/prefs/WarningsPrefs.h b/src/prefs/WarningsPrefs.h index 6c47a8e9e..d6064756a 100644 --- a/src/prefs/WarningsPrefs.h +++ b/src/prefs/WarningsPrefs.h @@ -37,6 +37,4 @@ class WarningsPrefs final : public PrefsPanel void PopulateOrExchange(ShuttleGui & S) override; }; -/// A PrefsPanel::Factory that creates one WarningPrefs panel. -extern PrefsPanel::Factory WarningsPrefsFactory; #endif diff --git a/src/prefs/WaveformPrefs.cpp b/src/prefs/WaveformPrefs.cpp index c2099a5de..c9159f6a1 100644 --- a/src/prefs/WaveformPrefs.cpp +++ b/src/prefs/WaveformPrefs.cpp @@ -263,3 +263,11 @@ WaveformPrefsFactory(WaveTrack *wt) return safenew WaveformPrefs(parent, winid, pProject, wt); }; } +#if 0 +namespace{ +PrefsPanel::Registration sAttachment{ 80, + WaveformPrefsFactory( nullptr ), + false +}; +} +#endif