Audacity 3.2.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
MenuVisitor Struct Reference

#include <CommandManager.h>

Inheritance diagram for MenuVisitor:
[legend]
Collaboration diagram for MenuVisitor:
[legend]

Public Member Functions

void BeginGroup (Registry::GroupItem &item, const Path &path) final
 
void EndGroup (Registry::GroupItem &item, const Path &) final
 
void Visit (Registry::SingleItem &item, const Path &path) final
 
virtual void DoBeginGroup (Registry::GroupItem &item, const Path &path)
 
virtual void DoEndGroup (Registry::GroupItem &item, const Path &path)
 
virtual void DoVisit (Registry::SingleItem &item, const Path &path)
 
virtual void DoSeparator ()
 
- Public Member Functions inherited from Registry::Visitor
virtual ~Visitor ()
 
virtual void BeginGroup (GroupItem &item, const Path &path)
 
virtual void EndGroup (GroupItem &item, const Path &path)
 
virtual void Visit (SingleItem &item, const Path &path)
 

Private Member Functions

void MaybeDoSeparator ()
 

Private Attributes

std::vector< bool > firstItem
 
std::vector< bool > needSeparator
 

Additional Inherited Members

- Public Types inherited from Registry::Visitor
using Path = std::vector< Identifier >
 

Detailed Description

Definition at line 391 of file CommandManager.h.

Member Function Documentation

◆ BeginGroup()

void MenuVisitor::BeginGroup ( Registry::GroupItem item,
const Path path 
)
finalvirtual

Reimplemented from Registry::Visitor.

Definition at line 106 of file Menus.cpp.

107{
108 bool isMenu = false;
109 bool isExtension = false;
110 auto pItem = &item;
111 if ( pItem->Transparent() ) {
112 }
113 else if ( dynamic_cast<MenuTable::MenuSection*>( pItem ) ) {
114 if ( !needSeparator.empty() )
115 needSeparator.back() = true;
116 }
117 else if ( auto pWhole = dynamic_cast<MenuTable::WholeMenu*>( pItem ) ) {
118 isMenu = true;
119 isExtension = pWhole->extension;
121 }
122
123 DoBeginGroup( item, path );
124
125 if ( isMenu ) {
126 needSeparator.push_back( false );
127 firstItem.push_back( !isExtension );
128 }
129}
void MaybeDoSeparator()
Definition: Menus.cpp:154
virtual void DoBeginGroup(Registry::GroupItem &item, const Path &path)
Definition: Menus.cpp:167
std::vector< bool > firstItem
std::vector< bool > needSeparator

References DoBeginGroup(), firstItem, MaybeDoSeparator(), and needSeparator.

Here is the call graph for this function:

◆ DoBeginGroup()

void MenuVisitor::DoBeginGroup ( Registry::GroupItem item,
const Path path 
)
virtual

Reimplemented in anonymous_namespace{Menus.cpp}::MenuItemVisitor, anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor, and anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder.

Definition at line 167 of file Menus.cpp.

168{
169}

Referenced by BeginGroup(), and anonymous_namespace{HelpMenus.cpp}::OnMenuTree().

Here is the caller graph for this function:

◆ DoEndGroup()

void MenuVisitor::DoEndGroup ( Registry::GroupItem item,
const Path path 
)
virtual

Reimplemented in anonymous_namespace{Menus.cpp}::MenuItemVisitor, anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor, and anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder.

Definition at line 171 of file Menus.cpp.

172{
173}

Referenced by EndGroup(), and anonymous_namespace{HelpMenus.cpp}::OnMenuTree().

Here is the caller graph for this function:

◆ DoSeparator()

void MenuVisitor::DoSeparator ( )
virtual

Reimplemented in anonymous_namespace{Menus.cpp}::MenuItemVisitor, anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor, and anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder.

Definition at line 179 of file Menus.cpp.

180{
181}

Referenced by MaybeDoSeparator(), and anonymous_namespace{HelpMenus.cpp}::OnMenuTree().

Here is the caller graph for this function:

◆ DoVisit()

void MenuVisitor::DoVisit ( Registry::SingleItem item,
const Path path 
)
virtual

Reimplemented in anonymous_namespace{RealtimeEffectPanel.cpp}::RealtimeEffectsMenuVisitor, anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder, and anonymous_namespace{Menus.cpp}::MenuItemVisitor.

Definition at line 175 of file Menus.cpp.

176{
177}

Referenced by anonymous_namespace{HelpMenus.cpp}::OnMenuTree(), and Visit().

Here is the caller graph for this function:

◆ EndGroup()

void MenuVisitor::EndGroup ( Registry::GroupItem item,
const Path path 
)
finalvirtual

Reimplemented from Registry::Visitor.

Definition at line 131 of file Menus.cpp.

132{
133 auto pItem = &item;
134 if ( pItem->Transparent() ) {
135 }
136 else if ( dynamic_cast<MenuTable::MenuSection*>( pItem ) ) {
137 if ( !needSeparator.empty() )
138 needSeparator.back() = true;
139 }
140 else if ( dynamic_cast<MenuTable::WholeMenu*>( pItem ) ) {
141 firstItem.pop_back();
142 needSeparator.pop_back();
143 }
144
145 DoEndGroup( item, path );
146}
virtual void DoEndGroup(Registry::GroupItem &item, const Path &path)
Definition: Menus.cpp:171

References DoEndGroup(), firstItem, and needSeparator.

Here is the call graph for this function:

◆ MaybeDoSeparator()

void MenuVisitor::MaybeDoSeparator ( )
private

Definition at line 154 of file Menus.cpp.

155{
156 bool separate = false;
157 if ( !needSeparator.empty() ) {
158 separate = needSeparator.back() && !firstItem.back();
159 needSeparator.back() = false;
160 firstItem.back() = false;
161 }
162
163 if ( separate )
164 DoSeparator();
165}
virtual void DoSeparator()
Definition: Menus.cpp:179

References DoSeparator(), firstItem, and needSeparator.

Referenced by BeginGroup(), and Visit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Visit()

void MenuVisitor::Visit ( Registry::SingleItem item,
const Path path 
)
finalvirtual

Reimplemented from Registry::Visitor.

Definition at line 148 of file Menus.cpp.

149{
151 DoVisit( item, path );
152}
virtual void DoVisit(Registry::SingleItem &item, const Path &path)
Definition: Menus.cpp:175

References DoVisit(), and MaybeDoSeparator().

Here is the call graph for this function:

Member Data Documentation

◆ firstItem

std::vector<bool> MenuVisitor::firstItem
private

Definition at line 406 of file CommandManager.h.

Referenced by BeginGroup(), EndGroup(), and MaybeDoSeparator().

◆ needSeparator

std::vector<bool> MenuVisitor::needSeparator
private

Definition at line 407 of file CommandManager.h.

Referenced by BeginGroup(), EndGroup(), and MaybeDoSeparator().


The documentation for this struct was generated from the following files: