diff --git a/src/Menus.cpp b/src/Menus.cpp index b4fea7b70..4385096cb 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -1230,8 +1230,8 @@ void AudacityProject::CreateMenusAndCommands() c->AddItem(wxT("QuickHelp"), _("&Getting Started"), FN(OnQuickHelp)); c->AddItem(wxT("Manual"), wxT("Audacity &Manual"), FN(OnManual)); #else - c->AddItem(wxT("QuickHelp"), _("&Quick Help"), FN(OnQuickHelp)); - c->AddItem(wxT("Manual"), _("&Manual"), FN(OnManual)); + c->AddItem(wxT("QuickHelp"), _("&Quick Help..."), FN(OnQuickHelp)); + c->AddItem(wxT("Manual"), _("&Manual..."), FN(OnManual)); #endif @@ -1371,10 +1371,10 @@ void AudacityProject::CreateMenusAndCommands() c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag); c->BeginSubMenu(_("Mi&xer")); - c->AddItem(wxT("OutputGain"), _("Ad&just Playback Volume"), FN(OnOutputGain)); + c->AddItem(wxT("OutputGain"), _("Ad&just Playback Volume..."), FN(OnOutputGain)); c->AddItem(wxT("OutputGainInc"), _("&Increase Playback Volume"), FN(OnOutputGainInc)); c->AddItem(wxT("OutputGainDec"), _("&Decrease Playback Volume"), FN(OnOutputGainDec)); - c->AddItem(wxT("InputGain"), _("Adj&ust Recording Volume"), FN(OnInputGain)); + c->AddItem(wxT("InputGain"), _("Adj&ust Recording Volume..."), FN(OnInputGain)); c->AddItem(wxT("InputGainInc"), _("I&ncrease Recording Volume"), FN(OnInputGainInc)); c->AddItem(wxT("InputGainDec"), _("D&ecrease Recording Volume"), FN(OnInputGainDec)); c->EndSubMenu(); @@ -1401,7 +1401,7 @@ void AudacityProject::CreateMenusAndCommands() c->AddItem(wxT("PlayAtSpeed"), _("Pl&ay-at-Speed"), FN(OnPlayAtSpeed)); c->AddItem(wxT("PlayAtSpeedLooped"), _("&Loop Play-at-Speed"), FN(OnPlayAtSpeedLooped)); c->AddItem(wxT("PlayAtSpeedCutPreview"), _("Play C&ut Preview-at-Speed"), FN(OnPlayAtSpeedCutPreview)); - c->AddItem(wxT("SetPlaySpeed"), _("Ad&just Playback Speed"), FN(OnSetPlaySpeed)); + c->AddItem(wxT("SetPlaySpeed"), _("Ad&just Playback Speed..."), FN(OnSetPlaySpeed)); c->AddItem(wxT("PlaySpeedInc"), _("&Increase Playback Speed"), FN(OnPlaySpeedInc)); c->AddItem(wxT("PlaySpeedDec"), _("&Decrease Playback Speed"), FN(OnPlaySpeedDec)); @@ -1429,16 +1429,16 @@ void AudacityProject::CreateMenusAndCommands() c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag); c->BeginSubMenu(_("De&vice")); - c->AddItem(wxT("InputDevice"), _("Change &Recording Device"), FN(OnInputDevice), wxT("Shift+I"), + c->AddItem(wxT("InputDevice"), _("Change &Recording Device..."), FN(OnInputDevice), wxT("Shift+I"), AudioIONotBusyFlag, AudioIONotBusyFlag); - c->AddItem(wxT("OutputDevice"), _("Change &Playback Device"), FN(OnOutputDevice), wxT("Shift+O"), + c->AddItem(wxT("OutputDevice"), _("Change &Playback Device..."), FN(OnOutputDevice), wxT("Shift+O"), AudioIONotBusyFlag, AudioIONotBusyFlag); - c->AddItem(wxT("AudioHost"), _("Change Audio &Host"), FN(OnAudioHost), wxT("Shift+H"), + c->AddItem(wxT("AudioHost"), _("Change Audio &Host..."), FN(OnAudioHost), wxT("Shift+H"), AudioIONotBusyFlag, AudioIONotBusyFlag); - c->AddItem(wxT("InputChannels"), _("Change Recording Cha&nnels"), FN(OnInputChannels), wxT("Shift+N"), + c->AddItem(wxT("InputChannels"), _("Change Recording Cha&nnels..."), FN(OnInputChannels), wxT("Shift+N"), AudioIONotBusyFlag, AudioIONotBusyFlag); c->EndSubMenu(); @@ -1543,7 +1543,7 @@ void AudacityProject::CreateMenusAndCommands() c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag); c->BeginSubMenu(_("&Track")); - c->AddItem(wxT("TrackPan"), _("Change P&an on Focused Track"), FN(OnTrackPan), wxT("Shift+P"), + c->AddItem(wxT("TrackPan"), _("Change P&an on Focused Track..."), FN(OnTrackPan), wxT("Shift+P"), TrackPanelHasFocus | TracksExistFlag, TrackPanelHasFocus | TracksExistFlag); c->AddItem(wxT("TrackPanLeft"), _("Pan &Left on Focused Track"), FN(OnTrackPanLeft), wxT("Alt+Shift+Left"), @@ -1552,7 +1552,7 @@ void AudacityProject::CreateMenusAndCommands() c->AddItem(wxT("TrackPanRight"), _("Pan &Right on Focused Track"), FN(OnTrackPanRight), wxT("Alt+Shift+Right"), TrackPanelHasFocus | TracksExistFlag, TrackPanelHasFocus | TracksExistFlag); - c->AddItem(wxT("TrackGain"), _("Change Gai&n on Focused Track"), FN(OnTrackGain), wxT("Shift+G"), + c->AddItem(wxT("TrackGain"), _("Change Gai&n on Focused Track..."), FN(OnTrackGain), wxT("Shift+G"), TrackPanelHasFocus | TracksExistFlag, TrackPanelHasFocus | TracksExistFlag); c->AddItem(wxT("TrackGainInc"), _("&Increase Gain on Focused Track"), FN(OnTrackGainInc), wxT("Alt+Shift+Up"), @@ -1561,7 +1561,7 @@ void AudacityProject::CreateMenusAndCommands() c->AddItem(wxT("TrackGainDec"), _("&Decrease Gain on Focused Track"), FN(OnTrackGainDec), wxT("Alt+Shift+Down"), TrackPanelHasFocus | TracksExistFlag, TrackPanelHasFocus | TracksExistFlag); - c->AddItem(wxT("TrackMenu"), _("Op&en Menu on Focused Track"), FN(OnTrackMenu), wxT("Shift+M\tskipKeydown"), + c->AddItem(wxT("TrackMenu"), _("Op&en Menu on Focused Track..."), FN(OnTrackMenu), wxT("Shift+M\tskipKeydown"), TracksExistFlag | TrackPanelHasFocus, TracksExistFlag | TrackPanelHasFocus); c->AddItem(wxT("TrackMute"), _("M&ute/Unmute Focused Track"), FN(OnTrackMute), wxT("Shift+U"), @@ -1945,7 +1945,7 @@ void AudacityProject::AddEffectMenuItemGroup(CommandManager *c, item, FN(OnEffect), flags[i], - flags[i], plugs[i]); + flags[i], true, plugs[i]); i++; } @@ -1960,7 +1960,7 @@ void AudacityProject::AddEffectMenuItemGroup(CommandManager *c, names[i], FN(OnEffect), flags[i], - flags[i], plugs[i]); + flags[i], true, plugs[i]); } if (max > 0) diff --git a/src/commands/CommandManager.cpp b/src/commands/CommandManager.cpp index 6d8b69db9..84195f04a 100644 --- a/src/commands/CommandManager.cpp +++ b/src/commands/CommandManager.cpp @@ -760,7 +760,7 @@ void CommandManager::InsertItem(const wxString & name, } } - CommandListEntry *entry = NewIdentifier(name, label_in, menu, finder, callback, false, 0, 0); + CommandListEntry *entry = NewIdentifier(name, label_in, menu, finder, callback, false, 0, 0, false); int ID = entry->id; wxString label = GetLabel(entry); @@ -804,9 +804,10 @@ void CommandManager::AddItem(const wxChar *name, CommandFunctorPointer callback, CommandFlag flags, CommandMask mask, + bool bIsEffect, const CommandParameter ¶meter) { - AddItem(name, label, finder, callback, wxT(""), flags, mask, -1, parameter); + AddItem(name, label, finder, callback, wxT(""), flags, mask, -1, bIsEffect, parameter); } void CommandManager::AddItem(const wxChar *name, @@ -817,6 +818,7 @@ void CommandManager::AddItem(const wxChar *name, CommandFlag flags, CommandMask mask, int checkmark, + bool bIsEffect, const CommandParameter ¶meter) { wxString cookedParameter; @@ -826,7 +828,7 @@ void CommandManager::AddItem(const wxChar *name, cookedParameter = parameter; CommandListEntry *entry = NewIdentifier(name, label_in, accel, CurrentMenu(), finder, callback, - false, 0, 0, cookedParameter); + false, 0, 0, bIsEffect, cookedParameter); int ID = entry->id; wxString label = GetLabelWithDisabledAccel(entry); @@ -855,7 +857,8 @@ void CommandManager::AddItem(const wxChar *name, void CommandManager::AddItemList(const wxString & name, const wxArrayString & labels, CommandHandlerFinder finder, - CommandFunctorPointer callback) + CommandFunctorPointer callback, + bool bIsEffect) { for (size_t i = 0, cnt = labels.GetCount(); i < cnt; i++) { CommandListEntry *entry = NewIdentifier(name, @@ -865,7 +868,8 @@ void CommandManager::AddItemList(const wxString & name, callback, true, i, - cnt); + cnt, + bIsEffect); CurrentMenu()->Append(entry->id, GetLabel(entry)); mbSeparatorAllowed = true; } @@ -892,7 +896,7 @@ void CommandManager::AddCommand(const wxChar *name, CommandFlag flags, CommandMask mask) { - NewIdentifier(name, label_in, accel, NULL, finder, callback, false, 0, 0, {}); + NewIdentifier(name, label_in, accel, NULL, finder, callback, false, 0, 0, false, {}); if (flags != NoFlagsSpecifed || mask != NoFlagsSpecifed) { SetCommandFlags(name, flags, mask); @@ -907,7 +911,7 @@ void CommandManager::AddGlobalCommand(const wxChar *name, { CommandListEntry *entry = NewIdentifier(name, label_in, accel, NULL, finder, callback, - false, 0, 0, {}); + false, 0, 0, false, {}); entry->enabled = false; entry->isGlobal = true; @@ -945,7 +949,8 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & name, CommandFunctorPointer callback, bool multi, int index, - int count) + int count, + bool bIsEffect) { return NewIdentifier(name, label.BeforeFirst(wxT('\t')), @@ -955,7 +960,9 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & name, callback, multi, index, - count, {}); + count, + bIsEffect, + {}); } CommandListEntry *CommandManager::NewIdentifier(const wxString & nameIn, @@ -967,6 +974,7 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & nameIn, bool multi, int index, int count, + bool bIsEffect, const CommandParameter ¶meter) { wxString name = nameIn; @@ -1031,6 +1039,7 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & nameIn, entry->menu = menu; entry->finder = finder; entry->callback = callback; + entry->isEffect = bIsEffect; entry->multi = multi; entry->index = index; entry->count = count; @@ -1644,6 +1653,8 @@ void CommandManager::GetAllCommandNames(wxArrayString &names, bool includeMultis) { for(const auto &entry : mCommandList) { + if ( entry->isEffect ) + continue; if (!entry->multi) names.Add(entry->name); else if( includeMultis ) @@ -1655,6 +1666,12 @@ void CommandManager::GetAllCommandLabels(wxArrayString &names, bool includeMultis) { for(const auto &entry : mCommandList) { + // This is fetching commands from the menus, for use as batch commands. + // Until we have properly merged EffectManager and CommandManager + // we explicitly exclude effects, as they are already handled by the + // effects Manager. + if ( entry->isEffect ) + continue; if (!entry->multi) names.Add(entry->label); else if( includeMultis ) @@ -1674,6 +1691,8 @@ void CommandManager::GetAllCommandData( bool includeMultis) { for(const auto &entry : mCommandList) { + if ( entry->isEffect ) + continue; if (!entry->multi) { names.Add(entry->name); diff --git a/src/commands/CommandManager.h b/src/commands/CommandManager.h index 5f7c075bd..2bf98ddd1 100644 --- a/src/commands/CommandManager.h +++ b/src/commands/CommandManager.h @@ -81,6 +81,7 @@ struct CommandListEntry bool wantKeyup; bool isGlobal; bool isOccult; + bool isEffect; CommandFlag flags; CommandMask mask; }; @@ -162,7 +163,8 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler void AddItemList(const wxString & name, const wxArrayString & labels, CommandHandlerFinder finder, - CommandFunctorPointer callback); + CommandFunctorPointer callback, + bool bIsEffect = false); void AddCheck(const wxChar *name, const wxChar *label, @@ -184,6 +186,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler CommandFunctorPointer callback, CommandFlag flags = NoFlagsSpecifed, CommandMask mask = NoFlagsSpecifed, + bool bIsEffect = false, const CommandParameter ¶meter = CommandParameter{}); void AddItem(const wxChar *name, @@ -194,6 +197,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler CommandFlag flags = NoFlagsSpecifed, CommandMask mask = NoFlagsSpecifed, int checkmark = -1, + bool bIsEffect = false, const CommandParameter ¶meter = CommandParameter{}); void AddSeparator(); @@ -335,7 +339,8 @@ protected: CommandFunctorPointer callback, bool multi, int index, - int count); + int count, + bool bIsEffect); CommandListEntry *NewIdentifier(const wxString & name, const wxString & label, const wxString & accel, @@ -345,6 +350,7 @@ protected: bool multi, int index, int count, + bool bIsEffect, const CommandParameter ¶meter); //