mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 15:49:41 +02: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:
parent
5cbafc6086
commit
70ec69fa3d
@ -162,14 +162,12 @@ int ModuleDispatch(ModuleDispatchTypes type)
|
||||
// We add two new commands into the Analyze menu.
|
||||
c->AddItem(
|
||||
_T("A New Command"), // internal name
|
||||
_T("1st Experimental Command"), //displayed name
|
||||
true, // has dialog
|
||||
XO("1st Experimental Command..."), //displayed name
|
||||
ModNullFN( OnFuncFirst ),
|
||||
AudioIONotBusyFlag );
|
||||
c->AddItem(
|
||||
_T("Another New Command"),
|
||||
_T("2nd Experimental Command"),
|
||||
false, // no dialog
|
||||
XO("2nd Experimental Command"),
|
||||
ModNullFN( OnFuncSecond ),
|
||||
AudioIONotBusyFlag );
|
||||
c->ClearCurrentMenu();
|
||||
|
@ -195,8 +195,7 @@ extern "C"
|
||||
c->SetCurrentMenu(pMenu);
|
||||
c->AddSeparator();
|
||||
c->AddItem(wxT("NyqBench"),
|
||||
_("&Nyquist Workbench..."),
|
||||
true,
|
||||
XO("&Nyquist Workbench..."),
|
||||
findme,
|
||||
static_cast<CommandFunctorPointer>(&NyqBench::ShowNyqBench),
|
||||
AudioIONotBusyFlag);
|
||||
|
@ -30,6 +30,9 @@ extern AUDACITY_DLL_API const wxString& GetCustomSubstitution(const wxString& st
|
||||
|
||||
// Marks strings for extraction only... use .Translate() to translate.
|
||||
#define XO(s) (TranslatableString{ wxT(s), {} })
|
||||
// XXO is used instead of XO in some places, for reasons that are
|
||||
// no longer important. The two are equivalent now.
|
||||
#define XXO(s) XO(s)
|
||||
|
||||
#ifdef _
|
||||
#undef _
|
||||
|
@ -133,13 +133,12 @@ ConditionalGroupItem::~ConditionalGroupItem() {}
|
||||
SeparatorItem::~SeparatorItem() {}
|
||||
|
||||
CommandItem::CommandItem(const CommandID &name_,
|
||||
const wxString &label_in_,
|
||||
bool excludeFromMacros_,
|
||||
const TranslatableString &label_in_,
|
||||
CommandHandlerFinder finder_,
|
||||
CommandFunctorPointer callback_,
|
||||
CommandFlag flags_,
|
||||
const CommandManager::Options &options_)
|
||||
: name{ name_ }, label_in{ label_in_ }, excludeFromMacros{ excludeFromMacros_ }
|
||||
: name{ name_ }, label_in{ label_in_ }
|
||||
, finder{ finder_ }, callback{ callback_ }
|
||||
, flags{ flags_ }, options{ options_ }
|
||||
{}
|
||||
@ -193,7 +192,7 @@ void VisitItem( AudacityProject &project, MenuTable::BaseItem *pItem )
|
||||
if (const auto pCommand =
|
||||
dynamic_cast<CommandItem*>( pItem )) {
|
||||
manager.AddItem(
|
||||
pCommand->name, pCommand->label_in, pCommand->excludeFromMacros,
|
||||
pCommand->name, pCommand->label_in,
|
||||
pCommand->finder, pCommand->callback,
|
||||
pCommand->flags, pCommand->options
|
||||
);
|
||||
|
@ -504,8 +504,7 @@ void CommandManager::ClearCurrentMenu()
|
||||
|
||||
|
||||
void CommandManager::AddItem(const CommandID &name,
|
||||
const wxChar *label_in,
|
||||
bool excludeFromMacros,
|
||||
const TranslatableString &label_in,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
CommandFlag flags,
|
||||
@ -514,7 +513,7 @@ void CommandManager::AddItem(const CommandID &name,
|
||||
if (options.global) {
|
||||
wxASSERT( flags == AlwaysEnabledFlag );
|
||||
AddGlobalCommand(
|
||||
name, label_in, excludeFromMacros, finder, callback, options );
|
||||
name, label_in, finder, callback, options );
|
||||
return;
|
||||
}
|
||||
|
||||
@ -523,7 +522,6 @@ void CommandManager::AddItem(const CommandID &name,
|
||||
CommandListEntry *entry =
|
||||
NewIdentifier(name,
|
||||
label_in,
|
||||
excludeFromMacros,
|
||||
CurrentMenu(), finder, callback,
|
||||
{}, 0, 0,
|
||||
options);
|
||||
@ -563,9 +561,7 @@ void CommandManager::AddItemList(const CommandID & name,
|
||||
for (size_t i = 0, cnt = nItems; i < cnt; i++) {
|
||||
CommandListEntry *entry =
|
||||
NewIdentifier(name,
|
||||
items[i].Translation(),
|
||||
// No means yet to specify excludeFromMacros !
|
||||
false,
|
||||
items[i].Msgid(),
|
||||
CurrentMenu(),
|
||||
finder,
|
||||
callback,
|
||||
@ -581,14 +577,13 @@ void CommandManager::AddItemList(const CommandID & name,
|
||||
}
|
||||
|
||||
void CommandManager::AddGlobalCommand(const CommandID &name,
|
||||
const wxChar *label_in,
|
||||
bool excludeFromMacros,
|
||||
const TranslatableString &label_in,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
const Options &options)
|
||||
{
|
||||
CommandListEntry *entry =
|
||||
NewIdentifier(name, label_in, excludeFromMacros, NULL, finder, callback,
|
||||
NewIdentifier(name, label_in, NULL, finder, callback,
|
||||
{}, 0, 0, options);
|
||||
|
||||
entry->enabled = false;
|
||||
@ -620,8 +615,7 @@ int CommandManager::NextIdentifier(int ID)
|
||||
///If it does, a workaround may be to keep controls below wxID_LOWEST
|
||||
///and keep menus above wxID_HIGHEST
|
||||
CommandListEntry *CommandManager::NewIdentifier(const CommandID & nameIn,
|
||||
const wxString & label,
|
||||
bool excludeFromMacros,
|
||||
const TranslatableString & labelIn,
|
||||
wxMenu *menu,
|
||||
CommandHandlerFinder finder,
|
||||
CommandFunctorPointer callback,
|
||||
@ -630,8 +624,9 @@ CommandListEntry *CommandManager::NewIdentifier(const CommandID & nameIn,
|
||||
int count,
|
||||
const Options &options)
|
||||
{
|
||||
// if empty, new identifier's long label will be same as label, below:
|
||||
const auto &longLabel = options.longName;
|
||||
bool excludeFromMacros =
|
||||
(options.allowInMacros == 0) ||
|
||||
((options.allowInMacros == -1) && labelIn.MSGID().GET().Contains("..."));
|
||||
|
||||
const wxString & accel = options.accel;
|
||||
bool bIsEffect = options.bIsEffect;
|
||||
@ -642,6 +637,11 @@ CommandListEntry *CommandManager::NewIdentifier(const CommandID & nameIn,
|
||||
else
|
||||
cookedParameter = parameter;
|
||||
|
||||
auto label = labelIn.Translation();
|
||||
|
||||
// if empty, new identifier's long label will be same as label, below:
|
||||
const auto &longLabel = options.longName.Translation();
|
||||
|
||||
const bool multi = !nameSuffix.empty();
|
||||
auto name = nameIn;
|
||||
|
||||
|
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -822,7 +822,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& ClipActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr ClipSelectMenu( AudacityProject& )
|
||||
{
|
||||
@ -840,10 +839,10 @@ MenuTable::BaseItemPtr ClipSelectMenu( AudacityProject& )
|
||||
WaveTracksExistFlag ),
|
||||
Command( wxT("SelPrevClip"), XXO("Previo&us Clip"),
|
||||
FN(OnSelectPrevClip), WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+,"), _("Select Previous Clip") } ),
|
||||
Options{ wxT("Alt+,"), XO("Select Previous Clip") } ),
|
||||
Command( wxT("SelNextClip"), XXO("N&ext Clip"), FN(OnSelectNextClip),
|
||||
WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+."), _("Select Next Clip") } )
|
||||
Options{ wxT("Alt+."), XO("Select Next Clip") } )
|
||||
);
|
||||
}
|
||||
|
||||
@ -856,11 +855,11 @@ MenuTable::BaseItemPtr ClipCursorItems( AudacityProject & )
|
||||
Command( wxT("CursPrevClipBoundary"), XXO("Pre&vious Clip Boundary"),
|
||||
FN(OnCursorPrevClipBoundary),
|
||||
WaveTracksExistFlag,
|
||||
Options{}.LongName( _("Cursor to Prev Clip Boundary") ) ),
|
||||
Options{}.LongName( XO("Cursor to Prev Clip Boundary") ) ),
|
||||
Command( wxT("CursNextClipBoundary"), XXO("Ne&xt Clip Boundary"),
|
||||
FN(OnCursorNextClipBoundary),
|
||||
WaveTracksExistFlag,
|
||||
Options{}.LongName( _("Cursor to Next Clip Boundary") ) )
|
||||
Options{}.LongName( XO("Cursor to Next Clip Boundary") ) )
|
||||
);
|
||||
}
|
||||
|
||||
@ -876,5 +875,4 @@ MenuTable::BaseItemPtr ExtraClipCursorItems( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -1002,7 +1002,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& EditActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr LabelEditMenus( AudacityProject &project );
|
||||
|
||||
@ -1208,5 +1207,4 @@ RegisteredMenuItemEnabler selectWaveTracks2{{
|
||||
selectAll
|
||||
}};
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -136,7 +136,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& ExtraActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
// Imported menu item definitions
|
||||
|
||||
@ -254,5 +253,4 @@ MenuTable::BaseItemPtr ExtraMiscItems( AudacityProject &project )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -545,7 +545,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& FileActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr FileMenu( AudacityProject& )
|
||||
{
|
||||
@ -696,5 +695,4 @@ MenuTable::BaseItemPtr FileMenu( AudacityProject& )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -411,7 +411,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& HelpActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr HelpMenu( AudacityProject & )
|
||||
{
|
||||
@ -475,5 +474,4 @@ MenuTable::BaseItemPtr HelpMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -560,7 +560,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& LabelEditActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr LabelEditMenus( AudacityProject & )
|
||||
{
|
||||
@ -612,42 +611,42 @@ MenuTable::BaseItemPtr LabelEditMenus( AudacityProject & )
|
||||
Command( wxT("CutLabels"), XXO("&Cut"), FN(OnCutLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag |
|
||||
TimeSelectedFlag | IsNotSyncLockedFlag,
|
||||
Options{ wxT("Alt+X"), _("Label Cut") } ),
|
||||
Options{ wxT("Alt+X"), XO("Label Cut") } ),
|
||||
Command( wxT("DeleteLabels"), XXO("&Delete"), FN(OnDeleteLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag |
|
||||
TimeSelectedFlag | IsNotSyncLockedFlag,
|
||||
Options{ wxT("Alt+K"), _("Label Delete") } ),
|
||||
Options{ wxT("Alt+K"), XO("Label Delete") } ),
|
||||
|
||||
Separator(),
|
||||
|
||||
/* i18n-hint: (verb) A special way to cut out a piece of audio*/
|
||||
Command( wxT("SplitCutLabels"), XXO("&Split Cut"),
|
||||
FN(OnSplitCutLabels), NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+Shift+X"), _("Label Split Cut") } ),
|
||||
Options{ wxT("Alt+Shift+X"), XO("Label Split Cut") } ),
|
||||
Command( wxT("SplitDeleteLabels"), XXO("Sp&lit Delete"),
|
||||
FN(OnSplitDeleteLabels), NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+Shift+K"), _("Label Split Delete") } ),
|
||||
Options{ wxT("Alt+Shift+K"), XO("Label Split Delete") } ),
|
||||
|
||||
Separator(),
|
||||
|
||||
Command( wxT("SilenceLabels"), XXO("Silence &Audio"),
|
||||
FN(OnSilenceLabels), NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+L"), _("Label Silence") } ),
|
||||
Options{ wxT("Alt+L"), XO("Label Silence") } ),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("CopyLabels"), XXO("Co&py"), FN(OnCopyLabels),
|
||||
NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+Shift+C"), _("Label Copy") } ),
|
||||
Options{ wxT("Alt+Shift+C"), XO("Label Copy") } ),
|
||||
|
||||
Separator(),
|
||||
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("SplitLabels"), XXO("Spli&t"), FN(OnSplitLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+I"), _("Label Split") } ),
|
||||
Options{ wxT("Alt+I"), XO("Label Split") } ),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("JoinLabels"), XXO("&Join"), FN(OnJoinLabels),
|
||||
NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+J"), _("Label Join") } ),
|
||||
Options{ wxT("Alt+J"), XO("Label Join") } ),
|
||||
Command( wxT("DisjoinLabels"), XXO("Detac&h at Silences"),
|
||||
FN(OnDisjoinLabels), NotBusyLabelsAndWaveFlags,
|
||||
wxT("Alt+Shift+J") )
|
||||
@ -656,5 +655,4 @@ MenuTable::BaseItemPtr LabelEditMenus( AudacityProject & )
|
||||
); // two menus
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -555,7 +555,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &project) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& NavigationActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr ExtraGlobalCommands( AudacityProject & )
|
||||
{
|
||||
@ -603,5 +602,4 @@ MenuTable::BaseItemPtr ExtraFocusMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -227,9 +227,7 @@ void AddEffectMenuItems(
|
||||
auto name = plug->GetSymbol().Translation();
|
||||
|
||||
if (plug->IsEffectInteractive())
|
||||
{
|
||||
name += wxT("...");
|
||||
}
|
||||
name += _("...");
|
||||
|
||||
if (groupBy == wxT("groupby:publisher"))
|
||||
{
|
||||
@ -297,9 +295,7 @@ void AddEffectMenuItems(
|
||||
auto name = plug->GetSymbol().Translation();
|
||||
|
||||
if (plug->IsEffectInteractive())
|
||||
{
|
||||
name += wxT("...");
|
||||
}
|
||||
name += _("...");
|
||||
|
||||
wxString group;
|
||||
if (groupBy == wxT("sortby:publisher:name"))
|
||||
@ -587,7 +583,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& PluginActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
// ... buf first some more helper definitions, which use FN
|
||||
namespace {
|
||||
@ -657,12 +652,13 @@ void AddEffectMenuItemGroup(
|
||||
wxString item = plug->GetPath();
|
||||
if( plug->GetPluginType() == PluginTypeEffect )
|
||||
temp2.push_back( Command( item,
|
||||
item,
|
||||
false,
|
||||
TranslatableString{ item },
|
||||
FN(OnEffect),
|
||||
flags[i],
|
||||
CommandManager::Options{}
|
||||
.IsEffect().Parameter( plugs[i] ) ) );
|
||||
.IsEffect()
|
||||
.AllowInMacros()
|
||||
.Parameter( plugs[i] ) ) );
|
||||
|
||||
i++;
|
||||
}
|
||||
@ -676,12 +672,13 @@ void AddEffectMenuItemGroup(
|
||||
PluginManager::Get().GetPlugin(plugs[i]);
|
||||
if( plug->GetPluginType() == PluginTypeEffect )
|
||||
pTable->push_back( Command( names[i],
|
||||
names[i],
|
||||
false,
|
||||
TranslatableString{ names[i] },
|
||||
FN(OnEffect),
|
||||
flags[i],
|
||||
CommandManager::Options{}
|
||||
.IsEffect().Parameter( plugs[i] ) ) );
|
||||
.IsEffect()
|
||||
.AllowInMacros()
|
||||
.Parameter( plugs[i] ) ) );
|
||||
}
|
||||
|
||||
if (max > 0)
|
||||
@ -712,14 +709,17 @@ void AddEffectMenuItemGroup(
|
||||
MenuTable::BaseItemPtrs PopulateMacrosMenu( CommandFlag flags )
|
||||
{
|
||||
MenuTable::BaseItemPtrs result;
|
||||
auto names = MacroCommands::GetNames();
|
||||
auto names = MacroCommands::GetNames(); // these names come from filenames
|
||||
int i;
|
||||
|
||||
for (i = 0; i < (int)names.size(); i++) {
|
||||
auto MacroID = ApplyMacroDialog::MacroIdOfName( names[i] );
|
||||
result.push_back( MenuTable::Command( MacroID,
|
||||
names[i], false, FN(OnApplyMacroDirectly),
|
||||
flags ) );
|
||||
TranslatableString{ names[i] }, // file name verbatim
|
||||
FN(OnApplyMacroDirectly),
|
||||
flags,
|
||||
CommandManager::Options{}.AllowInMacros()
|
||||
) );
|
||||
}
|
||||
|
||||
return result;
|
||||
@ -765,13 +765,12 @@ MenuTable::BaseItemPtr EffectMenu( AudacityProject &project )
|
||||
// the plugin manager...sorry! :-(
|
||||
|
||||
const auto &lastEffect = MenuManager::Get(project).mLastEffect;
|
||||
wxString buildMenuLabel;
|
||||
if (!lastEffect.empty()) {
|
||||
buildMenuLabel.Printf(_("Repeat %s"),
|
||||
EffectManager::Get().GetCommandName(lastEffect));
|
||||
}
|
||||
TranslatableString buildMenuLabel;
|
||||
if (!lastEffect.empty())
|
||||
buildMenuLabel = XO("Repeat %s")
|
||||
.Format( EffectManager::Get().GetCommandName(lastEffect) );
|
||||
else
|
||||
buildMenuLabel = _("Repeat Last Effect");
|
||||
buildMenuLabel = XO("Repeat Last Effect");
|
||||
|
||||
return Menu( _("Effe&ct"),
|
||||
#ifdef EXPERIMENTAL_EFFECT_MANAGEMENT
|
||||
@ -781,7 +780,7 @@ MenuTable::BaseItemPtr EffectMenu( AudacityProject &project )
|
||||
Separator(),
|
||||
|
||||
#endif
|
||||
Command( wxT("RepeatLastEffect"), buildMenuLabel, false,
|
||||
Command( wxT("RepeatLastEffect"), buildMenuLabel,
|
||||
FN(OnRepeatLastEffect),
|
||||
AudioIONotBusyFlag | TimeSelectedFlag |
|
||||
WaveTracksSelectedFlag | HasLastEffectFlag,
|
||||
@ -978,5 +977,4 @@ MenuTable::BaseItemPtr ExtraScriptablesIIMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -1025,7 +1025,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &project) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& SelectActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr ClipSelectMenu( AudacityProject& );
|
||||
|
||||
@ -1038,10 +1037,10 @@ MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||
return Menu( _("&Select"),
|
||||
Command( wxT("SelectAll"), XXO("&All"), FN(OnSelectAll),
|
||||
TracksExistFlag,
|
||||
Options{ wxT("Ctrl+A"), _("Select All") } ),
|
||||
Options{ wxT("Ctrl+A"), XO("Select All") } ),
|
||||
Command( wxT("SelectNone"), XXO("&None"), FN(OnSelectNone),
|
||||
TracksExistFlag,
|
||||
Options{ wxT("Ctrl+Shift+A"), _("Select None") } ),
|
||||
Options{ wxT("Ctrl+Shift+A"), XO("Select None") } ),
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -1056,7 +1055,7 @@ MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||
Command( wxT("SelSyncLockTracks"), XXO("In All &Sync-Locked Tracks"),
|
||||
FN(OnSelectSyncLockSel),
|
||||
TracksSelectedFlag | IsSyncLockedFlag,
|
||||
Options{ wxT("Ctrl+Shift+Y"), _("Select Sync-Locked") } )
|
||||
Options{ wxT("Ctrl+Shift+Y"), XO("Select Sync-Locked") } )
|
||||
#endif
|
||||
),
|
||||
|
||||
@ -1065,19 +1064,19 @@ MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||
Menu( _("R&egion"),
|
||||
Command( wxT("SetLeftSelection"), XXO("&Left at Playback Position"),
|
||||
FN(OnSetLeftSelection), TracksExistFlag,
|
||||
Options{ wxT("["), _("Set Selection Left at Play Position") } ),
|
||||
Options{ wxT("["), XO("Set Selection Left at Play Position") } ),
|
||||
Command( wxT("SetRightSelection"), XXO("&Right at Playback Position"),
|
||||
FN(OnSetRightSelection), TracksExistFlag,
|
||||
Options{ wxT("]"), _("Set Selection Right at Play Position") } ),
|
||||
Options{ wxT("]"), XO("Set Selection Right at Play Position") } ),
|
||||
Command( wxT("SelTrackStartToCursor"), XXO("Track &Start to Cursor"),
|
||||
FN(OnSelectStartCursor), AlwaysEnabledFlag,
|
||||
Options{ wxT("Shift+J"), _("Select Track Start to Cursor") } ),
|
||||
Options{ wxT("Shift+J"), XO("Select Track Start to Cursor") } ),
|
||||
Command( wxT("SelCursorToTrackEnd"), XXO("Cursor to Track &End"),
|
||||
FN(OnSelectCursorEnd), AlwaysEnabledFlag,
|
||||
Options{ wxT("Shift+K"), _("Select Cursor to Track End") } ),
|
||||
Options{ wxT("Shift+K"), XO("Select Cursor to Track End") } ),
|
||||
Command( wxT("SelTrackStartToEnd"), XXO("Track Start to En&d"),
|
||||
FN(OnSelectTrackStartToEnd), AlwaysEnabledFlag,
|
||||
Options{}.LongName( _("Select Track Start to End") ) ),
|
||||
Options{}.LongName( XO("Select Track Start to End") ) ),
|
||||
|
||||
Separator(),
|
||||
|
||||
@ -1120,7 +1119,7 @@ MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||
Command( wxT("SelCursorStoredCursor"),
|
||||
XXO("Cursor to Stored &Cursor Position"),
|
||||
FN(OnSelectCursorStoredCursor), TracksExistFlag,
|
||||
Options{}.LongName( _("Select Cursor to Stored") ) ),
|
||||
Options{}.LongName( XO("Select Cursor to Stored") ) ),
|
||||
|
||||
Command( wxT("StoreCursorPosition"), XXO("Store Cursor Pos&ition"),
|
||||
FN(OnCursorPositionStore),
|
||||
@ -1132,7 +1131,7 @@ MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||
|
||||
Command( wxT("ZeroCross"), XXO("At &Zero Crossings"),
|
||||
FN(OnZeroCrossing), TracksSelectedFlag,
|
||||
Options{ wxT("Z"), _("Select Zero Crossing") } )
|
||||
Options{ wxT("Z"), XO("Select Zero Crossing") } )
|
||||
);
|
||||
}
|
||||
|
||||
@ -1192,30 +1191,30 @@ MenuTable::BaseItemPtr CursorMenu( AudacityProject & )
|
||||
Command( wxT("CursSelStart"), XXO("Selection Star&t"),
|
||||
FN(OnCursorSelStart),
|
||||
TimeSelectedFlag,
|
||||
Options{}.LongName( _("Cursor to Selection Start") ) ),
|
||||
Options{}.LongName( XO("Cursor to Selection Start") ) ),
|
||||
Command( wxT("CursSelEnd"), XXO("Selection En&d"),
|
||||
FN(OnCursorSelEnd),
|
||||
TimeSelectedFlag,
|
||||
Options{}.LongName( _("Cursor to Selection End") ) ),
|
||||
Options{}.LongName( XO("Cursor to Selection End") ) ),
|
||||
|
||||
Command( wxT("CursTrackStart"), XXO("Track &Start"),
|
||||
FN(OnCursorTrackStart),
|
||||
TracksSelectedFlag,
|
||||
Options{ wxT("J"), _("Cursor to Track Start") } ),
|
||||
Options{ wxT("J"), XO("Cursor to Track Start") } ),
|
||||
Command( wxT("CursTrackEnd"), XXO("Track &End"),
|
||||
FN(OnCursorTrackEnd),
|
||||
TracksSelectedFlag,
|
||||
Options{ wxT("K"), _("Cursor to Track End") } ),
|
||||
Options{ wxT("K"), XO("Cursor to Track End") } ),
|
||||
|
||||
ClipCursorItems,
|
||||
|
||||
Command( wxT("CursProjectStart"), XXO("&Project Start"),
|
||||
FN(OnSkipStart),
|
||||
CanStopFlags,
|
||||
Options{ wxT("Home"), _("Cursor to Project Start") } ),
|
||||
Options{ wxT("Home"), XO("Cursor to Project Start") } ),
|
||||
Command( wxT("CursProjectEnd"), XXO("Project E&nd"), FN(OnSkipEnd),
|
||||
CanStopFlags,
|
||||
Options{ wxT("End"), _("Cursor to Project End") } )
|
||||
Options{ wxT("End"), XO("Cursor to Project End") } )
|
||||
);
|
||||
}
|
||||
|
||||
@ -1265,5 +1264,4 @@ MenuTable::BaseItemPtr ExtraSeekMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -244,7 +244,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& ToolbarActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr ToolbarsMenu( AudacityProject& )
|
||||
{
|
||||
@ -341,5 +340,4 @@ MenuTable::BaseItemPtr ExtraToolsMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -1247,7 +1247,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& TrackActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr TracksMenu( AudacityProject & )
|
||||
{
|
||||
@ -1320,13 +1319,13 @@ MenuTable::BaseItemPtr TracksMenu( AudacityProject & )
|
||||
// require the tracks to be selected.
|
||||
Command( wxT("PanLeft"), XXO("&Left"), FN(OnPanLeft),
|
||||
TracksSelectedFlag,
|
||||
Options{}.LongName( _("Pan Left") ) ),
|
||||
Options{}.LongName( XO("Pan Left") ) ),
|
||||
Command( wxT("PanRight"), XXO("&Right"), FN(OnPanRight),
|
||||
TracksSelectedFlag,
|
||||
Options{}.LongName( _("Pan Right") ) ),
|
||||
Options{}.LongName( XO("Pan Right") ) ),
|
||||
Command( wxT("PanCenter"), XXO("&Center"), FN(OnPanCenter),
|
||||
TracksSelectedFlag,
|
||||
Options{}.LongName( _("Pan Center") ) )
|
||||
Options{}.LongName( XO("Pan Center") ) )
|
||||
),
|
||||
|
||||
Separator(),
|
||||
@ -1381,10 +1380,10 @@ MenuTable::BaseItemPtr TracksMenu( AudacityProject & )
|
||||
Menu( _("S&ort Tracks"),
|
||||
Command( wxT("SortByTime"), XXO("By &Start Time"), FN(OnSortTime),
|
||||
TracksExistFlag,
|
||||
Options{}.LongName( _("Sort by Time") ) ),
|
||||
Options{}.LongName( XO("Sort by Time") ) ),
|
||||
Command( wxT("SortByName"), XXO("By &Name"), FN(OnSortName),
|
||||
TracksExistFlag,
|
||||
Options{}.LongName( _("Sort by Name") ) )
|
||||
Options{}.LongName( XO("Sort by Name") ) )
|
||||
)
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -1453,5 +1452,4 @@ MenuTable::BaseItemPtr ExtraTrackMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -889,7 +889,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& TransportActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr CursorMenu( AudacityProject& );
|
||||
|
||||
@ -931,8 +930,8 @@ MenuTable::BaseItemPtr TransportMenu( AudacityProject &project )
|
||||
// We supply the name for the 'other one' here.
|
||||
// It should be bound to Shift+R
|
||||
(gPrefs->ReadBool("/GUI/PreferNewTrackRecord", false)
|
||||
? _("&Append Record") : _("Record &New Track")),
|
||||
false, FN(OnRecord2ndChoice), CanStopFlags,
|
||||
? XO("&Append Record") : XO("Record &New Track")),
|
||||
FN(OnRecord2ndChoice), CanStopFlags,
|
||||
wxT("Shift+R")
|
||||
),
|
||||
|
||||
@ -1082,5 +1081,4 @@ MenuTable::BaseItemPtr ExtraPlayAtSpeedMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -431,7 +431,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &project) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& ViewActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr ToolbarsMenu( AudacityProject& );
|
||||
|
||||
@ -474,10 +473,10 @@ MenuTable::BaseItemPtr ViewMenu( AudacityProject& )
|
||||
Menu( _("Sk&ip to"),
|
||||
Command( wxT("SkipSelStart"), XXO("Selection Sta&rt"),
|
||||
FN(OnGoSelStart), TimeSelectedFlag,
|
||||
Options{ wxT("Ctrl+["), _("Skip to Selection Start") } ),
|
||||
Options{ wxT("Ctrl+["), XO("Skip to Selection Start") } ),
|
||||
Command( wxT("SkipSelEnd"), XXO("Selection En&d"), FN(OnGoSelEnd),
|
||||
TimeSelectedFlag,
|
||||
Options{ wxT("Ctrl+]"), _("Skip to Selection End") } )
|
||||
Options{ wxT("Ctrl+]"), XO("Skip to Selection End") } )
|
||||
),
|
||||
|
||||
Separator(),
|
||||
@ -550,5 +549,4 @@ MenuTable::BaseItemPtr ViewMenu( AudacityProject& )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
@ -118,7 +118,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
|
||||
#define FN(X) findCommandHandler, \
|
||||
static_cast<CommandFunctorPointer>(& WindowActions::Handler :: X)
|
||||
#define XXO(X) _(X), wxString{X}.Contains("...")
|
||||
|
||||
MenuTable::BaseItemPtr WindowMenu( AudacityProject & )
|
||||
{
|
||||
@ -158,7 +157,6 @@ MenuTable::BaseItemPtr ExtraWindowItems( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
#undef XXO
|
||||
#undef FN
|
||||
|
||||
#else
|
||||
|
@ -1032,10 +1032,7 @@ MenuTable::BaseItemPtr Scrubber::Menu()
|
||||
|
||||
MenuTable::BaseItemPtrs ptrs;
|
||||
for (const auto &item : menuItems) {
|
||||
ptrs.push_back( MenuTable::Command(
|
||||
item.name, item.label.Translation(),
|
||||
// No menu items yet have dialogs
|
||||
false,
|
||||
ptrs.push_back( MenuTable::Command( item.name, item.label,
|
||||
findme, static_cast<CommandFunctorPointer>(item.memFn),
|
||||
item.flags,
|
||||
item.StatusTest
|
||||
|
Loading…
x
Reference in New Issue
Block a user