1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-20 22:30:05 +02:00

Mask != flags is unusual: simplify most AddItem/AddCheck...

... and the no longer used AddCommand.

There are only four exceptions, all using NoAutoSelect in the flags and not in
the mask.
This commit is contained in:
Paul Licameli 2018-10-17 09:50:58 -04:00
parent 80437582d8
commit 42aef9f3e8
4 changed files with 100 additions and 202 deletions

View File

@ -380,12 +380,10 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
/*i18n-hint: "New" is an action (verb) to create a NEW project*/ /*i18n-hint: "New" is an action (verb) to create a NEW project*/
c->AddItem(wxT("New"), XXO("&New"), FN(OnNew), wxT("Ctrl+N"), c->AddItem(wxT("New"), XXO("&New"), FN(OnNew), wxT("Ctrl+N"),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
/*i18n-hint: (verb)*/ /*i18n-hint: (verb)*/
c->AddItem(wxT("Open"), XXO("&Open..."), FN(OnOpen), wxT("Ctrl+O"), c->AddItem(wxT("Open"), XXO("&Open..."), FN(OnOpen), wxT("Ctrl+O"),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
#ifdef EXPERIMENTAL_RESET #ifdef EXPERIMENTAL_RESET
@ -394,7 +392,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
// Do not translate this menu item (no XXO). // Do not translate this menu item (no XXO).
// It MUST not be shown to regular users. // It MUST not be shown to regular users.
c->AddItem(wxT("Reset"), wxT("&Dangerous Reset..."), FN(OnProjectReset), wxT(""), c->AddItem(wxT("Reset"), wxT("&Dangerous Reset..."), FN(OnProjectReset), wxT(""),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
#endif #endif
@ -410,7 +407,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu( _("&Save Project") ); c->BeginSubMenu( _("&Save Project") );
c->AddItem(wxT("Save"), XXO("&Save Project"), FN(OnSave), wxT("Ctrl+S"), c->AddItem(wxT("Save"), XXO("&Save Project"), FN(OnSave), wxT("Ctrl+S"),
AudioIONotBusyFlag | UnsavedChangesFlag,
AudioIONotBusyFlag | UnsavedChangesFlag); AudioIONotBusyFlag | UnsavedChangesFlag);
c->AddItem(wxT("SaveAs"), XXO("Save Project &As..."), FN(OnSaveAs)); c->AddItem(wxT("SaveAs"), XXO("Save Project &As..."), FN(OnSaveAs));
// TODO: The next two items should be disabled if project is empty // TODO: The next two items should be disabled if project is empty
@ -425,36 +421,28 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
// Enable Export audio commands only when there are audio tracks. // Enable Export audio commands only when there are audio tracks.
c->AddItem(wxT("ExportMp3"), XXO("Export as MP&3"), FN(OnExportMp3), wxT(""), c->AddItem(wxT("ExportMp3"), XXO("Export as MP&3"), FN(OnExportMp3), wxT(""),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag); AudioIONotBusyFlag | WaveTracksExistFlag);
c->AddItem(wxT("ExportWav"), XXO("Export as &WAV"), FN(OnExportWav), wxT(""), c->AddItem(wxT("ExportWav"), XXO("Export as &WAV"), FN(OnExportWav), wxT(""),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag); AudioIONotBusyFlag | WaveTracksExistFlag);
c->AddItem(wxT("ExportOgg"), XXO("Export as &OGG"), FN(OnExportOgg), wxT(""), c->AddItem(wxT("ExportOgg"), XXO("Export as &OGG"), FN(OnExportOgg), wxT(""),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag); AudioIONotBusyFlag | WaveTracksExistFlag);
c->AddItem(wxT("Export"), XXO("&Export Audio..."), FN(OnExportAudio), wxT("Ctrl+Shift+E"), c->AddItem(wxT("Export"), XXO("&Export Audio..."), FN(OnExportAudio), wxT("Ctrl+Shift+E"),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag); AudioIONotBusyFlag | WaveTracksExistFlag);
// Enable Export Selection commands only when there's a selection. // Enable Export Selection commands only when there's a selection.
c->AddItem(wxT("ExportSel"), XXO("Expo&rt Selected Audio..."), FN(OnExportSelection), c->AddItem(wxT("ExportSel"), XXO("Expo&rt Selected Audio..."), FN(OnExportSelection),
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag); AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag);
c->AddItem(wxT("ExportLabels"), XXO("Export &Labels..."), FN(OnExportLabels), c->AddItem(wxT("ExportLabels"), XXO("Export &Labels..."), FN(OnExportLabels),
AudioIONotBusyFlag | LabelTracksExistFlag,
AudioIONotBusyFlag | LabelTracksExistFlag); AudioIONotBusyFlag | LabelTracksExistFlag);
// Enable Export audio commands only when there are audio tracks. // Enable Export audio commands only when there are audio tracks.
c->AddItem(wxT("ExportMultiple"), XXO("Export &Multiple..."), FN(OnExportMultiple), wxT("Ctrl+Shift+L"), c->AddItem(wxT("ExportMultiple"), XXO("Export &Multiple..."), FN(OnExportMultiple), wxT("Ctrl+Shift+L"),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag); AudioIONotBusyFlag | WaveTracksExistFlag);
#if defined(USE_MIDI) #if defined(USE_MIDI)
c->AddItem(wxT("ExportMIDI"), XXO("Export MI&DI..."), FN(OnExportMIDI), c->AddItem(wxT("ExportMIDI"), XXO("Export MI&DI..."), FN(OnExportMIDI),
AudioIONotBusyFlag | NoteTracksExistFlag,
AudioIONotBusyFlag | NoteTracksExistFlag); AudioIONotBusyFlag | NoteTracksExistFlag);
#endif #endif
c->EndSubMenu(); c->EndSubMenu();
@ -474,11 +462,9 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
c->AddItem(wxT("PageSetup"), XXO("Pa&ge Setup..."), FN(OnPageSetup), c->AddItem(wxT("PageSetup"), XXO("Pa&ge Setup..."), FN(OnPageSetup),
AudioIONotBusyFlag | TracksExistFlag,
AudioIONotBusyFlag | TracksExistFlag); AudioIONotBusyFlag | TracksExistFlag);
/* i18n-hint: (verb) It's item on a menu. */ /* i18n-hint: (verb) It's item on a menu. */
c->AddItem(wxT("Print"), XXO("&Print..."), FN(OnPrint), c->AddItem(wxT("Print"), XXO("&Print..."), FN(OnPrint),
AudioIONotBusyFlag | TracksExistFlag,
AudioIONotBusyFlag | TracksExistFlag); AudioIONotBusyFlag | TracksExistFlag);
c->AddSeparator(); c->AddSeparator();
@ -487,7 +473,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
// and put it in the Audacity menu for us based on its ID. // and put it in the Audacity menu for us based on its ID.
/* i18n-hint: (verb) It's item on a menu. */ /* i18n-hint: (verb) It's item on a menu. */
c->AddItem(wxT("Exit"), XXO("E&xit"), FN(OnExit), wxT("Ctrl+Q"), c->AddItem(wxT("Exit"), XXO("E&xit"), FN(OnExit), wxT("Ctrl+Q"),
AlwaysEnabledFlag,
AlwaysEnabledFlag); AlwaysEnabledFlag);
c->EndMenu(); c->EndMenu();
@ -502,7 +487,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
AudioIONotBusyFlag | TimeSelectedFlag | TracksSelectedFlag); AudioIONotBusyFlag | TimeSelectedFlag | TracksSelectedFlag);
c->AddItem(wxT("Undo"), XXO("&Undo"), FN(OnUndo), wxT("Ctrl+Z"), c->AddItem(wxT("Undo"), XXO("&Undo"), FN(OnUndo), wxT("Ctrl+Z"),
AudioIONotBusyFlag | UndoAvailableFlag,
AudioIONotBusyFlag | UndoAvailableFlag); AudioIONotBusyFlag | UndoAvailableFlag);
// The default shortcut key for Redo is different on different platforms. // The default shortcut key for Redo is different on different platforms.
@ -514,7 +498,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
#endif #endif
c->AddItem(wxT("Redo"), XXO("&Redo"), FN(OnRedo), key, c->AddItem(wxT("Redo"), XXO("&Redo"), FN(OnRedo), key,
AudioIONotBusyFlag | RedoAvailableFlag,
AudioIONotBusyFlag | RedoAvailableFlag); AudioIONotBusyFlag | RedoAvailableFlag);
MenuManager::ModifyUndoMenuItems(project); MenuManager::ModifyUndoMenuItems(project);
@ -525,17 +508,17 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->AddItem(wxT("Cut"), XXO("Cu&t"), FN(OnCut), wxT("Ctrl+X"), c->AddItem(wxT("Cut"), XXO("Cu&t"), FN(OnCut), wxT("Ctrl+X"),
AudioIONotBusyFlag | CutCopyAvailableFlag | NoAutoSelect, AudioIONotBusyFlag | CutCopyAvailableFlag | NoAutoSelect,
-1, false, {},
AudioIONotBusyFlag | CutCopyAvailableFlag); AudioIONotBusyFlag | CutCopyAvailableFlag);
c->AddItem(wxT("Delete"), XXO("&Delete"), FN(OnDelete), wxT("Ctrl+K"), c->AddItem(wxT("Delete"), XXO("&Delete"), FN(OnDelete), wxT("Ctrl+K"),
AudioIONotBusyFlag | NoAutoSelect, AudioIONotBusyFlag | NoAutoSelect,
-1, false, {},
AudioIONotBusyFlag ); AudioIONotBusyFlag );
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->AddItem(wxT("Copy"), XXO("&Copy"), FN(OnCopy), wxT("Ctrl+C"), c->AddItem(wxT("Copy"), XXO("&Copy"), FN(OnCopy), wxT("Ctrl+C"),
AudioIONotBusyFlag | CutCopyAvailableFlag,
AudioIONotBusyFlag | CutCopyAvailableFlag); AudioIONotBusyFlag | CutCopyAvailableFlag);
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->AddItem(wxT("Paste"), XXO("&Paste"), FN(OnPaste), wxT("Ctrl+V"), c->AddItem(wxT("Paste"), XXO("&Paste"), FN(OnPaste), wxT("Ctrl+V"),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->AddItem(wxT("Duplicate"), XXO("Duplic&ate"), FN(OnDuplicate), wxT("Ctrl+D")); c->AddItem(wxT("Duplicate"), XXO("Duplic&ate"), FN(OnDuplicate), wxT("Ctrl+D"));
@ -552,11 +535,9 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->AddItem(wxT("Silence"), XXO("Silence Audi&o"), FN(OnSilence), wxT("Ctrl+L"), c->AddItem(wxT("Silence"), XXO("Silence Audi&o"), FN(OnSilence), wxT("Ctrl+L"),
AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag,
AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag); AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag);
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->AddItem(wxT("Trim"), XXO("Tri&m Audio"), FN(OnTrim), wxT("Ctrl+T"), c->AddItem(wxT("Trim"), XXO("Tri&m Audio"), FN(OnTrim), wxT("Ctrl+T"),
AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag,
AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag); AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -567,10 +548,8 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("Clip B&oundaries")); c->BeginSubMenu(_("Clip B&oundaries"));
/* i18n-hint: (verb) It's an item on a menu. */ /* i18n-hint: (verb) It's an item on a menu. */
c->AddItem(wxT("Split"), XXO("Sp&lit"), FN(OnSplit), wxT("Ctrl+I"), c->AddItem(wxT("Split"), XXO("Sp&lit"), FN(OnSplit), wxT("Ctrl+I"),
AudioIONotBusyFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag); AudioIONotBusyFlag | WaveTracksSelectedFlag);
c->AddItem(wxT("SplitNew"), XXO("Split Ne&w"), FN(OnSplitNew), wxT("Ctrl+Alt+I"), c->AddItem(wxT("SplitNew"), XXO("Split Ne&w"), FN(OnSplitNew), wxT("Ctrl+Alt+I"),
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag); AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag);
c->AddSeparator(); c->AddSeparator();
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
@ -583,12 +562,12 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("&Labels")); c->BeginSubMenu(_("&Labels"));
c->AddItem(wxT("EditLabels"), XXO("&Edit Labels..."), FN(OnEditLabels), c->AddItem(wxT("EditLabels"), XXO("&Edit Labels..."), FN(OnEditLabels),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddSeparator(); c->AddSeparator();
c->AddItem(wxT("AddLabel"), XXO("Add Label at &Selection"), FN(OnAddLabel), wxT("Ctrl+B"), c->AddItem(wxT("AddLabel"), XXO("Add Label at &Selection"), FN(OnAddLabel), wxT("Ctrl+B"),
AlwaysEnabledFlag, AlwaysEnabledFlag); AlwaysEnabledFlag);
c->AddItem(wxT("AddLabelPlaying"), XXO("Add Label at &Playback Position"), c->AddItem(wxT("AddLabelPlaying"), XXO("Add Label at &Playback Position"),
FN(OnAddLabelPlaying), FN(OnAddLabelPlaying),
#ifdef __WXMAC__ #ifdef __WXMAC__
@ -596,16 +575,15 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
#else #else
wxT("Ctrl+M"), wxT("Ctrl+M"),
#endif #endif
AudioIOBusyFlag,
AudioIOBusyFlag); AudioIOBusyFlag);
c->SetDefaultFlags(AudioIONotBusyFlag, AudioIONotBusyFlag); c->SetDefaultFlags(AudioIONotBusyFlag, AudioIONotBusyFlag);
c->AddItem(wxT("PasteNewLabel"), XXO("Paste Te&xt to New Label"), FN(OnPasteNewLabel), wxT("Ctrl+Alt+V"), c->AddItem(wxT("PasteNewLabel"), XXO("Paste Te&xt to New Label"), FN(OnPasteNewLabel), wxT("Ctrl+Alt+V"),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddSeparator(); c->AddSeparator();
c->AddCheck(wxT("TypeToCreateLabel"), XXO("&Type to Create a Label (on/off)"), c->AddCheck(wxT("TypeToCreateLabel"), XXO("&Type to Create a Label (on/off)"),
FN(OnToggleTypeToCreateLabel), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); FN(OnToggleTypeToCreateLabel), 0, AlwaysEnabledFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -618,10 +596,8 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->SetLongName( _("Label Cut"))->AddItem(wxT("CutLabels"), XXO("&Cut"), FN(OnCutLabels), wxT("Alt+X"), c->SetLongName( _("Label Cut"))->AddItem(wxT("CutLabels"), XXO("&Cut"), FN(OnCutLabels), wxT("Alt+X"),
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag | IsNotSyncLockedFlag,
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag | IsNotSyncLockedFlag); AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag | IsNotSyncLockedFlag);
c->SetLongName( _("Label Delete"))->AddItem(wxT("DeleteLabels"), XXO("&Delete"), FN(OnDeleteLabels), wxT("Alt+K"), c->SetLongName( _("Label Delete"))->AddItem(wxT("DeleteLabels"), XXO("&Delete"), FN(OnDeleteLabels), wxT("Alt+K"),
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag | IsNotSyncLockedFlag,
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag | IsNotSyncLockedFlag); AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag | IsNotSyncLockedFlag);
c->AddSeparator(); c->AddSeparator();
@ -641,7 +617,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->SetLongName( _("Label Split"))->AddItem(wxT("SplitLabels"), XXO("Spli&t"), FN(OnSplitLabels), wxT("Alt+I"), c->SetLongName( _("Label Split"))->AddItem(wxT("SplitLabels"), XXO("Spli&t"), FN(OnSplitLabels), wxT("Alt+I"),
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag); AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag);
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->SetLongName( _("Label Join"))->AddItem(wxT("JoinLabels"), XXO("&Join"), FN(OnJoinLabels), wxT("Alt+J")); c->SetLongName( _("Label Join"))->AddItem(wxT("JoinLabels"), XXO("&Join"), FN(OnJoinLabels), wxT("Alt+J"));
@ -650,7 +625,7 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->EndSubMenu(); c->EndSubMenu();
c->AddItem(wxT("EditMetaData"), XXO("Me&tadata..."), FN(OnEditMetadata), c->AddItem(wxT("EditMetaData"), XXO("Me&tadata..."), FN(OnEditMetadata),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@ -667,7 +642,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
#endif #endif
c->AddItem(wxT("Preferences"), XXO("Pre&ferences..."), FN(OnPreferences), key, c->AddItem(wxT("Preferences"), XXO("Pre&ferences..."), FN(OnPreferences), key,
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
c->EndMenu(); c->EndMenu();
@ -690,12 +664,11 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("&Tracks")); c->BeginSubMenu(_("&Tracks"));
c->AddItem(wxT("SelAllTracks"), XXO("In All &Tracks"), FN(OnSelectAllTracks), c->AddItem(wxT("SelAllTracks"), XXO("In All &Tracks"), FN(OnSelectAllTracks),
wxT("Ctrl+Shift+K"), wxT("Ctrl+Shift+K"),
TracksExistFlag, TracksExistFlag); TracksExistFlag);
#ifdef EXPERIMENTAL_SYNC_LOCK #ifdef EXPERIMENTAL_SYNC_LOCK
c->SetLongName( _("Select Sync-Locked"))->AddItem(wxT("SelSyncLockTracks"), XXO("In All &Sync-Locked Tracks"), c->SetLongName( _("Select Sync-Locked"))->AddItem(wxT("SelSyncLockTracks"), XXO("In All &Sync-Locked Tracks"),
FN(OnSelectSyncLockSel), wxT("Ctrl+Shift+Y"), FN(OnSelectSyncLockSel), wxT("Ctrl+Shift+Y"),
TracksSelectedFlag | IsSyncLockedFlag,
TracksSelectedFlag | IsSyncLockedFlag); TracksSelectedFlag | IsSyncLockedFlag);
#endif #endif
@ -710,20 +683,18 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->SetLongName( _("Set Selection Left at Play Position"))->AddItem(wxT("SetLeftSelection"), XXO("&Left at Playback Position"), FN(OnSetLeftSelection), wxT("[")); c->SetLongName( _("Set Selection Left at Play Position"))->AddItem(wxT("SetLeftSelection"), XXO("&Left at Playback Position"), FN(OnSetLeftSelection), wxT("["));
c->SetLongName( _("Set Selection Right at Play Position"))->AddItem(wxT("SetRightSelection"), XXO("&Right at Playback Position"), FN(OnSetRightSelection), wxT("]")); c->SetLongName( _("Set Selection Right at Play Position"))->AddItem(wxT("SetRightSelection"), XXO("&Right at Playback Position"), FN(OnSetRightSelection), wxT("]"));
c->SetDefaultFlags(TracksSelectedFlag, TracksSelectedFlag); c->SetDefaultFlags(TracksSelectedFlag, TracksSelectedFlag);
c->SetLongName( _("Select Track Start to Cursor"))->AddItem(wxT("SelTrackStartToCursor"), XXO("Track &Start to Cursor"), FN(OnSelectStartCursor), wxT("Shift+J"),AlwaysEnabledFlag,AlwaysEnabledFlag); c->SetLongName( _("Select Track Start to Cursor"))->AddItem(wxT("SelTrackStartToCursor"), XXO("Track &Start to Cursor"), FN(OnSelectStartCursor), wxT("Shift+J"),AlwaysEnabledFlag);
c->SetLongName( _("Select Cursor to Track End"))->AddItem(wxT("SelCursorToTrackEnd"), XXO("Cursor to Track &End"), FN(OnSelectCursorEnd), wxT("Shift+K"),AlwaysEnabledFlag,AlwaysEnabledFlag); c->SetLongName( _("Select Cursor to Track End"))->AddItem(wxT("SelCursorToTrackEnd"), XXO("Cursor to Track &End"), FN(OnSelectCursorEnd), wxT("Shift+K"),AlwaysEnabledFlag);
c->SetLongName( _("Select Track Start to End"))->AddItem(wxT("SelTrackStartToEnd"), XXO("Track Start to En&d"), FN(OnSelectTrackStartToEnd), wxT(""),AlwaysEnabledFlag,AlwaysEnabledFlag); c->SetLongName( _("Select Track Start to End"))->AddItem(wxT("SelTrackStartToEnd"), XXO("Track Start to En&d"), FN(OnSelectTrackStartToEnd), wxT(""),AlwaysEnabledFlag);
c->AddSeparator(); c->AddSeparator();
// GA: Audacity had 'Store Re&gion' here previously. There is no one-step // GA: Audacity had 'Store Re&gion' here previously. There is no one-step
// way to restore the 'Saved Cursor Position' in Select Menu, so arguably // way to restore the 'Saved Cursor Position' in Select Menu, so arguably
// using the word 'Selection' to do duty for both saving the region or the // using the word 'Selection' to do duty for both saving the region or the
// cursor is better. But it does not belong in a 'Region' submenu. // cursor is better. But it does not belong in a 'Region' submenu.
c->AddItem(wxT("SelSave"), XXO("S&tore Selection"), FN(OnSelectionSave), c->AddItem(wxT("SelSave"), XXO("S&tore Selection"), FN(OnSelectionSave),
WaveTracksSelectedFlag,
WaveTracksSelectedFlag); WaveTracksSelectedFlag);
// Audacity had 'Retrieve Regio&n' here previously. // Audacity had 'Retrieve Regio&n' here previously.
c->AddItem(wxT("SelRestore"), XXO("Retrieve Selectio&n"), FN(OnSelectionRestore), c->AddItem(wxT("SelRestore"), XXO("Retrieve Selectio&n"), FN(OnSelectionRestore),
TracksExistFlag,
TracksExistFlag); TracksExistFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -747,14 +718,14 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("Clip B&oundaries")); c->BeginSubMenu(_("Clip B&oundaries"));
c->AddItem(wxT("SelPrevClipBoundaryToCursor"), XXO("Pre&vious Clip Boundary to Cursor"), c->AddItem(wxT("SelPrevClipBoundaryToCursor"), XXO("Pre&vious Clip Boundary to Cursor"),
FN(OnSelectPrevClipBoundaryToCursor), wxT(""), FN(OnSelectPrevClipBoundaryToCursor), wxT(""),
WaveTracksExistFlag, WaveTracksExistFlag); WaveTracksExistFlag);
c->AddItem(wxT("SelCursorToNextClipBoundary"), XXO("Cursor to Ne&xt Clip Boundary"), c->AddItem(wxT("SelCursorToNextClipBoundary"), XXO("Cursor to Ne&xt Clip Boundary"),
FN(OnSelectCursorToNextClipBoundary), wxT(""), FN(OnSelectCursorToNextClipBoundary), wxT(""),
WaveTracksExistFlag, WaveTracksExistFlag); WaveTracksExistFlag);
c->SetLongName( _("Select Previous Clip"))->AddItem(wxT("SelPrevClip"), XXO("Previo&us Clip"), FN(OnSelectPrevClip), wxT("Alt+,"), c->SetLongName( _("Select Previous Clip"))->AddItem(wxT("SelPrevClip"), XXO("Previo&us Clip"), FN(OnSelectPrevClip), wxT("Alt+,"),
WaveTracksExistFlag, WaveTracksExistFlag); WaveTracksExistFlag);
c->SetLongName( _("Select Next Clip"))->AddItem(wxT("SelNextClip"), XXO("N&ext Clip"), FN(OnSelectNextClip), wxT("Alt+."), c->SetLongName( _("Select Next Clip"))->AddItem(wxT("SelNextClip"), XXO("N&ext Clip"), FN(OnSelectNextClip), wxT("Alt+."),
WaveTracksExistFlag, WaveTracksExistFlag); WaveTracksExistFlag);
c->EndSubMenu(); c->EndSubMenu();
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@ -762,10 +733,9 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddSeparator(); c->AddSeparator();
c->SetLongName( _("Select Cursor to Stored"))->AddItem(wxT("SelCursorStoredCursor"), XXO("Cursor to Stored &Cursor Position"), FN(OnSelectCursorStoredCursor), c->SetLongName( _("Select Cursor to Stored"))->AddItem(wxT("SelCursorStoredCursor"), XXO("Cursor to Stored &Cursor Position"), FN(OnSelectCursorStoredCursor),
wxT(""), TracksExistFlag, TracksExistFlag); wxT(""), TracksExistFlag);
c->AddItem(wxT("StoreCursorPosition"), XXO("Store Cursor Pos&ition"), FN(OnCursorPositionStore), c->AddItem(wxT("StoreCursorPosition"), XXO("Store Cursor Pos&ition"), FN(OnCursorPositionStore),
WaveTracksExistFlag,
WaveTracksExistFlag); WaveTracksExistFlag);
// Save cursor position is used in some selections. // Save cursor position is used in some selections.
// Maybe there should be a restore for it? // Maybe there should be a restore for it?
@ -785,17 +755,13 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("&Zoom")); c->BeginSubMenu(_("&Zoom"));
c->AddItem(wxT("ZoomIn"), XXO("Zoom &In"), FN(OnZoomIn), wxT("Ctrl+1"), c->AddItem(wxT("ZoomIn"), XXO("Zoom &In"), FN(OnZoomIn), wxT("Ctrl+1"),
ZoomInAvailableFlag,
ZoomInAvailableFlag); ZoomInAvailableFlag);
c->AddItem(wxT("ZoomNormal"), XXO("Zoom &Normal"), FN(OnZoomNormal), wxT("Ctrl+2")); c->AddItem(wxT("ZoomNormal"), XXO("Zoom &Normal"), FN(OnZoomNormal), wxT("Ctrl+2"));
c->AddItem(wxT("ZoomOut"), XXO("Zoom &Out"), FN(OnZoomOut), wxT("Ctrl+3"), c->AddItem(wxT("ZoomOut"), XXO("Zoom &Out"), FN(OnZoomOut), wxT("Ctrl+3"),
ZoomOutAvailableFlag,
ZoomOutAvailableFlag); ZoomOutAvailableFlag);
c->AddItem(wxT("ZoomSel"), XXO("&Zoom to Selection"), FN(OnZoomSel), wxT("Ctrl+E"), c->AddItem(wxT("ZoomSel"), XXO("&Zoom to Selection"), FN(OnZoomSel), wxT("Ctrl+E"),
TimeSelectedFlag,
TimeSelectedFlag); TimeSelectedFlag);
c->AddItem(wxT("ZoomToggle"), XXO("Zoom &Toggle"), FN(OnZoomToggle), wxT("Shift+Z"), c->AddItem(wxT("ZoomToggle"), XXO("Zoom &Toggle"), FN(OnZoomToggle), wxT("Shift+Z"),
TracksExistFlag,
TracksExistFlag); TracksExistFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -808,9 +774,9 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("Sk&ip to")); c->BeginSubMenu(_("Sk&ip to"));
c->SetLongName( _("Skip to Selection Start"))->AddItem(wxT("SkipSelStart"), XXO("Selection Sta&rt"), FN(OnGoSelStart), wxT("Ctrl+["), c->SetLongName( _("Skip to Selection Start"))->AddItem(wxT("SkipSelStart"), XXO("Selection Sta&rt"), FN(OnGoSelStart), wxT("Ctrl+["),
TimeSelectedFlag, TimeSelectedFlag); TimeSelectedFlag);
c->SetLongName( _("Skip to Selection End"))->AddItem(wxT("SkipSelEnd"), XXO("Selection En&d"), FN(OnGoSelEnd), wxT("Ctrl+]"), c->SetLongName( _("Skip to Selection End"))->AddItem(wxT("SkipSelEnd"), XXO("Selection En&d"), FN(OnGoSelEnd), wxT("Ctrl+]"),
TimeSelectedFlag, TimeSelectedFlag); TimeSelectedFlag);
c->EndSubMenu(); c->EndSubMenu();
c->AddSeparator(); c->AddSeparator();
@ -839,11 +805,10 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
/* i18n-hint: Clicking this menu item shows the various editing steps that have been taken.*/ /* i18n-hint: Clicking this menu item shows the various editing steps that have been taken.*/
c->AddItem(wxT("UndoHistory"), XXO("&History..."), FN(OnHistory), c->AddItem(wxT("UndoHistory"), XXO("&History..."), FN(OnHistory),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("Karaoke"), XXO("&Karaoke..."), FN(OnKaraoke), LabelTracksExistFlag, LabelTracksExistFlag); c->AddItem(wxT("Karaoke"), XXO("&Karaoke..."), FN(OnKaraoke), LabelTracksExistFlag);
c->AddItem(wxT("MixerBoard"), XXO("&Mixer Board..."), FN(OnMixerBoard), PlayableTracksExistFlag, PlayableTracksExistFlag); c->AddItem(wxT("MixerBoard"), XXO("&Mixer Board..."), FN(OnMixerBoard), PlayableTracksExistFlag);
c->AddSeparator(); c->AddSeparator();
@ -852,36 +817,36 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("&Toolbars")); c->BeginSubMenu(_("&Toolbars"));
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
c->AddItem(wxT("ResetToolbars"), XXO("Reset Toolb&ars"), FN(OnResetToolBars), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddItem(wxT("ResetToolbars"), XXO("Reset Toolb&ars"), FN(OnResetToolBars), 0, AlwaysEnabledFlag);
c->AddSeparator(); c->AddSeparator();
/* i18n-hint: Clicking this menu item shows the toolbar with the big buttons on it (play record etc)*/ /* i18n-hint: Clicking this menu item shows the toolbar with the big buttons on it (play record etc)*/
c->AddCheck(wxT("ShowTransportTB"), XXO("&Transport Toolbar"), FN(OnShowTransportToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowTransportTB"), XXO("&Transport Toolbar"), FN(OnShowTransportToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows a toolbar that has some tools in it*/ /* i18n-hint: Clicking this menu item shows a toolbar that has some tools in it*/
c->AddCheck(wxT("ShowToolsTB"), XXO("T&ools Toolbar"), FN(OnShowToolsToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowToolsTB"), XXO("T&ools Toolbar"), FN(OnShowToolsToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar with the recording level meters*/ /* i18n-hint: Clicking this menu item shows the toolbar with the recording level meters*/
c->AddCheck(wxT("ShowRecordMeterTB"), XXO("&Recording Meter Toolbar"), FN(OnShowRecordMeterToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowRecordMeterTB"), XXO("&Recording Meter Toolbar"), FN(OnShowRecordMeterToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar with the playback level meter*/ /* i18n-hint: Clicking this menu item shows the toolbar with the playback level meter*/
c->AddCheck(wxT("ShowPlayMeterTB"), XXO("&Playback Meter Toolbar"), FN(OnShowPlayMeterToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowPlayMeterTB"), XXO("&Playback Meter Toolbar"), FN(OnShowPlayMeterToolBar), 0, AlwaysEnabledFlag);
/* --i18nhint: Clicking this menu item shows the toolbar which has sound level meters*/ /* --i18nhint: Clicking this menu item shows the toolbar which has sound level meters*/
//c->AddCheck(wxT("ShowMeterTB"), XXO("Co&mbined Meter Toolbar"), FN(OnShowMeterToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); //c->AddCheck(wxT("ShowMeterTB"), XXO("Co&mbined Meter Toolbar"), FN(OnShowMeterToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar with the mixer*/ /* i18n-hint: Clicking this menu item shows the toolbar with the mixer*/
c->AddCheck(wxT("ShowMixerTB"), XXO("Mi&xer Toolbar"), FN(OnShowMixerToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowMixerTB"), XXO("Mi&xer Toolbar"), FN(OnShowMixerToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar for editing*/ /* i18n-hint: Clicking this menu item shows the toolbar for editing*/
c->AddCheck(wxT("ShowEditTB"), XXO("&Edit Toolbar"), FN(OnShowEditToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowEditTB"), XXO("&Edit Toolbar"), FN(OnShowEditToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar for transcription (currently just vary play speed)*/ /* i18n-hint: Clicking this menu item shows the toolbar for transcription (currently just vary play speed)*/
c->AddCheck(wxT("ShowTranscriptionTB"), XXO("Pla&y-at-Speed Toolbar"), FN(OnShowTranscriptionToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowTranscriptionTB"), XXO("Pla&y-at-Speed Toolbar"), FN(OnShowTranscriptionToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar that enables Scrub or Seek playback and Scrub Ruler*/ /* i18n-hint: Clicking this menu item shows the toolbar that enables Scrub or Seek playback and Scrub Ruler*/
c->AddCheck(wxT("ShowScrubbingTB"), XXO("Scru&b Toolbar"), FN(OnShowScrubbingToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowScrubbingTB"), XXO("Scru&b Toolbar"), FN(OnShowScrubbingToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar that manages devices*/ /* i18n-hint: Clicking this menu item shows the toolbar that manages devices*/
c->AddCheck(wxT("ShowDeviceTB"), XXO("&Device Toolbar"), FN(OnShowDeviceToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowDeviceTB"), XXO("&Device Toolbar"), FN(OnShowDeviceToolBar), 0, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar for selecting a time range of audio*/ /* i18n-hint: Clicking this menu item shows the toolbar for selecting a time range of audio*/
c->AddCheck(wxT("ShowSelectionTB"), XXO("&Selection Toolbar"), FN(OnShowSelectionToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowSelectionTB"), XXO("&Selection Toolbar"), FN(OnShowSelectionToolBar), 0, AlwaysEnabledFlag);
#ifdef EXPERIMENTAL_SPECTRAL_EDITING #ifdef EXPERIMENTAL_SPECTRAL_EDITING
/* i18n-hint: Clicking this menu item shows the toolbar for selecting a frequency range of audio*/ /* i18n-hint: Clicking this menu item shows the toolbar for selecting a frequency range of audio*/
c->AddCheck(wxT("ShowSpectralSelectionTB"), XXO("Spe&ctral Selection Toolbar"), FN(OnShowSpectralSelectionToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowSpectralSelectionTB"), XXO("Spe&ctral Selection Toolbar"), FN(OnShowSpectralSelectionToolBar), 0, AlwaysEnabledFlag);
#endif #endif
c->EndSubMenu(); c->EndSubMenu();
@ -889,11 +854,11 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddSeparator(); c->AddSeparator();
c->AddCheck(wxT("ShowExtraMenus"), XXO("&Extra Menus (on/off)"), FN(OnShowExtraMenus), c->AddCheck(wxT("ShowExtraMenus"), XXO("&Extra Menus (on/off)"), FN(OnShowExtraMenus),
gPrefs->Read(wxT("/GUI/ShowExtraMenus"), 0L), AlwaysEnabledFlag, AlwaysEnabledFlag); gPrefs->Read(wxT("/GUI/ShowExtraMenus"), 0L), AlwaysEnabledFlag);
c->AddCheck(wxT("ShowClipping"), XXO("&Show Clipping (on/off)"), FN(OnShowClipping), c->AddCheck(wxT("ShowClipping"), XXO("&Show Clipping (on/off)"), FN(OnShowClipping),
gPrefs->Read(wxT("/GUI/ShowClipping"), 0L), AlwaysEnabledFlag, AlwaysEnabledFlag); gPrefs->Read(wxT("/GUI/ShowClipping"), 0L), AlwaysEnabledFlag);
#if defined(EXPERIMENTAL_EFFECTS_RACK) #if defined(EXPERIMENTAL_EFFECTS_RACK)
c->AddCheck(wxT("ShowEffectsRack"), XXO("Show Effects Rack"), FN(OnShowEffectsRack), 0, AlwaysEnabledFlag, AlwaysEnabledFlag); c->AddCheck(wxT("ShowEffectsRack"), XXO("Show Effects Rack"), FN(OnShowEffectsRack), 0, AlwaysEnabledFlag);
#endif #endif
@ -912,7 +877,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddItem(wxT("PlayStop"), XXO("Pl&ay/Stop"), FN(OnPlayStop), wxT("Space")); c->AddItem(wxT("PlayStop"), XXO("Pl&ay/Stop"), FN(OnPlayStop), wxT("Space"));
c->AddItem(wxT("PlayStopSelect"), XXO("Play/Stop and &Set Cursor"), FN(OnPlayStopSelect), wxT("X")); c->AddItem(wxT("PlayStopSelect"), XXO("Play/Stop and &Set Cursor"), FN(OnPlayStopSelect), wxT("X"));
c->AddItem(wxT("PlayLooped"), XXO("&Loop Play"), FN(OnPlayLooped), wxT("Shift+Space"), c->AddItem(wxT("PlayLooped"), XXO("&Loop Play"), FN(OnPlayLooped), wxT("Shift+Space"),
CanStopAudioStreamFlag,
CanStopAudioStreamFlag); CanStopAudioStreamFlag);
c->AddItem(wxT("Pause"), XXO("&Pause"), FN(OnPause), wxT("P")); c->AddItem(wxT("Pause"), XXO("&Pause"), FN(OnPause), wxT("P"));
c->EndSubMenu(); c->EndSubMenu();
@ -939,7 +903,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
#ifdef EXPERIMENTAL_PUNCH_AND_ROLL #ifdef EXPERIMENTAL_PUNCH_AND_ROLL
c->AddItem(wxT("PunchAndRoll"), XXO("Punch and Rol&l Record"), FN(OnPunchAndRoll), wxT("Shift+D"), c->AddItem(wxT("PunchAndRoll"), XXO("Punch and Rol&l Record"), FN(OnPunchAndRoll), wxT("Shift+D"),
WaveTracksExistFlag | AudioIONotBusyFlag,
WaveTracksExistFlag | AudioIONotBusyFlag); WaveTracksExistFlag | AudioIONotBusyFlag);
#endif #endif
@ -959,19 +922,19 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("&Cursor to")); c->BeginSubMenu(_("&Cursor to"));
c->SetLongName( _("Cursor to Selection Start"))->AddItem(wxT("CursSelStart"), XXO("Selection Star&t"), FN(OnCursorSelStart), c->SetLongName( _("Cursor to Selection Start"))->AddItem(wxT("CursSelStart"), XXO("Selection Star&t"), FN(OnCursorSelStart),
TimeSelectedFlag, TimeSelectedFlag); TimeSelectedFlag);
c->SetLongName( _("Cursor to Selection End"))->AddItem(wxT("CursSelEnd"), XXO("Selection En&d"), FN(OnCursorSelEnd), c->SetLongName( _("Cursor to Selection End"))->AddItem(wxT("CursSelEnd"), XXO("Selection En&d"), FN(OnCursorSelEnd),
TimeSelectedFlag, TimeSelectedFlag); TimeSelectedFlag);
c->SetLongName( _("Cursor to Track Start"))->AddItem(wxT("CursTrackStart"), XXO("Track &Start"), FN(OnCursorTrackStart), wxT("J"), c->SetLongName( _("Cursor to Track Start"))->AddItem(wxT("CursTrackStart"), XXO("Track &Start"), FN(OnCursorTrackStart), wxT("J"),
TracksSelectedFlag, TracksSelectedFlag); TracksSelectedFlag);
c->SetLongName( _("Cursor to Track End"))->AddItem(wxT("CursTrackEnd"), XXO("Track &End"), FN(OnCursorTrackEnd), wxT("K"), c->SetLongName( _("Cursor to Track End"))->AddItem(wxT("CursTrackEnd"), XXO("Track &End"), FN(OnCursorTrackEnd), wxT("K"),
TracksSelectedFlag, TracksSelectedFlag); TracksSelectedFlag);
c->SetLongName( _("Cursor to Prev Clip Boundary"))->AddItem(wxT("CursPrevClipBoundary"), XXO("Pre&vious Clip Boundary"), FN(OnCursorPrevClipBoundary), wxT(""), c->SetLongName( _("Cursor to Prev Clip Boundary"))->AddItem(wxT("CursPrevClipBoundary"), XXO("Pre&vious Clip Boundary"), FN(OnCursorPrevClipBoundary), wxT(""),
WaveTracksExistFlag, WaveTracksExistFlag); WaveTracksExistFlag);
c->SetLongName( _("Cursor to Next Clip Boundary"))->AddItem(wxT("CursNextClipBoundary"), XXO("Ne&xt Clip Boundary"), FN(OnCursorNextClipBoundary), wxT(""), c->SetLongName( _("Cursor to Next Clip Boundary"))->AddItem(wxT("CursNextClipBoundary"), XXO("Ne&xt Clip Boundary"), FN(OnCursorNextClipBoundary), wxT(""),
WaveTracksExistFlag, WaveTracksExistFlag); WaveTracksExistFlag);
c->SetLongName( _("Cursor to Project Start"))->AddItem(wxT("CursProjectStart"), XXO("&Project Start"), FN(OnSkipStart), wxT("Home")); c->SetLongName( _("Cursor to Project Start"))->AddItem(wxT("CursProjectStart"), XXO("&Project Start"), FN(OnSkipStart), wxT("Home"));
c->SetLongName( _("Cursor to Project End"))->AddItem(wxT("CursProjectEnd"), XXO("Project E&nd"), FN(OnSkipEnd), wxT("End")); c->SetLongName( _("Cursor to Project End"))->AddItem(wxT("CursProjectEnd"), XXO("Project E&nd"), FN(OnSkipEnd), wxT("End"));
@ -985,10 +948,8 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("Pla&y Region")); c->BeginSubMenu(_("Pla&y Region"));
c->AddItem(wxT("LockPlayRegion"), XXO("&Lock"), FN(OnLockPlayRegion), c->AddItem(wxT("LockPlayRegion"), XXO("&Lock"), FN(OnLockPlayRegion),
PlayRegionNotLockedFlag,
PlayRegionNotLockedFlag); PlayRegionNotLockedFlag);
c->AddItem(wxT("UnlockPlayRegion"), XXO("&Unlock"), FN(OnUnlockPlayRegion), c->AddItem(wxT("UnlockPlayRegion"), XXO("&Unlock"), FN(OnUnlockPlayRegion),
PlayRegionLockedFlag,
PlayRegionLockedFlag); PlayRegionLockedFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -996,35 +957,29 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddSeparator(); c->AddSeparator();
c->AddItem(wxT("RescanDevices"), XXO("R&escan Audio Devices"), FN(OnRescanDevices), c->AddItem(wxT("RescanDevices"), XXO("R&escan Audio Devices"), FN(OnRescanDevices),
AudioIONotBusyFlag | CanStopAudioStreamFlag,
AudioIONotBusyFlag | CanStopAudioStreamFlag); AudioIONotBusyFlag | CanStopAudioStreamFlag);
c->BeginSubMenu(_("Transport &Options")); c->BeginSubMenu(_("Transport &Options"));
// Sound Activated recording options // Sound Activated recording options
c->AddItem(wxT("SoundActivationLevel"), XXO("Sound Activation Le&vel..."), FN(OnSoundActivated), c->AddItem(wxT("SoundActivationLevel"), XXO("Sound Activation Le&vel..."), FN(OnSoundActivated),
AudioIONotBusyFlag | CanStopAudioStreamFlag,
AudioIONotBusyFlag | CanStopAudioStreamFlag); AudioIONotBusyFlag | CanStopAudioStreamFlag);
c->AddCheck(wxT("SoundActivation"), XXO("Sound A&ctivated Recording (on/off)"), FN(OnToggleSoundActivated), 0, c->AddCheck(wxT("SoundActivation"), XXO("Sound A&ctivated Recording (on/off)"), FN(OnToggleSoundActivated), 0,
AudioIONotBusyFlag | CanStopAudioStreamFlag,
AudioIONotBusyFlag | CanStopAudioStreamFlag); AudioIONotBusyFlag | CanStopAudioStreamFlag);
c->AddSeparator(); c->AddSeparator();
c->AddCheck(wxT("PinnedHead"), XXO("Pinned Play/Record &Head (on/off)"), c->AddCheck(wxT("PinnedHead"), XXO("Pinned Play/Record &Head (on/off)"),
FN(OnTogglePinnedHead), 0, FN(OnTogglePinnedHead), 0,
// Switching of scrolling on and off is permitted even during transport // Switching of scrolling on and off is permitted even during transport
AlwaysEnabledFlag, AlwaysEnabledFlag); AlwaysEnabledFlag);
c->AddCheck(wxT("Overdub"), XXO("&Overdub (on/off)"), FN(OnTogglePlayRecording), 1, c->AddCheck(wxT("Overdub"), XXO("&Overdub (on/off)"), FN(OnTogglePlayRecording), 1,
AudioIONotBusyFlag | CanStopAudioStreamFlag,
AudioIONotBusyFlag | CanStopAudioStreamFlag); AudioIONotBusyFlag | CanStopAudioStreamFlag);
c->AddCheck(wxT("SWPlaythrough"), XXO("So&ftware Playthrough (on/off)"), FN(OnToggleSWPlaythrough), 0, c->AddCheck(wxT("SWPlaythrough"), XXO("So&ftware Playthrough (on/off)"), FN(OnToggleSWPlaythrough), 0,
AudioIONotBusyFlag | CanStopAudioStreamFlag,
AudioIONotBusyFlag | CanStopAudioStreamFlag); AudioIONotBusyFlag | CanStopAudioStreamFlag);
#ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT #ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
c->AddCheck(wxT("AutomatedInputLevelAdjustmentOnOff"), XXO("A&utomated Recording Level Adjustment (on/off)"), FN(OnToggleAutomatedInputLevelAdjustment), 0, c->AddCheck(wxT("AutomatedInputLevelAdjustmentOnOff"), XXO("A&utomated Recording Level Adjustment (on/off)"), FN(OnToggleAutomatedInputLevelAdjustment), 0,
AudioIONotBusyFlag | CanStopAudioStreamFlag,
AudioIONotBusyFlag | CanStopAudioStreamFlag); AudioIONotBusyFlag | CanStopAudioStreamFlag);
#endif #endif
c->EndSubMenu(); c->EndSubMenu();
@ -1061,25 +1016,20 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
const PluginDescriptor *plug = PluginManager::Get().GetPlugin(ID); const PluginDescriptor *plug = PluginManager::Get().GetPlugin(ID);
if (plug && plug->IsEnabled()) if (plug && plug->IsEnabled())
c->AddItem(wxT("Stereo to Mono"), XXO("Mix Stereo Down to &Mono"), FN(OnStereoToMono), c->AddItem(wxT("Stereo to Mono"), XXO("Mix Stereo Down to &Mono"), FN(OnStereoToMono),
AudioIONotBusyFlag | StereoRequiredFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | StereoRequiredFlag | WaveTracksSelectedFlag); AudioIONotBusyFlag | StereoRequiredFlag | WaveTracksSelectedFlag);
} }
c->AddItem(wxT("MixAndRender"), XXO("Mi&x and Render"), FN(OnMixAndRender), c->AddItem(wxT("MixAndRender"), XXO("Mi&x and Render"), FN(OnMixAndRender),
AudioIONotBusyFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag); AudioIONotBusyFlag | WaveTracksSelectedFlag);
c->AddItem(wxT("MixAndRenderToNewTrack"), XXO("Mix and Render to Ne&w Track"), FN(OnMixAndRenderToNewTrack), wxT("Ctrl+Shift+M"), c->AddItem(wxT("MixAndRenderToNewTrack"), XXO("Mix and Render to Ne&w Track"), FN(OnMixAndRenderToNewTrack), wxT("Ctrl+Shift+M"),
AudioIONotBusyFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag); AudioIONotBusyFlag | WaveTracksSelectedFlag);
c->EndSubMenu(); c->EndSubMenu();
c->AddItem(wxT("Resample"), XXO("&Resample..."), FN(OnResample), c->AddItem(wxT("Resample"), XXO("&Resample..."), FN(OnResample),
AudioIONotBusyFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag); AudioIONotBusyFlag | WaveTracksSelectedFlag);
c->AddSeparator(); c->AddSeparator();
c->AddItem(wxT("RemoveTracks"), XXO("Remo&ve Tracks"), FN(OnRemoveTracks), c->AddItem(wxT("RemoveTracks"), XXO("Remo&ve Tracks"), FN(OnRemoveTracks),
AudioIONotBusyFlag | TracksSelectedFlag,
AudioIONotBusyFlag | TracksSelectedFlag); AudioIONotBusyFlag | TracksSelectedFlag);
c->AddSeparator(); c->AddSeparator();
@ -1132,7 +1082,7 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddCheck(wxT("MoveSelectionWithTracks"), XXO("&Move Selection with Tracks (on/off)"), c->AddCheck(wxT("MoveSelectionWithTracks"), XXO("&Move Selection with Tracks (on/off)"),
FN(OnMoveSelectionWithTracks), FN(OnMoveSelectionWithTracks),
gPrefs->Read(wxT("/GUI/MoveSelectionWithTracks"), 0L), gPrefs->Read(wxT("/GUI/MoveSelectionWithTracks"), 0L),
AlwaysEnabledFlag, AlwaysEnabledFlag); AlwaysEnabledFlag);
c->EndSubMenu(); c->EndSubMenu();
#if 0 #if 0
@ -1154,7 +1104,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
#ifdef EXPERIMENTAL_SCOREALIGN #ifdef EXPERIMENTAL_SCOREALIGN
c->AddItem(wxT("ScoreAlign"), XXO("Synchronize MIDI with Audio"), FN(OnScoreAlign), c->AddItem(wxT("ScoreAlign"), XXO("Synchronize MIDI with Audio"), FN(OnScoreAlign),
AudioIONotBusyFlag | NoteTracksSelectedFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | NoteTracksSelectedFlag | WaveTracksSelectedFlag); AudioIONotBusyFlag | NoteTracksSelectedFlag | WaveTracksSelectedFlag);
#endif // EXPERIMENTAL_SCOREALIGN #endif // EXPERIMENTAL_SCOREALIGN
@ -1163,10 +1112,8 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("S&ort Tracks")); c->BeginSubMenu(_("S&ort Tracks"));
c->SetLongName( _("Sort by Time"))->AddItem(wxT("SortByTime"), XXO("By &Start Time"), FN(OnSortTime), c->SetLongName( _("Sort by Time"))->AddItem(wxT("SortByTime"), XXO("By &Start Time"), FN(OnSortTime),
TracksExistFlag,
TracksExistFlag); TracksExistFlag);
c->SetLongName( _("Sort by Name"))->AddItem(wxT("SortByName"), XXO("By &Name"), FN(OnSortName), c->SetLongName( _("Sort by Name"))->AddItem(wxT("SortByName"), XXO("By &Name"), FN(OnSortName),
TracksExistFlag,
TracksExistFlag); TracksExistFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -1177,7 +1124,7 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddSeparator(); c->AddSeparator();
c->AddCheck(wxT("SyncLock"), XXO("Sync-&Lock Tracks (on/off)"), FN(OnSyncLock), c->AddCheck(wxT("SyncLock"), XXO("Sync-&Lock Tracks (on/off)"), FN(OnSyncLock),
gPrefs->Read(wxT("/GUI/SyncLockTracks"), 0L), gPrefs->Read(wxT("/GUI/SyncLockTracks"), 0L),
AlwaysEnabledFlag, AlwaysEnabledFlag); AlwaysEnabledFlag);
#endif #endif
@ -1228,7 +1175,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
#endif #endif
c->AddItem(wxT("RepeatLastEffect"), buildMenuLabel, false, FN(OnRepeatLastEffect), wxT("Ctrl+R"), c->AddItem(wxT("RepeatLastEffect"), buildMenuLabel, false, FN(OnRepeatLastEffect), wxT("Ctrl+R"),
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag | HasLastEffectFlag,
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag | HasLastEffectFlag); AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag | HasLastEffectFlag);
c->AddSeparator(); c->AddSeparator();
@ -1253,10 +1199,8 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddItem(wxT("ContrastAnalyser"), XXO("Contrast..."), FN(OnContrast), wxT("Ctrl+Shift+T"), c->AddItem(wxT("ContrastAnalyser"), XXO("Contrast..."), FN(OnContrast), wxT("Ctrl+Shift+T"),
AudioIONotBusyFlag | WaveTracksSelectedFlag | TimeSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag | TimeSelectedFlag); AudioIONotBusyFlag | WaveTracksSelectedFlag | TimeSelectedFlag);
c->AddItem(wxT("PlotSpectrum"), XXO("Plot Spectrum..."), FN(OnPlotSpectrum), c->AddItem(wxT("PlotSpectrum"), XXO("Plot Spectrum..."), FN(OnPlotSpectrum),
AudioIONotBusyFlag | WaveTracksSelectedFlag | TimeSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag | TimeSelectedFlag); AudioIONotBusyFlag | WaveTracksSelectedFlag | TimeSelectedFlag);
PopulateEffectsMenu(c, PopulateEffectsMenu(c,
@ -1328,17 +1272,17 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
/* i18n-hint: Standard Macintosh Window menu item: Make (the current /* i18n-hint: Standard Macintosh Window menu item: Make (the current
* window) shrink to an icon on the dock */ * window) shrink to an icon on the dock */
c->AddItem(wxT("MacMinimize"), XXO("&Minimize"), FN(OnMacMinimize), c->AddItem(wxT("MacMinimize"), XXO("&Minimize"), FN(OnMacMinimize),
wxT("Ctrl+M"), NotMinimizedFlag, NotMinimizedFlag); wxT("Ctrl+M"), NotMinimizedFlag);
/* i18n-hint: Standard Macintosh Window menu item: Make (the current /* i18n-hint: Standard Macintosh Window menu item: Make (the current
* window) full sized */ * window) full sized */
c->AddItem(wxT("MacZoom"), XXO("&Zoom"), FN(OnMacZoom), c->AddItem(wxT("MacZoom"), XXO("&Zoom"), FN(OnMacZoom),
wxT(""), NotMinimizedFlag, NotMinimizedFlag); wxT(""), NotMinimizedFlag);
c->AddSeparator(); c->AddSeparator();
/* i18n-hint: Standard Macintosh Window menu item: Make all project /* i18n-hint: Standard Macintosh Window menu item: Make all project
* windows un-hidden */ * windows un-hidden */
c->AddItem(wxT("MacBringAllToFront"), c->AddItem(wxT("MacBringAllToFront"),
XXO("&Bring All to Front"), FN(OnMacBringAllToFront), XXO("&Bring All to Front"), FN(OnMacBringAllToFront),
wxT(""), AlwaysEnabledFlag, AlwaysEnabledFlag); wxT(""), AlwaysEnabledFlag);
c->EndMenu(); c->EndMenu();
} }
#endif #endif
@ -1370,20 +1314,16 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
// PlayStop is already in the menus. // PlayStop is already in the menus.
/* i18n-hint: (verb) Start playing audio*/ /* i18n-hint: (verb) Start playing audio*/
c->AddItem(wxT("Play"), XXO("Pl&ay"), FN(OnPlayStop), c->AddItem(wxT("Play"), XXO("Pl&ay"), FN(OnPlayStop),
WaveTracksExistFlag | AudioIONotBusyFlag,
WaveTracksExistFlag | AudioIONotBusyFlag); WaveTracksExistFlag | AudioIONotBusyFlag);
/* i18n-hint: (verb) Stop playing audio*/ /* i18n-hint: (verb) Stop playing audio*/
c->AddItem(wxT("Stop"), XXO("Sto&p"), FN(OnStop), c->AddItem(wxT("Stop"), XXO("Sto&p"), FN(OnStop),
AudioIOBusyFlag | CanStopAudioStreamFlag,
AudioIOBusyFlag | CanStopAudioStreamFlag); AudioIOBusyFlag | CanStopAudioStreamFlag);
c->SetDefaultFlags(CaptureNotBusyFlag, CaptureNotBusyFlag); c->SetDefaultFlags(CaptureNotBusyFlag, CaptureNotBusyFlag);
c->AddItem(wxT("PlayOneSec"), XXO("Play &One Second"), FN(OnPlayOneSecond), wxT("1"), c->AddItem(wxT("PlayOneSec"), XXO("Play &One Second"), FN(OnPlayOneSecond), wxT("1"),
CaptureNotBusyFlag,
CaptureNotBusyFlag); CaptureNotBusyFlag);
c->AddItem(wxT("PlayToSelection"), XXO("Play to &Selection"), FN(OnPlayToSelection), wxT("B"), c->AddItem(wxT("PlayToSelection"), XXO("Play to &Selection"), FN(OnPlayToSelection), wxT("B"),
CaptureNotBusyFlag,
CaptureNotBusyFlag); CaptureNotBusyFlag);
c->AddItem(wxT("PlayBeforeSelectionStart"), XXO("Play &Before Selection Start"), FN(OnPlayBeforeSelectionStart), wxT("Shift+F5")); c->AddItem(wxT("PlayBeforeSelectionStart"), XXO("Play &Before Selection Start"), FN(OnPlayBeforeSelectionStart), wxT("Shift+F5"));
c->AddItem(wxT("PlayAfterSelectionStart"), XXO("Play Af&ter Selection Start"), FN(OnPlayAfterSelectionStart), wxT("Shift+F6")); c->AddItem(wxT("PlayAfterSelectionStart"), XXO("Play Af&ter Selection Start"), FN(OnPlayAfterSelectionStart), wxT("Shift+F6"));
@ -1392,7 +1332,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddItem(wxT("PlayBeforeAndAfterSelectionStart"), XXO("Play Before a&nd After Selection Start"), FN(OnPlayBeforeAndAfterSelectionStart), wxT("Ctrl+Shift+F5")); c->AddItem(wxT("PlayBeforeAndAfterSelectionStart"), XXO("Play Before a&nd After Selection Start"), FN(OnPlayBeforeAndAfterSelectionStart), wxT("Ctrl+Shift+F5"));
c->AddItem(wxT("PlayBeforeAndAfterSelectionEnd"), XXO("Play Before an&d After Selection End"), FN(OnPlayBeforeAndAfterSelectionEnd), wxT("Ctrl+Shift+F7")); c->AddItem(wxT("PlayBeforeAndAfterSelectionEnd"), XXO("Play Before an&d After Selection End"), FN(OnPlayBeforeAndAfterSelectionEnd), wxT("Ctrl+Shift+F7"));
c->AddItem(wxT("PlayCutPreview"), XXO("Play C&ut Preview"), FN(OnPlayCutPreview), wxT("C"), c->AddItem(wxT("PlayCutPreview"), XXO("Play C&ut Preview"), FN(OnPlayCutPreview), wxT("C"),
CaptureNotBusyFlag,
CaptureNotBusyFlag); CaptureNotBusyFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -1432,10 +1371,12 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddItem(wxT("DeleteKey"), XXO("&Delete Key"), FN(OnDelete), wxT("Backspace"), c->AddItem(wxT("DeleteKey"), XXO("&Delete Key"), FN(OnDelete), wxT("Backspace"),
AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag | NoAutoSelect, AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag | NoAutoSelect,
-1, false, {},
AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag); AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag);
c->AddItem(wxT("DeleteKey2"), XXO("Delete Key&2"), FN(OnDelete), wxT("Delete"), c->AddItem(wxT("DeleteKey2"), XXO("Delete Key&2"), FN(OnDelete), wxT("Delete"),
AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag | NoAutoSelect, AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag | NoAutoSelect,
-1, false, {},
AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag); AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -1455,9 +1396,9 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
// These were on the original transcription toolbar. But they are not on the // These were on the original transcription toolbar. But they are not on the
// shortened one. // shortened one.
c->AddItem(wxT("MoveToPrevLabel"), XXO("Move to &Previous Label"), FN(OnMoveToPrevLabel), wxT("Alt+Left"), c->AddItem(wxT("MoveToPrevLabel"), XXO("Move to &Previous Label"), FN(OnMoveToPrevLabel), wxT("Alt+Left"),
CaptureNotBusyFlag | TrackPanelHasFocus, CaptureNotBusyFlag | TrackPanelHasFocus); CaptureNotBusyFlag | TrackPanelHasFocus);
c->AddItem(wxT("MoveToNextLabel"), XXO("Move to &Next Label"), FN(OnMoveToNextLabel), wxT("Alt+Right"), c->AddItem(wxT("MoveToNextLabel"), XXO("Move to &Next Label"), FN(OnMoveToNextLabel), wxT("Alt+Right"),
CaptureNotBusyFlag | TrackPanelHasFocus, CaptureNotBusyFlag | TrackPanelHasFocus); CaptureNotBusyFlag | TrackPanelHasFocus);
c->EndSubMenu(); c->EndSubMenu();
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
@ -1477,16 +1418,12 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("De&vice")); c->BeginSubMenu(_("De&vice"));
c->AddItem(wxT("InputDevice"), XXO("Change &Recording Device..."), FN(OnInputDevice), wxT("Shift+I"), c->AddItem(wxT("InputDevice"), XXO("Change &Recording Device..."), FN(OnInputDevice), wxT("Shift+I"),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("OutputDevice"), XXO("Change &Playback Device..."), FN(OnOutputDevice), wxT("Shift+O"), c->AddItem(wxT("OutputDevice"), XXO("Change &Playback Device..."), FN(OnOutputDevice), wxT("Shift+O"),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("AudioHost"), XXO("Change Audio &Host..."), FN(OnAudioHost), wxT("Shift+H"), c->AddItem(wxT("AudioHost"), XXO("Change Audio &Host..."), FN(OnAudioHost), wxT("Shift+H"),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("InputChannels"), XXO("Change Recording Cha&nnels..."), FN(OnInputChannels), wxT("Shift+N"), c->AddItem(wxT("InputChannels"), XXO("Change Recording Cha&nnels..."), FN(OnInputChannels), wxT("Shift+N"),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -1502,24 +1439,18 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddItem(wxT("SelStart"), XXO("Selection to &Start"), FN(OnSelToStart), wxT("Shift+Home")); c->AddItem(wxT("SelStart"), XXO("Selection to &Start"), FN(OnSelToStart), wxT("Shift+Home"));
c->AddItem(wxT("SelEnd"), XXO("Selection to En&d"), FN(OnSelToEnd), wxT("Shift+End")); c->AddItem(wxT("SelEnd"), XXO("Selection to En&d"), FN(OnSelToEnd), wxT("Shift+End"));
c->AddItem(wxT("SelExtLeft"), XXO("Selection Extend &Left"), FN(OnSelExtendLeft), wxT("Shift+Left\twantKeyup\tallowDup"), c->AddItem(wxT("SelExtLeft"), XXO("Selection Extend &Left"), FN(OnSelExtendLeft), wxT("Shift+Left\twantKeyup\tallowDup"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("SelExtRight"), XXO("Selection Extend &Right"), FN(OnSelExtendRight), wxT("Shift+Right\twantKeyup\tallowDup"), c->AddItem(wxT("SelExtRight"), XXO("Selection Extend &Right"), FN(OnSelExtendRight), wxT("Shift+Right\twantKeyup\tallowDup"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("SelSetExtLeft"), XXO("Set (or Extend) Le&ft Selection"), FN(OnSelSetExtendLeft), c->AddItem(wxT("SelSetExtLeft"), XXO("Set (or Extend) Le&ft Selection"), FN(OnSelSetExtendLeft),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("SelSetExtRight"), XXO("Set (or Extend) Rig&ht Selection"), FN(OnSelSetExtendRight), c->AddItem(wxT("SelSetExtRight"), XXO("Set (or Extend) Rig&ht Selection"), FN(OnSelSetExtendRight),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("SelCntrLeft"), XXO("Selection Contract L&eft"), FN(OnSelContractLeft), wxT("Ctrl+Shift+Right\twantKeyup"), c->AddItem(wxT("SelCntrLeft"), XXO("Selection Contract L&eft"), FN(OnSelContractLeft), wxT("Ctrl+Shift+Right\twantKeyup"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("SelCntrRight"), XXO("Selection Contract R&ight"), FN(OnSelContractRight), wxT("Ctrl+Shift+Left\twantKeyup"), c->AddItem(wxT("SelCntrRight"), XXO("Selection Contract R&ight"), FN(OnSelContractRight), wxT("Ctrl+Shift+Left\twantKeyup"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->EndSubMenu(); c->EndSubMenu();
@ -1559,29 +1490,21 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("&Cursor")); c->BeginSubMenu(_("&Cursor"));
c->AddItem(wxT("CursorLeft"), XXO("Cursor &Left"), FN(OnCursorLeft), wxT("Left\twantKeyup\tallowDup"), c->AddItem(wxT("CursorLeft"), XXO("Cursor &Left"), FN(OnCursorLeft), wxT("Left\twantKeyup\tallowDup"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("CursorRight"), XXO("Cursor &Right"), FN(OnCursorRight), wxT("Right\twantKeyup\tallowDup"), c->AddItem(wxT("CursorRight"), XXO("Cursor &Right"), FN(OnCursorRight), wxT("Right\twantKeyup\tallowDup"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("CursorShortJumpLeft"), XXO("Cursor Sh&ort Jump Left"), FN(OnCursorShortJumpLeft), wxT(","), c->AddItem(wxT("CursorShortJumpLeft"), XXO("Cursor Sh&ort Jump Left"), FN(OnCursorShortJumpLeft), wxT(","),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("CursorShortJumpRight"), XXO("Cursor Shor&t Jump Right"), FN(OnCursorShortJumpRight), wxT("."), c->AddItem(wxT("CursorShortJumpRight"), XXO("Cursor Shor&t Jump Right"), FN(OnCursorShortJumpRight), wxT("."),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("CursorLongJumpLeft"), XXO("Cursor Long J&ump Left"), FN(OnCursorLongJumpLeft), wxT("Shift+,"), c->AddItem(wxT("CursorLongJumpLeft"), XXO("Cursor Long J&ump Left"), FN(OnCursorLongJumpLeft), wxT("Shift+,"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("CursorLongJumpRight"), XXO("Cursor Long Ju&mp Right"), FN(OnCursorLongJumpRight), wxT("Shift+."), c->AddItem(wxT("CursorLongJumpRight"), XXO("Cursor Long Ju&mp Right"), FN(OnCursorLongJumpRight), wxT("Shift+."),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("ClipLeft"), XXO("Clip L&eft"), FN(OnClipLeft), wxT("\twantKeyup"), c->AddItem(wxT("ClipLeft"), XXO("Clip L&eft"), FN(OnClipLeft), wxT("\twantKeyup"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("ClipRight"), XXO("Clip Rig&ht"), FN(OnClipRight), wxT("\twantKeyup"), c->AddItem(wxT("ClipRight"), XXO("Clip Rig&ht"), FN(OnClipRight), wxT("\twantKeyup"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->EndSubMenu(); c->EndSubMenu();
@ -1591,46 +1514,32 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("&Track")); c->BeginSubMenu(_("&Track"));
c->AddItem(wxT("TrackPan"), XXO("Change P&an on Focused Track..."), FN(OnTrackPan), wxT("Shift+P"), c->AddItem(wxT("TrackPan"), XXO("Change P&an on Focused Track..."), FN(OnTrackPan), wxT("Shift+P"),
TrackPanelHasFocus | TracksExistFlag,
TrackPanelHasFocus | TracksExistFlag); TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackPanLeft"), XXO("Pan &Left on Focused Track"), FN(OnTrackPanLeft), wxT("Alt+Shift+Left"), c->AddItem(wxT("TrackPanLeft"), XXO("Pan &Left on Focused Track"), FN(OnTrackPanLeft), wxT("Alt+Shift+Left"),
TrackPanelHasFocus | TracksExistFlag,
TrackPanelHasFocus | TracksExistFlag); TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackPanRight"), XXO("Pan &Right on Focused Track"), FN(OnTrackPanRight), wxT("Alt+Shift+Right"), c->AddItem(wxT("TrackPanRight"), XXO("Pan &Right on Focused Track"), FN(OnTrackPanRight), wxT("Alt+Shift+Right"),
TrackPanelHasFocus | TracksExistFlag,
TrackPanelHasFocus | TracksExistFlag); TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackGain"), XXO("Change Gai&n on Focused Track..."), FN(OnTrackGain), wxT("Shift+G"), c->AddItem(wxT("TrackGain"), XXO("Change Gai&n on Focused Track..."), FN(OnTrackGain), wxT("Shift+G"),
TrackPanelHasFocus | TracksExistFlag,
TrackPanelHasFocus | TracksExistFlag); TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackGainInc"), XXO("&Increase Gain on Focused Track"), FN(OnTrackGainInc), wxT("Alt+Shift+Up"), c->AddItem(wxT("TrackGainInc"), XXO("&Increase Gain on Focused Track"), FN(OnTrackGainInc), wxT("Alt+Shift+Up"),
TrackPanelHasFocus | TracksExistFlag,
TrackPanelHasFocus | TracksExistFlag); TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackGainDec"), XXO("&Decrease Gain on Focused Track"), FN(OnTrackGainDec), wxT("Alt+Shift+Down"), c->AddItem(wxT("TrackGainDec"), XXO("&Decrease Gain on Focused Track"), FN(OnTrackGainDec), wxT("Alt+Shift+Down"),
TrackPanelHasFocus | TracksExistFlag,
TrackPanelHasFocus | TracksExistFlag); TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackMenu"), XXO("Op&en Menu on Focused Track..."), FN(OnTrackMenu), wxT("Shift+M\tskipKeydown"), c->AddItem(wxT("TrackMenu"), XXO("Op&en Menu on Focused Track..."), FN(OnTrackMenu), wxT("Shift+M\tskipKeydown"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("TrackMute"), XXO("M&ute/Unmute Focused Track"), FN(OnTrackMute), wxT("Shift+U"), c->AddItem(wxT("TrackMute"), XXO("M&ute/Unmute Focused Track"), FN(OnTrackMute), wxT("Shift+U"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("TrackSolo"), XXO("&Solo/Unsolo Focused Track"), FN(OnTrackSolo), wxT("Shift+S"), c->AddItem(wxT("TrackSolo"), XXO("&Solo/Unsolo Focused Track"), FN(OnTrackSolo), wxT("Shift+S"),
TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus); TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("TrackClose"), XXO("&Close Focused Track"), FN(OnTrackClose), wxT("Shift+C"), c->AddItem(wxT("TrackClose"), XXO("&Close Focused Track"), FN(OnTrackClose), wxT("Shift+C"),
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag,
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag); AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackMoveUp"), XXO("Move Focused Track U&p"), FN(OnTrackMoveUp), c->AddItem(wxT("TrackMoveUp"), XXO("Move Focused Track U&p"), FN(OnTrackMoveUp),
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag,
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag); AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackMoveDown"), XXO("Move Focused Track Do&wn"), FN(OnTrackMoveDown), c->AddItem(wxT("TrackMoveDown"), XXO("Move Focused Track Do&wn"), FN(OnTrackMoveDown),
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag,
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag); AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackMoveTop"), XXO("Move Focused Track to T&op"), FN(OnTrackMoveTop), c->AddItem(wxT("TrackMoveTop"), XXO("Move Focused Track to T&op"), FN(OnTrackMoveTop),
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag,
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag); AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag);
c->AddItem(wxT("TrackMoveBottom"), XXO("Move Focused Track to &Bottom"), FN(OnTrackMoveBottom), c->AddItem(wxT("TrackMoveBottom"), XXO("Move Focused Track to &Bottom"), FN(OnTrackMoveBottom),
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag,
AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag); AudioIONotBusyFlag | TrackPanelHasFocus | TracksExistFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -1644,64 +1553,64 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
// you would have to use "Compareaudio" here.) // you would have to use "Compareaudio" here.)
c->AddItem(wxT("SelectTime"), XXO("Select Time..."), FN(OnAudacityCommand), c->AddItem(wxT("SelectTime"), XXO("Select Time..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SelectFrequencies"), XXO("Select Frequencies..."), FN(OnAudacityCommand), c->AddItem(wxT("SelectFrequencies"), XXO("Select Frequencies..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SelectTracks"), XXO("Select Tracks..."), FN(OnAudacityCommand), c->AddItem(wxT("SelectTracks"), XXO("Select Tracks..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetTrackStatus"), XXO("Set Track Status..."), FN(OnAudacityCommand), c->AddItem(wxT("SetTrackStatus"), XXO("Set Track Status..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetTrackAudio"), XXO("Set Track Audio..."), FN(OnAudacityCommand), c->AddItem(wxT("SetTrackAudio"), XXO("Set Track Audio..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetTrackVisuals"), XXO("Set Track Visuals..."), FN(OnAudacityCommand), c->AddItem(wxT("SetTrackVisuals"), XXO("Set Track Visuals..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("GetPreference"), XXO("Get Preference..."), FN(OnAudacityCommand), c->AddItem(wxT("GetPreference"), XXO("Get Preference..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetPreference"), XXO("Set Preference..."), FN(OnAudacityCommand), c->AddItem(wxT("SetPreference"), XXO("Set Preference..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetClip"), XXO("Set Clip..."), FN(OnAudacityCommand), c->AddItem(wxT("SetClip"), XXO("Set Clip..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetEnvelope"), XXO("Set Envelope..."), FN(OnAudacityCommand), c->AddItem(wxT("SetEnvelope"), XXO("Set Envelope..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetLabel"), XXO("Set Label..."), FN(OnAudacityCommand), c->AddItem(wxT("SetLabel"), XXO("Set Label..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetProject"), XXO("Set Project..."), FN(OnAudacityCommand), c->AddItem(wxT("SetProject"), XXO("Set Project..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->EndSubMenu(); c->EndSubMenu();
// Less useful to VI users. // Less useful to VI users.
c->BeginSubMenu(_("Scripta&bles II")); c->BeginSubMenu(_("Scripta&bles II"));
c->AddItem(wxT("Select"), XXO("Select..."), FN(OnAudacityCommand), c->AddItem(wxT("Select"), XXO("Select..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SetTrack"), XXO("Set Track..."), FN(OnAudacityCommand), c->AddItem(wxT("SetTrack"), XXO("Set Track..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("GetInfo"), XXO("Get Info..."), FN(OnAudacityCommand), c->AddItem(wxT("GetInfo"), XXO("Get Info..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("Message"), XXO("Message..."), FN(OnAudacityCommand), c->AddItem(wxT("Message"), XXO("Message..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("Help"), XXO("Help..."), FN(OnAudacityCommand), c->AddItem(wxT("Help"), XXO("Help..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("Import2"), XXO("Import..."), FN(OnAudacityCommand), c->AddItem(wxT("Import2"), XXO("Import..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("Export2"), XXO("Export..."), FN(OnAudacityCommand), c->AddItem(wxT("Export2"), XXO("Export..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("OpenProject2"), XXO("Open Project..."), FN(OnAudacityCommand), c->AddItem(wxT("OpenProject2"), XXO("Open Project..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("SaveProject2"), XXO("Save Project..."), FN(OnAudacityCommand), c->AddItem(wxT("SaveProject2"), XXO("Save Project..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("Drag"), XXO("Move Mouse..."), FN(OnAudacityCommand), c->AddItem(wxT("Drag"), XXO("Move Mouse..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->AddItem(wxT("CompareAudio"), XXO("Compare Audio..."), FN(OnAudacityCommand), c->AddItem(wxT("CompareAudio"), XXO("Compare Audio..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
// i18n-hint: Screenshot in the help menu has a much bigger dialog. // i18n-hint: Screenshot in the help menu has a much bigger dialog.
c->AddItem(wxT("Screenshot"), XXO("Screenshot (short format)..."), FN(OnAudacityCommand), c->AddItem(wxT("Screenshot"), XXO("Screenshot (short format)..."), FN(OnAudacityCommand),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->EndSubMenu(); c->EndSubMenu();
@ -1714,14 +1623,14 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
#else #else
wxT("F11"), wxT("F11"),
#endif #endif
AlwaysEnabledFlag, AlwaysEnabledFlag, AlwaysEnabledFlag,
project.wxTopLevelWindow::IsFullScreen() ? 1:0); // Check Mark. project.wxTopLevelWindow::IsFullScreen() ? 1:0); // Check Mark.
#ifdef __WXMAC__ #ifdef __WXMAC__
/* i18n-hint: Shrink all project windows to icons on the Macintosh tooldock */ /* i18n-hint: Shrink all project windows to icons on the Macintosh tooldock */
c->AddItem(wxT("MacMinimizeAll"), XXO("Minimize All Projects"), c->AddItem(wxT("MacMinimizeAll"), XXO("Minimize All Projects"),
FN(OnMacMinimizeAll), wxT("Ctrl+Alt+M"), FN(OnMacMinimizeAll), wxT("Ctrl+Alt+M"),
AlwaysEnabledFlag, AlwaysEnabledFlag); AlwaysEnabledFlag);
#endif #endif
@ -1762,11 +1671,9 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->BeginSubMenu(_("&Diagnostics")); c->BeginSubMenu(_("&Diagnostics"));
c->AddItem(wxT("DeviceInfo"), XXO("Au&dio Device Info..."), FN(OnAudioDeviceInfo), c->AddItem(wxT("DeviceInfo"), XXO("Au&dio Device Info..."), FN(OnAudioDeviceInfo),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
#ifdef EXPERIMENTAL_MIDI_OUT #ifdef EXPERIMENTAL_MIDI_OUT
c->AddItem(wxT("MidiDeviceInfo"), XXO("&MIDI Device Info..."), FN(OnMidiDeviceInfo), c->AddItem(wxT("MidiDeviceInfo"), XXO("&MIDI Device Info..."), FN(OnMidiDeviceInfo),
AudioIONotBusyFlag,
AudioIONotBusyFlag); AudioIONotBusyFlag);
#endif #endif
@ -1776,7 +1683,7 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project)
c->AddItem(wxT("CrashReport"), XXO("&Generate Support Data..."), FN(OnCrashReport)); c->AddItem(wxT("CrashReport"), XXO("&Generate Support Data..."), FN(OnCrashReport));
#endif #endif
c->AddItem(wxT("CheckDeps"), XXO("Chec&k Dependencies..."), FN(OnCheckDependencies), c->AddItem(wxT("CheckDeps"), XXO("Chec&k Dependencies..."), FN(OnCheckDependencies),
AudioIONotBusyFlag, AudioIONotBusyFlag); AudioIONotBusyFlag);
c->EndSubMenu(); c->EndSubMenu();
#ifndef __WXMAC__ #ifndef __WXMAC__
@ -1830,7 +1737,6 @@ void MenuCreator::PopulateMacrosMenu( CommandManager* c, CommandFlag flags )
for (i = 0; i < (int)names.GetCount(); i++) { for (i = 0; i < (int)names.GetCount(); i++) {
wxString MacroID = ApplyMacroDialog::MacroIdOfName( names[i] ); wxString MacroID = ApplyMacroDialog::MacroIdOfName( names[i] );
c->AddItem(MacroID, names[i], false, FN(OnApplyMacroDirectly), c->AddItem(MacroID, names[i], false, FN(OnApplyMacroDirectly),
flags,
flags); flags);
} }
@ -2111,7 +2017,6 @@ void MenuCreator::AddEffectMenuItemGroup(CommandManager *c,
item, item,
item.Contains("..."), item.Contains("..."),
FN(OnEffect), FN(OnEffect),
flags[i],
flags[i], true, plugs[i]); flags[i], true, plugs[i]);
i++; i++;
@ -2127,7 +2032,6 @@ void MenuCreator::AddEffectMenuItemGroup(CommandManager *c,
names[i], names[i],
vHasDialog[i], vHasDialog[i],
FN(OnEffect), FN(OnEffect),
flags[i],
flags[i], true, plugs[i]); flags[i], true, plugs[i]);
} }

View File

@ -802,10 +802,9 @@ void CommandManager::AddCheck(const wxChar *name,
CommandHandlerFinder finder, CommandHandlerFinder finder,
CommandFunctorPointer callback, CommandFunctorPointer callback,
int checkmark, int checkmark,
CommandFlag flags, CommandFlag flags)
CommandMask mask)
{ {
AddItem(name, label, hasDialog, finder, callback, wxT(""), flags, mask, checkmark); AddItem(name, label, hasDialog, finder, callback, wxT(""), flags, checkmark);
} }
void CommandManager::AddItem(const wxChar *name, void CommandManager::AddItem(const wxChar *name,
@ -814,11 +813,10 @@ void CommandManager::AddItem(const wxChar *name,
CommandHandlerFinder finder, CommandHandlerFinder finder,
CommandFunctorPointer callback, CommandFunctorPointer callback,
CommandFlag flags, CommandFlag flags,
CommandMask mask,
bool bIsEffect, bool bIsEffect,
const CommandParameter &parameter) const CommandParameter &parameter)
{ {
AddItem(name, label, hasDialog, finder, callback, wxT(""), flags, mask, -1, bIsEffect, parameter); AddItem(name, label, hasDialog, finder, callback, wxT(""), flags, -1, bIsEffect, parameter);
} }
void CommandManager::AddItem(const wxChar *name, void CommandManager::AddItem(const wxChar *name,
@ -828,11 +826,14 @@ void CommandManager::AddItem(const wxChar *name,
CommandFunctorPointer callback, CommandFunctorPointer callback,
const wxChar *accel, const wxChar *accel,
CommandFlag flags, CommandFlag flags,
CommandMask mask,
int checkmark, int checkmark,
bool bIsEffect, bool bIsEffect,
const CommandParameter &parameter) const CommandParameter &parameter,
CommandMask mask)
{ {
if (mask == NoFlagsSpecified)
mask = flags;
wxString cookedParameter; wxString cookedParameter;
if( parameter == "" ) if( parameter == "" )
cookedParameter = name; cookedParameter = name;
@ -903,10 +904,9 @@ void CommandManager::AddCommand(const wxChar *name,
const wxChar *label, const wxChar *label,
CommandHandlerFinder finder, CommandHandlerFinder finder,
CommandFunctorPointer callback, CommandFunctorPointer callback,
CommandFlag flags, CommandFlag flags)
CommandMask mask)
{ {
AddCommand(name, label, finder, callback, wxT(""), flags, mask); AddCommand(name, label, finder, callback, wxT(""), flags);
} }
void CommandManager::AddCommand(const wxChar *name, void CommandManager::AddCommand(const wxChar *name,
@ -914,14 +914,12 @@ void CommandManager::AddCommand(const wxChar *name,
CommandHandlerFinder finder, CommandHandlerFinder finder,
CommandFunctorPointer callback, CommandFunctorPointer callback,
const wxChar *accel, const wxChar *accel,
CommandFlag flags, CommandFlag flags)
CommandMask mask)
{ {
NewIdentifier(name, label_in, label_in, false, accel, NULL, finder, callback, {}, 0, 0, false, {}); NewIdentifier(name, label_in, label_in, false, accel, NULL, finder, callback, {}, 0, 0, false, {});
if (flags != NoFlagsSpecified || mask != NoFlagsSpecified) { if (flags != NoFlagsSpecified)
SetCommandFlags(name, flags, mask); SetCommandFlags(name, flags, flags);
}
} }
void CommandManager::AddGlobalCommand(const wxChar *name, void CommandManager::AddGlobalCommand(const wxChar *name,

View File

@ -168,8 +168,7 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
CommandHandlerFinder finder, CommandHandlerFinder finder,
CommandFunctorPointer callback, CommandFunctorPointer callback,
int checkmark = 0, int checkmark = 0,
CommandFlag flags = NoFlagsSpecified, CommandFlag flags = NoFlagsSpecified);
CommandMask mask = NoFlagsSpecified);
void AddItem(const wxChar *name, void AddItem(const wxChar *name,
const wxChar *label, const wxChar *label,
@ -177,7 +176,6 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
CommandHandlerFinder finder, CommandHandlerFinder finder,
CommandFunctorPointer callback, CommandFunctorPointer callback,
CommandFlag flags = NoFlagsSpecified, CommandFlag flags = NoFlagsSpecified,
CommandMask mask = NoFlagsSpecified,
bool bIsEffect = false, bool bIsEffect = false,
const CommandParameter &parameter = CommandParameter{}); const CommandParameter &parameter = CommandParameter{});
@ -188,10 +186,10 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
CommandFunctorPointer callback, CommandFunctorPointer callback,
const wxChar *accel, const wxChar *accel,
CommandFlag flags = NoFlagsSpecified, CommandFlag flags = NoFlagsSpecified,
CommandMask mask = NoFlagsSpecified,
int checkmark = -1, int checkmark = -1,
bool bIsEffect = false, bool bIsEffect = false,
const CommandParameter &parameter = CommandParameter{}); const CommandParameter &parameter = CommandParameter{},
CommandMask mask = NoFlagsSpecified);
void AddSeparator(); void AddSeparator();
@ -201,16 +199,14 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
const wxChar *label, const wxChar *label,
CommandHandlerFinder finder, CommandHandlerFinder finder,
CommandFunctorPointer callback, CommandFunctorPointer callback,
CommandFlag flags = NoFlagsSpecified, CommandFlag flags = NoFlagsSpecified);
CommandMask mask = NoFlagsSpecified);
void AddCommand(const wxChar *name, void AddCommand(const wxChar *name,
const wxChar *label, const wxChar *label,
CommandHandlerFinder finder, CommandHandlerFinder finder,
CommandFunctorPointer callback, CommandFunctorPointer callback,
const wxChar *accel, const wxChar *accel,
CommandFlag flags = NoFlagsSpecified, CommandFlag flags = NoFlagsSpecified);
CommandMask mask = NoFlagsSpecified);
void AddGlobalCommand(const wxChar *name, void AddGlobalCommand(const wxChar *name,
const wxChar *label, const wxChar *label,

View File

@ -1166,14 +1166,14 @@ void Scrubber::AddMenuItems()
false, false,
findme, static_cast<CommandFunctorPointer>(item.memFn), findme, static_cast<CommandFunctorPointer>(item.memFn),
false, false,
item.flags, item.flags); item.flags);
else else
// The start item // The start item
cm->AddItem(item.name, wxGetTranslation(item.label), cm->AddItem( item.name, wxGetTranslation(item.label),
// No menu items yet have dialogs // No menu items yet have dialogs
false, false,
findme, static_cast<CommandFunctorPointer>(item.memFn), findme, static_cast<CommandFunctorPointer>(item.memFn),
item.flags, item.flags); item.flags );
} }
cm->EndSubMenu(); cm->EndSubMenu();
CheckMenuItems(); CheckMenuItems();