Audacity 3.2.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
PopupMenuTable Class Referenceabstract

#include <PopupMenuTable.h>

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

Classes

struct  AttachedItem
 

Public Types

using Entry = PopupMenuTableEntry
 

Public Member Functions

 PopupMenuTable (const Identifier &id, const TranslatableString &caption={})
 
const IdentifierId () const
 
const TranslatableStringCaption () const
 
const Registry::GroupItemBaseGetRegistry () const
 
const std::shared_ptr< Registry::GroupItemBase > & Get (void *pUserData)
 
void Clear ()
 
- Public Member Functions inherited from PopupMenuHandler
 PopupMenuHandler ()=default
 
 PopupMenuHandler (const PopupMenuHandler &)=delete
 
PopupMenuHandleroperator= (const PopupMenuHandler &)=delete
 
virtual void InitUserData (void *pUserData)=0
 Called before the menu items are appended. More...
 

Static Public Member Functions

static std::unique_ptr< PopupMenuBuildMenu (PopupMenuTable *pTable, void *pUserData=NULL)
 
static void ExtendMenu (PopupMenu &menu, PopupMenuTable &otherTable)
 
template<typename Table >
static Registry::BaseItemPtr Computed (const std::function< Registry::BaseItemPtr(Table &) > &factory)
 

Protected Member Functions

virtual void Populate ()=0
 
void Append (Registry::BaseItemPtr pItem)
 
void Append (const Identifier &stringId, PopupMenuTableEntry::Type type, int id, const TranslatableString &string, wxCommandEventFunction memFn, const PopupMenuTableEntry::InitFunction &init)
 
void AppendItem (const Identifier &stringId, int id, const TranslatableString &string, wxCommandEventFunction memFn, const PopupMenuTableEntry::InitFunction &init={})
 
void AppendRadioItem (const Identifier &stringId, int id, const TranslatableString &string, wxCommandEventFunction memFn, const PopupMenuTableEntry::InitFunction &init={})
 
void AppendCheckItem (const Identifier &stringId, int id, const TranslatableString &string, wxCommandEventFunction memFn, const PopupMenuTableEntry::InitFunction &init={})
 
void BeginSection (const Identifier &name)
 
void EndSection ()
 

Static Protected Member Functions

static TranslatableString MakeLabel (const TranslatableString &label, bool useExtra, const TranslatableString &extra)
 

Protected Attributes

std::shared_ptr< Registry::GroupItemBasemTop
 
std::vector< Registry::GroupItemBase * > mStack
 
Identifier mId
 
TranslatableString mCaption
 
std::unique_ptr< Registry::GroupItemBasemRegistry
 

Private Member Functions

void RegisterItem (const Registry::Placement &placement, Registry::BaseItemPtr pItem)
 

Detailed Description

Definition at line 112 of file PopupMenuTable.h.

Member Typedef Documentation

◆ Entry

Definition at line 115 of file PopupMenuTable.h.

Constructor & Destructor Documentation

◆ PopupMenuTable()

PopupMenuTable::PopupMenuTable ( const Identifier id,
const TranslatableString caption = {} 
)
inline

Definition at line 118 of file PopupMenuTable.h.

118 {} )
119 : mId{ id }
120 , mCaption{ caption }
121 , mRegistry{ std::make_unique<Registry::GroupItem<>>(mId) }
122 {}
std::unique_ptr< Registry::GroupItemBase > mRegistry
Identifier mId
TranslatableString mCaption

Member Function Documentation

◆ Append() [1/2]

void PopupMenuTable::Append ( const Identifier stringId,
PopupMenuTableEntry::Type  type,
int  id,
const TranslatableString string,
wxCommandEventFunction  memFn,
const PopupMenuTableEntry::InitFunction init 
)
protected

Definition at line 167 of file PopupMenuTable.cpp.

171{
172 Append( std::make_unique<Entry>(
173 stringId, type, id, string, memFn, *this, init ) );
174}
void Append(Registry::BaseItemPtr pItem)

References Append().

Here is the call graph for this function:

◆ Append() [2/2]

void PopupMenuTable::Append ( Registry::BaseItemPtr  pItem)
protected

