Use type aliases CommandID, CommandIDs...

... for identifiers of menu commands and macros, and for vectors thereof
This commit is contained in:
Paul Licameli 2019-03-10 22:05:37 -04:00
parent a30000cf74
commit 5fd6965925
28 changed files with 159 additions and 144 deletions

View File

@ -76,6 +76,9 @@ using FileExtensions = wxArrayStringEx;
using FilePath = wxString;
using FilePaths = wxArrayStringEx;
using CommandID = wxString;
using CommandIDs = std::vector< CommandID >;
// ----------------------------------------------------------------------------
// A native 64-bit integer...used when referring to any number of samples
// ----------------------------------------------------------------------------

View File

@ -1637,7 +1637,7 @@ void AdornedRulerPanel::DrawBothOverlays()
void AdornedRulerPanel::UpdateButtonStates()
{
auto common = [this]
(AButton &button, const wxString &commandName, const wxString &label) {
(AButton &button, const CommandID &commandName, const wxString &label) {
TranslatedInternalString command{ commandName, label };
ToolBar::SetButtonToolTip( button, &command, 1u );
button.SetLabel(button.GetToolTipText());

View File

@ -198,7 +198,7 @@ void MacroCommandDialog::OnItemSelected(wxListEvent &event)
void MacroCommandDialog::OnEditParams(wxCommandEvent & WXUNUSED(event))
{
wxString command = mInternalCommandName;
auto command = mInternalCommandName;
wxString params = mParameters->GetValue();
params = MacroCommands::PromptForParamsFor(command, params, this).Trim();
@ -209,7 +209,7 @@ void MacroCommandDialog::OnEditParams(wxCommandEvent & WXUNUSED(event))
void MacroCommandDialog::OnUsePreset(wxCommandEvent & WXUNUSED(event))
{
wxString command = mInternalCommandName;
auto command = mInternalCommandName;
wxString params = mParameters->GetValue();
wxString preset = MacroCommands::PromptForPresetFor(command, params, this).Trim();
@ -218,7 +218,7 @@ void MacroCommandDialog::OnUsePreset(wxCommandEvent & WXUNUSED(event))
mParameters->Refresh();
}
void MacroCommandDialog::SetCommandAndParams(const wxString &Command, const wxString &Params)
void MacroCommandDialog::SetCommandAndParams(const CommandID &Command, const wxString &Params)
{
auto iter = mCatalog.ByCommandId( Command );

View File

@ -42,9 +42,9 @@ class MacroCommandDialog final : public wxDialogWrapper {
public:
// constructors and destructors
MacroCommandDialog(wxWindow *parent, wxWindowID id);
void SetCommandAndParams(const wxString &Command, const wxString &Params);
void SetCommandAndParams(const CommandID &Command, const wxString &Params);
public:
wxString mSelectedCommand;
CommandID mSelectedCommand;
wxString mSelectedParameters;
private:
void Populate();
@ -69,7 +69,7 @@ class MacroCommandDialog final : public wxDialogWrapper {
wxTextCtrl * mParameters;
wxTextCtrl * mDetails;
wxString mInternalCommandName;
CommandID mInternalCommandName;
const MacroCommandsCatalog mCatalog;

View File

@ -58,7 +58,7 @@ enum eCommandType { CtEffect, CtMenu, CtSpecial };
// TIDY-ME: Not currently translated,
// but there are issues to address if we do.
// CLEANSPEECH remnant
static const std::pair<const wxChar*, const wxChar*> SpecialCommands[] = {
static const std::pair<const wxChar*, CommandID> SpecialCommands[] = {
// Use translations of the first members, some other day.
// For 2.2.2 we'll get them into the catalog at least.
@ -140,7 +140,7 @@ void MacroCommands::RestoreMacro(const wxString & name)
}
}
wxString MacroCommands::GetCommand(int index)
CommandID MacroCommands::GetCommand(int index)
{
if (index < 0 || index >= (int)mCommandMacro.size()) {
return wxT("");
@ -320,7 +320,7 @@ MacroCommandsCatalog::MacroCommandsCatalog( const AudacityProject *project )
auto mManager = project->GetCommandManager();
wxArrayString mLabels;
wxArrayString mNames;
CommandIDs mNames;
std::vector<bool> vHasDialog;
mLabels.clear();
mNames.clear();
@ -401,7 +401,7 @@ auto MacroCommandsCatalog::ByFriendlyName( const wxString &friendlyName ) const
}
// linear search
auto MacroCommandsCatalog::ByCommandId( const wxString &commandId ) const
auto MacroCommandsCatalog::ByCommandId( const CommandID &commandId ) const
-> Entries::const_iterator
{
// Maybe this too should have a uniqueness check?
@ -412,9 +412,10 @@ auto MacroCommandsCatalog::ByCommandId( const wxString &commandId ) const
wxString MacroCommands::GetCurrentParamsFor(const wxString & command)
wxString MacroCommands::GetCurrentParamsFor(const CommandID & command)
{
const PluginID & ID = EffectManager::Get().GetEffectByIdentifier(command);
const PluginID & ID =
EffectManager::Get().GetEffectByIdentifier(command);
if (ID.empty())
{
return wxEmptyString; // effect not found.
@ -423,9 +424,10 @@ wxString MacroCommands::GetCurrentParamsFor(const wxString & command)
return EffectManager::Get().GetEffectParameters(ID);
}
wxString MacroCommands::PromptForParamsFor(const wxString & command, const wxString & params, wxWindow *parent)
wxString MacroCommands::PromptForParamsFor(const CommandID & command, const wxString & params, wxWindow *parent)
{
const PluginID & ID = EffectManager::Get().GetEffectByIdentifier(command);
const PluginID & ID =
EffectManager::Get().GetEffectByIdentifier(command);
if (ID.empty())
{
return wxEmptyString; // effect not found
@ -446,9 +448,10 @@ wxString MacroCommands::PromptForParamsFor(const wxString & command, const wxStr
return res;
}
wxString MacroCommands::PromptForPresetFor(const wxString & command, const wxString & params, wxWindow *parent)
wxString MacroCommands::PromptForPresetFor(const CommandID & command, const wxString & params, wxWindow *parent)
{
const PluginID & ID = EffectManager::Get().GetEffectByIdentifier(command);
const PluginID & ID =
EffectManager::Get().GetEffectByIdentifier(command);
if (ID.empty())
{
return wxEmptyString; // effect not found.
@ -606,7 +609,7 @@ bool MacroCommands::WriteMp3File( const wxString & Name, int bitrate )
// CLEANSPEECH remnant
bool MacroCommands::ApplySpecialCommand(
int WXUNUSED(iCommand), const wxString &friendlyCommand,
const wxString & command, const wxString & params)
const CommandID & command, const wxString & params)
{
if (ReportAndSkip(friendlyCommand, params))
return true;
@ -701,7 +704,7 @@ bool MacroCommands::ApplySpecialCommand(
bool MacroCommands::ApplyEffectCommand(
const PluginID & ID, const wxString &friendlyCommand,
const wxString & command, const wxString & params,
const CommandID & command, const wxString & params,
const CommandContext & Context)
{
static_cast<void>(command);//compiler food.
@ -749,7 +752,7 @@ bool MacroCommands::ApplyEffectCommand(
}
bool MacroCommands::ApplyCommand( const wxString &friendlyCommand,
const wxString & command, const wxString & params,
const CommandID & command, const wxString & params,
CommandContext const * pContext)
{
@ -763,7 +766,8 @@ bool MacroCommands::ApplyCommand( const wxString &friendlyCommand,
// end CLEANSPEECH remnant
// Test for an effect.
const PluginID & ID = EffectManager::Get().GetEffectByIdentifier( command );
const PluginID & ID =
EffectManager::Get().GetEffectByIdentifier( command );
if (!ID.empty())
{
if( pContext )
@ -798,7 +802,7 @@ bool MacroCommands::ApplyCommand( const wxString &friendlyCommand,
}
bool MacroCommands::ApplyCommandInBatchMode( const wxString &friendlyCommand,
const wxString & command, const wxString &params,
const CommandID & command, const wxString &params,
CommandContext const * pContext)
{
AudacityProject *project = GetActiveProject();
@ -894,12 +898,12 @@ void MacroCommands::AbortBatch()
mAbort = true;
}
void MacroCommands::AddToMacro(const wxString &command, int before)
void MacroCommands::AddToMacro(const CommandID &command, int before)
{
AddToMacro(command, GetCurrentParamsFor(command), before);
}
void MacroCommands::AddToMacro(const wxString &command, const wxString &params, int before)
void MacroCommands::AddToMacro(const CommandID &command, const wxString &params, int before)
{
if (before == -1) {
before = (int)mCommandMacro.size();

View File

@ -36,7 +36,7 @@ public:
// binary search
Entries::const_iterator ByFriendlyName( const wxString &friendlyName ) const;
// linear search
Entries::const_iterator ByCommandId( const wxString &commandId ) const;
Entries::const_iterator ByCommandId( const CommandID &commandId ) const;
// Lookup by position as sorted by friendly name
const Entry &operator[] ( size_t index ) const { return mCommands[index]; }
@ -58,17 +58,17 @@ class MacroCommands final {
bool ApplyMacro( const MacroCommandsCatalog &catalog,
const wxString & filename = {});
bool ApplyCommand( const wxString &friendlyCommand,
const wxString & command, const wxString & params,
const CommandID & command, const wxString & params,
CommandContext const * pContext=NULL );
bool ApplyCommandInBatchMode( const wxString &friendlyCommand,
const wxString & command, const wxString &params,
const CommandID & command, const wxString &params,
CommandContext const * pContext = NULL);
bool ApplySpecialCommand(
int iCommand, const wxString &friendlyCommand,
const wxString & command, const wxString & params);
const CommandID & command, const wxString & params);
bool ApplyEffectCommand(
const PluginID & ID, const wxString &friendlyCommand,
const wxString & command,
const CommandID & command,
const wxString & params, const CommandContext & Context);
bool ReportAndSkip( const wxString & friendlyCommand, const wxString & params );
void AbortBatch();
@ -85,9 +85,9 @@ class MacroCommands final {
static wxArrayString GetNames();
static wxArrayStringEx GetNamesOfDefaultMacros();
static wxString GetCurrentParamsFor(const wxString & command);
static wxString PromptForParamsFor(const wxString & command, const wxString & params, wxWindow *parent);
static wxString PromptForPresetFor(const wxString & command, const wxString & params, wxWindow *parent);
static wxString GetCurrentParamsFor(const CommandID & command);
static wxString PromptForParamsFor(const CommandID & command, const wxString & params, wxWindow *parent);
static wxString PromptForPresetFor(const CommandID & command, const wxString & params, wxWindow *parent);
// These commands do depend on the command list.
void ResetMacro();
@ -99,10 +99,11 @@ class MacroCommands final {
bool DeleteMacro(const wxString & name);
bool RenameMacro(const wxString & oldmacro, const wxString & newmacro);
void AddToMacro(const wxString & command, int before = -1);
void AddToMacro(const wxString & command, const wxString & params, int before = -1);
void AddToMacro(const CommandID & command, int before = -1);
void AddToMacro(const CommandID & command, const wxString & params, int before = -1);
void DeleteFromMacro(int index);
wxString GetCommand(int index);
CommandID GetCommand(int index);
wxString GetParams(int index);
int GetCount();
wxString GetMessage(){ return mMessage;};
@ -113,7 +114,7 @@ class MacroCommands final {
void Split(const wxString & str, wxString & command, wxString & param);
wxString Join(const wxString & command, const wxString & param);
wxArrayString mCommandMacro;
CommandIDs mCommandMacro;
wxArrayString mParamsMacro;
bool mAbort;
wxString mMessage;

View File

@ -221,7 +221,7 @@ void ApplyMacroDialog::OnApplyToProject(wxCommandEvent & WXUNUSED(event))
ApplyMacroToProject( item );
}
wxString ApplyMacroDialog::MacroIdOfName( const wxString & MacroName )
CommandID ApplyMacroDialog::MacroIdOfName( const wxString & MacroName )
{
wxString Temp = MacroName;
Temp.Replace(" ","");
@ -231,7 +231,7 @@ wxString ApplyMacroDialog::MacroIdOfName( const wxString & MacroName )
// Apply macro, given its ID.
// Does nothing if not found, rather than returning an error.
void ApplyMacroDialog::ApplyMacroToProject( const wxString & MacroID, bool bHasGui )
void ApplyMacroDialog::ApplyMacroToProject( const CommandID & MacroID, bool bHasGui )
{
for( int i=0;i<mMacros->GetItemCount();i++){
wxString name = mMacros->GetItemText(i);
@ -728,7 +728,7 @@ void MacrosWindow::PopulateList()
}
/// Add one item into mList
void MacrosWindow::AddItem(const wxString &Action, const wxString &Params)
void MacrosWindow::AddItem(const CommandID &Action, const wxString &Params)
{
auto entry = mCatalog.ByCommandId(Action);
auto friendlyName = entry != mCatalog.end()
@ -1099,7 +1099,7 @@ void MacrosWindow::OnEditCommandParams(wxCommandEvent & WXUNUSED(event))
}
// Just edit the parameters, and not the command.
wxString command = mMacroCommands.GetCommand(item);
auto command = mMacroCommands.GetCommand(item);
wxString params = mMacroCommands.GetParams(item);
params = MacroCommands::PromptForParamsFor(command, params, this).Trim();

View File

@ -56,9 +56,9 @@ class ApplyMacroDialog : public wxDialogWrapper {
virtual wxString GetHelpPageName() {return "Apply_Macro";};
void PopulateMacros();
static wxString MacroIdOfName( const wxString & MacroName );
static CommandID MacroIdOfName( const wxString & MacroName );
void ApplyMacroToProject( int iMacro, bool bHasGui=true );
void ApplyMacroToProject( const wxString & MacroID, bool bHasGui=true );
void ApplyMacroToProject( const CommandID & MacroID, bool bHasGui=true );
// These will be reused in the derived class...
@ -99,7 +99,7 @@ private:
: "Apply_Macro";};
void PopulateList();
void AddItem(const wxString &command, wxString const &params);
void AddItem(const CommandID &command, wxString const &params);
bool ChangeOK();
void UpdateMenus();

View File

@ -195,7 +195,9 @@ class TranslatedInternalString
{
public:
TranslatedInternalString() = default;
using ID = CommandID;
TranslatedInternalString() = default;
// One-argument constructor from a msgid
explicit TranslatedInternalString( const wxString &internal )
@ -203,12 +205,12 @@ public:
{}
// Two-argument version, when translated does not derive from internal
TranslatedInternalString( const wxString &internal,
TranslatedInternalString( const ID &internal,
const wxString &translated )
: mInternal{ internal }, mTranslated{ translated }
{}
const wxString &Internal() const { return mInternal; }
const ID &Internal() const { return mInternal; }
const wxString Translated() const
{
wxString Temp = mTranslated;
@ -217,7 +219,7 @@ public:
}
private:
wxString mInternal;
ID mInternal;
wxString mTranslated;
};

View File

@ -114,7 +114,7 @@ ConditionalGroupItem::~ConditionalGroupItem() {}
SeparatorItem::~SeparatorItem() {}
CommandItem::CommandItem(const wxString &name_,
CommandItem::CommandItem(const CommandID &name_,
const wxString &label_in_,
bool hasDialog_,
CommandHandlerFinder finder_,

View File

@ -13,6 +13,7 @@
#include <wx/string.h>
#include <wx/event.h>
#include "audacity/Types.h"
#include "../MemoryX.h"
#include "Command.h"
@ -20,7 +21,7 @@ class AudacityProject;
class AudacityApp;
class wxEvent;
class CommandOutputTargets;
using CommandParameter = wxString;
using CommandParameter = CommandID;
class AUDACITY_DLL_API CommandContext {
public:

View File

@ -746,7 +746,7 @@ void CommandManager::ClearCurrentMenu()
void CommandManager::AddItem(const wxChar *name,
void CommandManager::AddItem(const CommandID &name,
const wxChar *label_in,
bool hasDialog,
CommandHandlerFinder finder,
@ -767,7 +767,7 @@ void CommandManager::AddItem(const wxChar *name,
if (mask == NoFlagsSpecified)
mask = flags;
wxString cookedParameter;
CommandParameter cookedParameter;
const auto &parameter = options.parameter;
if( parameter.empty() )
cookedParameter = name;
@ -804,7 +804,7 @@ void CommandManager::AddItem(const wxChar *name,
/// with its position in the list as the index number.
/// When you call Enable on this command name, it will enable or disable
/// all of the items at once.
void CommandManager::AddItemList(const wxString & name,
void CommandManager::AddItemList(const CommandID & name,
const ComponentInterfaceSymbol items[],
size_t nItems,
CommandHandlerFinder finder,
@ -835,7 +835,7 @@ void CommandManager::AddItemList(const wxString & name,
///
/// Add a command that doesn't appear in a menu. When the key is pressed, the
/// given function pointer will be called (via the CommandManagerListener)
void CommandManager::AddCommand(const wxChar *name,
void CommandManager::AddCommand(const CommandID &name,
const wxChar *label,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
@ -844,7 +844,7 @@ void CommandManager::AddCommand(const wxChar *name,
AddCommand(name, label, finder, callback, wxT(""), flags);
}
void CommandManager::AddCommand(const wxChar *name,
void CommandManager::AddCommand(const CommandID &name,
const wxChar *label_in,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
@ -858,7 +858,7 @@ void CommandManager::AddCommand(const wxChar *name,
SetCommandFlags(name, flags, flags);
}
void CommandManager::AddGlobalCommand(const wxChar *name,
void CommandManager::AddGlobalCommand(const CommandID &name,
const wxChar *label_in,
bool hasDialog,
CommandHandlerFinder finder,
@ -898,14 +898,14 @@ int CommandManager::NextIdentifier(int ID)
///WARNING: Does this conflict with the identifiers set for controls/windows?
///If it does, a workaround may be to keep controls below wxID_LOWEST
///and keep menus above wxID_HIGHEST
CommandListEntry *CommandManager::NewIdentifier(const wxString & name,
CommandListEntry *CommandManager::NewIdentifier(const CommandID & name,
const wxString & label,
const wxString & longLabel,
bool hasDialog,
wxMenu *menu,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
const wxString &nameSuffix,
const CommandID &nameSuffix,
int index,
int count,
bool bIsEffect)
@ -925,7 +925,7 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & name,
{});
}
CommandListEntry *CommandManager::NewIdentifier(const wxString & nameIn,
CommandListEntry *CommandManager::NewIdentifier(const CommandID & nameIn,
const wxString & label,
const wxString & longLabel,
bool hasDialog,
@ -933,14 +933,14 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & nameIn,
wxMenu *menu,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
const wxString &nameSuffix,
const CommandID &nameSuffix,
int index,
int count,
bool bIsEffect,
const CommandParameter &parameter)
{
const bool multi = !nameSuffix.empty();
wxString name = nameIn;
auto name = nameIn;
// If we have the identifier already, reuse it.
CommandListEntry *prev = mCommandNameHash[name];
@ -1201,7 +1201,7 @@ void CommandManager::EnableUsingFlags(CommandFlag flags, CommandMask mask)
}
}
bool CommandManager::GetEnabled(const wxString &name)
bool CommandManager::GetEnabled(const CommandID &name)
{
CommandListEntry *entry = mCommandNameHash[name];
if (!entry || !entry->menu) {
@ -1212,7 +1212,7 @@ bool CommandManager::GetEnabled(const wxString &name)
return entry->enabled;
}
void CommandManager::Check(const wxString &name, bool checked)
void CommandManager::Check(const CommandID &name, bool checked)
{
CommandListEntry *entry = mCommandNameHash[name];
if (!entry || !entry->menu || entry->isOccult) {
@ -1231,7 +1231,7 @@ void CommandManager::Modify(const wxString &name, const wxString &newLabel)
}
}
void CommandManager::SetKeyFromName(const wxString &name,
void CommandManager::SetKeyFromName(const CommandID &name,
const NormalizedKeyString &key)
{
CommandListEntry *entry = mCommandNameHash[name];
@ -1330,7 +1330,7 @@ wxString CommandManager::DescribeCommandsAndShortcuts
// was missing from the translation file and defaulted to the English.
auto piece = wxString::Format(wxT("%s%s"), mark, pair.Translated());
wxString name{ pair.Internal() };
auto name = pair.Internal();
if (!name.empty()) {
auto keyStr = GetKeyFromName(name);
if (!keyStr.empty()){
@ -1541,7 +1541,7 @@ bool CommandManager::HandleMenuID(int id, CommandFlag flags, CommandMask mask)
/// HandleTextualCommand() allows us a limitted version of script/batch
/// behavior, since we can get from a string command name to the actual
/// code to run.
bool CommandManager::HandleTextualCommand(const wxString & Str, const CommandContext & context, CommandFlag flags, CommandMask mask)
bool CommandManager::HandleTextualCommand(const CommandID & Str, const CommandContext & context, CommandFlag flags, CommandMask mask)
{
if( Str.empty() )
return false;
@ -1622,7 +1622,7 @@ void CommandManager::GetCategories(wxArrayString &cats)
#endif
}
void CommandManager::GetAllCommandNames(wxArrayString &names,
void CommandManager::GetAllCommandNames(CommandIDs &names,
bool includeMultis) const
{
for(const auto &entry : mCommandList) {
@ -1655,7 +1655,7 @@ void CommandManager::GetAllCommandLabels(wxArrayString &names,
}
void CommandManager::GetAllCommandData(
wxArrayString &names,
CommandIDs &names,
std::vector<NormalizedKeyString> &keys,
std::vector<NormalizedKeyString> &default_keys,
wxArrayString &labels,
@ -1695,15 +1695,15 @@ void CommandManager::GetAllCommandData(
}
}
wxString CommandManager::GetNameFromID(int id)
CommandID CommandManager::GetNameFromID(int id)
{
CommandListEntry *entry = mCommandIDHash[id];
if (!entry)
return wxT("");
return {};
return entry->name;
}
wxString CommandManager::GetLabelFromName(const wxString &name)
wxString CommandManager::GetLabelFromName(const CommandID &name)
{
CommandListEntry *entry = mCommandNameHash[name];
if (!entry)
@ -1712,7 +1712,7 @@ wxString CommandManager::GetLabelFromName(const wxString &name)
return entry->longLabel;
}
wxString CommandManager::GetPrefixedLabelFromName(const wxString &name)
wxString CommandManager::GetPrefixedLabelFromName(const CommandID &name)
{
CommandListEntry *entry = mCommandNameHash[name];
if (!entry)
@ -1729,7 +1729,7 @@ wxString CommandManager::GetPrefixedLabelFromName(const wxString &name)
#endif
}
wxString CommandManager::GetCategoryFromName(const wxString &name)
wxString CommandManager::GetCategoryFromName(const CommandID &name)
{
CommandListEntry *entry = mCommandNameHash[name];
if (!entry)
@ -1738,7 +1738,7 @@ wxString CommandManager::GetCategoryFromName(const wxString &name)
return entry->labelTop;
}
NormalizedKeyString CommandManager::GetKeyFromName(const wxString &name) const
NormalizedKeyString CommandManager::GetKeyFromName(const CommandID &name) const
{
CommandListEntry *entry =
// May create a NULL entry
@ -1749,7 +1749,7 @@ NormalizedKeyString CommandManager::GetKeyFromName(const wxString &name) const
return entry->key;
}
NormalizedKeyString CommandManager::GetDefaultKeyFromName(const wxString &name)
NormalizedKeyString CommandManager::GetDefaultKeyFromName(const CommandID &name)
{
CommandListEntry *entry = mCommandNameHash[name];
if (!entry)
@ -1847,7 +1847,7 @@ void CommandManager::EndOccultCommands()
mTempMenuBar.reset();
}
void CommandManager::SetCommandFlags(const wxString &name,
void CommandManager::SetCommandFlags(const CommandID &name,
CommandFlag flags, CommandMask mask)
{
CommandListEntry *entry = mCommandNameHash[name];

View File

@ -14,6 +14,8 @@
#include "../Experimental.h"
#include "audacity/Types.h"
#include "CommandFunctors.h"
#include "CommandFlag.h"
@ -30,8 +32,8 @@
#include <unordered_map>
using CommandParameter = wxString;
class TranslatedInternalString;
using CommandParameter = CommandID;
struct MenuBarListEntry
{
@ -62,7 +64,7 @@ struct SubMenuListEntry
struct CommandListEntry
{
int id;
wxString name;
CommandID name;
wxString longLabel;
NormalizedKeyString key;
NormalizedKeyString defaultKey;
@ -178,7 +180,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
bool global{ false };
};
void AddItemList(const wxString & name,
void AddItemList(const CommandID & name,
const ComponentInterfaceSymbol items[],
size_t nItems,
CommandHandlerFinder finder,
@ -186,7 +188,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
CommandFlag flags,
bool bIsEffect = false);
void AddItem(const wxChar *name,
void AddItem(const CommandID &name,
const wxChar *label_in,
bool hasDialog,
CommandHandlerFinder finder,
@ -198,13 +200,13 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
// A command doesn't actually appear in a menu but might have a
// keyboard shortcut.
void AddCommand(const wxChar *name,
void AddCommand(const CommandID &name,
const wxChar *label,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
CommandFlag flags);
void AddCommand(const wxChar *name,
void AddCommand(const CommandID &name,
const wxChar *label,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
@ -216,7 +218,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
void EndOccultCommands();
void SetCommandFlags(const wxString &name, CommandFlag flags, CommandMask mask);
void SetCommandFlags(const CommandID &name, CommandFlag flags, CommandMask mask);
//
// Modifying menus
@ -224,7 +226,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
void EnableUsingFlags(CommandFlag flags, CommandMask mask);
void Enable(const wxString &name, bool enabled);
void Check(const wxString &name, bool checked);
void Check(const CommandID &name, bool checked);
void Modify(const wxString &name, const wxString &newLabel);
// You may either called SetCurrentMenu later followed by ClearCurrentMenu,
@ -236,7 +238,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
// Modifying accelerators
//
void SetKeyFromName(const wxString &name, const NormalizedKeyString &key);
void SetKeyFromName(const CommandID &name, const NormalizedKeyString &key);
void SetKeyFromIndex(int i, const NormalizedKeyString &key);
//
@ -247,19 +249,19 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
// Lyrics and MixerTrackCluster classes use it.
bool FilterKeyEvent(AudacityProject *project, const wxKeyEvent & evt, bool permit = false);
bool HandleMenuID(int id, CommandFlag flags, CommandMask mask);
bool HandleTextualCommand(const wxString & Str, const CommandContext & context, CommandFlag flags, CommandMask mask);
bool HandleTextualCommand(const CommandID & Str, const CommandContext & context, CommandFlag flags, CommandMask mask);
//
// Accessing
//
void GetCategories(wxArrayString &cats);
void GetAllCommandNames(wxArrayString &names, bool includeMultis) const;
void GetAllCommandNames(CommandIDs &names, bool includeMultis) const;
void GetAllCommandLabels(
wxArrayString &labels, std::vector<bool> &vHasDialog,
bool includeMultis) const;
void GetAllCommandData(
wxArrayString &names,
CommandIDs &names,
std::vector<NormalizedKeyString> &keys,
std::vector<NormalizedKeyString> &default_keys,
wxArrayString &labels, wxArrayString &categories,
@ -268,14 +270,15 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
#endif
bool includeMultis);
wxString GetNameFromID( int id );
wxString GetLabelFromName(const wxString &name);
wxString GetPrefixedLabelFromName(const wxString &name);
wxString GetCategoryFromName(const wxString &name);
NormalizedKeyString GetKeyFromName(const wxString &name) const;
NormalizedKeyString GetDefaultKeyFromName(const wxString &name);
CommandID GetNameFromID( int id );
bool GetEnabled(const wxString &name);
wxString GetLabelFromName(const CommandID &name);
wxString GetPrefixedLabelFromName(const CommandID &name);
wxString GetCategoryFromName(const CommandID &name);
NormalizedKeyString GetKeyFromName(const CommandID &name) const;
NormalizedKeyString GetDefaultKeyFromName(const CommandID &name);
bool GetEnabled(const CommandID &name);
#if defined(__WXDEBUG__)
void CheckDups();
@ -307,18 +310,18 @@ private:
//
int NextIdentifier(int ID);
CommandListEntry *NewIdentifier(const wxString & name,
CommandListEntry *NewIdentifier(const CommandID & name,
const wxString & label,
const wxString & longLabel,
bool hasDialog,
wxMenu *menu,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
const wxString &nameSuffix,
const CommandID &nameSuffix,
int index,
int count,
bool bIsEffect);
CommandListEntry *NewIdentifier(const wxString & name,
CommandListEntry *NewIdentifier(const CommandID & name,
const wxString & label,
const wxString & longLabel,
bool hasDialog,
@ -326,13 +329,13 @@ private:
wxMenu *menu,
CommandHandlerFinder finder,
CommandFunctorPointer callback,
const wxString &nameSuffix,
const CommandID &nameSuffix,
int index,
int count,
bool bIsEffect,
const CommandParameter &parameter);
void AddGlobalCommand(const wxChar *name,
void AddGlobalCommand(const CommandID &name,
const wxChar *label,
bool hasDialog,
CommandHandlerFinder finder,
@ -508,7 +511,7 @@ namespace MenuTable {
};
struct CommandItem final : BaseItem {
CommandItem(const wxString &name_,
CommandItem(const CommandID &name_,
const wxString &label_in_,
bool hasDialog_,
CommandHandlerFinder finder_,
@ -517,7 +520,7 @@ namespace MenuTable {
const CommandManager::Options &options_);
~CommandItem() override;
const wxString name;
const CommandID name;
const wxString label_in;
bool hasDialog;
CommandHandlerFinder finder;
@ -608,7 +611,7 @@ namespace MenuTable {
{ return std::make_unique<SeparatorItem>(); }
inline std::unique_ptr<CommandItem> Command(
const wxString &name, const wxString &label_in, bool hasDialog,
const CommandID &name, const wxString &label_in, bool hasDialog,
CommandHandlerFinder finder, CommandFunctorPointer callback,
CommandFlag flags, const CommandManager::Options &options = {})
{

View File

@ -411,7 +411,7 @@ void GetInfoCommand::ExploreMenu( const CommandContext &context, wxMenu * pMenu,
wxMenuItem * item;
wxString Label;
wxString Accel;
wxString Name;
CommandID Name;
for (size_t lndx = 0; lndx < lcnt; lndx++) {
item = list.Item(lndx)->GetData();

View File

@ -442,7 +442,7 @@ void ScreenshotCommand::CapturePreferences(
SetIdleHandler( IdleHandler );
gPrefs->Write(wxT("/Prefs/PrefsCategory"), (long)i);
gPrefs->Flush();
wxString Command = "Preferences";
CommandID Command{ wxT("Preferences") };
const CommandContext projectContext( *pProject );
if( !pMan->HandleTextualCommand( Command, projectContext, AlwaysEnabledFlag, AlwaysEnabledFlag ) )
{

View File

@ -168,7 +168,7 @@ wxString EffectManager::GetVendorName(const PluginID & ID)
return {};
}
wxString EffectManager::GetCommandIdentifier(const PluginID & ID)
CommandID EffectManager::GetCommandIdentifier(const PluginID & ID)
{
wxString name = PluginManager::Get().GetSymbol(ID).Internal();
@ -944,7 +944,7 @@ AudacityCommand *EffectManager::GetAudacityCommand(const PluginID & ID)
}
const PluginID & EffectManager::GetEffectByIdentifier(const wxString & strTarget)
const PluginID & EffectManager::GetEffectByIdentifier(const CommandID & strTarget)
{
static PluginID empty;
if (strTarget.empty()) // set GetCommandIdentifier to wxT("") to not show an effect in Batch mode

View File

@ -91,7 +91,7 @@ public:
// Renamed from 'Effect' to 'Command' prior to moving out of this class.
ComponentInterfaceSymbol GetCommandSymbol(const PluginID & ID);
wxString GetCommandName(const PluginID & ID); // translated
wxString GetCommandIdentifier(const PluginID & ID);
CommandID GetCommandIdentifier(const PluginID & ID);
wxString GetCommandDescription(const PluginID & ID);
wxString GetCommandUrl(const PluginID & ID);
wxString GetCommandTip(const PluginID & ID);
@ -148,7 +148,7 @@ public:
void ShowRack();
#endif
const PluginID & GetEffectByIdentifier(const wxString & strTarget);
const PluginID & GetEffectByIdentifier(const CommandID & strTarget);
private:
/** Return an effect by its ID. */

View File

@ -660,7 +660,7 @@ void OnApplyMacroDirectly(const CommandContext &context )
//wxLogDebug( "Macro was: %s", context.parameter);
ApplyMacroDialog dlg( &project );
wxString Name = context.parameter;
const auto &Name = context.parameter;
// We used numbers previously, but macros could get renumbered, making
// macros containing macros unpredictable.
@ -760,7 +760,7 @@ void AddEffectMenuItemGroup(
if (i + 1 < namesCnt && names[i] == names[i + 1])
{
// collect a sub-menu for like-named items
const wxString name = names[i];
const auto name = names[i];
BaseItemPtrs temp2;
while (i < namesCnt && names[i] == name)
{
@ -828,7 +828,7 @@ MenuTable::BaseItemPtrs PopulateMacrosMenu( CommandFlag flags )
int i;
for (i = 0; i < (int)names.size(); i++) {
wxString MacroID = ApplyMacroDialog::MacroIdOfName( names[i] );
auto MacroID = ApplyMacroDialog::MacroIdOfName( names[i] );
result.push_back( MenuTable::Command( MacroID,
names[i], false, FN(OnApplyMacroDirectly),
flags ) );

View File

@ -77,7 +77,7 @@ BEGIN_EVENT_TABLE(KeyConfigPrefs, PrefsPanel)
END_EVENT_TABLE()
KeyConfigPrefs::KeyConfigPrefs(wxWindow * parent, wxWindowID winid,
const wxString &name)
const CommandID &name)
/* i18n-hint: as in computer keyboard (not musical!) */
: PrefsPanel(parent, winid, _("Keyboard")),
mView(NULL),
@ -501,7 +501,7 @@ void KeyConfigPrefs::OnFilterChar(wxKeyEvent & e)
// Given a hotkey combination, returns the name (description) of the
// corresponding command, or the empty string if none is found.
wxString KeyConfigPrefs::NameFromKey(const NormalizedKeyString & key)
CommandID KeyConfigPrefs::NameFromKey(const NormalizedKeyString & key)
{
return mView->GetNameByKey(key);
}
@ -510,7 +510,7 @@ wxString KeyConfigPrefs::NameFromKey(const NormalizedKeyString & key)
// This is not yet a committed change, which will happen on a save.
void KeyConfigPrefs::SetKeyForSelected(const NormalizedKeyString & key)
{
wxString name = mView->GetName(mCommandSelected);
auto name = mView->GetName(mCommandSelected);
if (!mView->CanSetKey(mCommandSelected))
{
@ -534,8 +534,8 @@ void KeyConfigPrefs::OnSet(wxCommandEvent & WXUNUSED(event))
}
NormalizedKeyString key { mKey->GetValue() };
wxString oldname = mView->GetNameByKey(key);
wxString newname = mView->GetName(mCommandSelected);
auto oldname = mView->GetNameByKey(key);
auto newname = mView->GetName(mCommandSelected);
// Just ignore it if they are the same
if (oldname == newname) {

View File

@ -36,7 +36,7 @@ struct NormalizedKeyString;
class KeyConfigPrefs final : public PrefsPanel
{
public:
KeyConfigPrefs(wxWindow * parent, wxWindowID winid, const wxString &name);
KeyConfigPrefs(wxWindow * parent, wxWindowID winid, const CommandID &name);
bool Commit() override;
void Cancel() override;
wxString HelpPageName() override;
@ -46,7 +46,7 @@ private:
void Populate();
void RefreshBindings(bool bSort);
void FilterKeys( std::vector<NormalizedKeyString> & arr );
wxString NameFromKey(const NormalizedKeyString & key);
CommandID NameFromKey(const NormalizedKeyString & key);
void SetKeyForSelected(const NormalizedKeyString & key);
void OnViewBy(wxCommandEvent & e);
@ -84,7 +84,7 @@ private:
CommandManager *mManager;
int mCommandSelected;
wxArrayString mNames;
CommandIDs mNames;
std::vector<NormalizedKeyString> mDefaultKeys; // The full set.
std::vector<NormalizedKeyString> mStandardDefaultKeys; // The reduced set.
std::vector<NormalizedKeyString> mKeys;
@ -98,11 +98,11 @@ private:
class KeyConfigPrefsFactory final : public PrefsPanelFactory
{
public:
KeyConfigPrefsFactory(const wxString &name = wxString{})
KeyConfigPrefsFactory(const CommandID &name = {})
: mName{ name } {}
PrefsPanel *operator () (wxWindow *parent, wxWindowID winid) override;
private:
wxString mName;
CommandID mName;
};
#endif

View File

@ -227,7 +227,7 @@ void ControlToolBar::RegenerateTooltips()
for (long iWinID = ID_PLAY_BUTTON; iWinID < BUTTON_COUNT; iWinID++)
{
auto pCtrl = static_cast<AButton*>(this->FindWindow(iWinID));
const wxChar *name = nullptr;
CommandID name;
switch (iWinID)
{
case ID_PLAY_BUTTON:

View File

@ -225,7 +225,7 @@ void EditToolBar::EnableDisableButtons()
static const struct Entry {
int tool;
wxString commandName;
CommandID commandName;
wxString untranslatedLabel;
} EditToolbarButtonList[] = {
{ ETBCutID, wxT("Cut"), XO("Cut") },

View File

@ -136,7 +136,7 @@ void ScrubbingToolBar::RegenerateTooltips()
{
#if wxUSE_TOOLTIPS
auto fn = [&]
(AButton &button, const wxString &label, const wxString &cmd)
(AButton &button, const wxString &label, const CommandID &cmd)
{
TranslatedInternalString command{ cmd, label };
ToolBar::SetButtonToolTip( button, &command, 1u );

View File

@ -126,7 +126,7 @@ void ToolsToolBar::RegenerateTooltips()
static const struct Entry {
int tool;
wxString commandName;
CommandID commandName;
wxString untranslatedLabel;
} table[] = {
{ selectTool, wxT("SelectTool"), XO("Selection Tool") },

View File

@ -303,9 +303,9 @@ void TranscriptionToolBar::RegenerateTooltips()
static const struct Entry {
int tool;
wxString commandName;
CommandID commandName;
wxString untranslatedLabel;
wxString commandName2;
CommandID commandName2;
wxString untranslatedLabel2;
} table[] = {
{ TTB_PlaySpeed, wxT("PlayAtSpeed"), XO("Play-at-Speed"),

View File

@ -232,7 +232,7 @@ Scrubber::~Scrubber()
namespace {
const struct MenuItem {
wxString name;
CommandID name;
wxString label;
wxString status;
CommandFlag flags;

View File

@ -142,7 +142,7 @@ KeyView::GetFullLabel(int index) const
// Returns the index for the given name
//
int
KeyView::GetIndexByName(const wxString & name) const
KeyView::GetIndexByName(const CommandID & name) const
{
int cnt = (int) mNodes.size();
@ -161,14 +161,14 @@ KeyView::GetIndexByName(const wxString & name) const
//
// Returns the command manager name for the given index
//
wxString
CommandID
KeyView::GetName(int index) const
{
// Make sure index is valid
if (index < 0 || index >= (int) mNodes.size())
{
wxASSERT(false);
return wxEmptyString;
return {};
}
return mNodes[index].name;
@ -177,7 +177,7 @@ KeyView::GetName(int index) const
//
// Returns the command manager index for the given key combination
//
wxString
CommandID
KeyView::GetNameByKey(const NormalizedKeyString & key) const
{
int cnt = (int) mNodes.size();
@ -191,7 +191,7 @@ KeyView::GetNameByKey(const NormalizedKeyString & key) const
}
}
return wxEmptyString;
return {};
}
//
@ -292,7 +292,7 @@ KeyView::SetKey(int index, const NormalizedKeyString & key)
// Sets the key for the given name
//
bool
KeyView::SetKeyByName(const wxString & name, const NormalizedKeyString & key)
KeyView::SetKeyByName(const CommandID & name, const NormalizedKeyString & key)
{
int index = GetIndexByName(name);
@ -518,7 +518,7 @@ KeyView::UpdateHScroll()
// Process a NEW set of bindings
//
void
KeyView::RefreshBindings(const wxArrayString & names,
KeyView::RefreshBindings(const CommandIDs & names,
const wxArrayString & categories,
const wxArrayString & prefixes,
const wxArrayString & labels,
@ -545,7 +545,7 @@ KeyView::RefreshBindings(const wxArrayString & names,
int cnt = (int) names.size();
for (int i = 0; i < cnt; i++)
{
wxString name = names[i];
auto name = names[i];
int x, y;
// Remove any menu code from the category and prefix
@ -587,7 +587,7 @@ KeyView::RefreshBindings(const wxArrayString & names,
KeyNode node;
// Fill in the node info
node.name = wxEmptyString; // don't associate branches with a command
node.name = CommandID{}; // don't associate branches with a command
node.category = cat;
node.prefix = pfx;
node.label = cat;
@ -627,7 +627,7 @@ KeyView::RefreshBindings(const wxArrayString & names,
KeyNode node;
// Fill in the node info
node.name = wxEmptyString; // don't associate branches with a command
node.name = CommandID{}; // don't associate branches with a command
node.category = cat;
node.prefix = pfx;
node.label = pfx;

View File

@ -10,6 +10,7 @@
#define __AUDACITY_WIDGETS_KEYVIEW__
#include "../Audacity.h"
#include "audacity/Types.h"
#include <vector>
#include <wx/defs.h>
@ -40,7 +41,7 @@ public:
//KeyNode &operator = ( KeyNode && ) = default;
public:
wxString name;
CommandID name;
wxString category;
wxString prefix;
wxString label;
@ -83,7 +84,7 @@ public:
virtual ~KeyView();
wxString GetName() const; // Gets the control name from the base class
void RefreshBindings(const wxArrayString & names,
void RefreshBindings(const CommandIDs & names,
const wxArrayString & categories,
const wxArrayString & prefixes,
const wxArrayString & labels,
@ -95,15 +96,15 @@ public:
wxString GetLabel(int index) const;
wxString GetFullLabel(int index) const;
int GetIndexByName(const wxString & name) const;
wxString GetName(int index) const;
wxString GetNameByKey(const NormalizedKeyString & key) const;
int GetIndexByName(const CommandID & name) const;
CommandID GetName(int index) const;
CommandID GetNameByKey(const NormalizedKeyString & key) const;
int GetIndexByKey(const NormalizedKeyString & key) const;
NormalizedKeyString GetKey(int index) const;
bool CanSetKey(int index) const;
bool SetKey(int index, const NormalizedKeyString & key);
bool SetKeyByName(const wxString & name, const NormalizedKeyString & key);
bool SetKeyByName(const CommandID & name, const NormalizedKeyString & key);
void SetView(ViewByType type);