From 2d0394796ed0dad359da120f4d82fdf8ec3b8431 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Sun, 7 Feb 2021 21:17:45 -0500 Subject: [PATCH] Facade class for basic UI, injection of a wxWidgets implementation... ... but none of the methods is defined yet. The intention is to inject dependencies on wxWidgets (or other) toolkit so that lower-level files have less build dependency on wxCore classes or on the event loop. Original commit: d20cf012556a819e68515d86bb66a2c047007539 Signed-off-by: Panagiotis Vasilopoulos --- libraries/CMakeLists.txt | 1 + libraries/lib-basic-ui/BasicUI.cpp | 25 + libraries/lib-basic-ui/BasicUI.h | 47 ++ libraries/lib-basic-ui/CMakeLists.txt | 23 + src/AudacityApp.cpp | 24 +- src/CMakeLists.txt | 1082 +++++++++++++++++++++---- src/widgets/wxWidgetsBasicUI.cpp | 12 + src/widgets/wxWidgetsBasicUI.h | 23 + 8 files changed, 1066 insertions(+), 171 deletions(-) create mode 100644 libraries/lib-basic-ui/BasicUI.cpp create mode 100644 libraries/lib-basic-ui/BasicUI.h create mode 100644 libraries/lib-basic-ui/CMakeLists.txt create mode 100644 src/widgets/wxWidgetsBasicUI.cpp create mode 100644 src/widgets/wxWidgetsBasicUI.h diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index 21c06a373..ebb1f5fc8 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -7,6 +7,7 @@ set( LIBRARIES lib-strings lib-utility lib-components + lib-basic-ui ) foreach( LIBRARY ${LIBRARIES} ) diff --git a/libraries/lib-basic-ui/BasicUI.cpp b/libraries/lib-basic-ui/BasicUI.cpp new file mode 100644 index 000000000..bda996756 --- /dev/null +++ b/libraries/lib-basic-ui/BasicUI.cpp @@ -0,0 +1,25 @@ +/*!******************************************************************** + +Audacity: A Digital Audio Editor + +@file BasicUI.cpp + +Paul Licameli + +**********************************************************************/ +#include "BasicUI.h" + +namespace BasicUI { +Services::~Services() = default; + +static Services *theInstance = nullptr; + +Services *Get() { return theInstance; } + +Services *Install(Services *pInstance) +{ + auto result = theInstance; + theInstance = pInstance; + return result; +} +} diff --git a/libraries/lib-basic-ui/BasicUI.h b/libraries/lib-basic-ui/BasicUI.h new file mode 100644 index 000000000..2a9c89b28 --- /dev/null +++ b/libraries/lib-basic-ui/BasicUI.h @@ -0,0 +1,47 @@ +/*!******************************************************************** + +Audacity: A Digital Audio Editor + +@file BasicUI.h +@brief Toolkit-neutral facade for basic user interface services + +Paul Licameli + +**********************************************************************/ +#ifndef __AUDACITY_BASIC_UI__ +#define __AUDACITY_BASIC_UI__ + +namespace BasicUI { + +//! @name Types used in the Services interface +//! @{ + +//! @} + +//! Abstract class defines a few user interface services, not mentioning particular toolkits +/*! The intention is that the application supplies a concrete implementation at + startup. Most code will not use this class directly, but call the inline + functions that follow. */ +class BASIC_UI_API Services { +public: + virtual ~Services(); +}; + +//! Fetch the global instance, or nullptr if none is yet installed +BASIC_UI_API Services *Get(); + +//! Install an implementation; return the previously installed instance +BASIC_UI_API Services *Install(Services *pInstance); + +/*! @name Functions that invoke global Services + These dispatch to the global Services, if supplied. If none was supplied, + they are mostly no-ops, with exceptions as noted. All should be called on + the main thread only, except as noted. + */ +//! @{ + +//! @} +} + + +#endif diff --git a/libraries/lib-basic-ui/CMakeLists.txt b/libraries/lib-basic-ui/CMakeLists.txt new file mode 100644 index 000000000..c733d7f1e --- /dev/null +++ b/libraries/lib-basic-ui/CMakeLists.txt @@ -0,0 +1,23 @@ +#[[ +This library defines a facade interface, BasicUI::Services, for a few basic +interactions with the user, such as showing simple dialog boxes, and for +enqueuing actions to the event loop, and yielding to to the event dispatcher. + +The interface makes no mention of classes in wxWidgets. Using this library +instead of making direct use of wxWidgets enlarges the parts of the program +that are toolkit neutral. + +There is a global pointer to an instance of Services, and the main program is +expected, at startup, to create a static instance of a subclass of Services and +set the pointer. If it does not, then calls to the non-member functions in +namespace BasicUI are no-ops. +]]# + +set( SOURCES + BasicUI.cpp + BasicUI.h +) +audacity_library( lib-basic-ui "${SOURCES}" + "" + "" "" +) diff --git a/src/AudacityApp.cpp b/src/AudacityApp.cpp index 4fab923aa..f716588ef 100644 --- a/src/AudacityApp.cpp +++ b/src/AudacityApp.cpp @@ -110,6 +110,7 @@ It handles initialization and termination by subclassing wxApp. #include "tracks/ui/Scrubbing.h" #include "widgets/FileConfig.h" #include "widgets/FileHistory.h" +#include "widgets/wxWidgetsBasicUI.h" #ifdef EXPERIMENTAL_EASY_CHANGE_KEY_BINDINGS #include "prefs/KeyConfigPrefs.h" @@ -975,17 +976,22 @@ bool AudacityApp::OnInit() { // Ensure we have an event loop during initialization wxEventLoopGuarantor eventLoop; - // Fire up SQLite - if (!ProjectFileIO::InitializeSQL()) - this->CallAfter([] { - ::AudacityMessageBox( - XO("SQLite library failed to initialize. Audacity cannot continue.")); - QuitAudacity(true); - }); + // Inject basic GUI services behind the facade + { + static wxWidgetsBasicUI uiServices; + (void)BasicUI::Install(&uiServices); + } + // Fire up SQLite + if ( !ProjectFileIO::InitializeSQL() ) + this->CallAfter([]{ + ::AudacityMessageBox( + XO("SQLite library failed to initialize. Audacity cannot continue.") ); + QuitAudacity( true ); + }); - // cause initialization of wxWidgets' global logger target - (void)AudacityLogger::Get(); + // cause initialization of wxWidgets' global logger target + (void)AudacityLogger::Get(); #if defined(__WXMAC__) // Disable window animation diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8e91f5ff6..a3fd8a369 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -409,168 +409,926 @@ list( APPEND SOURCES PRIVATE commands/Validators.h ) -# ~~~ -# Effects source files -# ~~~ -list( APPEND SOURCES PRIVATE - # Built-in effects - effects/Amplify.cpp - effects/Amplify.h - effects/AutoDuck.cpp - effects/AutoDuck.h - effects/BassTreble.cpp - effects/BassTreble.h - effects/Biquad.cpp - effects/Biquad.h - effects/ChangePitch.cpp - effects/ChangePitch.h - effects/ChangeSpeed.cpp - effects/ChangeSpeed.h - effects/ChangeTempo.cpp - effects/ChangeTempo.h - effects/ClickRemoval.cpp - effects/ClickRemoval.h - effects/Compressor.cpp - effects/Compressor.h - effects/Contrast.cpp - effects/Contrast.h - effects/Distortion.cpp - effects/Distortion.h - effects/DtmfGen.cpp - effects/DtmfGen.h - effects/EBUR128.cpp - effects/EBUR128.h - effects/Echo.cpp - effects/Echo.h - effects/Effect.cpp - effects/Effect.h - effects/EffectManager.cpp - effects/EffectManager.h - effects/EffectUI.cpp - effects/EffectUI.h - effects/Equalization.cpp - effects/Equalization.h - effects/Equalization48x.cpp - effects/Equalization48x.h - effects/Fade.cpp - effects/Fade.h - effects/FindClipping.cpp - effects/FindClipping.h - effects/Generator.cpp - effects/Generator.h - effects/Invert.cpp - effects/Invert.h - effects/LoadEffects.cpp - effects/LoadEffects.h - effects/Loudness.cpp - effects/Loudness.h - effects/Noise.cpp - effects/Noise.h - effects/NoiseReduction.cpp - effects/NoiseReduction.h - effects/NoiseRemoval.cpp - effects/NoiseRemoval.h - effects/Normalize.cpp - effects/Normalize.h - effects/Paulstretch.cpp - effects/Paulstretch.h - effects/Phaser.cpp - effects/Phaser.h - effects/RealtimeEffectManager.cpp - effects/RealtimeEffectManager.h - effects/Repair.cpp - effects/Repair.h - effects/Repeat.cpp - effects/Repeat.h - effects/Reverb.cpp - effects/Reverb.h - effects/Reverb_libSoX.h - effects/Reverse.cpp - effects/Reverse.h - effects/SBSMSEffect.cpp - effects/SBSMSEffect.h - effects/ScienFilter.cpp - effects/ScienFilter.h - effects/ScoreAlignDialog.cpp - effects/ScoreAlignDialog.h - effects/Silence.cpp - effects/Silence.h - effects/SimpleMono.cpp - effects/SimpleMono.h - effects/SoundTouchEffect.cpp - effects/SoundTouchEffect.h - effects/StereoToMono.cpp - effects/StereoToMono.h - effects/TimeScale.cpp - effects/TimeScale.h - effects/TimeWarper.cpp - effects/TimeWarper.h - effects/ToneGen.cpp - effects/ToneGen.h - effects/TruncSilence.cpp - effects/TruncSilence.h - effects/TwoPassSimpleMono.cpp - effects/TwoPassSimpleMono.h - effects/Wahwah.cpp - effects/Wahwah.h - # VST effects - $<$: - effects/VST/VSTControl.h - effects/VST/VSTEffect.cpp - effects/VST/VSTEffect.h - effects/VST/aeffectx.h - > - $<$,$>: - effects/VST/VSTControlGTK.cpp - effects/VST/VSTControlGTK.h - > - $<$,$>: - effects/VST/VSTControlMSW.cpp - effects/VST/VSTControlMSW.h - > - $<$,$>: - effects/VST/VSTControlOSX.h - effects/VST/VSTControlOSX.mm - > - # Audio Unit effects - $<$,$>: - effects/audiounits/AUControl.h - effects/audiounits/AUControl.mm - effects/audiounits/AudioUnitEffect.cpp - effects/audiounits/AudioUnitEffect.h - > - # Ladspa effects - $<$: - effects/ladspa/LadspaEffect.cpp - effects/ladspa/LadspaEffect.h - effects/ladspa/ladspa.h - > - # LV2 effects - $<$: - effects/lv2/LV2Effect.cpp - effects/lv2/LV2Effect.h - effects/lv2/LoadLV2.cpp - effects/lv2/LoadLV2.h - effects/lv2/NativeWindow.h - effects/lv2/lv2_external_ui.h - effects/lv2/zix/common.h - effects/lv2/zix/ring.cpp - effects/lv2/zix/ring.h - > - # Nyquist effects - $<$: - effects/nyquist/LoadNyquist.cpp - effects/nyquist/LoadNyquist.h - effects/nyquist/Nyquist.cpp - effects/nyquist/Nyquist.h - > - # VAMP effects - $<$: - effects/vamp/LoadVamp.cpp - effects/vamp/LoadVamp.h - effects/vamp/VampEffect.cpp - effects/vamp/VampEffect.h - > +list( APPEND SOURCES + PRIVATE + AColor.cpp + AColor.h + AColorResources.h + ActiveProjects.cpp + ActiveProjects.h + AboutDialog.cpp + AboutDialog.h + AdornedRulerPanel.cpp + AdornedRulerPanel.h + AllThemeResources.cpp + AllThemeResources.h + AttachedVirtualFunction.h + AudacityApp.cpp + AudacityApp.h + $<$:AudacityApp.mm> + AudacityException.cpp + AudacityException.h + AudacityFileConfig.cpp + AudacityFileConfig.h + AudacityHeaders.cpp + AudacityHeaders.h + AudacityLogger.cpp + AudacityLogger.h + AudioIO.cpp + AudioIO.h + AudioIOBase.cpp + AudioIOBase.h + AudioIOListener.h + AutoRecoveryDialog.cpp + AutoRecoveryDialog.h + BatchCommandDialog.cpp + BatchCommandDialog.h + BatchCommands.cpp + BatchCommands.h + BatchProcessDialog.cpp + BatchProcessDialog.h + Benchmark.cpp + Benchmark.h + CellularPanel.cpp + CellularPanel.h + ClassicThemeAsCeeCode.h + ClientData.h + ClientDataHelpers.h + Clipboard.cpp + Clipboard.h + CommonCommandFlags.cpp + CommonCommandFlags.h + DarkThemeAsCeeCode.h + DBConnection.cpp + DBConnection.h + DeviceChange.cpp + DeviceChange.h + DeviceManager.cpp + DeviceManager.h + Diags.cpp + Diags.h + Dither.cpp + Dither.h + Envelope.cpp + Envelope.h + EnvelopeEditor.cpp + EnvelopeEditor.h + FFT.cpp + FFT.h + FFmpeg.cpp + FFmpeg.h + FileException.cpp + FileException.h + FileFormats.cpp + FileFormats.h + FileIO.cpp + FileIO.h + FileNames.cpp + FileNames.h + FreqWindow.cpp + FreqWindow.h + HelpText.cpp + HelpText.h + HiContrastThemeAsCeeCode.h + HistoryWindow.cpp + HistoryWindow.h + HitTestResult.h + ImageManipulation.cpp + ImageManipulation.h + InconsistencyException.cpp + InconsistencyException.h + InterpolateAudio.cpp + InterpolateAudio.h + KeyboardCapture.cpp + KeyboardCapture.h + LabelDialog.cpp + LabelDialog.h + LabelTrack.cpp + LabelTrack.h + LangChoice.cpp + LangChoice.h + Legacy.cpp + Legacy.h + LightThemeAsCeeCode.h + Lyrics.cpp + Lyrics.h + LyricsWindow.cpp + LyricsWindow.h + MacroMagic.h + Matrix.cpp + Matrix.h + Menus.cpp + Menus.h + Mix.cpp + Mix.h + MixerBoard.cpp + MixerBoard.h + ModuleManager.cpp + ModuleManager.h + ModuleSettings.cpp + ModuleSettings.h + NoteTrack.cpp + NoteTrack.h + NumberScale.h + PitchName.cpp + PitchName.h + PlatformCompatibility.cpp + PlatformCompatibility.h + PlaybackSchedule.cpp + PlaybackSchedule.h + PluginManager.cpp + PluginManager.h + PluginRegistrationDialog.cpp + PluginRegistrationDialog.h + Prefs.cpp + Prefs.h + Printing.cpp + Printing.h + Profiler.cpp + Profiler.h + Project.cpp + Project.h + ProjectAudioIO.cpp + ProjectAudioIO.h + ProjectAudioManager.cpp + ProjectAudioManager.h + ProjectFileIO.cpp + ProjectFileIO.h + ProjectFileIORegistry.cpp + ProjectFileIORegistry.h + ProjectFileManager.cpp + ProjectFileManager.h + ProjectHistory.cpp + ProjectHistory.h + ProjectManager.cpp + ProjectManager.h + ProjectSelectionManager.cpp + ProjectSelectionManager.h + ProjectSerializer.cpp + ProjectSerializer.h + ProjectSettings.cpp + ProjectSettings.h + ProjectStatus.cpp + ProjectStatus.h + ProjectWindow.cpp + ProjectWindow.h + ProjectWindowBase.cpp + ProjectWindowBase.h + RealFFTf.cpp + RealFFTf.h + RealFFTf48x.cpp + RealFFTf48x.h + RefreshCode.h + Registrar.h + Registry.cpp + Registry.h + Resample.cpp + Resample.h + RingBuffer.cpp + RingBuffer.h + SampleBlock.cpp + SampleBlock.h + SampleFormat.cpp + SampleFormat.h + Screenshot.cpp + Screenshot.h + SelectUtilities.cpp + SelectUtilities.h + SelectedRegion.cpp + SelectedRegion.h + SelectionState.cpp + SelectionState.h + Sequence.cpp + Sequence.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 + SpectrumAnalyst.cpp + SpectrumAnalyst.h + SplashDialog.cpp + SplashDialog.h + SqliteSampleBlock.cpp + SseMathFuncs.cpp + SseMathFuncs.h + Tags.cpp + Tags.h + TempDirectory.cpp + TempDirectory.h + Theme.cpp + Theme.h + ThemeAsCeeCode.h + TimeDialog.cpp + TimeDialog.h + TimeTrack.cpp + TimeTrack.h + TimerRecordDialog.cpp + TimerRecordDialog.h + Track.cpp + Track.h + TrackArtist.cpp + TrackArtist.h + TrackInfo.cpp + TrackInfo.h + TrackPanel.cpp + TrackPanel.h + TrackPanelAx.cpp + TrackPanelAx.h + TrackPanelCell.cpp + TrackPanelCell.h + TrackPanelDrawable.cpp + TrackPanelDrawable.h + TrackPanelDrawingContext.h + TrackPanelListener.h + TrackPanelMouseEvent.h + TrackPanelResizeHandle.cpp + TrackPanelResizeHandle.h + TrackPanelResizerCell.cpp + TrackPanelResizerCell.h + TrackUtilities.cpp + TrackUtilities.h + UIHandle.cpp + UIHandle.h + UndoManager.cpp + UndoManager.h + UserException.cpp + UserException.h + ViewInfo.cpp + ViewInfo.h + VoiceKey.cpp + VoiceKey.h + WaveClip.cpp + WaveClip.h + WaveTrack.cpp + WaveTrack.h + WaveTrackLocation.h + WrappedType.cpp + WrappedType.h + ZoomInfo.cpp + ZoomInfo.h + float_cast.h + wxFileNameWrapper.h + + # Commands + + commands/AppCommandEvent.cpp + commands/AppCommandEvent.h + commands/AudacityCommand.cpp + commands/AudacityCommand.h + commands/BatchEvalCommand.cpp + commands/BatchEvalCommand.h + commands/Command.cpp + commands/Command.h + commands/CommandBuilder.cpp + commands/CommandBuilder.h + commands/CommandContext.cpp + commands/CommandContext.h + commands/CommandDirectory.cpp + commands/CommandDirectory.h + commands/CommandFlag.h + commands/CommandFunctors.h + commands/CommandHandler.cpp + commands/CommandHandler.h + commands/CommandManager.cpp + commands/CommandManager.h + commands/CommandManagerWindowClasses.h + commands/CommandMisc.h + commands/CommandSignature.cpp + commands/CommandSignature.h + commands/CommandTargets.cpp + commands/CommandTargets.h + commands/CommandType.cpp + commands/CommandType.h + commands/CompareAudioCommand.cpp + commands/CompareAudioCommand.h + commands/Demo.cpp + commands/Demo.h + commands/DragCommand.cpp + commands/DragCommand.h + commands/GetInfoCommand.cpp + commands/GetInfoCommand.h + commands/GetTrackInfoCommand.cpp + commands/GetTrackInfoCommand.h + commands/HelpCommand.cpp + commands/HelpCommand.h + commands/ImportExportCommands.cpp + commands/ImportExportCommands.h + commands/Keyboard.cpp + commands/Keyboard.h + commands/LoadCommands.cpp + commands/LoadCommands.h + commands/MessageCommand.cpp + commands/MessageCommand.h + commands/OpenSaveCommands.cpp + commands/OpenSaveCommands.h + commands/PreferenceCommands.cpp + commands/PreferenceCommands.h + commands/ResponseQueue.cpp + commands/ResponseQueue.h + commands/ScreenshotCommand.cpp + commands/ScreenshotCommand.h + commands/ScriptCommandRelay.cpp + commands/ScriptCommandRelay.h + commands/SelectCommand.cpp + commands/SelectCommand.h + commands/SetClipCommand.cpp + commands/SetClipCommand.h + commands/SetEnvelopeCommand.cpp + commands/SetEnvelopeCommand.h + commands/SetLabelCommand.cpp + commands/SetLabelCommand.h + commands/SetProjectCommand.cpp + commands/SetProjectCommand.h + commands/SetTrackInfoCommand.cpp + commands/SetTrackInfoCommand.h + commands/Validators.h + + # Built-in Effects + + effects/Amplify.cpp + effects/Amplify.h + effects/AutoDuck.cpp + effects/AutoDuck.h + effects/BassTreble.cpp + effects/BassTreble.h + effects/Biquad.cpp + effects/Biquad.h + effects/ChangePitch.cpp + effects/ChangePitch.h + effects/ChangeSpeed.cpp + effects/ChangeSpeed.h + effects/ChangeTempo.cpp + effects/ChangeTempo.h + effects/ClickRemoval.cpp + effects/ClickRemoval.h + effects/Compressor.cpp + effects/Compressor.h + effects/Contrast.cpp + effects/Contrast.h + effects/Distortion.cpp + effects/Distortion.h + effects/DtmfGen.cpp + effects/DtmfGen.h + effects/EBUR128.cpp + effects/EBUR128.h + effects/Echo.cpp + effects/Echo.h + effects/Effect.cpp + effects/Effect.h + effects/EffectManager.cpp + effects/EffectManager.h + effects/EffectUI.cpp + effects/EffectUI.h + effects/Equalization.cpp + effects/Equalization.h + effects/Equalization48x.cpp + effects/Equalization48x.h + effects/Fade.cpp + effects/Fade.h + effects/FindClipping.cpp + effects/FindClipping.h + effects/Generator.cpp + effects/Generator.h + effects/Invert.cpp + effects/Invert.h + effects/LoadEffects.cpp + effects/LoadEffects.h + effects/Loudness.cpp + effects/Loudness.h + effects/Noise.cpp + effects/Noise.h + effects/NoiseReduction.cpp + effects/NoiseReduction.h + effects/NoiseRemoval.cpp + effects/NoiseRemoval.h + effects/Normalize.cpp + effects/Normalize.h + effects/Paulstretch.cpp + effects/Paulstretch.h + effects/Phaser.cpp + effects/Phaser.h + effects/RealtimeEffectManager.cpp + effects/RealtimeEffectManager.h + effects/Repair.cpp + effects/Repair.h + effects/Repeat.cpp + effects/Repeat.h + effects/Reverb.cpp + effects/Reverb.h + effects/Reverb_libSoX.h + effects/Reverse.cpp + effects/Reverse.h + effects/SBSMSEffect.cpp + effects/SBSMSEffect.h + effects/ScienFilter.cpp + effects/ScienFilter.h + effects/ScoreAlignDialog.cpp + effects/ScoreAlignDialog.h + effects/Silence.cpp + effects/Silence.h + effects/SimpleMono.cpp + effects/SimpleMono.h + effects/SoundTouchEffect.cpp + effects/SoundTouchEffect.h + effects/StereoToMono.cpp + effects/StereoToMono.h + effects/TimeScale.cpp + effects/TimeScale.h + effects/TimeWarper.cpp + effects/TimeWarper.h + effects/ToneGen.cpp + effects/ToneGen.h + effects/TruncSilence.cpp + effects/TruncSilence.h + effects/TwoPassSimpleMono.cpp + effects/TwoPassSimpleMono.h + effects/Wahwah.cpp + effects/Wahwah.h + + # VST Effects + + $<$: + effects/VST/VSTControl.h + effects/VST/VSTEffect.cpp + effects/VST/VSTEffect.h + effects/VST/aeffectx.h + > + + $<$,$>: + effects/VST/VSTControlGTK.cpp + effects/VST/VSTControlGTK.h + > + + $<$,$>: + effects/VST/VSTControlMSW.cpp + effects/VST/VSTControlMSW.h + > + + $<$,$>: + effects/VST/VSTControlOSX.h + effects/VST/VSTControlOSX.mm + > + + # Audio Unit Effects + + $<$,$>: + effects/audiounits/AUControl.h + effects/audiounits/AUControl.mm + effects/audiounits/AudioUnitEffect.cpp + effects/audiounits/AudioUnitEffect.h + > + + # Ladspa Effects + + $<$: + effects/ladspa/LadspaEffect.cpp + effects/ladspa/LadspaEffect.h + effects/ladspa/ladspa.h + > + + # LV2 Effects + + $<$: + effects/lv2/LV2Effect.cpp + effects/lv2/LV2Effect.h + effects/lv2/LoadLV2.cpp + effects/lv2/LoadLV2.h + effects/lv2/NativeWindow.h + effects/lv2/lv2_external_ui.h + effects/lv2/zix/common.h + effects/lv2/zix/ring.cpp + effects/lv2/zix/ring.h + > + + # Nyquist Effects + + $<$: + effects/nyquist/LoadNyquist.cpp + effects/nyquist/LoadNyquist.h + effects/nyquist/Nyquist.cpp + effects/nyquist/Nyquist.h + > + + # VAMP Effects + + $<$: + effects/vamp/LoadVamp.cpp + effects/vamp/LoadVamp.h + effects/vamp/VampEffect.cpp + effects/vamp/VampEffect.h + > + + # Export + + export/Export.cpp + export/Export.h + + # Standard exporters + export/ExportCL.cpp + export/ExportMP3.cpp + export/ExportMP3.h + export/ExportMultiple.cpp + export/ExportMultiple.h + export/ExportPCM.cpp + + # Optional exporters + $<$: + export/ExportFFmpeg.cpp + export/ExportFFmpegDialogs.cpp + export/ExportFFmpegDialogs.h + > + + $<$: + export/ExportFLAC.cpp + > + + $<$: + export/ExportMP2.cpp + > + + $<$,$>: + export/ExportOGG.cpp + > + + # Import + + import/FormatClassifier.cpp + import/FormatClassifier.h + import/Import.cpp + import/Import.h + import/ImportForwards.h + import/MultiFormatReader.cpp + import/MultiFormatReader.h + import/RawAudioGuess.cpp + import/RawAudioGuess.h + import/SpecPowerMeter.cpp + import/SpecPowerMeter.h + + # Standard importers + + import/ImportAUP.cpp + import/ImportLOF.cpp + import/ImportPCM.cpp + import/ImportPlugin.h + import/ImportPlugin.cpp + import/ImportRaw.cpp + import/ImportRaw.h + + # Optional importers + + $<$: + import/ImportFFmpeg.cpp + > + + $<$: + import/ImportFLAC.cpp + > + + $<$: + import/ImportGStreamer.cpp + > + + $<$: + import/ImportMIDI.cpp + import/ImportMIDI.h + > + + $<$: + import/ImportMP3.cpp + > + + $<$,$>: + import/ImportOGG.cpp + > + + # Menus + + menus/ClipMenus.cpp + menus/EditMenus.cpp + menus/ExtraMenus.cpp + menus/FileMenus.cpp + menus/HelpMenus.cpp + menus/LabelMenus.cpp + menus/NavigationMenus.cpp + menus/PluginMenus.cpp + menus/SelectMenus.cpp + menus/ToolbarMenus.cpp + menus/TrackMenus.cpp + menus/TransportMenus.cpp + menus/ViewMenus.cpp + menus/WindowMenus.cpp + + # Preferences + + prefs/BatchPrefs.cpp + prefs/BatchPrefs.h + prefs/DevicePrefs.cpp + prefs/DevicePrefs.h + prefs/DirectoriesPrefs.cpp + prefs/DirectoriesPrefs.h + prefs/EffectsPrefs.cpp + prefs/EffectsPrefs.h + prefs/ExtImportPrefs.cpp + prefs/ExtImportPrefs.h + prefs/GUIPrefs.cpp + prefs/GUIPrefs.h + prefs/GUISettings.h + prefs/ImportExportPrefs.cpp + prefs/ImportExportPrefs.h + prefs/KeyConfigPrefs.cpp + prefs/KeyConfigPrefs.h + prefs/LibraryPrefs.cpp + prefs/LibraryPrefs.h + prefs/MidiIOPrefs.cpp + prefs/MidiIOPrefs.h + prefs/ModulePrefs.cpp + prefs/ModulePrefs.h + prefs/MousePrefs.cpp + prefs/MousePrefs.h + prefs/PlaybackPrefs.cpp + prefs/PlaybackPrefs.h + prefs/PrefsDialog.cpp + prefs/PrefsDialog.h + prefs/PrefsPanel.cpp + prefs/PrefsPanel.h + prefs/QualityPrefs.cpp + prefs/QualityPrefs.h + prefs/QualitySettings.cpp + prefs/QualitySettings.h + prefs/RecordingPrefs.cpp + prefs/RecordingPrefs.h + prefs/SpectrogramSettings.cpp + prefs/SpectrogramSettings.h + prefs/SpectrumPrefs.cpp + prefs/SpectrumPrefs.h + prefs/ThemePrefs.cpp + prefs/ThemePrefs.h + prefs/TracksBehaviorsPrefs.cpp + prefs/TracksBehaviorsPrefs.h + prefs/TracksPrefs.cpp + prefs/TracksPrefs.h + prefs/WarningsPrefs.cpp + prefs/WarningsPrefs.h + prefs/WaveformPrefs.cpp + prefs/WaveformPrefs.h + prefs/WaveformSettings.cpp + prefs/WaveformSettings.h + + # Toolbars + + toolbars/ControlToolBar.cpp + toolbars/ControlToolBar.h + toolbars/DeviceToolBar.cpp + toolbars/DeviceToolBar.h + toolbars/EditToolBar.cpp + toolbars/EditToolBar.h + toolbars/MeterToolBar.cpp + toolbars/MeterToolBar.h + toolbars/ScrubbingToolBar.cpp + toolbars/ScrubbingToolBar.h + toolbars/SelectionBar.cpp + toolbars/SelectionBar.h + toolbars/SelectionBarListener.h + toolbars/SpectralSelectionBar.cpp + toolbars/SpectralSelectionBar.h + toolbars/SpectralSelectionBarListener.h + toolbars/TimeToolBar.cpp + toolbars/TimeToolBar.h + toolbars/ToolBar.cpp + toolbars/ToolBar.h + toolbars/ToolDock.cpp + toolbars/ToolDock.h + toolbars/ToolManager.cpp + toolbars/ToolManager.h + toolbars/ToolsToolBar.cpp + toolbars/ToolsToolBar.h + toolbars/TranscriptionToolBar.cpp + toolbars/TranscriptionToolBar.h + + # Tracks + + tracks/labeltrack/ui/LabelDefaultClickHandle.cpp + tracks/labeltrack/ui/LabelDefaultClickHandle.h + tracks/labeltrack/ui/LabelGlyphHandle.cpp + tracks/labeltrack/ui/LabelGlyphHandle.h + tracks/labeltrack/ui/LabelTextHandle.cpp + tracks/labeltrack/ui/LabelTextHandle.h + tracks/labeltrack/ui/LabelTrackControls.cpp + tracks/labeltrack/ui/LabelTrackControls.h + tracks/labeltrack/ui/LabelTrackShifter.cpp + tracks/labeltrack/ui/LabelTrackVRulerControls.cpp + tracks/labeltrack/ui/LabelTrackVRulerControls.h + tracks/labeltrack/ui/LabelTrackView.cpp + tracks/labeltrack/ui/LabelTrackView.h + tracks/playabletrack/notetrack/ui/NoteTrackAffordanceControls.h + tracks/playabletrack/notetrack/ui/NoteTrackAffordanceControls.cpp + tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.cpp + tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.h + tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp + tracks/playabletrack/notetrack/ui/NoteTrackControls.h + tracks/playabletrack/notetrack/ui/NoteTrackShifter.cpp + tracks/playabletrack/notetrack/ui/NoteTrackSliderHandles.cpp + tracks/playabletrack/notetrack/ui/NoteTrackSliderHandles.h + tracks/playabletrack/notetrack/ui/NoteTrackVRulerControls.cpp + tracks/playabletrack/notetrack/ui/NoteTrackVRulerControls.h + tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp + tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h + tracks/playabletrack/notetrack/ui/NoteTrackView.cpp + tracks/playabletrack/notetrack/ui/NoteTrackView.h + tracks/playabletrack/notetrack/ui/StretchHandle.cpp + tracks/playabletrack/notetrack/ui/StretchHandle.h + tracks/playabletrack/ui/PlayableTrackButtonHandles.cpp + tracks/playabletrack/ui/PlayableTrackButtonHandles.h + tracks/playabletrack/ui/PlayableTrackControls.cpp + tracks/playabletrack/ui/PlayableTrackControls.h + tracks/playabletrack/wavetrack/ui/CutlineHandle.cpp + tracks/playabletrack/wavetrack/ui/CutlineHandle.h + tracks/playabletrack/wavetrack/ui/SampleHandle.cpp + tracks/playabletrack/wavetrack/ui/SampleHandle.h + tracks/playabletrack/wavetrack/ui/SpectrumVRulerControls.cpp + tracks/playabletrack/wavetrack/ui/SpectrumVRulerControls.h + tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp + tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.h + tracks/playabletrack/wavetrack/ui/SpectrumView.cpp + tracks/playabletrack/wavetrack/ui/SpectrumView.h + tracks/playabletrack/wavetrack/ui/WaveTrackAffordanceControls.cpp + tracks/playabletrack/wavetrack/ui/WaveTrackAffordanceControls.h + tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp + tracks/playabletrack/wavetrack/ui/WaveTrackControls.h + tracks/playabletrack/wavetrack/ui/WaveTrackShifter.cpp + tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp + tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.h + tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp + tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.h + tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.cpp + tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.h + tracks/playabletrack/wavetrack/ui/WaveTrackView.cpp + tracks/playabletrack/wavetrack/ui/WaveTrackView.h + tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.cpp + tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h + tracks/playabletrack/wavetrack/ui/WaveformVRulerControls.cpp + tracks/playabletrack/wavetrack/ui/WaveformVRulerControls.h + tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp + tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.h + tracks/playabletrack/wavetrack/ui/WaveformView.cpp + tracks/playabletrack/wavetrack/ui/WaveformView.h + tracks/timetrack/ui/TimeTrackControls.cpp + tracks/timetrack/ui/TimeTrackControls.h + tracks/timetrack/ui/TimeTrackVRulerControls.cpp + tracks/timetrack/ui/TimeTrackVRulerControls.h + tracks/timetrack/ui/TimeTrackVZoomHandle.cpp + tracks/timetrack/ui/TimeTrackVZoomHandle.h + tracks/timetrack/ui/TimeTrackView.cpp + tracks/timetrack/ui/TimeTrackView.h + + # Tracks UI + + tracks/ui/AffordanceHandle.cpp + tracks/ui/AffordanceHandle.h + tracks/ui/BackgroundCell.cpp + tracks/ui/BackgroundCell.h + tracks/ui/ButtonHandle.cpp + tracks/ui/ButtonHandle.h + tracks/ui/CommonTrackControls.cpp + tracks/ui/CommonTrackControls.h + tracks/ui/CommonTrackPanelCell.cpp + tracks/ui/CommonTrackPanelCell.h + tracks/ui/CommonTrackView.cpp + tracks/ui/CommonTrackView.h + tracks/ui/EditCursorOverlay.cpp + tracks/ui/EditCursorOverlay.h + tracks/ui/EnvelopeHandle.cpp + tracks/ui/EnvelopeHandle.h + tracks/ui/PlayIndicatorOverlay.cpp + tracks/ui/PlayIndicatorOverlay.h + tracks/ui/ScrubUI.cpp + tracks/ui/ScrubUI.h + tracks/ui/Scrubbing.cpp + tracks/ui/Scrubbing.h + tracks/ui/SelectHandle.cpp + tracks/ui/SelectHandle.h + tracks/ui/SliderHandle.cpp + tracks/ui/SliderHandle.h + tracks/ui/TimeShiftHandle.cpp + tracks/ui/TimeShiftHandle.h + tracks/ui/TrackButtonHandles.cpp + tracks/ui/TrackButtonHandles.h + tracks/ui/TrackControls.cpp + tracks/ui/TrackControls.h + tracks/ui/TrackSelectHandle.cpp + tracks/ui/TrackSelectHandle.h + tracks/ui/TrackVRulerControls.cpp + tracks/ui/TrackVRulerControls.h + tracks/ui/TrackView.cpp + tracks/ui/TrackView.h + tracks/ui/ZoomHandle.cpp + tracks/ui/ZoomHandle.h + + # ui helpers + ui/AccessibleLinksFormatter.h + ui/AccessibleLinksFormatter.cpp + + # Widgets + + widgets/AButton.cpp + widgets/AButton.h + widgets/ASlider.cpp + widgets/ASlider.h + widgets/AttachableScrollBar.cpp + widgets/AttachableScrollBar.h + widgets/AudacityMessageBox.cpp + widgets/AudacityMessageBox.h + widgets/BackedPanel.cpp + widgets/BackedPanel.h + widgets/ErrorDialog.cpp + widgets/ErrorDialog.h + widgets/ExpandingToolBar.cpp + widgets/ExpandingToolBar.h + widgets/FileConfig.cpp + widgets/FileConfig.h + widgets/FileDialog/FileDialog.cpp + widgets/FileDialog/FileDialog.h + $<$: + widgets/FileDialog/win/FileDialogPrivate.cpp + widgets/FileDialog/win/FileDialogPrivate.h + > + $<$: + widgets/FileDialog/mac/FileDialogPrivate.mm + widgets/FileDialog/mac/FileDialogPrivate.h + > + $<$: + widgets/FileDialog/gtk/FileDialogPrivate.cpp + widgets/FileDialog/gtk/FileDialogPrivate.h + > + widgets/FileHistory.cpp + widgets/FileHistory.h + widgets/Grabber.cpp + widgets/Grabber.h + widgets/Grid.cpp + widgets/Grid.h + widgets/HelpSystem.cpp + widgets/HelpSystem.h + widgets/HtmlWindow.cpp + widgets/HtmlWindow.h + widgets/ImageRoll.cpp + widgets/ImageRoll.h + widgets/KeyView.cpp + widgets/KeyView.h + widgets/Meter.cpp + widgets/Meter.h + widgets/MeterPanelBase.cpp + widgets/MeterPanelBase.h + widgets/MultiDialog.cpp + widgets/MultiDialog.h + widgets/NumericTextCtrl.cpp + widgets/NumericTextCtrl.h + widgets/Overlay.cpp + widgets/Overlay.h + widgets/OverlayPanel.cpp + widgets/OverlayPanel.h + widgets/PopupMenuTable.cpp + widgets/PopupMenuTable.h + widgets/ProgressDialog.cpp + widgets/ProgressDialog.h + widgets/ReadOnlyText.h + widgets/Ruler.cpp + widgets/Ruler.h + widgets/UnwritableLocationErrorDialog.cpp + widgets/UnwritableLocationErrorDialog.h + widgets/Warning.cpp + widgets/Warning.h + widgets/WindowAccessible.cpp + widgets/WindowAccessible.h + widgets/numformatter.cpp + widgets/numformatter.h + widgets/valnum.cpp + widgets/valnum.h + widgets/wxPanelWrapper.cpp + widgets/wxPanelWrapper.h + widgets/wxTextCtrlWrapper.h + widgets/wxWidgetsBasicUI.cpp + widgets/wxWidgetsBasicUI.h + + # XML handling + xml/XMLFileReader.cpp + xml/XMLFileReader.h + xml/XMLTagHandler.cpp + xml/XMLTagHandler.h + xml/XMLWriter.cpp + xml/XMLWriter.h + xml/audacityproject.dtd + + Experimental.cmake ) # ~~~ diff --git a/src/widgets/wxWidgetsBasicUI.cpp b/src/widgets/wxWidgetsBasicUI.cpp new file mode 100644 index 000000000..dc2479dcf --- /dev/null +++ b/src/widgets/wxWidgetsBasicUI.cpp @@ -0,0 +1,12 @@ +/*!******************************************************************** + +Audacity: A Digital Audio Editor + +@file wxWidgetsBasicUI.cpp + +Paul Licameli + +**********************************************************************/ +#include "wxWidgetsBasicUI.h" + +wxWidgetsBasicUI::~wxWidgetsBasicUI() = default; diff --git a/src/widgets/wxWidgetsBasicUI.h b/src/widgets/wxWidgetsBasicUI.h new file mode 100644 index 000000000..d4077970a --- /dev/null +++ b/src/widgets/wxWidgetsBasicUI.h @@ -0,0 +1,23 @@ +/*!******************************************************************** + +Audacity: A Digital Audio Editor + +@file wxWidgetsBasicUI.h +@brief Implementation of BasicUI using wxWidgets + +Paul Licameli + +**********************************************************************/ +#ifndef __WXWIDGETS_BASIC_UI__ +#define __WXWIDGETS_BASIC_UI__ + +#include "BasicUI.h" + +//! An implementation of BasicUI::Services in terms of the wxWidgets toolkit +/*! This is a singleton that doesn't need AUDACITY_DLL_API visibility */ +class wxWidgetsBasicUI final : public BasicUI::Services { +public: + ~wxWidgetsBasicUI() override; +}; + +#endif