Definition at line 162 of file PopupMenuTable.cpp.

163{
164 mStack.back()->items.push_back( std::move( pItem ) );
165}
std::vector< Registry::GroupItemBase * > mStack

References mStack.

Referenced by Append().

Here is the caller graph for this function:

◆ AppendCheckItem()

void PopupMenuTable::AppendCheckItem ( const Identifier stringId,
int  id,
const TranslatableString string,
wxCommandEventFunction  memFn,
const PopupMenuTableEntry::InitFunction init = {} 
)
inlineprotected

Definition at line 212 of file PopupMenuTable.h.

214 {} )
215 { Append( stringId, PopupMenuTableEntry::CheckItem, id, string, memFn, init ); }
@ CheckItem

◆ AppendItem()

void PopupMenuTable::AppendItem ( const Identifier stringId,
int  id,
const TranslatableString string,
wxCommandEventFunction  memFn,
const PopupMenuTableEntry::InitFunction init = {} 
)
inlineprotected

Definition at line 200 of file PopupMenuTable.h.

203 {} )
204 { Append( stringId, PopupMenuTableEntry::Item, id, string, memFn, init ); }
@ Item

◆ AppendRadioItem()

void PopupMenuTable::AppendRadioItem ( const Identifier stringId,
int  id,
const TranslatableString string,
wxCommandEventFunction  memFn,
const PopupMenuTableEntry::InitFunction init = {} 
)
inlineprotected

Definition at line 206 of file PopupMenuTable.h.

209 {} )
210 { Append( stringId, PopupMenuTableEntry::RadioItem, id, string, memFn, init ); }
@ RadioItem

◆ BeginSection()

void PopupMenuTable::BeginSection ( const Identifier name)
protected

Definition at line 176 of file PopupMenuTable.cpp.

177{
178 auto uSection = std::make_unique< PopupMenuSection >( name );
179 auto section = uSection.get();
180 mStack.back()->items.push_back( std::move( uSection ) );
181 mStack.push_back( section );
182}
const TranslatableString name
Definition: Distortion.cpp:76

References mStack, and name.

◆ BuildMenu()

std::unique_ptr< PopupMenu > PopupMenuTable::BuildMenu ( PopupMenuTable pTable,
void *  pUserData = NULL 
)
static

Definition at line 190 of file PopupMenuTable.cpp.

192{
193 // Rebuild as needed each time. That makes it safe in case of language change.
194 auto theMenu = std::make_unique<PopupMenuImpl>( pUserData );
195 ExtendMenu( *theMenu, *pTable );
196 return theMenu;
197}
static void ExtendMenu(PopupMenu &menu, PopupMenuTable &otherTable)

References ExtendMenu().

Referenced by CommonTrackControls::DoContextMenu(), WaveTrackVZoomHandle::DoRelease(), NoteTrackVZoomHandle::Release(), and TimeTrackVZoomHandle::Release().

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

◆ Caption()

const TranslatableString & PopupMenuTable::Caption ( ) const
inline

Definition at line 130 of file PopupMenuTable.h.

130{ return mCaption; }

◆ Clear()

void PopupMenuTable::Clear ( )
inline

Definition at line 153 of file PopupMenuTable.h.

154 {
155 mTop.reset();
156 }
std::shared_ptr< Registry::GroupItemBase > mTop

Referenced by NoteTrackVRulerMenuTable::UpdatePrefs(), WaveTrackVRulerMenuTable::UpdatePrefs(), and TrackMenuTable::UpdatePrefs().

Here is the caller graph for this function:

◆ Computed()

template<typename Table >
static Registry::BaseItemPtr PopupMenuTable::Computed ( const std::function< Registry::BaseItemPtr(Table &) > &  factory)
inlinestatic

Definition at line 161 of file PopupMenuTable.h.

163 {
164 using namespace Registry;
165 return std::make_unique< ComputedItem >(
166 [factory]( Visitor &baseVisitor ){
167 auto &visitor = static_cast< PopupMenuVisitor& >( baseVisitor );
168 auto &table = static_cast< Table& >( visitor.mTable );
169 return factory( table );
170 }
171 );
172 }
Definition: Menus.h:35
static RegisteredToolbarFactory factory

