1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-04-30 15:49:41 +02:00

ExtraMenus.cpp not link dependent on external sub-menu definitions...

... They use the registry
This commit is contained in:
Paul Licameli 2019-01-14 15:09:05 -05:00
parent de08d9ff86
commit 6225043ff3
11 changed files with 127 additions and 89 deletions

View File

@ -976,6 +976,12 @@ void InitializeMenuOrdering()
{wxT(""), wxT( {wxT(""), wxT(
"File,Edit,Select,View,Transport,Tracks,Generate,Effect,Analyze,Tools,Window,Optional,Help" "File,Edit,Select,View,Transport,Tracks,Generate,Effect,Analyze,Tools,Window,Optional,Help"
)}, )},
{wxT("/Optional/Extra/Part1"), wxT(
"Transport,Tools,Mixer,Edit,PlayAtSpeed,Seek,Device,Select"
)},
{wxT("/Optional/Extra/Part2"), wxT(
"Navigation,Focus,Cursor,Track,Scriptables1,Scriptables2"
)},
{wxT("/View/Windows"), wxT("UndoHistory,Karaoke,MixerBoard")}, {wxT("/View/Windows"), wxT("UndoHistory,Karaoke,MixerBoard")},
{wxT("/Analyze/Analyzers/Windows"), wxT("ContrastAnalyser,PlotSpectrum")}, {wxT("/Analyze/Analyzers/Windows"), wxT("ContrastAnalyser,PlotSpectrum")},
}; };

View File

@ -871,7 +871,7 @@ MenuTable::BaseItemSharedPtr ClipCursorItems()
return items; return items;
} }
// Under /MenuBar/Optional/Extra/Cursor // Under /MenuBar/Optional/Extra/Part2/Cursor
MenuTable::BaseItemSharedPtr ExtraClipCursorItems() MenuTable::BaseItemSharedPtr ExtraClipCursorItems()
{ {
using namespace MenuTable; using namespace MenuTable;

View File

@ -1168,10 +1168,8 @@ AttachedItem sAttachment1{
wxT(""), wxT(""),
Shared( EditMenu() ) Shared( EditMenu() )
}; };
}
// Under /MenuBar/Optional/Extra BaseItemSharedPtr ExtraEditMenu()
MenuTable::BaseItemSharedPtr ExtraEditMenu()
{ {
using Options = CommandManager::Options; using Options = CommandManager::Options;
static const auto flags = static const auto flags =
@ -1227,4 +1225,10 @@ RegisteredMenuItemEnabler selectWaveTracks2{{
selectAll selectAll
}}; }};
AttachedItem sAttachment2{
wxT("Optional/Extra/Part1"),
Shared( ExtraEditMenu() )
};
}
#undef FN #undef FN

View File

