diff --git a/include/audacity/ComponentInterface.h b/include/audacity/ComponentInterface.h index bebb9b1ca..5f7a68721 100644 --- a/include/audacity/ComponentInterface.h +++ b/include/audacity/ComponentInterface.h @@ -48,66 +48,8 @@ STRINGS_API const wxString& GetCustomTranslation(const wxString& str1 ); -/**************************************************************************//** - -\brief ComponentInterfaceSymbol pairs a persistent string identifier used internally -with an optional, different string as msgid for lookup in a translation catalog. -\details If there is need to change a msgid in a later version of the -program, change the constructor call to supply a second argument but leave the -first the same, so that compatibility of older configuration files containing -that internal string is not broken. -********************************************************************************/ -class ComponentInterfaceSymbol -{ -public: - ComponentInterfaceSymbol() = default; - - // Allows implicit construction from a msgid re-used as an internal string - ComponentInterfaceSymbol( const TranslatableString &msgid ) - : mInternal{ msgid.MSGID().GET(), }, mMsgid{ msgid } - {} - - // Allows implicit construction from an internal string re-used as a msgid - ComponentInterfaceSymbol( const wxString &internal ) - : mInternal{ internal }, mMsgid{ internal, {} } - {} - - // Allows implicit construction from an internal string re-used as a msgid - ComponentInterfaceSymbol( const wxChar *msgid ) - : mInternal{ msgid }, mMsgid{ msgid, {} } - {} - - // Two-argument version distinguishes internal from translatable string - // such as when the first squeezes spaces out - ComponentInterfaceSymbol( const Identifier &internal, - const TranslatableString &msgid ) - : mInternal{ internal.GET() } - // Do not permit non-empty msgid with empty internal - , mMsgid{ internal.empty() ? TranslatableString{} : msgid } - {} - - const wxString &Internal() const { return mInternal; } - const TranslatableString &Msgid() const { return mMsgid; } - const TranslatableString Stripped() const { return mMsgid.Stripped(); } - const wxString Translation() const { return mMsgid.Translation(); } - const wxString StrippedTranslation() const - { return Stripped().Translation(); } - - bool empty() const { return mInternal.empty(); } - - friend inline bool operator == ( - const ComponentInterfaceSymbol &a, const ComponentInterfaceSymbol &b ) - { return a.mInternal == b.mInternal; } - - friend inline bool operator != ( - const ComponentInterfaceSymbol &a, const ComponentInterfaceSymbol &b ) - { return !( a == b ); } - -private: - wxString mInternal; - TranslatableString mMsgid; -}; - +class ComponentInterfaceSymbol; +using VendorSymbol = ComponentInterfaceSymbol; class ShuttleParams; diff --git a/include/audacity/EffectAutomationParameters.h b/include/audacity/EffectAutomationParameters.h index 0a99b22f0..60c797803 100644 --- a/include/audacity/EffectAutomationParameters.h +++ b/include/audacity/EffectAutomationParameters.h @@ -50,6 +50,7 @@ #include #include "ComponentInterface.h" +#include "ComponentInterfaceSymbol.h" /** diff --git a/include/audacity/EffectInterface.h b/include/audacity/EffectInterface.h index cf6ed40a3..64c3a1200 100755 --- a/include/audacity/EffectInterface.h +++ b/include/audacity/EffectInterface.h @@ -46,6 +46,7 @@ #include "Identifier.h" #include "audacity/ComponentInterface.h" +#include "ComponentInterfaceSymbol.h" #include "audacity/ConfigInterface.h" #include "audacity/EffectAutomationParameters.h" // for command automation diff --git a/include/audacity/Types.h b/include/audacity/Types.h index 60a338baf..8b00333f9 100644 --- a/include/audacity/Types.h +++ b/include/audacity/Types.h @@ -256,17 +256,4 @@ typedef enum ChannelNameBottomFrontRight, } ChannelName, *ChannelNames; -// ---------------------------------------------------------------------------- -// some frequently needed forward declarations -// ---------------------------------------------------------------------------- - -class ComponentInterfaceSymbol; - -using EnumValueSymbol = ComponentInterfaceSymbol; -using NumericFormatSymbol = EnumValueSymbol; - -using VendorSymbol = ComponentInterfaceSymbol; - -using EffectFamilySymbol = ComponentInterfaceSymbol; - #endif // __AUDACITY_TYPES_H__ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a8466beee..00808d3a7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -120,6 +120,7 @@ list( APPEND SOURCES Clipboard.h CommonCommandFlags.cpp CommonCommandFlags.h + ComponentInterfaceSymbol.h CrashReport.cpp CrashReport.h DarkThemeAsCeeCode.h diff --git a/src/ComponentInterfaceSymbol.h b/src/ComponentInterfaceSymbol.h index bebb9b1ca..e9e58503a 100644 --- a/src/ComponentInterfaceSymbol.h +++ b/src/ComponentInterfaceSymbol.h @@ -1,52 +1,18 @@ /********************************************************************** - Audacity: A Digital Audio Editor + Audacity: A Digital Audio Editor - ComponentInterface.h + @file ComponentInterfaceSymbol.h - Leland Lucius + Paul Licameli split from ComponentInterface.h - Copyright (c) 2014, Audacity Team - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - **********************************************************************/ -#ifndef __AUDACITY_COMPONENT_INTERFACE_H__ -#define __AUDACITY_COMPONENT_INTERFACE_H__ +#ifndef __AUDACITY_COMPONENT_INTERFACE_SYMBOL__ +#define __AUDACITY_COMPONENT_INTERFACE_SYMBOL__ #include "Identifier.h" -#include "audacity/Types.h" -#include // member variables - -STRINGS_API const wxString& GetCustomTranslation(const wxString& str1 ); +#include "Internat.h" /**************************************************************************//** @@ -108,41 +74,9 @@ private: TranslatableString mMsgid; }; +// TODO: real type distinctions for these aliases, and move them elsewhere +using EnumValueSymbol = ComponentInterfaceSymbol; +using NumericFormatSymbol = EnumValueSymbol; +using EffectFamilySymbol = ComponentInterfaceSymbol; -class ShuttleParams; - -/**************************************************************************//** - -\brief ComponentInterface provides name / vendor / version functions to identify -plugins. It is what makes a class a plug-in. Additionally it provides an -optional parameter definitions function, for those components such as commands, -effects and (soon) preference pagess that define parameters. -********************************************************************************/ -class AUDACITY_DLL_API ComponentInterface /* not final */ -{ -public: - virtual ~ComponentInterface() {}; - - // These should return an untranslated value - virtual PluginPath GetPath() = 0; - - // The internal string persists in configuration files - // So config compatibility will break if it is changed across Audacity versions - virtual ComponentInterfaceSymbol GetSymbol() = 0; - - virtual VendorSymbol GetVendor() = 0; - - virtual wxString GetVersion() = 0; - - // This returns a translated string - // Any verb should be present tense indicative, not imperative - virtual TranslatableString GetDescription() = 0; - - // non-virtual convenience function - TranslatableString GetName(); - - // Parameters, if defined. false means no defined parameters. - virtual bool DefineParams( ShuttleParams & WXUNUSED(S) ){ return false;}; -}; - -#endif // __AUDACITY_IDENTINTERFACE_H__ +#endif diff --git a/src/Prefs.h b/src/Prefs.h index 95da48bb0..766900f78 100644 --- a/src/Prefs.h +++ b/src/Prefs.h @@ -39,6 +39,7 @@ #include #include "../include/audacity/ComponentInterface.h" +#include "ComponentInterfaceSymbol.h" #include "wxArrayStringEx.h" #include "widgets/FileConfig.h" diff --git a/src/ProjectSelectionManager.h b/src/ProjectSelectionManager.h index eb4072b06..26cfebe15 100644 --- a/src/ProjectSelectionManager.h +++ b/src/ProjectSelectionManager.h @@ -14,6 +14,7 @@ Paul Licameli split from ProjectManager.cpp #include "ClientData.h" // to inherit #include "toolbars/SelectionBarListener.h" // to inherit #include "toolbars/SpectralSelectionBarListener.h" // to inherit +#include "ComponentInterfaceSymbol.h" class AudacityProject; diff --git a/src/Shuttle.h b/src/Shuttle.h index 1b22a8abf..183b84455 100644 --- a/src/Shuttle.h +++ b/src/Shuttle.h @@ -12,6 +12,7 @@ #define __AUDACITY_SHUTTLE__ #include "../include/audacity/ComponentInterface.h" +#include "ComponentInterfaceSymbol.h" class ComponentInterfaceSymbol; class WrappedType; diff --git a/src/ShuttleGetDefinition.cpp b/src/ShuttleGetDefinition.cpp index 1655875ca..fe0653445 100644 --- a/src/ShuttleGetDefinition.cpp +++ b/src/ShuttleGetDefinition.cpp @@ -9,6 +9,7 @@ **********************************************************************/ #include "ShuttleGetDefinition.h" +#include "ComponentInterfaceSymbol.h" bool ShuttleGetDefinition::IsOptional(){ bool result = pOptionalFlag !=NULL; diff --git a/src/toolbars/SelectionBarListener.h b/src/toolbars/SelectionBarListener.h index 82823b0f2..b9d652c63 100644 --- a/src/toolbars/SelectionBarListener.h +++ b/src/toolbars/SelectionBarListener.h @@ -12,6 +12,7 @@ #define __AUDACITY_SELECTION_BAR_LISTENER__ #include "audacity/Types.h" +#include "ComponentInterfaceSymbol.h" class SelectedRegion; diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h b/src/tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h index 6735a9e4d..bf25aa982 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h @@ -11,7 +11,7 @@ Paul Licameli split from class WaveTrack #ifndef __AUDACITY_WAVE_TRACK_VIEW_CONSTANTS__ #define __AUDACITY_WAVE_TRACK_VIEW_CONSTANTS__ -#include "audacity/ComponentInterface.h" // for EnumValueSymbol +#include "ComponentInterfaceSymbol.h" // for EnumValueSymbol namespace WaveTrackViewConstants { diff --git a/src/widgets/NumericTextCtrl.h b/src/widgets/NumericTextCtrl.h index f32a83f48..41544c443 100644 --- a/src/widgets/NumericTextCtrl.h +++ b/src/widgets/NumericTextCtrl.h @@ -19,6 +19,7 @@ #include #include "../../include/audacity/ComponentInterface.h" +#include "ComponentInterfaceSymbol.h" #include #include // for wxUSE_* macros #include