References cloud::factory.

◆ EndSection()

void PopupMenuTable::EndSection ( )
protected

Definition at line 184 of file PopupMenuTable.cpp.

185{
186 mStack.pop_back();
187}

References mStack.

◆ ExtendMenu()

void PopupMenuTable::ExtendMenu ( PopupMenu menu,
PopupMenuTable otherTable 
)
static

Definition at line 147 of file PopupMenuTable.cpp.

148{
149 auto &theMenu = dynamic_cast<PopupMenuImpl&>(menu);
150
151 PopupMenuBuilder visitor{ table, theMenu, theMenu.pUserData };
153 visitor, table.Get( theMenu.pUserData ).get(), table.GetRegistry() );
154}
void Visit(Visitor &visitor, BaseItem *pTopItem, const GroupItemBase *pRegistry)
Definition: Registry.cpp:737

References Get(), GetRegistry(), and Registry::Visit().

Referenced by BuildMenu(), and CommonTrackControls::DoContextMenu().

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

◆ Get()

const std::shared_ptr< Registry::GroupItemBase > & PopupMenuTable::Get ( void *  pUserData)
inline

Definition at line 144 of file PopupMenuTable.h.

145 {
146 if ( pUserData )
147 this->InitUserData( pUserData );
148 if (!mTop)
149 Populate();
150 return mTop;
151 }
virtual void InitUserData(void *pUserData)=0
Called before the menu items are appended.
virtual void Populate()=0

Referenced by ExtendMenu().

Here is the caller graph for this function:

◆ GetRegistry()

const Registry::GroupItemBase * PopupMenuTable::GetRegistry ( ) const
inline

Definition at line 131 of file PopupMenuTable.h.

131{ return mRegistry.get(); }

Referenced by ExtendMenu().

Here is the caller graph for this function:

◆ Id()

const Identifier & PopupMenuTable::Id ( ) const
inline

Definition at line 129 of file PopupMenuTable.h.

129{ return mId; }

◆ MakeLabel()

static TranslatableString PopupMenuTable::MakeLabel ( const TranslatableString label,
bool  useExtra,
const TranslatableString extra 
)
inlinestaticprotected

Definition at line 181 of file PopupMenuTable.h.

183 {
184 return useExtra
185 ? XXO("%s (%s)").Format( label, extra )
186 : label;
187 }
XXO("&Cut/Copy/Paste Toolbar")
TranslatableString label
Definition: TagsEditor.cpp:164

References label, and XXO().

Here is the call graph for this function:

◆ Populate()

virtual void PopupMenuTable::Populate ( )
protectedpure virtual

◆ RegisterItem()

void PopupMenuTable::RegisterItem ( const Registry::Placement placement,
Registry::BaseItemPtr  pItem 
)
private

Definition at line 156 of file PopupMenuTable.cpp.

158{
159 Registry::RegisterItem( *mRegistry, placement, std::move( pItem ) );
160}
void RegisterItem(GroupItemBase &registry, const Placement &placement, BaseItemPtr pItem)
Definition: Registry.cpp:774

References mRegistry, and Registry::RegisterItem().

Referenced by PopupMenuTable::AttachedItem::AttachedItem().

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

Member Data Documentation

◆ mCaption

TranslatableString PopupMenuTable::mCaption
protected

Definition at line 223 of file PopupMenuTable.h.

◆ mId

Identifier PopupMenuTable::mId
protected

Definition at line 222 of file PopupMenuTable.h.

◆ mRegistry

std::unique_ptr<Registry::GroupItemBase> PopupMenuTable::mRegistry
protected

Definition at line 224 of file PopupMenuTable.h.

Referenced by RegisterItem().

◆ mStack

std::vector< Registry::GroupItemBase* > PopupMenuTable::mStack
protected

Definition at line 221 of file PopupMenuTable.h.

Referenced by Append(), BeginSection(), and EndSection().

◆ mTop

std::shared_ptr< Registry::GroupItemBase > PopupMenuTable::mTop
protected

Definition at line 220 of file PopupMenuTable.h.


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