1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-23 17:30:17 +01:00

Pass untranslated command labels to CommandManager...

... and deduce whether to exclude from macros inside NewIdentifier, simplifying
argument lists further

Also fix the localization of "..." added to names by PluginMenus.cpp
This commit is contained in:
Paul Licameli
2019-01-05 19:16:13 -05:00
parent 5cbafc6086
commit 70ec69fa3d
21 changed files with 100 additions and 131 deletions

View File

@@ -147,7 +147,9 @@ class AUDACITY_DLL_API CommandManager final
// a very common case
Options( const wxChar *accel_ ) : accel{ accel_ } {}
// A two-argument constructor for another common case
Options( const wxChar *accel_, const wxString &longName_ )
Options(
const wxChar *accel_,
const TranslatableString &longName_ )
: accel{ accel_ }, longName{ longName_ } {}
Options &&Accel (const wxChar *value) &&
@@ -158,20 +160,23 @@ class AUDACITY_DLL_API CommandManager final
{ bIsEffect = value; return std::move(*this); }
Options &&Parameter (const CommandParameter &value) &&
{ parameter = value; return std::move(*this); }
Options &&LongName (const wxString &value) &&
Options &&LongName (const TranslatableString &value ) &&
{ longName = value; return std::move(*this); }
Options &&IsGlobal () &&
{ global = true; return std::move(*this); }
Options &&UseStrictFlags () &&
{ useStrictFlags = true; return std::move(*this); }
Options &&AllowInMacros ( int value = 1 ) &&
{ allowInMacros = value; return std::move(*this); }
const wxChar *accel{ wxT("") };
int check{ -1 }; // default value means it's not a check item
bool bIsEffect{ false };
CommandParameter parameter{};
wxString longName{}; // translated
TranslatableString longName{};
bool global{ false };
bool useStrictFlags{ false };
int allowInMacros{ -1 }; // 0 = never, 1 = always, -1 = deduce from label
};
void AddItemList(const CommandID & name,
@@ -182,9 +187,8 @@ class AUDACITY_DLL_API CommandManager final
CommandFlag flags,
bool bIsEffect = false);
void AddItem(const CommandID &name,
const wxChar *label_in,
bool excludeFromMacros,
void AddItem(const CommandID & name,
const TranslatableString &label_in,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
CommandFlag flags,
@@ -301,8 +305,7 @@ private:
int NextIdentifier(int ID);
CommandListEntry *NewIdentifier(const CommandID & name,
const wxString & label,
bool excludeFromMacros,
const TranslatableString & label,
wxMenu *menu,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
@@ -312,8 +315,7 @@ private:
const Options &options);
void AddGlobalCommand(const CommandID &name,
const wxChar *label,
bool excludeFromMacros,
const TranslatableString &label,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
const Options &options = {});
@@ -489,8 +491,7 @@ namespace MenuTable {
struct CommandItem final : BaseItem {
CommandItem(const CommandID &name_,
const wxString &label_in_,
bool excludeFromMacros_,
const TranslatableString &label_in_,
CommandHandlerFinder finder_,
CommandFunctorPointer callback_,
CommandFlag flags_,
@@ -498,8 +499,7 @@ namespace MenuTable {
~CommandItem() override;
const CommandID name;
const wxString label_in;
bool excludeFromMacros;
const TranslatableString label_in;
CommandHandlerFinder finder;
CommandFunctorPointer callback;
CommandFlag flags;
@@ -588,12 +588,13 @@ namespace MenuTable {
{ return std::make_unique<SeparatorItem>(); }
inline std::unique_ptr<CommandItem> Command(
const CommandID &name, const wxString &label_in, bool excludeFromMacros,
const CommandID &name,
const TranslatableString &label_in,
CommandHandlerFinder finder, CommandFunctorPointer callback,
CommandFlag flags, const CommandManager::Options &options = {})
{
return std::make_unique<CommandItem>(
name, label_in, excludeFromMacros, finder, callback, flags, options
name, label_in, finder, callback, flags, options
);
}