MCPcopy Create free account
hub / github.com/audacity/audacity / PopulateEffectsMenu

Method PopulateEffectsMenu

src/menus/MenuHelper.cpp:568–782  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

566}
567
568void MenuHelper::PopulateEffectsMenu(
569 Group &menuItems,
570 EffectType type,
571 CommandFlag batchflags,
572 const wxString& groupby,
573 void (*onMenuCommand)(const CommandContext&),
574 std::function<bool(const PluginDescriptor&)> pred)
575{
576 PluginManager & pm = PluginManager::Get();
577
578 std::vector<MenuSectionBuilder> sections;
579
580 auto MakeAddSortedItems = [=](SortBy sortby)
581 {
582 return [=](Group& items, std::vector<const PluginDescriptor*>& plugins)
583 {
584 return AddSortedEffectMenuItems(items, plugins, batchflags, sortby, onMenuCommand);
585 };
586 };
587
588 auto MakeAddGroupedItems = [=](GroupBy groupBy)
589 {
590 return [=](Group& items, std::vector<const PluginDescriptor*>& plugins)
591 {
592 return AddGroupedEffectMenuItems(items, plugins, batchflags, groupBy, onMenuCommand);
593 };
594 };
595
596
597 // Make sure all OpenVINO effects are groupped in the same menu under /Effects
598 auto EffectsFilter = [type](const auto& plug) { return (plug.GetVendor() == "OpenVINO AI Effects") ? (type == EffectTypeProcess) : (plug.GetEffectType() == type); };
599
600 auto DefaultFilter = [](auto plug) { return IsEnabledPlugin(plug) && IsDefaultPlugin(plug); };
601
602 if(groupby == "default")
603 {
604 if(type == EffectTypeProcess)
605 {
606 static auto effectMenuDefaults = [] {
607 wxFileName path = wxFileName(FileNames::ResourcesDir(), wxT("EffectsMenuDefaults.xml"));
608 return LoadEffectsMenuGroups(path.GetFullPath());
609 }();
610 static auto groupsFilter = MakeGroupsFilter(effectMenuDefaults);
611
612 sections.emplace_back(
613 MenuSectionBuilder {
614 {},
615 [=](auto plug) { return IsBundledPlugin(plug) && groupsFilter(plug); },
616 nullptr,
617 MakeAddGroupItems(effectMenuDefaults, batchflags, onMenuCommand)
618 });
619 sections.emplace_back(
620 MenuSectionBuilder {
621 {},
622 IsEnabledPlugin,
623 CompareEffectsByPublisher,
624 MakeAddGroupedItems(GroupBy::Publisher)
625 });

Callers

nothing calls this directly

Calls 15

GetFunction · 0.85
AddSortedEffectMenuItemsFunction · 0.85
IsEnabledPluginFunction · 0.85
IsDefaultPluginFunction · 0.85
LoadEffectsMenuGroupsFunction · 0.85
MakeGroupsFilterFunction · 0.85
IsBundledPluginFunction · 0.85
MakeAddGroupItemsFunction · 0.85
moveFunction · 0.85
SectionClass · 0.85
GetEffectTypeMethod · 0.80

Tested by

no test coverage detected