1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-01 08:29:27 +02:00

Add Show/Hide Extra menus preference.

The new preference is in the view menu and on the Gui preferences page.
Also Ext Menus rearranged to more closely match default toolbar order.
Also F11 (a new menu command to show/hide maximised) now has a check mark.

This change needs testing on mac as mac is pickier about when menus are updated.
This commit is contained in:
James Crook 2017-04-21 17:32:53 +01:00
parent 031f8413f4
commit 6d361687d6
3 changed files with 275 additions and 250 deletions

View File

@ -789,6 +789,8 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
c->AddCheck(wxT("ShowExtraMenus"), _("&Extra Menus (on/off)"), FN(OnShowExtraMenus),
gPrefs->Read(wxT("/GUI/ShowExtraMenus"), 0L), AlwaysEnabledFlag, AlwaysEnabledFlag);
c->AddCheck(wxT("ShowClipping"), _("&Show Clipping (on/off)"), FN(OnShowClipping),
gPrefs->Read(wxT("/GUI/ShowClipping"), 0L), AlwaysEnabledFlag, AlwaysEnabledFlag);
@ -1221,41 +1223,29 @@ void AudacityProject::CreateMenusAndCommands()
/////////////////////////////////////////////////////////////////////////////
SetMenuBar(menubar.release());
}
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
auto menubar2 = c->AddMenuBar(wxT("ext-menu"));
bool bShowExtraMenus;
gPrefs->Read(wxT("/GUI/ShowExtraMenus"), &bShowExtraMenus, false);
std::unique_ptr<wxMenuBar> menubar2;
if( !bShowExtraMenus )
{
menubar2 = c->AddMenuBar(wxT("ext-menu"));
c->SetOccultCommands(true);
}
/////////////////////////////////////////////////////////////////////////////
// Ext-Bar Menu
/////////////////////////////////////////////////////////////////////////////
c->BeginMenu("Ext-Bar");
c->BeginSubMenu( "Tools" );
c->AddItem(wxT("SelectTool"), _("Selection Tool"), FN(OnSelectTool), wxT("F1"));
c->AddItem(wxT("EnvelopeTool"),_("Envelope Tool"), FN(OnEnvelopeTool), wxT("F2"));
c->AddItem(wxT("DrawTool"), _("Draw Tool"), FN(OnDrawTool), wxT("F3"));
c->AddItem(wxT("ZoomTool"), _("Zoom Tool"), FN(OnZoomTool), wxT("F4"));
c->AddItem(wxT("TimeShiftTool"), _("Time Shift Tool"), FN(OnTimeShiftTool), wxT("F5"));
c->AddItem(wxT("MultiTool"), _("Multi Tool"), FN(OnMultiTool), wxT("F6"));
c->AddItem(wxT("NextTool"), _("Next Tool"), FN(OnNextTool), wxT("D"));
c->AddItem(wxT("PrevTool"), _("Previous Tool"), FN(OnPrevTool), wxT("A"));
c->EndSubMenu();
c->BeginSubMenu("Transport");
// PlayStop is already in the menus.
#if 1
/* i18n-hint: (verb) Start playing audio*/
c->AddItem(wxT("Play"), _("Play"), FN(OnPlayStop),
WaveTracksExistFlag | AudioIONotBusyFlag,
WaveTracksExistFlag | AudioIONotBusyFlag);
#endif
/* i18n-hint: (verb) Stop playing audio*/
c->AddItem(wxT("Stop"), _("Stop"), FN(OnStop),
AudioIOBusyFlag,
@ -1280,29 +1270,22 @@ void AudacityProject::CreateMenusAndCommands()
CaptureNotBusyFlag);
c->EndSubMenu();
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
c->BeginSubMenu("Tools");
c->BeginSubMenu( "Selection" );
c->AddItem(wxT("SnapToOff"), _("Snap To Off"), FN(OnSnapToOff));
c->AddItem(wxT("SnapToNearest"), _("Snap To Nearest"), FN(OnSnapToNearest));
c->AddItem(wxT("SnapToPrior"), _("Snap To Prior"), FN(OnSnapToPrior));
c->AddItem(wxT("SelStart"), _("Selection to Start"), FN(OnSelToStart), wxT("Shift+Home"));
c->AddItem(wxT("SelEnd"), _("Selection to End"), FN(OnSelToEnd), wxT("Shift+End"));
c->AddItem(wxT("SelExtLeft"), _("Selection Extend Left"), FN(OnSelExtendLeft), wxT("Shift+Left\twantKeyup\tallowDup"));
c->AddItem(wxT("SelExtRight"), _("Selection Extend Right"), FN(OnSelExtendRight), wxT("Shift+Right\twantKeyup\tallowDup"));
c->AddItem(wxT("SelSetExtLeft"), _("Set (or Extend) Left Selection"), FN(OnSelSetExtendLeft));
c->AddItem(wxT("SelSetExtRight"), _("Set (or Extend) Right Selection"), FN(OnSelSetExtendRight));
c->AddItem(wxT("SelCntrLeft"), _("Selection Contract Left"), FN(OnSelContractLeft), wxT("Ctrl+Shift+Right\twantKeyup"));
c->AddItem(wxT("SelCntrRight"), _("Selection Contract Right"), FN(OnSelContractRight), wxT("Ctrl+Shift+Left\twantKeyup"));
c->AddItem(wxT("SelectTool"), _("Selection Tool"), FN(OnSelectTool), wxT("F1"));
c->AddItem(wxT("EnvelopeTool"), _("Envelope Tool"), FN(OnEnvelopeTool), wxT("F2"));
c->AddItem(wxT("DrawTool"), _("Draw Tool"), FN(OnDrawTool), wxT("F3"));
c->AddItem(wxT("ZoomTool"), _("Zoom Tool"), FN(OnZoomTool), wxT("F4"));
c->AddItem(wxT("TimeShiftTool"), _("Time Shift Tool"), FN(OnTimeShiftTool), wxT("F5"));
c->AddItem(wxT("MultiTool"), _("Multi Tool"), FN(OnMultiTool), wxT("F6"));
c->AddItem(wxT("NextTool"), _("Next Tool"), FN(OnNextTool), wxT("D"));
c->AddItem(wxT("PrevTool"), _("Previous Tool"), FN(OnPrevTool), wxT("A"));
c->EndSubMenu();
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
c->BeginSubMenu("Edit");
c->AddItem(wxT("DeleteKey"), _("DeleteKey"), FN(OnDelete), wxT("Backspace"),
AudioIONotBusyFlag | TracksSelectedFlag | TimeSelectedFlag,
@ -1314,18 +1297,7 @@ void AudacityProject::CreateMenusAndCommands()
c->EndSubMenu();
c->BeginSubMenu( "Scrub" );
c->SetDefaultFlags(AudioIOBusyFlag, AudioIOBusyFlag);
c->AddItem(wxT("SeekLeftShort"), _("Short seek left during playback"), FN(OnSeekLeftShort), wxT("Left\tallowDup"));
c->AddItem(wxT("SeekRightShort"),_("Short seek right during playback"), FN(OnSeekRightShort), wxT("Right\tallowDup"));
c->AddItem(wxT("SeekLeftLong"), _("Long seek left during playback"), FN(OnSeekLeftLong), wxT("Shift+Left\tallowDup"));
c->AddItem(wxT("SeekRightLong"), _("Long Seek right during playback"), FN(OnSeekRightLong), wxT("Shift+Right\tallowDup"));
c->EndSubMenu();
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
c->BeginSubMenu("Device");
c->AddItem(wxT("InputDevice"), _("Change recording device"), FN(OnInputDevice), wxT("Shift+I"),
@ -1351,9 +1323,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("InputGainDec"), _("Decrease recording volume"), FN(OnInputGainDec));
c->EndSubMenu();
c->SetDefaultFlags(CaptureNotBusyFlag, CaptureNotBusyFlag);
c->BeginSubMenu("Transcription");
c->AddItem(wxT("PlayAtSpeed"), _("Play-at-Speed"), FN(OnPlayAtSpeed));
@ -1371,6 +1341,35 @@ void AudacityProject::CreateMenusAndCommands()
CaptureNotBusyFlag | TrackPanelHasFocus, CaptureNotBusyFlag | TrackPanelHasFocus);
c->EndSubMenu();
c->BeginSubMenu("Scrub");
c->SetDefaultFlags(AudioIOBusyFlag, AudioIOBusyFlag);
c->AddItem(wxT("SeekLeftShort"), _("Short seek left during playback"), FN(OnSeekLeftShort), wxT("Left\tallowDup"));
c->AddItem(wxT("SeekRightShort"), _("Short seek right during playback"), FN(OnSeekRightShort), wxT("Right\tallowDup"));
c->AddItem(wxT("SeekLeftLong"), _("Long seek left during playback"), FN(OnSeekLeftLong), wxT("Shift+Left\tallowDup"));
c->AddItem(wxT("SeekRightLong"), _("Long Seek right during playback"), FN(OnSeekRightLong), wxT("Shift+Right\tallowDup"));
c->EndSubMenu();
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
c->BeginSubMenu("Selection");
c->AddItem(wxT("SnapToOff"), _("Snap To Off"), FN(OnSnapToOff));
c->AddItem(wxT("SnapToNearest"), _("Snap To Nearest"), FN(OnSnapToNearest));
c->AddItem(wxT("SnapToPrior"), _("Snap To Prior"), FN(OnSnapToPrior));
c->AddItem(wxT("SelStart"), _("Selection to Start"), FN(OnSelToStart), wxT("Shift+Home"));
c->AddItem(wxT("SelEnd"), _("Selection to End"), FN(OnSelToEnd), wxT("Shift+End"));
c->AddItem(wxT("SelExtLeft"), _("Selection Extend Left"), FN(OnSelExtendLeft), wxT("Shift+Left\twantKeyup\tallowDup"));
c->AddItem(wxT("SelExtRight"), _("Selection Extend Right"), FN(OnSelExtendRight), wxT("Shift+Right\twantKeyup\tallowDup"));
c->AddItem(wxT("SelSetExtLeft"), _("Set (or Extend) Left Selection"), FN(OnSelSetExtendLeft));
c->AddItem(wxT("SelSetExtRight"), _("Set (or Extend) Right Selection"), FN(OnSelSetExtendRight));
c->AddItem(wxT("SelCntrLeft"), _("Selection Contract Left"), FN(OnSelContractLeft), wxT("Ctrl+Shift+Right\twantKeyup"));
c->AddItem(wxT("SelCntrRight"), _("Selection Contract Right"), FN(OnSelContractRight), wxT("Ctrl+Shift+Left\twantKeyup"));
c->EndSubMenu();
c->EndMenu();
@ -1379,18 +1378,17 @@ void AudacityProject::CreateMenusAndCommands()
/////////////////////////////////////////////////////////////////////////////
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
c->BeginMenu("Ext-Command");
c->AddGlobalCommand(wxT("PrevWindow"), _("Move backward thru active windows"), FN(PrevWindow), wxT("Alt+Shift+F6"));
c->AddGlobalCommand(wxT("NextWindow"), _("Move forward thru active windows"), FN(NextWindow), wxT("Alt+F6"));
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
c->BeginSubMenu("Focus");
c->AddItem(wxT("PrevFrame"), _("Move backward from toolbars to tracks"), FN(PrevFrame), wxT("Ctrl+Shift+F6"));
c->AddItem(wxT("NextFrame"), _("Move forward from toolbars to tracks"), FN(NextFrame), wxT("Ctrl+F6"));
c->SetDefaultFlags(TracksExistFlag | TrackPanelHasFocus,
TracksExistFlag | TrackPanelHasFocus);
c->AddItem(wxT("PrevTrack"), _("Move Focus to Previous Track"), FN(OnCursorUp), wxT("Up"));
c->AddItem(wxT("NextTrack"), _("Move Focus to Next Track"), FN(OnCursorDown), wxT("Down"));
c->AddItem(wxT("FirstTrack"), _("Move Focus to First Track"), FN(OnFirstTrack), wxT("Ctrl+Home"));
@ -1436,12 +1434,15 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("TrackMoveBottom"), _("Move focused track to bottom"), FN(OnTrackMoveBottom));
c->EndSubMenu();
c->AddItem(wxT("FullScreenOnOff"), _("Full screen on/off"), FN(OnFullScreen),
// Accel key is not bindable.
c->AddItem(wxT("FullScreenOnOff"), _("Full screen (on/off)"), FN(OnFullScreen),
#ifdef __WXMAC__
wxT("Ctrl+/"));
wxT("Ctrl+/"),
#else
wxT("F11"));
wxT("F11"),
#endif
AlwaysEnabledFlag, AlwaysEnabledFlag,
wxTopLevelWindow::IsFullScreen() ? 1:0); // Check Mark.
#ifdef __WXMAC__
/* i8n-hint: Shrink all project windows to icons on the Macintosh tooldock */
@ -1452,6 +1453,10 @@ void AudacityProject::CreateMenusAndCommands()
c->EndMenu();
SetMenuBar(menubar.release());
}
mLastFlags = AlwaysEnabledFlag;
@ -3854,12 +3859,7 @@ void AudacityProject::OnRepeatLastEffect(int WXUNUSED(index))
}
void AudacityProject::OnManagePluginsMenu(EffectType type)
{
if (PluginManager::Get().ShowManager(this, type))
{
void AudacityProject::RebuildAllMenuBars(){
for( size_t i = 0; i < gAudacityProjects.size(); i++ ) {
AudacityProject *p = gAudacityProjects[i].get();
@ -3876,6 +3876,11 @@ void AudacityProject::OnManagePluginsMenu(EffectType type)
#endif
}
}
void AudacityProject::OnManagePluginsMenu(EffectType type)
{
if (PluginManager::Get().ShowManager(this, type))
RebuildAllMenuBars();
}
void AudacityProject::OnManageGenerators()
@ -5841,6 +5846,15 @@ void AudacityProject::OnShowClipping()
mTrackPanel->Refresh(false);
}
void AudacityProject::OnShowExtraMenus()
{
bool checked = !gPrefs->Read(wxT("/GUI/ShowExtraMenus"), 0L);
gPrefs->Write(wxT("/GUI/ShowExtraMenus"), checked);
gPrefs->Flush();
mCommandManager.Check(wxT("ShowExtraMenus"), checked);
RebuildAllMenuBars();
}
void AudacityProject::OnHistory()
{
if (!mHistoryWindow)
@ -7681,10 +7695,9 @@ void AudacityProject::OnSnapToPrior()
void AudacityProject::OnFullScreen()
{
if(wxTopLevelWindow::IsFullScreen())
wxTopLevelWindow::ShowFullScreen(false);
else
wxTopLevelWindow::ShowFullScreen(true);
bool bChecked = !wxTopLevelWindow::IsFullScreen();
wxTopLevelWindow::ShowFullScreen(bChecked);
mCommandManager.Check(wxT("FullScreenOnOff"), bChecked);
}
void AudacityProject::OnCursorLeft(bool shift, bool ctrl, bool keyup)

View File

@ -320,6 +320,7 @@ void OnMuteAllTracks();
void OnUnMuteAllTracks();
void OnShowClipping();
void OnShowExtraMenus();
void OnHistory();
@ -449,10 +450,13 @@ void OnApplyChain();
void OnEditChains();
void OnStereoToMono(int index);
void OnManagePluginsMenu(EffectType Type);
void RebuildAllMenuBars();
void OnManageGenerators();
void OnManageEffects();
void OnManageAnalyzers();
// Help Menu
void OnAbout();

View File

@ -169,11 +169,19 @@ void GUIPrefs::PopulateOrExchange(ShuttleGui & S)
}
S.EndStatic();
S.StartStatic(_("Behaviors"));
S.StartStatic(_("Show / Hide"));
{
S.TieCheckBox(_("S&how 'How to Get Help' dialog box at program start up"),
wxT("/GUI/ShowSplashScreen"),
true);
S.TieCheckBox(_("Show e&xtra menus."),
wxT("/GUI/ShowExtraMenus"),
false);
}
S.EndStatic();
S.StartStatic(_("Behaviors"));
{
S.TieCheckBox(_("&Beep on completion of longer activities"),
wxT("/GUI/BeepOnCompletion"),
false);