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 FileMenu( AudacityProject& );
|
||||||
MenuTable::BaseItemPtr EditMenu( AudacityProject& );
|
MenuTable::BaseItemPtr EditMenu( AudacityProject& );
|
||||||
MenuTable::BaseItemPtr SelectMenu( AudacityProject& );
|
MenuTable::BaseItemPtr SelectMenu( AudacityProject& );
|
||||||
|
MenuTable::BaseItemPtr ToolbarsMenu( AudacityProject& );
|
||||||
MenuTable::BaseItemPtr ViewMenu( AudacityProject& );
|
MenuTable::BaseItemPtr ViewMenu( AudacityProject& );
|
||||||
|
MenuTable::BaseItemPtr CursorMenu( AudacityProject& );
|
||||||
MenuTable::BaseItemPtr TransportMenu( AudacityProject& );
|
MenuTable::BaseItemPtr TransportMenu( AudacityProject& );
|
||||||
MenuTable::BaseItemPtr TracksMenu( AudacityProject& );
|
MenuTable::BaseItemPtr TracksMenu( AudacityProject& );
|
||||||
MenuTable::BaseItemPtr GenerateMenu( 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 namespace MenuTable;
|
||||||
using Options = CommandManager::Options;
|
using Options = CommandManager::Options;
|
||||||
|
|
||||||
static const auto checkOff = Options{}.CheckState( false );
|
static const auto checkOff = Options{}.CheckState( false );
|
||||||
|
|
||||||
constexpr auto NotBusyTimeAndTracksFlags =
|
|
||||||
AudioIONotBusyFlag | TimeSelectedFlag | TracksSelectedFlag;
|
|
||||||
|
|
||||||
constexpr auto NotBusyLabelsAndWaveFlags =
|
constexpr auto NotBusyLabelsAndWaveFlags =
|
||||||
AudioIONotBusyFlag |
|
AudioIONotBusyFlag |
|
||||||
LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag;
|
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.
|
// The default shortcut key for Redo is different on different platforms.
|
||||||
static constexpr auto redoKey =
|
static constexpr auto redoKey =
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
@ -857,81 +945,7 @@ MenuTable::BaseItemPtr EditMenu( AudacityProject &project )
|
|||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Menu( _("&Labels"),
|
LabelEditMenus,
|
||||||
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") )
|
|
||||||
),
|
|
||||||
|
|
||||||
Command( wxT("EditMetaData"), XXO("&Metadata..."), FN(OnEditMetadata),
|
Command( wxT("EditMetaData"), XXO("&Metadata..."), FN(OnEditMetadata),
|
||||||
AudioIONotBusyFlag ),
|
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& )
|
MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
||||||
{
|
{
|
||||||
using namespace MenuTable;
|
using namespace MenuTable;
|
||||||
@ -1028,22 +1065,7 @@ MenuTable::BaseItemPtr SelectMenu( AudacityProject& )
|
|||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Menu( _("Clip B&oundaries"),
|
ClipSelectMenu,
|
||||||
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") } )
|
|
||||||
),
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@ -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& )
|
MenuTable::BaseItemPtr ViewMenu( AudacityProject& )
|
||||||
{
|
{
|
||||||
using namespace MenuTable;
|
using namespace MenuTable;
|
||||||
@ -1161,67 +1253,7 @@ MenuTable::BaseItemPtr ViewMenu( AudacityProject& )
|
|||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Menu( _("&Toolbars"),
|
ToolbarsMenu,
|
||||||
/* 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
|
|
||||||
),
|
|
||||||
|
|
||||||
Separator(),
|
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 )
|
MenuTable::BaseItemPtr TransportMenu( AudacityProject &project )
|
||||||
{
|
{
|
||||||
using namespace MenuTable;
|
using namespace MenuTable;
|
||||||
@ -1304,45 +1393,7 @@ MenuTable::BaseItemPtr TransportMenu( AudacityProject &project )
|
|||||||
// Scrubbing sub-menu
|
// Scrubbing sub-menu
|
||||||
project.GetScrubber().Menu(),
|
project.GetScrubber().Menu(),
|
||||||
|
|
||||||
// JKC: ANSWER-ME: How is 'cursor to' different to 'Skip To' and how is it useful?
|
CursorMenu,
|
||||||
// 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") } )
|
|
||||||
),
|
|
||||||
|
|
||||||
Separator(),
|
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 & )
|
MenuTable::BaseItemPtr ExtraCursorMenu( AudacityProject & )
|
||||||
{
|
{
|
||||||
using namespace MenuTable;
|
using namespace MenuTable;
|
||||||
@ -2024,10 +2087,8 @@ MenuTable::BaseItemPtr ExtraCursorMenu( AudacityProject & )
|
|||||||
Command( wxT("CursorLongJumpRight"), XXO("Cursor Long Ju&mp Right"),
|
Command( wxT("CursorLongJumpRight"), XXO("Cursor Long Ju&mp Right"),
|
||||||
FN(OnCursorLongJumpRight),
|
FN(OnCursorLongJumpRight),
|
||||||
TracksExistFlag | TrackPanelHasFocus, wxT("Shift+.") ),
|
TracksExistFlag | TrackPanelHasFocus, wxT("Shift+.") ),
|
||||||
Command( wxT("ClipLeft"), XXO("Clip L&eft"), FN(OnClipLeft),
|
|
||||||
TracksExistFlag | TrackPanelHasFocus, wxT("\twantKeyup") ),
|
ExtraClipCursorItems
|
||||||
Command( wxT("ClipRight"), XXO("Clip Rig&ht"), FN(OnClipRight),
|
|
||||||
TracksExistFlag | TrackPanelHasFocus, wxT("\twantKeyup") )
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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 )
|
MenuTable::BaseItemPtr ExtraMiscItems( AudacityProject &project )
|
||||||
{
|
{
|
||||||
using namespace MenuTable;
|
using namespace MenuTable;
|
||||||
@ -2186,16 +2264,9 @@ MenuTable::BaseItemPtr ExtraMiscItems( AudacityProject &project )
|
|||||||
FN(OnFullScreen),
|
FN(OnFullScreen),
|
||||||
AlwaysEnabledFlag,
|
AlwaysEnabledFlag,
|
||||||
Options{ key }
|
Options{ key }
|
||||||
.CheckState( project.wxTopLevelWindow::IsFullScreen() ) )
|
.CheckState( project.wxTopLevelWindow::IsFullScreen() ) ),
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
ExtraWindowItems
|
||||||
,
|
|
||||||
/* 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
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user