@ -136,28 +136,11 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
#define FN(X) (& ExtraActions::Handler :: X) #define FN(X) (& ExtraActions::Handler :: X)
// Imported menu item definitions
MenuTable::BaseItemSharedPtr ExtraEditMenu();
MenuTable::BaseItemSharedPtr ExtraSelectionMenu();
MenuTable::BaseItemSharedPtr ExtraCursorMenu();
MenuTable::BaseItemSharedPtr ExtraSeekMenu();
MenuTable::BaseItemSharedPtr ExtraToolsMenu();
MenuTable::BaseItemSharedPtr ExtraTransportMenu();
MenuTable::BaseItemSharedPtr ExtraPlayAtSpeedMenu();
MenuTable::BaseItemSharedPtr ExtraTrackMenu();
MenuTable::BaseItemSharedPtr ExtraScriptablesIMenu();
MenuTable::BaseItemSharedPtr ExtraScriptablesIIMenu();
MenuTable::BaseItemSharedPtr ExtraWindowItems();
MenuTable::BaseItemSharedPtr ExtraGlobalCommands();
MenuTable::BaseItemSharedPtr ExtraFocusMenu();
namespace { namespace {
using namespace MenuTable; using namespace MenuTable;
BaseItemSharedPtr ExtraMixerMenu(); BaseItemSharedPtr ExtraMixerMenu();
BaseItemSharedPtr ExtraDeviceMenu(); BaseItemSharedPtr ExtraDeviceMenu();
BaseItemPtr ExtraMiscItems( AudacityProject & );
BaseItemSharedPtr ExtraMenu() BaseItemSharedPtr ExtraMenu()
{ {
@ -165,27 +148,11 @@ BaseItemSharedPtr ExtraMenu()
// TODO: devise a registration system instead. // TODO: devise a registration system instead.
static BaseItemSharedPtr extraItems{ Items( wxEmptyString, static BaseItemSharedPtr extraItems{ Items( wxEmptyString,
Section( "Part1", Section( "Part1",
ExtraTransportMenu() ExtraMixerMenu()
, ExtraToolsMenu()
, ExtraMixerMenu()
, ExtraEditMenu()
, ExtraPlayAtSpeedMenu()
, ExtraSeekMenu()
, ExtraDeviceMenu() , ExtraDeviceMenu()
, ExtraSelectionMenu()
), ),
Section( "Part2", Section( "Part2" )
ExtraGlobalCommands()
, ExtraFocusMenu()
, ExtraCursorMenu()
, ExtraTrackMenu()
, ExtraScriptablesIMenu()
, ExtraScriptablesIIMenu()
// Delayed evaluation:
, ExtraMiscItems
)
) }; ) };
static const auto pred = static const auto pred =
@ -202,7 +169,7 @@ AttachedItem sAttachment1{
Shared( ExtraMenu() ) Shared( ExtraMenu() )
}; };
// Under /MenuBar/Optional/Extra // Under /MenuBar/Optional/Extra/Part1
BaseItemSharedPtr ExtraMixerMenu() BaseItemSharedPtr ExtraMixerMenu()
{ {
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
@ -224,7 +191,7 @@ BaseItemSharedPtr ExtraMixerMenu()
return menu; return menu;
} }
// Under /MenuBar/Optional/Extra // Under /MenuBar/Optional/Extra/Part1
BaseItemSharedPtr ExtraDeviceMenu() BaseItemSharedPtr ExtraDeviceMenu()
{ {
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
@ -245,8 +212,8 @@ BaseItemSharedPtr ExtraDeviceMenu()
return menu; return menu;
} }
// Under /MenuBar/Optional/Extra // Under /MenuBar/Optional/Extra/Part2
BaseItemPtr ExtraMiscItems( AudacityProject &project ) BaseItemPtr ExtraMiscItems()
{ {
using Options = CommandManager::Options; using Options = CommandManager::Options;
@ -261,17 +228,24 @@ BaseItemPtr ExtraMiscItems( AudacityProject &project )
// Not a menu. // Not a menu.
return ( FinderScope{ findCommandHandler }, return ( FinderScope{ findCommandHandler },
Items( wxT("Misc"), Items( wxT("Misc"),
// Accel key is not bindable. // Delayed evaluation
Command( wxT("FullScreenOnOff"), XXO("&Full Screen (on/off)"), []( AudacityProject &project ) {
FN(OnFullScreen), return
AlwaysEnabledFlag, // Accel key is not bindable.
Options{ key }.CheckState( Command( wxT("FullScreenOnOff"), XXO("&Full Screen (on/off)"),
GetProjectFrame( project ).wxTopLevelWindow::IsFullScreen() ) ), FN(OnFullScreen),
AlwaysEnabledFlag,
ExtraWindowItems() Options{ key }.CheckState(
GetProjectFrame( project ).wxTopLevelWindow::IsFullScreen() ) );
}
) ); ) );
} }
AttachedItem sAttachment2{
Placement{ wxT("Optional/Extra/Part2"), { OrderingHint::End } },
Shared( ExtraMiscItems() )
};
} }
#undef FN #undef FN

View File

@ -555,11 +555,11 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &project) {
#define FN(X) (& NavigationActions::Handler :: X) #define FN(X) (& NavigationActions::Handler :: X)
// Under /MenuBar/Optional/Extra namespace {
MenuTable::BaseItemSharedPtr ExtraGlobalCommands() using namespace MenuTable;
BaseItemSharedPtr ExtraGlobalCommands()
{ {
// Ceci n'est pas un menu // Ceci n'est pas un menu
using namespace MenuTable;
using Options = CommandManager::Options; using Options = CommandManager::Options;
static BaseItemSharedPtr items{ static BaseItemSharedPtr items{
@ -575,10 +575,13 @@ MenuTable::BaseItemSharedPtr ExtraGlobalCommands()
return items; return items;
} }
// Under /MenuBar/Optional/Extra AttachedItem sAttachment2{
MenuTable::BaseItemSharedPtr ExtraFocusMenu() wxT("Optional/Extra/Part2"),
Shared( ExtraGlobalCommands() )
};
BaseItemSharedPtr ExtraFocusMenu()
{ {
using namespace MenuTable;
static const auto FocusedTracksFlags = TracksExistFlag() | TrackPanelHasFocus(); static const auto FocusedTracksFlags = TracksExistFlag() | TrackPanelHasFocus();
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
@ -610,4 +613,11 @@ MenuTable::BaseItemSharedPtr ExtraFocusMenu()
return menu; return menu;
} }
AttachedItem sAttachment3{
wxT("Optional/Extra/Part2"),
Shared( ExtraFocusMenu() )
};
}
#undef FN #undef FN

View File

@ -917,10 +917,8 @@ AttachedItem sAttachment4{
wxT(""), wxT(""),
Shared( ToolsMenu() ) Shared( ToolsMenu() )
}; };
}
// Under /MenuBar/Optional/Extra BaseItemSharedPtr ExtraScriptablesIMenu()
MenuTable::BaseItemSharedPtr ExtraScriptablesIMenu()
{ {
// These are the more useful to VI user Scriptables. // These are the more useful to VI user Scriptables.
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
@ -967,8 +965,12 @@ MenuTable::BaseItemSharedPtr ExtraScriptablesIMenu()
return menu; return menu;
} }
// Under /MenuBar/Optional/Extra AttachedItem sAttachment5{
MenuTable::BaseItemSharedPtr ExtraScriptablesIIMenu() wxT("Optional/Extra/Part2"),
Shared( ExtraScriptablesIMenu() )
};
BaseItemSharedPtr ExtraScriptablesIIMenu()
{ {
// Less useful to VI users. // Less useful to VI users.
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
@ -1007,4 +1009,11 @@ MenuTable::BaseItemSharedPtr ExtraScriptablesIIMenu()
return menu; return menu;
} }
AttachedItem sAttachment6{
wxT("Optional/Extra/Part2"),
Shared( ExtraScriptablesIIMenu() )
};
}
#undef FN #undef FN

