From a43c9a53378d6ae62dce92a1310a46cf66102b26 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Tue, 4 Feb 2020 11:55:40 -0500 Subject: [PATCH] Identifier not wxString in ctors of registry items --- src/Menus.cpp | 6 +++--- src/commands/CommandManager.h | 37 ++++++++++++++++++----------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/Menus.cpp b/src/Menus.cpp index 361a38b62..06007c3d2 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -197,7 +197,7 @@ void MenuVisitor::DoSeparator() namespace MenuTable { -MenuItem::MenuItem( const wxString &internalName, +MenuItem::MenuItem( const Identifier &internalName, const TranslatableString &title_, BaseItemPtrs &&items_ ) : ConcreteGroupItem< false, MenuVisitor >{ internalName, std::move( items_ ) }, title{ title_ } @@ -207,7 +207,7 @@ MenuItem::MenuItem( const wxString &internalName, MenuItem::~MenuItem() {} ConditionalGroupItem::ConditionalGroupItem( - const wxString &internalName, Condition condition_, BaseItemPtrs &&items_ ) + const Identifier &internalName, Condition condition_, BaseItemPtrs &&items_ ) : ConcreteGroupItem< false, MenuVisitor >{ internalName, std::move( items_ ) }, condition{ condition_ } { @@ -226,7 +226,7 @@ CommandItem::CommandItem(const CommandID &name_, {} CommandItem::~CommandItem() {} -CommandGroupItem::CommandGroupItem(const wxString &name_, +CommandGroupItem::CommandGroupItem(const Identifier &name_, std::vector< ComponentInterfaceSymbol > items_, CommandFunctorPointer callback_, CommandFlag flags_, diff --git a/src/commands/CommandManager.h b/src/commands/CommandManager.h index c3bb7bcd7..6eb9d661a 100644 --- a/src/commands/CommandManager.h +++ b/src/commands/CommandManager.h @@ -697,11 +697,11 @@ namespace MenuTable { struct MenuItem final : ConcreteGroupItem< false, MenuVisitor > { // Construction from an internal name and a previously built-up // vector of pointers - MenuItem( const wxString &internalName, + MenuItem( const Identifier &internalName, const TranslatableString &title_, BaseItemPtrs &&items_ ); // In-line, variadic constructor that doesn't require building a vector template< typename... Args > - MenuItem( const wxString &internalName, + MenuItem( const Identifier &internalName, const TranslatableString &title_, Args&&... args ) : ConcreteGroupItem< false, MenuVisitor >{ internalName, std::forward(args)... } @@ -719,11 +719,11 @@ namespace MenuTable { // Construction from an internal name and a previously built-up // vector of pointers - ConditionalGroupItem( const wxString &internalName, + ConditionalGroupItem( const Identifier &internalName, Condition condition_, BaseItemPtrs &&items_ ); // In-line, variadic constructor that doesn't require building a vector template< typename... Args > - ConditionalGroupItem( const wxString &internalName, + ConditionalGroupItem( const Identifier &internalName, Condition condition_, Args&&... args ) : ConcreteGroupItem< false, MenuVisitor >{ internalName, std::forward(args)... } @@ -794,7 +794,7 @@ namespace MenuTable { // and dispatch to one common callback, which will be passed a number // in the CommandContext identifying the command struct CommandGroupItem final : SingleItem { - CommandGroupItem(const wxString &name_, + CommandGroupItem(const Identifier &name_, std::vector< ComponentInterfaceSymbol > items_, CommandFunctorPointer callback_, CommandFlag flags_, @@ -804,7 +804,7 @@ namespace MenuTable { // Takes a pointer to member function directly, and delegates to the // previous constructor; useful within the lifetime of a FinderScope template< typename Handler > - CommandGroupItem(const wxString &name_, + CommandGroupItem(const Identifier &name_, std::vector< ComponentInterfaceSymbol > items_, void (Handler::*pmf)(const CommandContext&), CommandFlag flags_, @@ -830,7 +830,7 @@ namespace MenuTable { { using Appender = std::function< void( AudacityProject&, wxMenu& ) >; - explicit SpecialItem( const wxString &internalName, const Appender &fn_ ) + explicit SpecialItem( const Identifier &internalName, const Appender &fn_ ) : SingleItem{ internalName } , fn{ fn_ } {} @@ -843,7 +843,8 @@ namespace MenuTable { struct MenuPart : ConcreteGroupItem< Transparent, MenuVisitor > { template< typename... Args > - MenuPart( const wxString &internalName, Args&&... args ) + explicit + MenuPart( const Identifier &internalName, Args&&... args ) : ConcreteGroupItem< Transparent, MenuVisitor >{ internalName, std::forward< Args >( args )... } {} @@ -863,7 +864,7 @@ namespace MenuTable { // stable across Audacity versions. template< typename... Args > inline std::unique_ptr< MenuItems > Items( - const wxString &internalName, Args&&... args ) + const Identifier &internalName, Args&&... args ) { return std::make_unique< MenuItems >( internalName, std::forward(args)... ); } @@ -874,7 +875,7 @@ namespace MenuTable { // might clarify the logical groupings. template< typename... Args > inline std::unique_ptr< MenuSection > Section( - const wxString &internalName, Args&&... args ) + const Identifier &internalName, Args&&... args ) { return std::make_unique< MenuSection >( internalName, std::forward(args)... ); } @@ -886,11 +887,11 @@ namespace MenuTable { // by path. template< typename... Args > inline std::unique_ptr Menu( - const wxString &internalName, const TranslatableString &title, Args&&... args ) + const Identifier &internalName, const TranslatableString &title, Args&&... args ) { return std::make_unique( internalName, title, std::forward(args)... ); } inline std::unique_ptr Menu( - const wxString &internalName, const TranslatableString &title, BaseItemPtrs &&items ) + const Identifier &internalName, const TranslatableString &title, BaseItemPtrs &&items ) { return std::make_unique( internalName, title, std::move( items ) ); } @@ -902,12 +903,12 @@ namespace MenuTable { // Name for conditional group must be non-empty. template< typename... Args > inline std::unique_ptr ConditionalItems( - const wxString &internalName, + const Identifier &internalName, ConditionalGroupItem::Condition condition, Args&&... args ) { return std::make_unique( internalName, condition, std::forward(args)... ); } inline std::unique_ptr ConditionalItems( - const wxString &internalName, ConditionalGroupItem::Condition condition, + const Identifier &internalName, ConditionalGroupItem::Condition condition, BaseItemPtrs &&items ) { return std::make_unique( internalName, condition, std::move( items ) ); } @@ -921,14 +922,14 @@ namespace MenuTable { // by path. template< typename... Args > inline BaseItemPtr MenuOrItems( - const wxString &internalName, const TranslatableString &title, Args&&... args ) + const Identifier &internalName, const TranslatableString &title, Args&&... args ) { if ( title.empty() ) return Items( internalName, std::forward(args)... ); else return std::make_unique( internalName, title, std::forward(args)... ); } inline BaseItemPtr MenuOrItems( - const wxString &internalName, + const Identifier &internalName, const TranslatableString &title, BaseItemPtrs &&items ) { if ( title.empty() ) return Items( internalName, std::move( items ) ); @@ -951,7 +952,7 @@ namespace MenuTable { template< typename Handler > inline std::unique_ptr CommandGroup( - const wxString &name, + const Identifier &name, std::vector< ComponentInterfaceSymbol > items, void (Handler::*pmf)(const CommandContext&), CommandFlag flags, bool isEffect = false, @@ -963,7 +964,7 @@ namespace MenuTable { } inline std::unique_ptr Special( - const wxString &name, const SpecialItem::Appender &fn ) + const Identifier &name, const SpecialItem::Appender &fn ) { return std::make_unique( name, fn ); } // Typically you make a static object of this type in the .cpp file that