Audacity 3.2.0
Public Member Functions | Private Attributes | List of all members
anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor Class Referencefinal
Inheritance diagram for anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor:
[legend]
Collaboration diagram for anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor:
[legend]

Public Member Functions

 RealtimeEffectsMenuVisitor (wxMenu &menu)
 
Identifier GetPluginID (int menuIndex) const
 
- Public Member Functions inherited from MenuRegistry::Visitor< Traits >
 Visitor (VisitorFunctions< Traits > functions, std::function< void()> doSeparator)
 
- Public Member Functions inherited from Registry::VisitorFunctions< Traits >
 VisitorFunctions (Visitors &&visitors)
 Type-erasing constructor. More...
 
void BeginGroup (const GroupItem< Traits > &item, const Path &path) const
 Call-through for a decorating pre-visitor. More...
 
void Visit (const SingleItem &item, const Path &path) const
 Call-through for a decorating leaf-visitor. More...
 
void EndGroup (const GroupItem< Traits > &item, const Path &path) const
 Call-through for a decorating post-visitor. More...
 
- Public Member Functions inherited from MenuRegistry::detail::VisitorBase
std::pair< bool, bool > ShouldBeginGroup (const ItemProperties *pProperties)
 
void AfterBeginGroup (const ItemProperties *pProperties)
 
bool ShouldEndGroup (const ItemProperties *pProperties)
 
bool ShouldDoSeparator ()
 

Private Attributes

wxMenu & mMenu
 
wxMenu * mMenuPtr { nullptr }
 
int mMenuItemIdCounter { wxID_HIGHEST }
 
std::vector< IdentifiermIndexedPluginList
 
int mMenuLevelCounter { 0 }
 

Additional Inherited Members

- Public Types inherited from Registry::VisitorFunctions< Traits >
using NodeTypes = detail::VisitedNodeTypes< Traits >
 
using LeafTypes = detail::VisitedLeafTypes< Traits >
 
- Public Attributes inherited from MenuRegistry::detail::VisitorBase
std::vector< bool > firstItem
 
std::vector< bool > needSeparator
 

Detailed Description

Definition at line 59 of file RealtimeEffectPanel.cpp.

Constructor & Destructor Documentation

◆ RealtimeEffectsMenuVisitor()

anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor::RealtimeEffectsMenuVisitor ( wxMenu &  menu)
inline

Definition at line 66 of file RealtimeEffectPanel.cpp.

66 : Visitor<Traits>{ std::tuple{
67 [this](const MenuRegistry::MenuItem &menuItem, const auto&) {
68 //Don't create a group item for root
69 if (mMenuLevelCounter != 0)
70 {
71 auto submenu = std::make_unique<wxMenu>();
72 mMenuPtr->AppendSubMenu(submenu.get(), menuItem.GetTitle().Translation());
73 mMenuPtr = submenu.release();
74 }
76 },
77
78 [this](const MenuRegistry::CommandItem &commandItem, const auto&) {
79 mMenuPtr->Append(mMenuItemIdCounter, commandItem.label_in.Translation());
80 mIndexedPluginList.push_back(commandItem.name);
82 },
83
84 [this](const MenuRegistry::MenuItem &, const auto&) {
86 if (mMenuLevelCounter != 0)
87 {
88 assert(mMenuPtr->GetParent() != nullptr);
89 mMenuPtr = mMenuPtr->GetParent();
90 }
91 }},
92
93 [this]() {
94 mMenuPtr->AppendSeparator();
95 }}
96 , mMenu(menu), mMenuPtr(&mMenu)
97 {}
wxString Translation() const
const TranslatableString label_in
Definition: MenuRegistry.h:321
const auto & GetTitle() const
Definition: MenuRegistry.h:226
const Identifier name
Definition: Registry.h:86

References MenuRegistry::MenuItem::GetTitle(), MenuRegistry::CommandItem::label_in, Registry::detail::BaseItem::name, and TranslatableString::Translation().

Here is the call graph for this function:

Member Function Documentation

◆ GetPluginID()

Identifier anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor::GetPluginID ( int  menuIndex) const
inline

Definition at line 99 of file RealtimeEffectPanel.cpp.

100 {
101 assert(menuIndex >= wxID_HIGHEST && menuIndex < (wxID_HIGHEST + mIndexedPluginList.size()));
102 return mIndexedPluginList[menuIndex - wxID_HIGHEST];
103 }

Member Data Documentation

◆ mIndexedPluginList

std::vector<Identifier> anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor::mIndexedPluginList
private

Definition at line 63 of file RealtimeEffectPanel.cpp.

◆ mMenu

wxMenu& anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor::mMenu
private

Definition at line 60 of file RealtimeEffectPanel.cpp.

◆ mMenuItemIdCounter

int anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor::mMenuItemIdCounter { wxID_HIGHEST }
private

Definition at line 62 of file RealtimeEffectPanel.cpp.

◆ mMenuLevelCounter

int anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor::mMenuLevelCounter { 0 }
private

Definition at line 64 of file RealtimeEffectPanel.cpp.

◆ mMenuPtr

wxMenu* anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor::mMenuPtr { nullptr }
private

Definition at line 61 of file RealtimeEffectPanel.cpp.


The documentation for this class was generated from the following file: