1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-21 14:50:06 +02:00

Menu rearrangement merged from DarkAudacity

This commit is contained in:
James Crook 2017-03-19 16:09:02 +00:00
parent e78d209a68
commit 5c1f4d24b5
4 changed files with 222 additions and 129 deletions

View File

@ -324,37 +324,24 @@ void AudacityProject::CreateMenusAndCommands()
AudioIONotBusyFlag | UnsavedChangesFlag,
AudioIONotBusyFlag | UnsavedChangesFlag);
c->AddItem(wxT("SaveAs"), _("Save Project &As..."), FN(OnSaveAs));
#ifdef USE_LIBVORBIS
c->AddItem(wxT("SaveCompressed"), _("Sa&ve Compressed Copy of Project..."), FN(OnSaveCompressed));
#endif
c->AddItem(wxT("CheckDeps"), _("Chec&k Dependencies..."), FN(OnCheckDependencies));
c->AddSeparator();
c->AddItem(wxT("EditMetaData"), _("Edit Me&tadata Tags..."), FN(OnEditMetadata));
c->AddSeparator();
/////////////////////////////////////////////////////////////////////////////
c->BeginSubMenu(_("&Import"));
c->AddItem(wxT("ImportAudio"), _("&Audio..."), FN(OnImport), wxT("Ctrl+Shift+I"));
c->AddItem(wxT("ImportLabels"), _("&Labels..."), FN(OnImportLabels));
#ifdef USE_MIDI
c->AddItem(wxT("ImportMIDI"), _("&MIDI..."), FN(OnImportMIDI));
#endif // USE_MIDI
c->AddItem(wxT("ImportRaw"), _("&Raw Data..."), FN(OnImportRaw));
c->EndSubMenu();
c->AddSeparator();
/////////////////////////////////////////////////////////////////////////////
c->BeginSubMenu( _("Save Other") );
//#ifdef EXPERIMENTAL_DA
// Enable Export audio commands only when there are audio tracks.
c->AddItem(wxT("Export"), _("&Export Audio..."), FN(OnExport), wxT("Ctrl+Shift+E"),
c->AddItem(wxT("ExportMp3"), _("Export as MP&3"), FN(OnExportMp3), wxT(""),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag);
c->AddItem(wxT("ExportWav"), _("Export as &WAV"), FN(OnExportWav), wxT(""),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag);
c->AddItem(wxT("ExportOgg"), _("Export as &OGG"), FN(OnExportOgg), wxT(""),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag);
//#endif
c->AddItem(wxT("Export"), _("&Export Audio..."), FN(OnExportAudio), wxT("Ctrl+Shift+E"),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag);
@ -375,12 +362,32 @@ void AudacityProject::CreateMenusAndCommands()
AudioIONotBusyFlag | NoteTracksSelectedFlag,
AudioIONotBusyFlag | NoteTracksSelectedFlag);
#endif
#ifdef USE_LIBVORBIS
c->AddSeparator();
c->AddItem(wxT("SaveCompressed"), _("&Save Compressed Copy of Project..."), FN(OnSaveCompressed));
#endif
c->EndSubMenu();
c->AddSeparator();
c->BeginSubMenu(_("&Import"));
c->AddItem(wxT("ImportAudio"), _("&Audio..."), FN(OnImport), wxT("Ctrl+Shift+I"));
c->AddItem(wxT("ImportLabels"), _("&Labels..."), FN(OnImportLabels));
#ifdef USE_MIDI
c->AddItem(wxT("ImportMIDI"), _("&MIDI..."), FN(OnImportMIDI));
#endif // USE_MIDI
c->AddItem(wxT("ImportRaw"), _("&Raw Data..."), FN(OnImportRaw));
c->EndSubMenu();
c->AddSeparator();
/////////////////////////////////////////////////////////////////////////////
c->BeginSubMenu(_("Chains"));
c->AddItem(wxT("ApplyChain"), _("Appl&y Chain..."), FN(OnApplyChain),
AudioIONotBusyFlag,
AudioIONotBusyFlag);
c->AddItem(wxT("EditChains"), _("Edit C&hains..."), FN(OnEditChains));
c->EndSubMenu();
c->AddSeparator();
@ -451,7 +458,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
c->BeginSubMenu(_("R&emove Special"));
c->BeginSubMenu(_("R&emove Audio"));
/* i18n-hint: (verb) Do a special kind of cut*/
c->AddItem(wxT("SplitCut"), _("Spl&it Cut"), FN(OnSplitCut), wxT("Ctrl+Alt+X"));
/* i18n-hint: (verb) Do a special kind of DELETE*/
@ -471,10 +478,6 @@ void AudacityProject::CreateMenusAndCommands()
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag);
c->EndSubMenu();
c->AddItem(wxT("PasteNewLabel"), _("Paste Te&xt to New Label"), FN(OnPasteNewLabel), wxT("Ctrl+Alt+V"),
AudioIONotBusyFlag, AudioIONotBusyFlag);
c->AddSeparator();
/////////////////////////////////////////////////////////////////////////////
@ -495,9 +498,30 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
c->AddItem(wxT("EditMetaData"), _("Me&tadata..."), FN(OnEditMetadata));
c->AddSeparator();
/////////////////////////////////////////////////////////////////////////////
c->BeginSubMenu(_("La&beled Audio"));
c->BeginSubMenu(_("La&bels"));
c->AddItem(wxT("EditLabels"), _("&Edit Labels..."), FN(OnEditLabels));
c->AddItem(wxT("AddLabel"), _("Add Label At &Selection"), FN(OnAddLabel), wxT("Ctrl+B"),
AlwaysEnabledFlag, AlwaysEnabledFlag);
c->AddItem(wxT("AddLabelPlaying"), _("Add Label At &Playback Position"),
FN(OnAddLabelPlaying),
#ifdef __WXMAC__
wxT("Ctrl+."),
#else
wxT("Ctrl+M"),
#endif
AudioIOBusyFlag,
AudioIOBusyFlag);
c->SetDefaultFlags(AudioIONotBusyFlag, AudioIONotBusyFlag);
c->AddItem(wxT("PasteNewLabel"), _("Paste Te&xt to New Label"), FN(OnPasteNewLabel), wxT("Ctrl+Alt+V"),
AudioIONotBusyFlag, AudioIONotBusyFlag);
c->AddSeparator();
c->SetDefaultFlags(AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag,
AudioIONotBusyFlag | LabelsSelectedFlag | WaveTracksExistFlag | TimeSelectedFlag);
@ -532,6 +556,12 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("JoinLabels"), _("&Join"), FN(OnJoinLabels), wxT("Alt+J"));
c->AddItem(wxT("DisjoinLabels"), _("Detac&h at Silences"), FN(OnDisjoinLabels), wxT("Alt+Shift+J"));
c->AddSeparator();
// New in Audacity 2.1.3
c->AddCheck(wxT("TypeToCreateLabel"), _("&Type to Create a Label (on/off)"),
FN(OnToggleTypeToCreateLabel), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
c->EndSubMenu();
/////////////////////////////////////////////////////////////////////////////
@ -569,58 +599,36 @@ void AudacityProject::CreateMenusAndCommands()
TracksExistFlag, TracksExistFlag);
#ifdef EXPERIMENTAL_SYNC_LOCK
c->AddItem(wxT("SelSyncLockTracks"), _("In All S&ync-Locked Tracks"),
#ifdef EXPERIMENTAL_DA
c->AddItem(wxT("SelSyncLockTracks"), _("In All Time-Locked Tracks"),
#else
c->AddItem(wxT("SelSyncLockTracks"), _("In All Sync-Locked Tracks"),
#endif
FN(OnSelectSyncLockSel), wxT("Ctrl+Shift+Y"),
TracksSelectedFlag | IsSyncLockedFlag,
TracksSelectedFlag | IsSyncLockedFlag);
#endif
c->EndSubMenu();
/////////////////////////////////////////////////////////////////////////////
c->AddItem(wxT("ZeroCross"), _("Find &Zero Crossings"), FN(OnZeroCrossing), wxT("Z"));
/////////////////////////////////////////////////////////////////////////////
c->BeginSubMenu(_("Mo&ve Cursor"));
c->AddItem(wxT("CursSelStart"), _("to Selection Star&t"), FN(OnCursorSelStart));
c->AddItem(wxT("CursSelEnd"), _("to Selection En&d"), FN(OnCursorSelEnd));
c->AddItem(wxT("CursTrackStart"), _("to Track &Start"), FN(OnCursorTrackStart), wxT("J"));
c->AddItem(wxT("CursTrackEnd"), _("to Track &End"), FN(OnCursorTrackEnd), wxT("K"));
c->EndSubMenu();
/////////////////////////////////////////////////////////////////////////////
c->AddSeparator();
c->AddItem(wxT("SelSave"), _("Store Re&gion"), FN(OnSelectionSave),
c->AddItem(wxT("ZeroCross"), _("Ends to &Zero Crossings"), FN(OnZeroCrossing), wxT("Z"));
c->AddSeparator();
// Audacity has 'Store Re&gion' here.
c->AddItem(wxT("SelSave"), _("Save Sele&ction"), FN(OnSelectionSave),
WaveTracksSelectedFlag,
WaveTracksSelectedFlag);
c->AddItem(wxT("SelRestore"), _("Retrieve Regio&n"), FN(OnSelectionRestore),
// Audacity has 'Retrieve Regio&n' here.
c->AddItem(wxT("SelRestore"), _("Restore Selectio&n"), FN(OnSelectionRestore),
TracksExistFlag,
TracksExistFlag);
c->AddItem(wxT("StoreCursorPosition"), _("Store Cursor Pos&ition"), FN(OnCursorPositionStore),
WaveTracksExistFlag,
WaveTracksExistFlag);
c->AddSeparator();
c->EndSubMenu();
//Present in Audacity...
//c->AddItem(wxT("StoreCursorPosition"), _("Store Cursor Pos&ition"), FN(OnCursorPositionStore),
// WaveTracksExistFlag,
// WaveTracksExistFlag);
/////////////////////////////////////////////////////////////////////////////
c->BeginSubMenu(_("Pla&y Region"));
c->AddItem(wxT("LockPlayRegion"), _("&Lock"), FN(OnLockPlayRegion),
PlayRegionNotLockedFlag,
PlayRegionNotLockedFlag);
c->AddItem(wxT("UnlockPlayRegion"), _("&Unlock"), FN(OnUnlockPlayRegion),
PlayRegionLockedFlag,
PlayRegionLockedFlag);
c->EndSubMenu();
/////////////////////////////////////////////////////////////////////////////
@ -648,6 +656,7 @@ void AudacityProject::CreateMenusAndCommands()
c->BeginMenu(_("&View"));
c->SetDefaultFlags(TracksExistFlag, TracksExistFlag);
c->BeginSubMenu(_("Zoom"));
c->AddItem(wxT("ZoomIn"), _("Zoom &In"), FN(OnZoomIn), wxT("Ctrl+1"),
ZoomInAvailableFlag,
@ -657,18 +666,17 @@ void AudacityProject::CreateMenusAndCommands()
ZoomOutAvailableFlag,
ZoomOutAvailableFlag);
c->AddItem(wxT("ZoomSel"), _("&Zoom to Selection"), FN(OnZoomSel), wxT("Ctrl+E"), TimeSelectedFlag, TimeSelectedFlag);
c->EndSubMenu();
c->AddSeparator();
c->AddItem(wxT("FitInWindow"), _("&Fit in Window"), FN(OnZoomFit), wxT("Ctrl+F"));
c->AddItem(wxT("FitV"), _("Fit &Vertically"), FN(OnZoomFitV), wxT("Ctrl+Shift+F"));
c->AddSeparator();
c->AddItem(wxT("GoSelStart"), _("Go to Selection Sta&rt"), FN(OnGoSelStart), wxT("Ctrl+["), TimeSelectedFlag, TimeSelectedFlag);
c->AddItem(wxT("GoSelEnd"), _("Go to Selection En&d"), FN(OnGoSelEnd), wxT("Ctrl+]"), TimeSelectedFlag, TimeSelectedFlag);
c->AddSeparator();
c->BeginSubMenu(_("&Track Size"));
c->AddItem(wxT("FitInWindow"), _("&Fit to Width"), FN(OnZoomFit), wxT("Ctrl+F"));
c->AddItem(wxT("FitV"), _("Fit to &Height"), FN(OnZoomFitV), wxT("Ctrl+Shift+F"));
c->AddItem(wxT("CollapseAllTracks"), _("&Collapse All Tracks"), FN(OnCollapseAllTracks), wxT("Ctrl+Shift+C"));
c->AddItem(wxT("ExpandAllTracks"), _("E&xpand Collapsed Tracks"), FN(OnExpandAllTracks), wxT("Ctrl+Shift+X"));
c->EndSubMenu();
c->AddSeparator();
c->AddCheck(wxT("ShowClipping"), _("&Show Clipping"), FN(OnShowClipping),
@ -742,7 +750,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
/* i18n-hint: (verb)*/
c->AddItem(wxT("ResetToolbars"), _("Reset Toolb&ars"), FN(OnResetToolBars), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
c->AddItem(wxT("ResetToolbars"), _("&Reset Toolb&ars"), FN(OnResetToolBars), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
c->EndSubMenu();
@ -756,36 +764,79 @@ void AudacityProject::CreateMenusAndCommands()
play, record, pause etc. */
c->BeginMenu(_("T&ransport"));
c->SetDefaultFlags(CanStopAudioStreamFlag, CanStopAudioStreamFlag);
c->BeginSubMenu(_("Play"));
/* i18n-hint: (verb) Start or Stop audio playback*/
c->AddItem(wxT("PlayStop"), _("Pl&ay/Stop"), FN(OnPlayStop), wxT("Space"));
c->AddItem(wxT("PlayStopSelect"), _("Play/Stop and &Set Cursor"), FN(OnPlayStopSelect), wxT("X"));
c->AddItem(wxT("PlayLooped"), _("&Loop Play"), FN(OnPlayLooped), wxT("Shift+Space"),
WaveTracksExistFlag | AudioIONotBusyFlag | CanStopAudioStreamFlag,
WaveTracksExistFlag | AudioIONotBusyFlag | CanStopAudioStreamFlag);
// Scrubbing sub-menu
GetScrubber().AddMenuItems();
c->AddItem(wxT("Pause"), _("&Pause"), FN(OnPause), wxT("P"));
c->AddItem(wxT("SkipStart"), _("S&kip to Start"), FN(OnSkipStart), wxT("Home"),
AudioIONotBusyFlag, AudioIONotBusyFlag);
c->AddItem(wxT("SkipEnd"), _("Skip to E&nd"), FN(OnSkipEnd), wxT("End"),
WaveTracksExistFlag | AudioIONotBusyFlag,
WaveTracksExistFlag | AudioIONotBusyFlag);
c->AddSeparator();
c->EndSubMenu();
c->BeginSubMenu( _("Record"));
c->SetDefaultFlags(AudioIONotBusyFlag | CanStopAudioStreamFlag,
AudioIONotBusyFlag | CanStopAudioStreamFlag);
/* i18n-hint: (verb)*/
c->AddItem(wxT("Record"), _("&Record"), FN(OnRecord), wxT("R"));
c->AddItem(wxT("TimerRecord"), _("&Timer Record..."), FN(OnTimerRecord), wxT("Shift+T"));
c->AddItem(wxT("RecordAppend"), _("Appen&d Record"), FN(OnRecordAppend), wxT("Shift+R"));
c->AddItem(wxT("RecordBelow"), _("Record Below"), FN(OnRecordBelow), wxT("Shift+R"));
// I decided to duplicate this between play and record, rather than put it at the top level.
// However I must not set the short cut here, as setting it twice disables it!
// TODO: find a way that it is OK to have the same shortcut for a repeated function.
c->AddItem(wxT("Pause"), _("&Pause"), FN(OnPause));//, wxT("P"));
c->EndSubMenu();
// Scrubbing sub-menu
GetScrubber().AddMenuItems();
c->AddSeparator();
c->BeginSubMenu(_("Skip to"));
c->AddItem(wxT("GoSelStart"), _("Selection Sta&rt"), FN(OnGoSelStart), wxT("Ctrl+["), TimeSelectedFlag, TimeSelectedFlag);
c->AddItem(wxT("GoSelEnd"), _("Selection En&d"), FN(OnGoSelEnd), wxT("Ctrl+]"), TimeSelectedFlag, TimeSelectedFlag);
c->AddItem(wxT("SkipStart"), _("Track Start"), FN(OnSkipStart), wxT("Home"),
AudioIONotBusyFlag, AudioIONotBusyFlag);
c->AddItem(wxT("SkipEnd"), _("Track E&nd"), FN(OnSkipEnd), wxT("End"),
WaveTracksExistFlag | AudioIONotBusyFlag,
WaveTracksExistFlag | AudioIONotBusyFlag);
c->EndSubMenu();
c->AddSeparator();
c->AddCheck(wxT("PinnedHead"), _("Pinned Recording/Playback &Head"),
/////////////////////////////////////////////////////////////////////////////
c->BeginSubMenu(_("Pla&y Region"));
c->AddItem(wxT("LockPlayRegion"), _("&Lock"), FN(OnLockPlayRegion),
PlayRegionNotLockedFlag,
PlayRegionNotLockedFlag);
c->AddItem(wxT("UnlockPlayRegion"), _("&Unlock"), FN(OnUnlockPlayRegion),
PlayRegionLockedFlag,
PlayRegionLockedFlag);
c->EndSubMenu();
c->AddSeparator();
#if 0
// Taken from the edit menu, where it did not belong.
/////////////////////////////////////////////////////////////////////////////
c->BeginSubMenu(_("Skip to"));
c->AddItem(wxT("CursSelStart"), _("Selection Star&t"), FN(OnCursorSelStart));
c->AddItem(wxT("CursSelEnd"), _("Selection En&d"), FN(OnCursorSelEnd));
c->AddItem(wxT("CursTrackStart"), _("Track &Start"), FN(OnCursorTrackStart), wxT("J"));
c->AddItem(wxT("CursTrackEnd"), _("Track &End"), FN(OnCursorTrackEnd), wxT("K"));
c->EndSubMenu();
#endif
c->BeginSubMenu(_("Transport Options"));
c->AddCheck(wxT("PinnedHead"), _("Pinned Play/Record &Head (on/off)"),
FN(OnTogglePinnedHead), 0,
// Switching of scrolling on and off is permitted even during transport
AlwaysEnabledFlag, AlwaysEnabledFlag);
@ -800,6 +851,7 @@ void AudacityProject::CreateMenusAndCommands()
#ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
c->AddCheck(wxT("AutomatedInputLevelAdjustmentOnOff"), _("A&utomated Recording Level Adjustment (on/off)"), FN(OnToggleAutomatedInputLevelAdjustment), 0);
#endif
c->EndSubMenu();
c->AddItem(wxT("RescanDevices"), _("R&escan Audio Devices"), FN(OnRescanDevices));
c->EndMenu();
@ -826,13 +878,14 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
c->BeginSubMenu(_("Mix") );
{
// Stereo to Mono is an oddball command that is also subject to control by the
// plug-in manager, as if an effect. Decide whether to show or hide it.
const PluginID ID = EffectManager::Get().GetEffectByIdentifier(wxT("StereoToMono"));
const PluginDescriptor *plug = PluginManager::Get().GetPlugin(ID);
if (plug && plug->IsEnabled())
c->AddItem(wxT("Stereo to Mono"), _("Stereo Trac&k to Mono"), FN(OnStereoToMono),
c->AddItem(wxT("Stereo to Mono"), _("Mix Stereo down to Mono"), FN(OnStereoToMono),
AudioIONotBusyFlag | StereoRequiredFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | StereoRequiredFlag | WaveTracksSelectedFlag);
}
@ -842,6 +895,8 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("MixAndRenderToNewTrack"), _("Mix and Render to Ne&w Track"), FN(OnMixAndRenderToNewTrack), wxT("Ctrl+Shift+M"),
AudioIONotBusyFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag);
c->EndSubMenu();
c->AddItem(wxT("Resample"), _("&Resample..."), FN(OnResample),
AudioIONotBusyFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag);
@ -854,8 +909,10 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
c->BeginSubMenu("Mute/Unmute");
c->AddItem(wxT("MuteAllTracks"), _("&Mute All Tracks"), FN(OnMuteAllTracks), wxT("Ctrl+U"));
c->AddItem(wxT("UnMuteAllTracks"), _("&Unmute All Tracks"), FN(OnUnMuteAllTracks), wxT("Ctrl+Shift+U"));
c->EndSubMenu();
c->AddSeparator();
@ -878,16 +935,14 @@ void AudacityProject::CreateMenusAndCommands()
c->BeginSubMenu(_("&Align Tracks"));
c->BeginSubMenu(_("Just Move Tracks"));
c->AddItemList(wxT("Align"), alignLabelsNoSync, FN(OnAlignNoSync));
c->AddSeparator();
c->AddItemList(wxT("Align"), alignLabels, FN(OnAlign));
c->EndSubMenu();
//////////////////////////////////////////////////////////////////////////
// TODO: Can these labels be made clearer? Do we need this sub-menu at all?
c->BeginSubMenu(_("Move Sele&ction when Aligning"));
c->BeginSubMenu(_("Move Sele&ction and Tracks"));
c->AddItemList(wxT("AlignMove"), alignLabels, FN(OnAlignMoveSel));
c->SetCommandFlags(wxT("AlignMove"),
@ -895,6 +950,11 @@ void AudacityProject::CreateMenusAndCommands()
AudioIONotBusyFlag | TracksSelectedFlag);
c->EndSubMenu();
c->EndSubMenu();
//////////////////////////////////////////////////////////////////////////
c->SetDefaultFlags(AudioIONotBusyFlag, AudioIONotBusyFlag);
@ -909,30 +969,12 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
#ifdef EXPERIMENTAL_SYNC_LOCK
c->AddCheck(wxT("SyncLock"), _("Sync-&Lock Tracks (on/off)"), FN(OnSyncLock), 0,
c->AddCheck(wxT("SyncLock"), _("Time-&Lock Tracks (on/off)"), FN(OnSyncLock), 0,
AlwaysEnabledFlag, AlwaysEnabledFlag);
c->AddSeparator();
#endif
c->AddItem(wxT("AddLabel"), _("Add Label at &Selection"), FN(OnAddLabel), wxT("Ctrl+B"),
AlwaysEnabledFlag, AlwaysEnabledFlag);
c->AddItem(wxT("AddLabelPlaying"), _("Add Label at &Playback Position"),
FN(OnAddLabelPlaying),
#ifdef __WXMAC__
wxT("Ctrl+."),
#else
wxT("Ctrl+M"),
#endif
AudioIOBusyFlag,
AudioIOBusyFlag);
c->AddItem(wxT("EditLabels"), _("&Edit Labels..."), FN(OnEditLabels));
c->AddCheck(wxT("TypeToCreateLabel"), _("&Type to Create a Label (on/off)"),
FN(OnToggleTypeToCreateLabel), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
c->AddSeparator();
//////////////////////////////////////////////////////////////////////////
c->BeginSubMenu(_("S&ort Tracks"));
@ -1069,11 +1111,21 @@ void AudacityProject::CreateMenusAndCommands()
c->BeginMenu(_("&Help"));
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
#ifndef EXPERIMENTAL_DA
c->AddItem(wxT("QuickHelp"), _("&Quick Help"), FN(OnQuickHelp));
c->AddItem(wxT("Manual"), _("&Manual"), FN(OnManual));
#else
// 'Getting Started' rather than 'Quick Help' for DarkAudacity.
// At the moment the video tutorials are aspirational (aka do not exist yet).
// Emphasise that manual is for Audacity, not DarkAudacity.
c->AddItem(wxT("QuickHelp"), _("&Getting Started"), FN(OnQuickHelp));
c->AddItem(wxT("Manual"), wxT("Audacity &Manual"), FN(OnManual));
#endif
c->AddSeparator();
c->BeginSubMenu( _("Tools") );
c->AddItem(wxT("Screenshot"), _("&Screenshot Tools..."), FN(OnScreenshot));
#if IS_ALPHA
@ -1082,9 +1134,10 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("Benchmark"), _("&Run Benchmark..."), FN(OnBenchmark));
#endif
c->EndSubMenu();
c->AddSeparator();
c->AddItem(wxT("Updates"), _("&Check for Updates..."), FN(OnCheckForUpdates));
c->BeginSubMenu(_("Diagnostics"));
c->AddItem(wxT("DeviceInfo"), _("Au&dio Device Info..."), FN(OnAudioDeviceInfo),
AudioIONotBusyFlag,
AudioIONotBusyFlag);
@ -1094,11 +1147,14 @@ void AudacityProject::CreateMenusAndCommands()
#if defined(EXPERIMENTAL_CRASH_REPORT)
c->AddItem(wxT("CrashReport"), _("&Generate Support Data..."), FN(OnCrashReport));
#endif
c->AddItem(wxT("CheckDeps"), _("Chec&k Dependencies..."), FN(OnCheckDependencies));
c->EndSubMenu();
#ifndef __WXMAC__
c->AddSeparator();
#endif
//c->AddItem(wxT("Updates"), _("&Check for Updates..."), FN(OnCheckForUpdates));
c->AddItem(wxT("About"), _("&About Audacity..."), FN(OnAbout));
c->EndMenu();
@ -2371,7 +2427,7 @@ void AudacityProject::OnRecord()
GetControlToolBar()->OnRecord(evt);
}
void AudacityProject::OnRecordAppend()
void AudacityProject::OnRecordBelow()
{
wxCommandEvent evt;
evt.SetInt(1); // 0 is default, use 1 to set shift on, 2 to clear it
@ -3901,14 +3957,20 @@ void AudacityProject::OnExportMIDI(){
#endif // USE_MIDI
void AudacityProject::OnExport()
void AudacityProject::OnExport(const wxString & Format )
{
Exporter e;
e.SetDefaultFormat( Format );
wxGetApp().SetMissingAliasedFileWarningShouldShow(true);
e.Process(this, false, 0.0, mTracks->GetEndTime());
}
void AudacityProject::OnExportAudio(){ OnExport("");}
void AudacityProject::OnExportMp3(){ OnExport("MP3");}
void AudacityProject::OnExportWav(){ OnExport("WAV");}
void AudacityProject::OnExportOgg(){ OnExport("OGG");}
void AudacityProject::OnExportSelection()
{
Exporter e;
@ -3944,6 +4006,7 @@ void AudacityProject::OnPreferences()
p->RebuildMenuBar();
p->RebuildOtherMenus();
// TODO: The comment below suggests this workaround is obsolete.
#if defined(__WXGTK__)
// Workaround for:
//

View File

@ -70,7 +70,7 @@ public:
void OnStop();
void OnPause();
void OnRecord();
void OnRecordAppend();
void OnRecordBelow();
void OnStopSelect();
void OnSkipStart();
void OnSkipEnd();
@ -210,7 +210,11 @@ void OnSaveAs();
void OnCheckDependencies();
void OnExport();
void OnExport(const wxString & Format);
void OnExportAudio();
void OnExportMp3();
void OnExportWav();
void OnExportOgg();
void OnExportSelection();
void OnExportMultiple();
void OnExportLabels();

View File

@ -921,6 +921,10 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
mViewInfo(0.0, 1.0, ZoomInfo::GetDefaultZoom()),
mbLoadedFromAup( false )
{
#ifdef EXPERIMENTAL_DA2
SetBackgroundColour(theTheme.Colour( clrMedium ));
#endif
// Note that the first field of the status bar is a dummy, and it's width is set
// to zero latter in the code. This field is needed for wxWidgets 2.8.12 because
// if you move to the menu bar, the first field of the menu bar is cleared, which
@ -979,6 +983,9 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
wxSize{ this->GetSize().GetWidth(), -1 }
};
mTopPanel->SetAutoLayout(true);
#ifdef EXPERIMENTAL_DA2
mTopPanel->SetBackgroundColour(theTheme.Colour( clrMedium ));
#endif
//
// Create the ToolDock
@ -1033,6 +1040,10 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
//pPage->SetBackgroundColour( theTheme.Colour( clrDark ));
#endif
#ifdef EXPERIMENTAL_DA2
pPage->SetBackgroundColour(theTheme.Colour( clrMedium ));
#endif
{
auto ubs = std::make_unique<wxBoxSizer>(wxVERTICAL);
ubs->Add(mToolManager->GetTopDock(), 0, wxEXPAND | wxALIGN_TOP);
@ -1215,7 +1226,9 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
//Initialize the last selection adjustment time.
mLastSelectionAdjustment = ::wxGetLocalTimeMillis();
#ifdef EXPERIMENTAL_DA2
ClearBackground();// For wxGTK.
#endif
}
AudacityProject::~AudacityProject()
@ -1243,6 +1256,13 @@ AudacityProject::~AudacityProject()
this);
}
void AudacityProject::ResetColours()
{
SetBackgroundColour(theTheme.Colour( clrMedium ));
ClearBackground();// For wxGTK.
}
AudioIOStartStreamOptions AudacityProject::GetDefaultPlayOptions()
{
AudioIOStartStreamOptions options { GetRate() };
@ -1257,7 +1277,12 @@ void AudacityProject::UpdatePrefsVariables()
gPrefs->Read(wxT("/AudioFiles/NormalizeOnLoad"),&mNormalizeOnLoad, false);
gPrefs->Read(wxT("/GUI/AutoScroll"), &mViewInfo.bUpdateTrackIndicator, true);
gPrefs->Read(wxT("/GUI/EmptyCanBeDirty"), &mEmptyCanBeDirty, true );
gPrefs->Read(wxT("/GUI/Help"), &mHelpPref, wxT("InBrowser") );
// DA 2.1.3x did not ship with a manual, so default for DA is internet.
#ifdef EXPERIMENTAL_DA
gPrefs->Read(wxT("/GUI/Help"), &mHelpPref, wxT("FromInternet") );
#else
gPrefs->Read(wxT("/GUI/Help"), &mHelpPref, wxT("Local") );
#endif
gPrefs->Read(wxT("/GUI/SelectAllOnNone"), &mSelectAllOnNone, true);
mStopIfWasPaused = true; // not configurable for now, but could be later.
gPrefs->Read(wxT("/GUI/ShowSplashScreen"), &mShowSplashScreen, true);

View File

@ -167,6 +167,7 @@ class AUDACITY_DLL_API AudacityProject final : public wxFrame,
const wxPoint & pos, const wxSize & size);
virtual ~AudacityProject();
void ResetColours();
AudioIOStartStreamOptions GetDefaultPlayOptions();
TrackList *GetTracks() { return mTracks.get(); }