mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-04 17:49:45 +02:00
Some further factoring of the menu building functions
This commit is contained in:
parent
5494185a88
commit
7b422afda5
487
src/Menus.cpp
487
src/Menus.cpp
@ -530,7 +530,9 @@ namespace {
|
||||
MenuTable::BaseItemPtr FileMenu( AudacityProject& );
|
||||
MenuTable::BaseItemPtr EditMenu( AudacityProject& );
|
||||
MenuTable::BaseItemPtr SelectMenu( AudacityProject& );
|
||||
MenuTable::BaseItemPtr ToolbarsMenu( AudacityProject& );
|
||||
MenuTable::BaseItemPtr ViewMenu( AudacityProject& );
|
||||
MenuTable::BaseItemPtr CursorMenu( AudacityProject& );
|
||||
MenuTable::BaseItemPtr TransportMenu( AudacityProject& );
|
||||
MenuTable::BaseItemPtr TracksMenu( AudacityProject& );
|
||||
MenuTable::BaseItemPtr GenerateMenu( AudacityProject& );
|
||||
@ -745,20 +747,106 @@ MenuTable::BaseItemPtr FileMenu( AudacityProject& )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr EditMenu( AudacityProject &project )
|
||||
MenuTable::BaseItemPtr LabelEditMenus( AudacityProject &project )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
using Options = CommandManager::Options;
|
||||
|
||||
static const auto checkOff = Options{}.CheckState( false );
|
||||
|
||||
constexpr auto NotBusyTimeAndTracksFlags =
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | TracksSelectedFlag;
|
||||
|
||||
constexpr auto NotBusyLabelsAndWaveFlags =
|
||||
AudioIONotBusyFlag |
|
||||
LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag;
|
||||
|
||||
// Returns TWO menus.
|
||||
return Items (
|
||||
|
||||
Menu( _("&Labels"),
|
||||
Command( wxT("EditLabels"), XXO("&Edit Labels..."), FN(OnEditLabels),
|
||||
AudioIONotBusyFlag ),
|
||||
|
||||
Separator(),
|
||||
|
||||
Command( wxT("AddLabel"), XXO("Add Label at &Selection"),
|
||||
FN(OnAddLabel), AlwaysEnabledFlag, wxT("Ctrl+B") ),
|
||||
Command( wxT("AddLabelPlaying"),
|
||||
XXO("Add Label at &Playback Position"),
|
||||
FN(OnAddLabelPlaying), AudioIOBusyFlag,
|
||||
#ifdef __WXMAC__
|
||||
wxT("Ctrl+.")
|
||||
#else
|
||||
wxT("Ctrl+M")
|
||||
#endif
|
||||
),
|
||||
Command( wxT("PasteNewLabel"), XXO("Paste Te&xt to New Label"),
|
||||
FN(OnPasteNewLabel),
|
||||
AudioIONotBusyFlag, wxT("Ctrl+Alt+V") ),
|
||||
|
||||
Separator(),
|
||||
|
||||
Command( wxT("TypeToCreateLabel"),
|
||||
XXO("&Type to Create a Label (on/off)"),
|
||||
FN(OnToggleTypeToCreateLabel), AlwaysEnabledFlag, checkOff )
|
||||
), // first menu
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Menu( _("La&beled Audio"),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("CutLabels"), XXO("&Cut"), FN(OnCutLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag |
|
||||
TimeSelectedFlag | IsNotSyncLockedFlag,
|
||||
Options{ wxT("Alt+X"), _("Label Cut") } ),
|
||||
Command( wxT("DeleteLabels"), XXO("&Delete"), FN(OnDeleteLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag |
|
||||
TimeSelectedFlag | IsNotSyncLockedFlag,
|
||||
Options{ wxT("Alt+K"), _("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") } ),
|
||||
Command( wxT("SplitDeleteLabels"), XXO("Sp&lit Delete"),
|
||||
FN(OnSplitDeleteLabels), NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+Shift+K"), _("Label Split Delete") } ),
|
||||
|
||||
Separator(),
|
||||
|
||||
Command( wxT("SilenceLabels"), XXO("Silence &Audio"),
|
||||
FN(OnSilenceLabels), NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+L"), _("Label Silence") } ),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("CopyLabels"), XXO("Co&py"), FN(OnCopyLabels),
|
||||
NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+Shift+C"), _("Label Copy") } ),
|
||||
|
||||
Separator(),
|
||||
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("SplitLabels"), XXO("Spli&t"), FN(OnSplitLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+I"), _("Label Split") } ),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("JoinLabels"), XXO("&Join"), FN(OnJoinLabels),
|
||||
NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+J"), _("Label Join") } ),
|
||||
Command( wxT("DisjoinLabels"), XXO("Detac&h at Silences"),
|
||||
FN(OnDisjoinLabels), NotBusyLabelsAndWaveFlags,
|
||||
wxT("Alt+Shift+J") )
|
||||
) // second menu
|
||||
); // Two menus
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr EditMenu( AudacityProject &project )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
using Options = CommandManager::Options;
|
||||
|
||||
constexpr auto NotBusyTimeAndTracksFlags =
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | TracksSelectedFlag;
|
||||
|
||||
// The default shortcut key for Redo is different on different platforms.
|
||||
static constexpr auto redoKey =
|
||||
#ifdef __WXMSW__
|
||||
@ -857,81 +945,7 @@ MenuTable::BaseItemPtr EditMenu( AudacityProject &project )
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Menu( _("&Labels"),
|
||||
Command( wxT("EditLabels"), XXO("&Edit Labels..."), FN(OnEditLabels),
|
||||
AudioIONotBusyFlag ),
|
||||
|
||||
Separator(),
|
||||
|
||||
Command( wxT("AddLabel"), XXO("Add Label at &Selection"),
|
||||
FN(OnAddLabel), AlwaysEnabledFlag, wxT("Ctrl+B") ),
|
||||
Command( wxT("AddLabelPlaying"),
|
||||
XXO("Add Label at &Playback Position"),
|
||||
FN(OnAddLabelPlaying), AudioIOBusyFlag,
|
||||
#ifdef __WXMAC__
|
||||
wxT("Ctrl+.")
|
||||
#else
|
||||
wxT("Ctrl+M")
|
||||
#endif
|
||||
),
|
||||
Command( wxT("PasteNewLabel"), XXO("Paste Te&xt to New Label"),
|
||||
FN(OnPasteNewLabel),
|
||||
AudioIONotBusyFlag, wxT("Ctrl+Alt+V") ),
|
||||
|
||||
Separator(),
|
||||
|
||||
Command( wxT("TypeToCreateLabel"),
|
||||
XXO("&Type to Create a Label (on/off)"),
|
||||
FN(OnToggleTypeToCreateLabel), AlwaysEnabledFlag, checkOff )
|
||||
),
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Menu( _("La&beled Audio"),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("CutLabels"), XXO("&Cut"), FN(OnCutLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag |
|
||||
TimeSelectedFlag | IsNotSyncLockedFlag,
|
||||
Options{ wxT("Alt+X"), _("Label Cut") } ),
|
||||
Command( wxT("DeleteLabels"), XXO("&Delete"), FN(OnDeleteLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag |
|
||||
TimeSelectedFlag | IsNotSyncLockedFlag,
|
||||
Options{ wxT("Alt+K"), _("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") } ),
|
||||
Command( wxT("SplitDeleteLabels"), XXO("Sp&lit Delete"),
|
||||
FN(OnSplitDeleteLabels), NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+Shift+K"), _("Label Split Delete") } ),
|
||||
|
||||
Separator(),
|
||||
|
||||
Command( wxT("SilenceLabels"), XXO("Silence &Audio"),
|
||||
FN(OnSilenceLabels), NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+L"), _("Label Silence") } ),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("CopyLabels"), XXO("Co&py"), FN(OnCopyLabels),
|
||||
NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+Shift+C"), _("Label Copy") } ),
|
||||
|
||||
Separator(),
|
||||
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("SplitLabels"), XXO("Spli&t"), FN(OnSplitLabels),
|
||||
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+I"), _("Label Split") } ),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("JoinLabels"), XXO("&Join"), FN(OnJoinLabels),
|
||||
NotBusyLabelsAndWaveFlags,
|
||||
Options{ wxT("Alt+J"), _("Label Join") } ),
|
||||
Command( wxT("DisjoinLabels"), XXO("Detac&h at Silences"),
|
||||
FN(OnDisjoinLabels), NotBusyLabelsAndWaveFlags,
|
||||
wxT("Alt+Shift+J") )
|
||||
),
|
||||
LabelEditMenus,
|
||||
|
||||
Command( wxT("EditMetaData"), XXO("&Metadata..."), FN(OnEditMetadata),
|
||||
AudioIONotBusyFlag ),
|
||||
@ -947,6 +961,29 @@ MenuTable::BaseItemPtr EditMenu( AudacityProject &project )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr ClipSelectMenu( AudacityProject& )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
using Options = CommandManager::Options;
|
||||
|
||||
return Menu( _("Clip B&oundaries"),
|
||||
Command( wxT("SelPrevClipBoundaryToCursor"),
|
||||
XXO("Pre&vious Clip Boundary to Cursor"),
|
||||
FN(OnSelectPrevClipBoundaryToCursor),
|
||||
WaveTracksExistFlag ),
|
||||
Command( wxT("SelCursorToNextClipBoundary"),
|
||||
XXO("Cursor to Ne&xt Clip Boundary"),
|
||||
FN(OnSelectCursorToNextClipBoundary),
|
||||
WaveTracksExistFlag ),
|
||||
Command( wxT("SelPrevClip"), XXO("Previo&us Clip"),
|
||||
FN(OnSelectPrevClip), WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+,"), _("Select Previous Clip") } ),
|
||||
Command( wxT("SelNextClip"), XXO("N&ext Clip"), FN(OnSelectNextClip),
|
||||
WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+."), _("Select Next Clip") } )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
@ -1028,22 +1065,7 @@ MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Menu( _("Clip B&oundaries"),
|
||||
Command( wxT("SelPrevClipBoundaryToCursor"),
|
||||
XXO("Pre&vious Clip Boundary to Cursor"),
|
||||
FN(OnSelectPrevClipBoundaryToCursor),
|
||||
WaveTracksExistFlag ),
|
||||
Command( wxT("SelCursorToNextClipBoundary"),
|
||||
XXO("Cursor to Ne&xt Clip Boundary"),
|
||||
FN(OnSelectCursorToNextClipBoundary),
|
||||
WaveTracksExistFlag ),
|
||||
Command( wxT("SelPrevClip"), XXO("Previo&us Clip"),
|
||||
FN(OnSelectPrevClip), WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+,"), _("Select Previous Clip") } ),
|
||||
Command( wxT("SelNextClip"), XXO("N&ext Clip"), FN(OnSelectNextClip),
|
||||
WaveTracksExistFlag,
|
||||
Options{ wxT("Alt+."), _("Select Next Clip") } )
|
||||
),
|
||||
ClipSelectMenu,
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -1068,6 +1090,76 @@ MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr ToolbarsMenu( AudacityProject& )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
using Options = CommandManager::Options;
|
||||
|
||||
static const auto checkOff = Options{}.CheckState( false );
|
||||
|
||||
return Menu( _("&Toolbars"),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("ResetToolbars"), XXO("Reset Toolb&ars"),
|
||||
FN(OnResetToolBars), AlwaysEnabledFlag ),
|
||||
|
||||
Separator(),
|
||||
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
with the big buttons on it (play record etc)*/
|
||||
Command( wxT("ShowTransportTB"), XXO("&Transport Toolbar"),
|
||||
FN(OnShowTransportToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows a toolbar
|
||||
that has some tools in it*/
|
||||
Command( wxT("ShowToolsTB"), XXO("T&ools Toolbar"),
|
||||
FN(OnShowToolsToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
with the recording level meters*/
|
||||
Command( wxT("ShowRecordMeterTB"), XXO("&Recording Meter Toolbar"),
|
||||
FN(OnShowRecordMeterToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
with the playback level meter*/
|
||||
Command( wxT("ShowPlayMeterTB"), XXO("&Playback Meter Toolbar"),
|
||||
FN(OnShowPlayMeterToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
|
||||
/* --i18nhint: Clicking this menu item shows the toolbar
|
||||
which has sound level meters*/
|
||||
//Command( wxT("ShowMeterTB"), XXO("Co&mbined Meter Toolbar"),
|
||||
// FN(OnShowMeterToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
with the mixer*/
|
||||
Command( wxT("ShowMixerTB"), XXO("Mi&xer Toolbar"),
|
||||
FN(OnShowMixerToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar for editing*/
|
||||
Command( wxT("ShowEditTB"), XXO("&Edit Toolbar"),
|
||||
FN(OnShowEditToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
for transcription (currently just vary play speed)*/
|
||||
Command( wxT("ShowTranscriptionTB"), XXO("Pla&y-at-Speed Toolbar"),
|
||||
FN(OnShowTranscriptionToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
that enables Scrub or Seek playback and Scrub Ruler*/
|
||||
Command( wxT("ShowScrubbingTB"), XXO("Scru&b Toolbar"),
|
||||
FN(OnShowScrubbingToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
that manages devices*/
|
||||
Command( wxT("ShowDeviceTB"), XXO("&Device Toolbar"),
|
||||
FN(OnShowDeviceToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
for selecting a time range of audio*/
|
||||
Command( wxT("ShowSelectionTB"), XXO("&Selection Toolbar"),
|
||||
FN(OnShowSelectionToolBar), AlwaysEnabledFlag, checkOff )
|
||||
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
for selecting a frequency range of audio*/
|
||||
,
|
||||
Command( wxT("ShowSpectralSelectionTB"),
|
||||
XXO("Spe&ctral Selection Toolbar"),
|
||||
FN(OnShowSpectralSelectionToolBar), AlwaysEnabledFlag, checkOff )
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr ViewMenu( AudacityProject& )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
@ -1161,67 +1253,7 @@ MenuTable::BaseItemPtr ViewMenu( AudacityProject& )
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Menu( _("&Toolbars"),
|
||||
/* i18n-hint: (verb)*/
|
||||
Command( wxT("ResetToolbars"), XXO("Reset Toolb&ars"),
|
||||
FN(OnResetToolBars), AlwaysEnabledFlag ),
|
||||
|
||||
Separator(),
|
||||
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
with the big buttons on it (play record etc)*/
|
||||
Command( wxT("ShowTransportTB"), XXO("&Transport Toolbar"),
|
||||
FN(OnShowTransportToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows a toolbar
|
||||
that has some tools in it*/
|
||||
Command( wxT("ShowToolsTB"), XXO("T&ools Toolbar"),
|
||||
FN(OnShowToolsToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
with the recording level meters*/
|
||||
Command( wxT("ShowRecordMeterTB"), XXO("&Recording Meter Toolbar"),
|
||||
FN(OnShowRecordMeterToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
with the playback level meter*/
|
||||
Command( wxT("ShowPlayMeterTB"), XXO("&Playback Meter Toolbar"),
|
||||
FN(OnShowPlayMeterToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
|
||||
/* --i18nhint: Clicking this menu item shows the toolbar
|
||||
which has sound level meters*/
|
||||
//Command( wxT("ShowMeterTB"), XXO("Co&mbined Meter Toolbar"),
|
||||
// FN(OnShowMeterToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
with the mixer*/
|
||||
Command( wxT("ShowMixerTB"), XXO("Mi&xer Toolbar"),
|
||||
FN(OnShowMixerToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar for editing*/
|
||||
Command( wxT("ShowEditTB"), XXO("&Edit Toolbar"),
|
||||
FN(OnShowEditToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
for transcription (currently just vary play speed)*/
|
||||
Command( wxT("ShowTranscriptionTB"), XXO("Pla&y-at-Speed Toolbar"),
|
||||
FN(OnShowTranscriptionToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
that enables Scrub or Seek playback and Scrub Ruler*/
|
||||
Command( wxT("ShowScrubbingTB"), XXO("Scru&b Toolbar"),
|
||||
FN(OnShowScrubbingToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
that manages devices*/
|
||||
Command( wxT("ShowDeviceTB"), XXO("&Device Toolbar"),
|
||||
FN(OnShowDeviceToolBar), AlwaysEnabledFlag, checkOff ),
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
for selecting a time range of audio*/
|
||||
Command( wxT("ShowSelectionTB"), XXO("&Selection Toolbar"),
|
||||
FN(OnShowSelectionToolBar), AlwaysEnabledFlag, checkOff )
|
||||
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
||||
/* i18n-hint: Clicking this menu item shows the toolbar
|
||||
for selecting a frequency range of audio*/
|
||||
,
|
||||
Command( wxT("ShowSpectralSelectionTB"),
|
||||
XXO("Spe&ctral Selection Toolbar"),
|
||||
FN(OnShowSpectralSelectionToolBar), AlwaysEnabledFlag, checkOff )
|
||||
#endif
|
||||
),
|
||||
ToolbarsMenu,
|
||||
|
||||
Separator(),
|
||||
|
||||
@ -1239,6 +1271,63 @@ MenuTable::BaseItemPtr ViewMenu( AudacityProject& )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr ClipCursorItems( AudacityProject & )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
using Options = CommandManager::Options;
|
||||
|
||||
return Items(
|
||||
Command( wxT("CursPrevClipBoundary"), XXO("Pre&vious Clip Boundary"),
|
||||
FN(OnCursorPrevClipBoundary),
|
||||
WaveTracksExistFlag,
|
||||
Options{}.LongName( _("Cursor to Prev Clip Boundary") ) ),
|
||||
Command( wxT("CursNextClipBoundary"), XXO("Ne&xt Clip Boundary"),
|
||||
FN(OnCursorNextClipBoundary),
|
||||
WaveTracksExistFlag,
|
||||
Options{}.LongName( _("Cursor to Next Clip Boundary") ) )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr CursorMenu( AudacityProject & )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
using Options = CommandManager::Options;
|
||||
constexpr auto CanStopFlags = AudioIONotBusyFlag | CanStopAudioStreamFlag;
|
||||
|
||||
// JKC: ANSWER-ME: How is 'cursor to' different to 'Skip To' and how is it useful?
|
||||
// GA: 'Skip to' moves the viewpoint to center of the track and preserves the
|
||||
// selection. 'Cursor to' does neither. 'Center at' might describe it better than 'Skip'.
|
||||
return Menu( _("&Cursor to"),
|
||||
Command( wxT("CursSelStart"), XXO("Selection Star&t"),
|
||||
FN(OnCursorSelStart),
|
||||
TimeSelectedFlag,
|
||||
Options{}.LongName( _("Cursor to Selection Start") ) ),
|
||||
Command( wxT("CursSelEnd"), XXO("Selection En&d"),
|
||||
FN(OnCursorSelEnd),
|
||||
TimeSelectedFlag,
|
||||
Options{}.LongName( _("Cursor to Selection End") ) ),
|
||||
|
||||
Command( wxT("CursTrackStart"), XXO("Track &Start"),
|
||||
FN(OnCursorTrackStart),
|
||||
TracksSelectedFlag,
|
||||
Options{ wxT("J"), _("Cursor to Track Start") } ),
|
||||
Command( wxT("CursTrackEnd"), XXO("Track &End"),
|
||||
FN(OnCursorTrackEnd),
|
||||
TracksSelectedFlag,
|
||||
Options{ wxT("K"), _("Cursor to Track End") } ),
|
||||
|
||||
ClipCursorItems,
|
||||
|
||||
Command( wxT("CursProjectStart"), XXO("&Project Start"),
|
||||
FN(OnSkipStart),
|
||||
CanStopFlags,
|
||||
Options{ wxT("Home"), _("Cursor to Project Start") } ),
|
||||
Command( wxT("CursProjectEnd"), XXO("Project E&nd"), FN(OnSkipEnd),
|
||||
CanStopFlags,
|
||||
Options{ wxT("End"), _("Cursor to Project End") } )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr TransportMenu( AudacityProject &project )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
@ -1304,45 +1393,7 @@ MenuTable::BaseItemPtr TransportMenu( AudacityProject &project )
|
||||
// Scrubbing sub-menu
|
||||
project.GetScrubber().Menu(),
|
||||
|
||||
// JKC: ANSWER-ME: How is 'cursor to' different to 'Skip To' and how is it useful?
|
||||
// GA: 'Skip to' moves the viewpoint to center of the track and preserves the
|
||||
// selection. 'Cursor to' does neither. 'Center at' might describe it better than 'Skip'.
|
||||
Menu( _("&Cursor to"),
|
||||
Command( wxT("CursSelStart"), XXO("Selection Star&t"),
|
||||
FN(OnCursorSelStart),
|
||||
TimeSelectedFlag,
|
||||
Options{}.LongName( _("Cursor to Selection Start") ) ),
|
||||
Command( wxT("CursSelEnd"), XXO("Selection En&d"),
|
||||
FN(OnCursorSelEnd),
|
||||
TimeSelectedFlag,
|
||||
Options{}.LongName( _("Cursor to Selection End") ) ),
|
||||
|
||||
Command( wxT("CursTrackStart"), XXO("Track &Start"),
|
||||
FN(OnCursorTrackStart),
|
||||
TracksSelectedFlag,
|
||||
Options{ wxT("J"), _("Cursor to Track Start") } ),
|
||||
Command( wxT("CursTrackEnd"), XXO("Track &End"),
|
||||
FN(OnCursorTrackEnd),
|
||||
TracksSelectedFlag,
|
||||
Options{ wxT("K"), _("Cursor to Track End") } ),
|
||||
|
||||
Command( wxT("CursPrevClipBoundary"), XXO("Pre&vious Clip Boundary"),
|
||||
FN(OnCursorPrevClipBoundary),
|
||||
WaveTracksExistFlag,
|
||||
Options{}.LongName( _("Cursor to Prev Clip Boundary") ) ),
|
||||
Command( wxT("CursNextClipBoundary"), XXO("Ne&xt Clip Boundary"),
|
||||
FN(OnCursorNextClipBoundary),
|
||||
WaveTracksExistFlag,
|
||||
Options{}.LongName( _("Cursor to Next Clip Boundary") ) ),
|
||||
|
||||
Command( wxT("CursProjectStart"), XXO("&Project Start"),
|
||||
FN(OnSkipStart),
|
||||
CanStopFlags,
|
||||
Options{ wxT("Home"), _("Cursor to Project Start") } ),
|
||||
Command( wxT("CursProjectEnd"), XXO("Project E&nd"), FN(OnSkipEnd),
|
||||
CanStopFlags,
|
||||
Options{ wxT("End"), _("Cursor to Project End") } )
|
||||
),
|
||||
CursorMenu,
|
||||
|
||||
Separator(),
|
||||
|
||||
@ -2001,6 +2052,18 @@ MenuTable::BaseItemPtr ExtraFocusMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr ExtraClipCursorItems( AudacityProject & )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
|
||||
return Items(
|
||||
Command( wxT("ClipLeft"), XXO("Clip L&eft"), FN(OnClipLeft),
|
||||
TracksExistFlag | TrackPanelHasFocus, wxT("\twantKeyup") ),
|
||||
Command( wxT("ClipRight"), XXO("Clip Rig&ht"), FN(OnClipRight),
|
||||
TracksExistFlag | TrackPanelHasFocus, wxT("\twantKeyup") )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr ExtraCursorMenu( AudacityProject & )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
@ -2024,10 +2087,8 @@ MenuTable::BaseItemPtr ExtraCursorMenu( AudacityProject & )
|
||||
Command( wxT("CursorLongJumpRight"), XXO("Cursor Long Ju&mp Right"),
|
||||
FN(OnCursorLongJumpRight),
|
||||
TracksExistFlag | TrackPanelHasFocus, wxT("Shift+.") ),
|
||||
Command( wxT("ClipLeft"), XXO("Clip L&eft"), FN(OnClipLeft),
|
||||
TracksExistFlag | TrackPanelHasFocus, wxT("\twantKeyup") ),
|
||||
Command( wxT("ClipRight"), XXO("Clip Rig&ht"), FN(OnClipRight),
|
||||
TracksExistFlag | TrackPanelHasFocus, wxT("\twantKeyup") )
|
||||
|
||||
ExtraClipCursorItems
|
||||
);
|
||||
}
|
||||
|
||||
@ -2166,6 +2227,23 @@ MenuTable::BaseItemPtr ExtraScriptablesIIMenu( AudacityProject & )
|
||||
);
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr ExtraWindowItems( AudacityProject & )
|
||||
{
|
||||
#ifdef __WXMAC__
|
||||
using namespace MenuTable;
|
||||
|
||||
return Items(
|
||||
/* i18n-hint: Shrink all project windows to icons on the Macintosh
|
||||
tooldock */
|
||||
Command( wxT("MacMinimizeAll"), XXO("Minimize All Projects"),
|
||||
FN(OnMacMinimizeAll),
|
||||
AlwaysEnabledFlag, wxT("Ctrl+Alt+M") )
|
||||
);
|
||||
#else
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
MenuTable::BaseItemPtr ExtraMiscItems( AudacityProject &project )
|
||||
{
|
||||
using namespace MenuTable;
|
||||
@ -2186,16 +2264,9 @@ MenuTable::BaseItemPtr ExtraMiscItems( AudacityProject &project )
|
||||
FN(OnFullScreen),
|
||||
AlwaysEnabledFlag,
|
||||
Options{ key }
|
||||
.CheckState( project.wxTopLevelWindow::IsFullScreen() ) )
|
||||
.CheckState( project.wxTopLevelWindow::IsFullScreen() ) ),
|
||||
|
||||
#ifdef __WXMAC__
|
||||
,
|
||||
/* i18n-hint: Shrink all project windows to icons on the Macintosh
|
||||
tooldock */
|
||||
Command( wxT("MacMinimizeAll"), XXO("Minimize All Projects"),
|
||||
FN(OnMacMinimizeAll),
|
||||
AlwaysEnabledFlag, wxT("Ctrl+Alt+M") )
|
||||
#endif
|
||||
ExtraWindowItems
|
||||
);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user