Audacity 3.2.0
Public Member Functions | Public Attributes | List of all members
anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder Class Reference
Inheritance diagram for anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder:
[legend]
Collaboration diagram for anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder:
[legend]

Public Member Functions

 PopupMenuBuilder (PopupMenuTable &table, PopupMenuImpl &menu, void *pUserData)
 
void DoBeginGroup (Registry::GroupItem &item, const Path &path) override
 
void DoEndGroup (Registry::GroupItem &item, const Path &path) override
 
void DoVisit (Registry::SingleItem &item, const Path &path) override
 
void DoSeparator () override
 
- Public Member Functions inherited from PopupMenuVisitor
 PopupMenuVisitor (PopupMenuTable &table)
 
- Public Member Functions inherited from MenuVisitor
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)
 

Public Attributes

std::vector< std::unique_ptr< PopupMenuImpl > > mMenus
 
PopupMenuImplmMenu
 
PopupMenuImplmRoot
 
void *const mpUserData
 
- Public Attributes inherited from PopupMenuVisitor
PopupMenuTablemTable
 

Additional Inherited Members

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

Detailed Description

Definition at line 48 of file PopupMenuTable.cpp.

Constructor & Destructor Documentation

◆ PopupMenuBuilder()

anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::PopupMenuBuilder ( PopupMenuTable table,
PopupMenuImpl menu,
void *  pUserData 
)
inlineexplicit

Member Function Documentation

◆ DoBeginGroup()

void anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::DoBeginGroup ( Registry::GroupItem item,
const Path path 
)
overridevirtual

Reimplemented from MenuVisitor.

Definition at line 68 of file PopupMenuTable.cpp.

69{
70 if ( auto pItem = dynamic_cast<PopupSubMenu*>(&item) ) {
71 if ( !pItem->caption.empty() ) {
72 auto newMenu =
73 std::make_unique<PopupMenuImpl>( mMenu->pUserData );
74 mMenu = newMenu.get();
75 mMenus.push_back( std::move( newMenu ) );
76 }
77 }
78}
std::vector< std::unique_ptr< PopupMenuImpl > > mMenus

◆ DoEndGroup()

void anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::DoEndGroup ( Registry::GroupItem item,
const Path path 
)
overridevirtual

Reimplemented from MenuVisitor.

Definition at line 80 of file PopupMenuTable.cpp.

81{
82 if ( auto pItem = dynamic_cast<PopupSubMenu*>(&item) ) {
83 if ( !pItem->caption.empty() ) {
84 auto subMenu = std::move( mMenus.back() );
85 mMenus.pop_back();
86 mMenu = mMenus.empty() ? mRoot : mMenus.back().get();
87 mMenu->AppendSubMenu( subMenu.release(), pItem->caption.Translation());
88 }
89 }
90}

◆ DoSeparator()

void anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::DoSeparator ( )
overridevirtual

Reimplemented from MenuVisitor.

Definition at line 127 of file PopupMenuTable.cpp.

128{
129 mMenu->AppendSeparator();
130}

◆ DoVisit()

void anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::DoVisit ( Registry::SingleItem item,
const Path path 
)
overridevirtual

Reimplemented from MenuVisitor.

Definition at line 92 of file PopupMenuTable.cpp.

93{
94 auto pEntry = static_cast<PopupMenuTableEntry*>( &item );
95 switch (pEntry->type) {
97 {
98 mMenu->Append(pEntry->id, pEntry->caption.Translation());
99 break;
100 }
102 {
103 mMenu->AppendRadioItem(pEntry->id, pEntry->caption.Translation());
104 break;
105 }
107 {
108 mMenu->AppendCheckItem(pEntry->id, pEntry->caption.Translation());
109 break;
110 }
111 default:
112 wxASSERT( false );
113 break;
114 }
115
116 // This call necessary for externally registered items, else harmlessly
117 // redundant
118 pEntry->handler.InitUserData( mpUserData );
119
120 if ( pEntry->init )
121 pEntry->init( pEntry->handler, *mMenu, pEntry->id );
122
123 mMenu->Bind(
124 wxEVT_COMMAND_MENU_SELECTED, pEntry->func, &pEntry->handler, pEntry->id);
125}
@ Item
@ CheckItem
@ RadioItem

References PopupMenuTableEntry::CheckItem, PopupMenuTableEntry::Item, and PopupMenuTableEntry::RadioItem.

Member Data Documentation

◆ mMenu

PopupMenuImpl* anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::mMenu

Definition at line 64 of file PopupMenuTable.cpp.

◆ mMenus

std::vector< std::unique_ptr<PopupMenuImpl> > anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::mMenus

Definition at line 63 of file PopupMenuTable.cpp.

◆ mpUserData

void* const anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::mpUserData

Definition at line 65 of file PopupMenuTable.cpp.

◆ mRoot

PopupMenuImpl * anonymous_namespace{PopupMenuTable.cpp}::PopupMenuBuilder::mRoot

Definition at line 64 of file PopupMenuTable.cpp.


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