KiCad PCB EDA Suite
TOOL_MENU Class Reference

Class TOOL_MENU. More...

#include <tool_menu.h>

Public Member Functions

 TOOL_MENU (TOOL_INTERACTIVE &aTool)
 Function TOOL_MENU. More...
 
 ~TOOL_MENU ()
 Destructor, also destructs any submenus created with TOOL_MENU::CreateSubMenu(). More...
 
CONDITIONAL_MENUGetMenu ()
 Function GetMenu. More...
 
void AddSubMenu (std::shared_ptr< ACTION_MENU > aSubMenu)
 Function CreateSubMenu. More...
 
void ShowContextMenu (SELECTION &aSelection)
 Function ShowContextMenu. More...
 
void ShowContextMenu ()
 Function ShowContextMenu. More...
 

Private Attributes

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

Detailed Description

Class TOOL_MENU.

Manages 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 47 of file tool_menu.h.

Constructor & Destructor Documentation

◆ TOOL_MENU()

TOOL_MENU::TOOL_MENU ( TOOL_INTERACTIVE aTool)

Function TOOL_MENU.

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 directy, 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 34 of file tool_menu.cpp.

34  :
35  m_menu( true, &aTool ),
36  m_tool( aTool )
37 {
38 }
TOOL_INTERACTIVE & m_tool
The tool that owns this menu.
Definition: tool_menu.h:122
CONDITIONAL_MENU m_menu
The conditional menu displayed by the tool.
Definition: tool_menu.h:117

◆ ~TOOL_MENU()

TOOL_MENU::~TOOL_MENU ( )

Destructor, also destructs any submenus created with TOOL_MENU::CreateSubMenu().

Definition at line 41 of file tool_menu.cpp.

42 {
43 }

Member Function Documentation

◆ AddSubMenu()

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

Function CreateSubMenu.

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 52 of file tool_menu.cpp.

53 {
54  // store a copy of the menu (keeps a reference)
55  m_subMenus.push_back( std::move( aSubMenu ) );
56 }
std::vector< std::shared_ptr< ACTION_MENU > > m_subMenus
Lifetime-managing container of submenus.
Definition: tool_menu.h:127

References m_subMenus.

Referenced by EDA_DRAW_FRAME::AddStandardSubMenus(), SCH_EDIT_TOOL::Init(), PAD_TOOL::Init(), GERBVIEW_SELECTION_TOOL::Init(), SCH_LINE_WIRE_BUS_TOOL::Init(), and SELECTION_TOOL::Init().

◆ GetMenu()

◆ ShowContextMenu() [1/2]

void TOOL_MENU::ShowContextMenu ( SELECTION aSelection)

Function ShowContextMenu.

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 59 of file tool_menu.cpp.

60 {
61  m_menu.Evaluate( aSelection );
62  m_menu.UpdateAll();
65 }
TOOL_INTERACTIVE & m_tool
The tool that owns this menu.
Definition: tool_menu.h:122
void ClearDirty()
Function ClearDirty() Clears the dirty flag on the menu and all descendants.
void UpdateAll()
Function UpdateAll() Runs update handlers for the menu and its submenus.
void SetContextMenu(ACTION_MENU *aMenu, CONTEXT_MENU_TRIGGER aTrigger=CMENU_BUTTON)
Function SetContextMenu()
CONDITIONAL_MENU m_menu
The conditional menu displayed by the tool.
Definition: tool_menu.h:117
void Evaluate(SELECTION &aSelection)
Function Evaluate()

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

Referenced by SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), PCB_TOOL_BASE::doInteractiveItemPlacement(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), MICROWAVE_TOOL::drawMicrowaveInductor(), DRAWING_TOOL::drawSegment(), LIB_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PAD_TOOL::EnumeratePads(), PL_EDIT_TOOL::Main(), SCH_MOVE_TOOL::Main(), LIB_MOVE_TOOL::Main(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::Main(), PCBNEW_PICKER_TOOL::Main(), PICKER_TOOL::Main(), GERBVIEW_SELECTION_TOOL::Main(), PL_SELECTION_TOOL::Main(), EE_SELECTION_TOOL::Main(), SELECTION_TOOL::Main(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), EDIT_TOOL::MeasureTool(), LIB_TREE::onContextMenu(), LIB_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), DRAWING_TOOL::SetAnchor(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ShowContextMenu() [2/2]

void TOOL_MENU::ShowContextMenu ( )

Function ShowContextMenu.

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

Definition at line 68 of file tool_menu.cpp.

69 {
70  m_menu.SetDirty();
72 }
TOOL_INTERACTIVE & m_tool
The tool that owns this menu.
Definition: tool_menu.h:122
void SetContextMenu(ACTION_MENU *aMenu, CONTEXT_MENU_TRIGGER aTrigger=CMENU_BUTTON)
Function SetContextMenu()
CONDITIONAL_MENU m_menu
The conditional menu displayed by the tool.
Definition: tool_menu.h:117
void SetDirty()

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

Member Data Documentation

◆ m_menu

CONDITIONAL_MENU TOOL_MENU::m_menu
private

The conditional menu displayed by the tool.

Definition at line 117 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 127 of file tool_menu.h.

Referenced by AddSubMenu().

◆ m_tool

TOOL_INTERACTIVE& TOOL_MENU::m_tool
private

The tool that owns this menu.

Definition at line 122 of file tool_menu.h.

Referenced by ShowContextMenu().


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