View File

@ -1148,10 +1148,8 @@ AttachedItem sAttachment1{
wxT(""), wxT(""),
Shared( SelectMenu() ) Shared( SelectMenu() )
}; };
}
// Under /MenuBar/Optional/Extra BaseItemSharedPtr ExtraSelectionMenu()
MenuTable::BaseItemSharedPtr ExtraSelectionMenu()
{ {
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
( FinderScope{ findCommandHandler }, ( FinderScope{ findCommandHandler },
@ -1192,6 +1190,12 @@ MenuTable::BaseItemSharedPtr ExtraSelectionMenu()
return menu; return menu;
} }
AttachedItem sAttachment2{
wxT("Optional/Extra/Part1"),
Shared( ExtraSelectionMenu() )
};
}
MenuTable::BaseItemSharedPtr ClipCursorItems(); MenuTable::BaseItemSharedPtr ClipCursorItems();
// Under /MenuBar/Transport // Under /MenuBar/Transport
@ -1241,8 +1245,8 @@ MenuTable::BaseItemSharedPtr CursorMenu()
MenuTable::BaseItemSharedPtr ExtraClipCursorItems(); MenuTable::BaseItemSharedPtr ExtraClipCursorItems();
// Under /MenuBar/Optional/Extra namespace {
MenuTable::BaseItemSharedPtr ExtraCursorMenu() BaseItemSharedPtr ExtraCursorMenu()
{ {
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
( FinderScope{ findCommandHandler }, ( FinderScope{ findCommandHandler },
@ -1271,8 +1275,12 @@ MenuTable::BaseItemSharedPtr ExtraCursorMenu()
return menu; return menu;
} }
// Under /MenuBar/Optional/Extra AttachedItem sAttachment4{
MenuTable::BaseItemSharedPtr ExtraSeekMenu() wxT("Optional/Extra/Part2"),
Shared( ExtraCursorMenu() )
};
BaseItemSharedPtr ExtraSeekMenu()
{ {
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
( FinderScope{ findCommandHandler }, ( FinderScope{ findCommandHandler },
@ -1290,4 +1298,11 @@ MenuTable::BaseItemSharedPtr ExtraSeekMenu()
return menu; return menu;
} }
AttachedItem sAttachment5{
wxT("Optional/Extra/Part1"),
Shared( ExtraSeekMenu() )
};
}
#undef FN #undef FN

View File

@ -338,10 +338,10 @@ MenuTable::BaseItemSharedPtr ToolbarsMenu()
return menu; return menu;
} }
// Under /MenuBar/Optional/Extra namespace {
MenuTable::BaseItemSharedPtr ExtraToolsMenu() using namespace MenuTable;
BaseItemSharedPtr ExtraToolsMenu()
{ {
using namespace MenuTable;
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
( FinderScope{ findCommandHandler }, ( FinderScope{ findCommandHandler },
Menu( wxT("Tools"), XO("T&ools"), Menu( wxT("Tools"), XO("T&ools"),
@ -365,4 +365,10 @@ MenuTable::BaseItemSharedPtr ExtraToolsMenu()
return menu; return menu;
} }
AttachedItem sAttachment2{
wxT("Optional/Extra/Part1"),
Shared( ExtraToolsMenu() )
};
}
#undef FN #undef FN

View File

@ -1442,10 +1442,8 @@ AttachedItem sAttachment1{
wxT(""), wxT(""),
Shared( TracksMenu() ) Shared( TracksMenu() )
}; };
}
// Under /MenuBar/Optional/Extra BaseItemSharedPtr ExtraTrackMenu()
MenuTable::BaseItemSharedPtr ExtraTrackMenu()
{ {
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
( FinderScope{ findCommandHandler }, ( FinderScope{ findCommandHandler },
@ -1497,4 +1495,11 @@ MenuTable::BaseItemSharedPtr ExtraTrackMenu()
return menu; return menu;
} }
AttachedItem sAttachment2{
wxT("Optional/Extra/Part2"),
Shared( ExtraTrackMenu() )
};
}
#undef FN #undef FN

View File

@ -1103,10 +1103,8 @@ AttachedItem sAttachment1{
wxT(""), wxT(""),
Shared( TransportMenu() ) Shared( TransportMenu() )
}; };
}
// Under /MenuBar/Optional/Extra BaseItemSharedPtr ExtraTransportMenu()
MenuTable::BaseItemSharedPtr ExtraTransportMenu()
{ {
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
( FinderScope{ findCommandHandler }, ( FinderScope{ findCommandHandler },
@ -1156,8 +1154,12 @@ MenuTable::BaseItemSharedPtr ExtraTransportMenu()
return menu; return menu;
} }
// Under /MenuBar/Optional/Extra AttachedItem sAttachment2{
MenuTable::BaseItemSharedPtr ExtraPlayAtSpeedMenu() wxT("Optional/Extra/Part1"),
Shared( ExtraTransportMenu() )
};
BaseItemSharedPtr ExtraPlayAtSpeedMenu()
{ {
static BaseItemSharedPtr menu{ static BaseItemSharedPtr menu{
( FinderScope{ findCommandHandler }, ( FinderScope{ findCommandHandler },
@ -1189,4 +1191,11 @@ MenuTable::BaseItemSharedPtr ExtraPlayAtSpeedMenu()
return menu; return menu;
} }
AttachedItem sAttachment3{
wxT("Optional/Extra/Part1"),
Shared( ExtraPlayAtSpeedMenu() )
};
}
#undef FN #undef FN

View File

@ -154,10 +154,7 @@ AttachedItem sAttachment1{
Shared( WindowMenu() ) Shared( WindowMenu() )
}; };
} BaseItemSharedPtr ExtraWindowItems()
// Under /MenuBar/Optional/Extra/Misc
MenuTable::BaseItemSharedPtr ExtraWindowItems()
{ {
static BaseItemSharedPtr items{ static BaseItemSharedPtr items{
( FinderScope{ findCommandHandler }, ( FinderScope{ findCommandHandler },
@ -171,14 +168,17 @@ MenuTable::BaseItemSharedPtr ExtraWindowItems()
return items; return items;
} }
AttachedItem sAttachment2{
Placement{ wxT("Optional/Extra/Part2/Misc"), OrderingHint::End },
Shared( ExtraWindowItems() )
};
}
#undef FN #undef FN
#else #else
// Not WXMAC. Stub functions. // Not WXMAC.
MenuTable::BaseItemSharedPtr ExtraWindowItems()
{
return nullptr;
}
#endif #endif