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

Public Member Functions

 PopupMenu (wxEvtHandler *pParent_, void *pUserData_)
 
 ~PopupMenu () override
 
void Extend (PopupMenuTable *pTable)
 
void DisconnectTable (PopupMenuTable *pTable)
 
void Disconnect ()
 

Public Attributes

wxEvtHandler * pParent
 
std::vector< PopupMenuTable * > tables
 
void * pUserData
 

Detailed Description

Definition at line 30 of file PopupMenuTable.cpp.

Constructor & Destructor Documentation

◆ PopupMenu()

anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::PopupMenu ( wxEvtHandler *  pParent_,
void *  pUserData_ 
)
inline

Definition at line 32 of file PopupMenuTable.cpp.

33  : pParent{ pParent_ }, tables{}, pUserData{ pUserData_ } {}

◆ ~PopupMenu()

anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::~PopupMenu ( )
override

Definition at line 131 of file PopupMenuTable.cpp.

132 {
133  // Event connections between the parent window and the singleton table
134  // object must be broken when this menu is destroyed.
135  Disconnect();
136 }

Member Function Documentation

◆ Disconnect()

void anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::Disconnect ( )

Definition at line 209 of file PopupMenuTable.cpp.

210 {
211  for ( auto pTable : tables )
212  DisconnectTable(pTable);
213 }

◆ DisconnectTable()

void anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::DisconnectTable ( PopupMenuTable pTable)

Definition at line 183 of file PopupMenuTable.cpp.

184 {
185  class PopupMenuDestroyer : public PopupMenuVisitor {
186  public:
187  explicit
188  PopupMenuDestroyer( PopupMenuTable &table, PopupMenu &menu )
189  : PopupMenuVisitor{ table }
190  , mMenu{ menu }
191  {}
192 
193  void DoVisit( Registry::SingleItem &item, const Path &path ) override
194  {
195  auto pEntry = static_cast<PopupMenuTableEntry*>( &item );
196  mMenu.pParent->Unbind( wxEVT_COMMAND_MENU_SELECTED,
197  pEntry->func, &pEntry->handler, pEntry->id );
198  pEntry->handler.DestroyMenu();
199  }
200 
201  PopupMenu &mMenu;
202  };
203 
204  PopupMenuDestroyer visitor{ *pTable, *this };
205  Registry::Visit( visitor, pTable->Get( nullptr ).get(),
206  pTable->GetRegistry() );
207 }

References PopupMenuHandler::DestroyMenu(), MenuVisitor::DoVisit(), PopupMenuTable::Get(), PopupMenuTable::GetRegistry(), PopupMenuTableEntry::handler, and Registry::Visit().

Here is the call graph for this function:

◆ Extend()

void anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::Extend ( PopupMenuTable pTable)

Member Data Documentation

◆ pParent

wxEvtHandler* anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::pParent

Definition at line 41 of file PopupMenuTable.cpp.

◆ pUserData

void* anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::pUserData

Definition at line 43 of file PopupMenuTable.cpp.

◆ tables

std::vector<PopupMenuTable*> anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::tables

Definition at line 42 of file PopupMenuTable.cpp.


The documentation for this struct was generated from the following file:
Registry::SingleItem
Definition: Registry.h:120
anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::PopupMenu
PopupMenu(wxEvtHandler *pParent_, void *pUserData_)
Definition: PopupMenuTable.cpp:32
PopupMenuTable
Definition: PopupMenuTable.h:104
anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::pParent
wxEvtHandler * pParent
Definition: PopupMenuTable.cpp:41
PopupMenuHandler::DestroyMenu
virtual void DestroyMenu()=0
anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::tables
std::vector< PopupMenuTable * > tables
Definition: PopupMenuTable.cpp:42
PopupMenuTableEntry
Definition: PopupMenuTable.h:35
PopupMenuVisitor
Definition: PopupMenuTable.h:98
PopupMenuTable::Get
const std::shared_ptr< Registry::GroupItem > & Get(void *pUserData)
Definition: PopupMenuTable.h:135
anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::pUserData
void * pUserData
Definition: PopupMenuTable.cpp:43
anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::Disconnect
void Disconnect()
Definition: PopupMenuTable.cpp:209
anonymous_namespace{PopupMenuTable.cpp}::PopupMenu::DisconnectTable
void DisconnectTable(PopupMenuTable *pTable)
Definition: PopupMenuTable.cpp:183
Registry::Visit
void Visit(Visitor &visitor, BaseItem *pTopItem, const GroupItem *pRegistry)
Definition: Registry.cpp:713
PopupMenuTableEntry::handler
PopupMenuHandler & handler
Definition: PopupMenuTable.h:44
PopupMenuTable::GetRegistry
const Registry::GroupItem * GetRegistry() const
Definition: PopupMenuTable.h:122
Journal::WindowPaths::Path
Identifier Path
Definition: JournalWindowPaths.h:24