KiCad PCB EDA Suite
Loading...
Searching...
No Matches
TOOL_MENU Class Reference

Manage a CONDITIONAL_MENU and some number of CONTEXT_MENUs as sub-menus. More...

#include <tool_menu.h>

Public Member Functions

 TOOL_MENU (TOOL_INTERACTIVE &aTool)
 Construct a new TOOL_MENU for a specific tool.
 
 ~TOOL_MENU ()
 Destruct any submenus created with TOOL_MENU::CreateSubMenu().
 
CONDITIONAL_MENUGetMenu ()
 
void RegisterSubMenu (std::shared_ptr< ACTION_MENU > aSubMenu)
 Store a submenu of this menu model.
 
std::vector< std::shared_ptr< ACTION_MENU > > & GetSubMenus ()
 
void ShowContextMenu (SELECTION &aSelection)
 Helper function to set and immediately show a CONDITIONAL_MENU in concert with the given SELECTION.
 
void ShowContextMenu ()
 Helper function to show a context menu without any selection for tools that can't make selections.
 

Private Attributes

CONDITIONAL_MENU m_menu
 The conditional menu displayed by the tool.
 
TOOL_INTERACTIVEm_tool
 The tool that owns this menu.
 
std::vector< std::shared_ptr< ACTION_MENU > > m_subMenus
 Lifetime-managing container of submenus.
 

Detailed Description

Manage a CONDITIONAL_MENU and some number of CONTEXT_MENUs as sub-menus.

Each "top-level" interactive tool can have one of these, and other tools can contribute #CONTEXT_MENUS to it. There are also helper functions for adding common sets of menu items, for example zoom and grid controls.

Definition at line 42 of file tool_menu.h.

Constructor & Destructor Documentation

◆ TOOL_MENU()

TOOL_MENU::TOOL_MENU ( TOOL_INTERACTIVE aTool)

Construct a new TOOL_MENU for a specific tool.

This menu will be empty - it's up to the caller to add the relevant items. This can be done directly, using the reference returned by TOOL_MENU::GetMenu(), or the helpers for common command sets can be used, or a combination of the two.

Definition at line 32 of file tool_menu.cpp.

◆ ~TOOL_MENU()

TOOL_MENU::~TOOL_MENU ( )

Destruct any submenus created with TOOL_MENU::CreateSubMenu().

Definition at line 39 of file tool_menu.cpp.

Member Function Documentation

◆ GetMenu()

◆ GetSubMenus()

std::vector< std::shared_ptr< ACTION_MENU > > & TOOL_MENU::GetSubMenus ( )
inline
Returns
the list of submenus from this menu

Definition at line 80 of file tool_menu.h.

References m_subMenus.

◆ RegisterSubMenu()

void TOOL_MENU::RegisterSubMenu ( std::shared_ptr< ACTION_MENU aSubMenu)

Store a submenu of this menu model.

This can be shared with other menu models.

It is the callers responsibility to add the submenu to m_menu (via GetMenu() ) in the right way, as well as to set the tool with SetTool(), since it's not a given that the menu's tool is the tool that directly owns this TOOL_MENU.

Parameters
aSubMenua sub menu to add

Definition at line 50 of file tool_menu.cpp.

References m_subMenus.

Referenced by EDA_DRAW_FRAME::AddStandardSubMenus(), SCH_LINE_WIRE_BUS_TOOL::Init(), BOARD_EDITOR_CONTROL::Init(), BOARD_INSPECTION_TOOL::Init(), EDIT_TOOL::Init(), and GROUP_TOOL::Init().

◆ ShowContextMenu() [1/2]

void TOOL_MENU::ShowContextMenu ( )

Helper function to show a context menu without any selection for tools that can't make selections.

Definition at line 66 of file tool_menu.cpp.

References CMENU_NOW, m_menu, m_tool, TOOL_INTERACTIVE::SetContextMenu(), and ACTION_MENU::SetDirty().

◆ ShowContextMenu() [2/2]

void TOOL_MENU::ShowContextMenu ( SELECTION aSelection)

Helper function to set and immediately show a CONDITIONAL_MENU in concert with the given SELECTION.

You don't have to use this function, if the caller has a different way to show the menu, it can create one from the reference returned by TOOL_MENU::GetMenu(), but it will have to be managed externally to this class.

Definition at line 57 of file tool_menu.cpp.

References ACTION_MENU::ClearDirty(), CMENU_NOW, CONDITIONAL_MENU::Evaluate(), m_menu, m_tool, TOOL_INTERACTIVE::SetContextMenu(), and ACTION_MENU::UpdateAll().

Referenced by EDIT_TOOL::doMoveSelection(), and POSITION_RELATIVE_TOOL::PositionRelativeInteractively().

Member Data Documentation

◆ m_menu

CONDITIONAL_MENU TOOL_MENU::m_menu
private

The conditional menu displayed by the tool.

Definition at line 105 of file tool_menu.h.

Referenced by GetMenu(), and ShowContextMenu().

◆ m_subMenus

std::vector<std::shared_ptr<ACTION_MENU> > TOOL_MENU::m_subMenus
private

Lifetime-managing container of submenus.

Definition at line 115 of file tool_menu.h.

Referenced by GetSubMenus(), and RegisterSubMenu().

◆ m_tool

TOOL_INTERACTIVE& TOOL_MENU::m_tool
private

The tool that owns this menu.

Definition at line 110 of file tool_menu.h.

Referenced by ShowContextMenu().


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