KiCad PCB EDA Suite
ACTION_TOOLBAR Class Reference

ACTION_TOOLBAR. More...

#include <action_toolbar.h>

Inheritance diagram for ACTION_TOOLBAR:

Public Member Functions

 ACTION_TOOLBAR (EDA_BASE_FRAME *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxAUI_TB_DEFAULT_STYLE)
 
virtual ~ACTION_TOOLBAR ()
 
void SetAuiManager (wxAuiManager *aManager)
 Set the AUI manager that this toolbar belongs to. More...
 
void Add (const TOOL_ACTION &aAction, bool aIsToggleEntry=false, bool aIsCancellable=false)
 Adds a TOOL_ACTION-based button to the toolbar. More...
 
void AddButton (const TOOL_ACTION &aAction)
 Adds a large button such as used in the Kicad Manager Frame's launch bar. More...
 
void AddScaledSeparator (wxWindow *aWindow)
 Add a separator that introduces space on either side to not squash the tools when scaled. More...
 
void AddToolContextMenu (const TOOL_ACTION &aAction, std::unique_ptr< ACTION_MENU > aMenu)
 Add a context menu to a specific tool item on the toolbar. More...
 
void AddGroup (ACTION_GROUP *aGroup, bool aIsToggleEntry=false)
 Add a set of actions to a toolbar as a group. More...
 
void SelectAction (ACTION_GROUP *aGroup, const TOOL_ACTION &aAction)
 Select an action inside a group. More...
 
void ClearToolbar ()
 Clear the toolbar and remove all associated menus. More...
 
void SetToolBitmap (const TOOL_ACTION &aAction, const wxBitmap &aBitmap)
 Updates the bitmap of a particular tool. More...
 
void Toggle (const TOOL_ACTION &aAction, bool aState)
 Applies the default toggle action. More...
 
void Toggle (const TOOL_ACTION &aAction, bool aEnabled, bool aChecked)
 

Static Public Attributes

static constexpr bool TOGGLE = true
 
static constexpr bool CANCEL = true
 

Protected Member Functions

void doSelectAction (ACTION_GROUP *aGroup, const TOOL_ACTION &aAction)
 Update a group toolbar item to look like a specific action. More...
 
void popupPalette (wxAuiToolBarItem *aItem)
 Popup the ACTION_TOOLBAR_PALETTE associated with the ACTION_GROUP of the given toolbar item. More...
 
void onMouseClick (wxMouseEvent &aEvent)
 

Handler for a mouse up/down event

More...
 
void onItemDrag (wxAuiToolBarEvent &aEvent)
 

Handler for when a drag event occurs on an item

More...
 
void onToolEvent (wxAuiToolBarEvent &aEvent)
 

The default tool event handler

More...
 
void onToolRightClick (wxAuiToolBarEvent &aEvent)
 

Handle a right-click on a menu item

More...
 
void onPaletteEvent (wxCommandEvent &aEvent)
 

Handle the button select inside the palette

More...
 
void onTimerDone (wxTimerEvent &aEvent)
 

Handle the palette timer triggering

More...
 
void OnCustomRender (wxDC &aDc, const wxAuiToolBarItem &aItem, const wxRect &aRect) override
 

Render the triangle in the lower-right corner that represents that an action pallette is available for an item

More...
 

Protected Attributes

wxTimer * m_paletteTimer
 
wxAuiManager * m_auiManager
 
TOOL_MANAGERm_toolManager
 
ACTION_TOOLBAR_PALETTEm_palette
 
std::map< int, bool > m_toolKinds
 
std::map< int, bool > m_toolCancellable
 
std::map< int, const TOOL_ACTION * > m_toolActions
 
std::map< int, ACTION_GROUP * > m_actionGroups
 
std::map< int, std::unique_ptr< ACTION_MENU > > m_toolMenus
 

Detailed Description

ACTION_TOOLBAR.

Defines the structure of a toolbar with buttons that invoke ACTIONs.

Definition at line 186 of file action_toolbar.h.

Constructor & Destructor Documentation

◆ ACTION_TOOLBAR()

ACTION_TOOLBAR::ACTION_TOOLBAR ( EDA_BASE_FRAME parent,
wxWindowID  id = wxID_ANY,
const wxPoint &  pos = wxDefaultPosition,
const wxSize &  size = wxDefaultSize,
long  style = wxAUI_TB_DEFAULT_STYLE 
)

Definition at line 162 of file action_toolbar.cpp.

163  :
164  wxAuiToolBar( parent, id, pos, size, style ),
165  m_paletteTimer( nullptr ),
166  m_auiManager( nullptr ),
167  m_toolManager( parent->GetToolManager() ),
168  m_palette( nullptr )
169 {
170  m_paletteTimer = new wxTimer( this );
171 
172  Connect( wxEVT_COMMAND_TOOL_CLICKED, wxAuiToolBarEventHandler( ACTION_TOOLBAR::onToolEvent ),
173  NULL, this );
174  Connect( wxEVT_AUITOOLBAR_RIGHT_CLICK, wxAuiToolBarEventHandler( ACTION_TOOLBAR::onToolRightClick ),
175  NULL, this );
176  Connect( wxEVT_AUITOOLBAR_BEGIN_DRAG, wxAuiToolBarEventHandler( ACTION_TOOLBAR::onItemDrag ),
177  NULL, this );
178  Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( ACTION_TOOLBAR::onMouseClick ),
179  NULL, this );
180  Connect( wxEVT_LEFT_UP, wxMouseEventHandler( ACTION_TOOLBAR::onMouseClick ),
181  NULL, this );
182  Connect( m_paletteTimer->GetId(), wxEVT_TIMER, wxTimerEventHandler( ACTION_TOOLBAR::onTimerDone ),
183  NULL, this );
184 }
void onItemDrag(wxAuiToolBarEvent &aEvent)
Handler for when a drag event occurs on an item
void onToolRightClick(wxAuiToolBarEvent &aEvent)
Handle a right-click on a menu item
void onTimerDone(wxTimerEvent &aEvent)
Handle the palette timer triggering
void onToolEvent(wxAuiToolBarEvent &aEvent)
The default tool event handler
void onMouseClick(wxMouseEvent &aEvent)
Handler for a mouse up/down event
#define NULL
ACTION_TOOLBAR_PALETTE * m_palette
wxAuiManager * m_auiManager
TOOL_MANAGER * m_toolManager
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:76
wxTimer * m_paletteTimer

References m_paletteTimer, NULL, onItemDrag(), onMouseClick(), onTimerDone(), onToolEvent(), and onToolRightClick().

◆ ~ACTION_TOOLBAR()

ACTION_TOOLBAR::~ACTION_TOOLBAR ( )
virtual

Definition at line 187 of file action_toolbar.cpp.

188 {
189  delete m_paletteTimer;
190 
191  // Clear all the maps keeping track of our items on the toolbar
192  m_toolMenus.clear();
193  m_actionGroups.clear();
194  m_toolCancellable.clear();
195  m_toolKinds.clear();
196  m_toolActions.clear();
197 }
std::map< int, const TOOL_ACTION * > m_toolActions
std::map< int, bool > m_toolCancellable
std::map< int, std::unique_ptr< ACTION_MENU > > m_toolMenus
std::map< int, ACTION_GROUP * > m_actionGroups
std::map< int, bool > m_toolKinds
wxTimer * m_paletteTimer

References m_actionGroups, m_paletteTimer, m_toolActions, m_toolCancellable, m_toolKinds, and m_toolMenus.

Member Function Documentation

◆ Add()

void ACTION_TOOLBAR::Add ( const TOOL_ACTION aAction,
bool  aIsToggleEntry = false,
bool  aIsCancellable = false 
)

Adds a TOOL_ACTION-based button to the toolbar.

After selecting the entry, a TOOL_EVENT command containing name of the action is sent.

Parameters
aActionis the action to add
aIsToggleEntrymakes the toolbar item a toggle entry when true
aIsCancellablewhen true, cancels the tool if clicked when tool is active

Definition at line 200 of file action_toolbar.cpp.

201 {
202  wxASSERT_MSG( !( aIsCancellable && !aIsToggleEntry ), "aIsCancellable requires aIsToggleEntry" );
203 
204  wxWindow* parent = dynamic_cast<wxWindow*>( m_toolManager->GetToolHolder() );
205  int toolId = aAction.GetUIId();
206 
207  AddTool( toolId, wxEmptyString, KiScaledBitmap( aAction.GetIcon(), parent ),
208  aAction.GetDescription(), aIsToggleEntry ? wxITEM_CHECK : wxITEM_NORMAL );
209 
210  m_toolKinds[ toolId ] = aIsToggleEntry;
211  m_toolActions[ toolId ] = &aAction;
212  m_toolCancellable[ toolId ] = aIsCancellable;
213 }
int GetUIId() const
Definition: tool_action.h:102
std::map< int, const TOOL_ACTION * > m_toolActions
wxBitmap KiScaledBitmap(BITMAP_DEF aBitmap, wxWindow *aWindow)
Construct a wxBitmap from a memory record, scaling it if device DPI demands it.
Definition: bitmap.cpp:118
const BITMAP_OPAQUE * GetIcon() const
Returns an icon associated with the action.
Definition: tool_action.h:155
std::map< int, bool > m_toolCancellable
wxString GetDescription(bool aIncludeHotkey=true) const
Definition: tool_action.cpp:83
TOOLS_HOLDER * GetToolHolder() const
Definition: tool_manager.h:301
TOOL_MANAGER * m_toolManager
std::map< int, bool > m_toolKinds

References TOOL_ACTION::GetDescription(), TOOL_ACTION::GetIcon(), TOOL_MANAGER::GetToolHolder(), TOOL_ACTION::GetUIId(), KiScaledBitmap(), m_toolActions, m_toolCancellable, m_toolKinds, and m_toolManager.

Referenced by KICAD_MANAGER_FRAME::RecreateBaseHToolbar(), DISPLAY_FOOTPRINTS_FRAME::ReCreateHToolbar(), LIB_VIEW_FRAME::ReCreateHToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateHToolbar(), PL_EDITOR_FRAME::ReCreateHToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateHToolbar(), FOOTPRINT_WIZARD_FRAME::ReCreateHToolbar(), CVPCB_MAINFRAME::ReCreateHToolbar(), SCH_EDIT_FRAME::ReCreateHToolbar(), GERBVIEW_FRAME::ReCreateHToolbar(), LIB_EDIT_FRAME::ReCreateHToolbar(), PCB_EDIT_FRAME::ReCreateHToolbar(), KICAD_MANAGER_FRAME::RecreateLauncher(), EDA_3D_VIEWER::ReCreateMainToolbar(), DISPLAY_FOOTPRINTS_FRAME::ReCreateOptToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateOptToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateOptToolbar(), SCH_EDIT_FRAME::ReCreateOptToolbar(), LIB_EDIT_FRAME::ReCreateOptToolbar(), GERBVIEW_FRAME::ReCreateOptToolbar(), PCB_EDIT_FRAME::ReCreateOptToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateVToolbar(), PL_EDITOR_FRAME::ReCreateVToolbar(), SCH_EDIT_FRAME::ReCreateVToolbar(), LIB_EDIT_FRAME::ReCreateVToolbar(), and PCB_EDIT_FRAME::ReCreateVToolbar().

◆ AddButton()

void ACTION_TOOLBAR::AddButton ( const TOOL_ACTION aAction)

Adds a large button such as used in the Kicad Manager Frame's launch bar.

Parameters
aAction

Definition at line 216 of file action_toolbar.cpp.

217 {
218  wxWindow* parent = dynamic_cast<wxWindow*>( m_toolManager->GetToolHolder() );
219  int toolId = aAction.GetUIId();
220 
221  AddTool( toolId, wxEmptyString, KiScaledBitmap( aAction.GetIcon(), parent ),
222  aAction.GetName(), wxITEM_NORMAL );
223 
224  m_toolKinds[ toolId ] = false;
225  m_toolActions[ toolId ] = &aAction;
226 }
int GetUIId() const
Definition: tool_action.h:102
std::map< int, const TOOL_ACTION * > m_toolActions
wxBitmap KiScaledBitmap(BITMAP_DEF aBitmap, wxWindow *aWindow)
Construct a wxBitmap from a memory record, scaling it if device DPI demands it.
Definition: bitmap.cpp:118
const BITMAP_OPAQUE * GetIcon() const
Returns an icon associated with the action.
Definition: tool_action.h:155
TOOLS_HOLDER * GetToolHolder() const
Definition: tool_manager.h:301
TOOL_MANAGER * m_toolManager
std::map< int, bool > m_toolKinds
const std::string & GetName() const
Returns name of the action.
Definition: tool_action.h:75

References TOOL_ACTION::GetIcon(), TOOL_ACTION::GetName(), TOOL_MANAGER::GetToolHolder(), TOOL_ACTION::GetUIId(), KiScaledBitmap(), m_toolActions, m_toolKinds, and m_toolManager.

◆ AddGroup()

void ACTION_TOOLBAR::AddGroup ( ACTION_GROUP aGroup,
bool  aIsToggleEntry = false 
)

Add a set of actions to a toolbar as a group.

One action from the group will be displayed at a time.

Parameters
aGroupis the group to add. The first action in the group will be the first shown on the toolbar.
aIsToggleEntrymakes the toolbar item a toggle entry when true

Definition at line 255 of file action_toolbar.cpp.

256 {
257  int groupId = aGroup->GetUIId();
258  const TOOL_ACTION* defaultAction = aGroup->GetDefaultAction();
259  wxWindow* parent = dynamic_cast<wxWindow*>( m_toolManager->GetToolHolder() );
260 
261  wxASSERT( defaultAction );
262 
263  m_toolKinds[ groupId ] = aIsToggleEntry;
264  m_toolActions[ groupId ] = defaultAction;
265  m_actionGroups[ groupId ] = aGroup;
266 
267  // Add the main toolbar item representing the group
268  AddTool( groupId, wxEmptyString, KiScaledBitmap( defaultAction->GetIcon(), parent ),
269  wxEmptyString, aIsToggleEntry ? wxITEM_CHECK : wxITEM_NORMAL );
270 
271  // Select the default action
272  doSelectAction( aGroup, *defaultAction );
273 }
std::map< int, const TOOL_ACTION * > m_toolActions
wxBitmap KiScaledBitmap(BITMAP_DEF aBitmap, wxWindow *aWindow)
Construct a wxBitmap from a memory record, scaling it if device DPI demands it.
Definition: bitmap.cpp:118
const BITMAP_OPAQUE * GetIcon() const
Returns an icon associated with the action.
Definition: tool_action.h:155
void doSelectAction(ACTION_GROUP *aGroup, const TOOL_ACTION &aAction)
Update a group toolbar item to look like a specific action.
TOOLS_HOLDER * GetToolHolder() const
Definition: tool_manager.h:301
const TOOL_ACTION * GetDefaultAction() const
Get the default action to use when first creating this group's toolbar palette icon.
TOOL_MANAGER * m_toolManager
std::map< int, ACTION_GROUP * > m_actionGroups
Represents a single user action.
Definition: tool_action.h:44
int GetUIId() const
Get the ID used in the UI to reference this group.
std::map< int, bool > m_toolKinds

References doSelectAction(), ACTION_GROUP::GetDefaultAction(), TOOL_ACTION::GetIcon(), TOOL_MANAGER::GetToolHolder(), ACTION_GROUP::GetUIId(), KiScaledBitmap(), m_actionGroups, m_toolActions, m_toolKinds, and m_toolManager.

Referenced by PCB_EDIT_FRAME::ReCreateVToolbar().

◆ AddScaledSeparator()

void ACTION_TOOLBAR::AddScaledSeparator ( wxWindow *  aWindow)

Add a separator that introduces space on either side to not squash the tools when scaled.

Parameters
aWindowis the window to get the scaling factor of

Definition at line 229 of file action_toolbar.cpp.

230 {
231  int scale = Pgm().GetCommonSettings()->m_Appearance.icon_scale;
232 
233  if( scale == 0 )
234  scale = KiIconScale( aWindow );
235 
236  if( scale > 4 )
237  AddSpacer( 16 * ( scale - 4 ) / 4 );
238 
239  AddSeparator();
240 
241  if( scale > 4 )
242  AddSpacer( 16 * ( scale - 4 ) / 4 );
243 }
int KiIconScale(wxWindow *aWindow)
Return the automatic scale factor that would be used for a given window by KiScaledBitmap and KiScale...
Definition: bitmap.cpp:92
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:102
const int scale

References KiIconScale(), Pgm(), and scale.

Referenced by GERBVIEW_FRAME::ReCreateAuxiliaryToolbar(), PCB_EDIT_FRAME::ReCreateAuxiliaryToolbar(), KICAD_MANAGER_FRAME::RecreateBaseHToolbar(), DISPLAY_FOOTPRINTS_FRAME::ReCreateHToolbar(), LIB_VIEW_FRAME::ReCreateHToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateHToolbar(), PL_EDITOR_FRAME::ReCreateHToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateHToolbar(), FOOTPRINT_WIZARD_FRAME::ReCreateHToolbar(), CVPCB_MAINFRAME::ReCreateHToolbar(), SCH_EDIT_FRAME::ReCreateHToolbar(), GERBVIEW_FRAME::ReCreateHToolbar(), LIB_EDIT_FRAME::ReCreateHToolbar(), PCB_EDIT_FRAME::ReCreateHToolbar(), KICAD_MANAGER_FRAME::RecreateLauncher(), EDA_3D_VIEWER::ReCreateMainToolbar(), DISPLAY_FOOTPRINTS_FRAME::ReCreateOptToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateOptToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateOptToolbar(), GERBVIEW_FRAME::ReCreateOptToolbar(), PCB_EDIT_FRAME::ReCreateOptToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateVToolbar(), PL_EDITOR_FRAME::ReCreateVToolbar(), SCH_EDIT_FRAME::ReCreateVToolbar(), LIB_EDIT_FRAME::ReCreateVToolbar(), and PCB_EDIT_FRAME::ReCreateVToolbar().

◆ AddToolContextMenu()

void ACTION_TOOLBAR::AddToolContextMenu ( const TOOL_ACTION aAction,
std::unique_ptr< ACTION_MENU aMenu 
)

Add a context menu to a specific tool item on the toolbar.

This toolbar gets ownership of the menu object, and will delete it when the ClearToolbar() function is called.

Parameters
aActionis the action to get the menu
aMenuis the context menu

Definition at line 246 of file action_toolbar.cpp.

248 {
249  int toolId = aAction.GetUIId();
250 
251  m_toolMenus[toolId] = std::move( aMenu );
252 }
int GetUIId() const
Definition: tool_action.h:102
std::map< int, std::unique_ptr< ACTION_MENU > > m_toolMenus

References TOOL_ACTION::GetUIId(), and m_toolMenus.

Referenced by FOOTPRINT_EDIT_FRAME::ReCreateOptToolbar(), SCH_EDIT_FRAME::ReCreateOptToolbar(), LIB_EDIT_FRAME::ReCreateOptToolbar(), PCB_EDIT_FRAME::ReCreateOptToolbar(), and PCB_EDIT_FRAME::ReCreateVToolbar().

◆ ClearToolbar()

void ACTION_TOOLBAR::ClearToolbar ( )

Clear the toolbar and remove all associated menus.

Definition at line 324 of file action_toolbar.cpp.

325 {
326  // Clear all the maps keeping track of our items on the toolbar
327  m_toolMenus.clear();
328  m_actionGroups.clear();
329  m_toolCancellable.clear();
330  m_toolKinds.clear();
331  m_toolActions.clear();
332 
333  // Remove the actual tools from the toolbar
334  Clear();
335 }
std::map< int, const TOOL_ACTION * > m_toolActions
std::map< int, bool > m_toolCancellable
std::map< int, std::unique_ptr< ACTION_MENU > > m_toolMenus
std::map< int, ACTION_GROUP * > m_actionGroups
std::map< int, bool > m_toolKinds

References m_actionGroups, m_toolActions, m_toolCancellable, m_toolKinds, and m_toolMenus.

Referenced by GERBVIEW_FRAME::ReCreateAuxiliaryToolbar(), KICAD_MANAGER_FRAME::RecreateBaseHToolbar(), DISPLAY_FOOTPRINTS_FRAME::ReCreateHToolbar(), LIB_VIEW_FRAME::ReCreateHToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateHToolbar(), PL_EDITOR_FRAME::ReCreateHToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateHToolbar(), FOOTPRINT_WIZARD_FRAME::ReCreateHToolbar(), CVPCB_MAINFRAME::ReCreateHToolbar(), SCH_EDIT_FRAME::ReCreateHToolbar(), GERBVIEW_FRAME::ReCreateHToolbar(), LIB_EDIT_FRAME::ReCreateHToolbar(), PCB_EDIT_FRAME::ReCreateHToolbar(), EDA_3D_VIEWER::ReCreateMainToolbar(), DISPLAY_FOOTPRINTS_FRAME::ReCreateOptToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateOptToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateOptToolbar(), SCH_EDIT_FRAME::ReCreateOptToolbar(), LIB_EDIT_FRAME::ReCreateOptToolbar(), GERBVIEW_FRAME::ReCreateOptToolbar(), PCB_EDIT_FRAME::ReCreateOptToolbar(), FOOTPRINT_EDIT_FRAME::ReCreateVToolbar(), PL_EDITOR_FRAME::ReCreateVToolbar(), SCH_EDIT_FRAME::ReCreateVToolbar(), LIB_EDIT_FRAME::ReCreateVToolbar(), and PCB_EDIT_FRAME::ReCreateVToolbar().

◆ doSelectAction()

void ACTION_TOOLBAR::doSelectAction ( ACTION_GROUP aGroup,
const TOOL_ACTION aAction 
)
protected

Update a group toolbar item to look like a specific action.

Note: This function does not verify that the action is inside the group.

Definition at line 290 of file action_toolbar.cpp.

291 {
292  int groupId = aGroup->GetUIId();
293 
294  wxAuiToolBarItem* item = FindTool( groupId );
295  wxWindow* parent = dynamic_cast<wxWindow*>( m_toolManager->GetToolHolder() );
296 
297  if( !item )
298  return;
299 
300  // Update the item information
301  item->SetShortHelp( aAction.GetDescription() );
302  item->SetBitmap( KiScaledBitmap( aAction.GetIcon(), parent ) );
303  item->SetDisabledBitmap( item->GetBitmap().ConvertToDisabled() );
304 
305  // Register a new handler with the new UI conditions
306  if( m_toolManager )
307  {
308  const ACTION_CONDITIONS* cond = m_toolManager->GetActionManager()->GetCondition( aAction );
309 
310  wxASSERT_MSG( cond, wxString::Format( "Missing UI condition for action %s",
311  aAction.GetName() ) );
312 
315  }
316 
317  // Update the currently selected action
318  m_toolActions[ groupId ] = &aAction;
319 
320  Refresh();
321 }
virtual void UnregisterUIUpdateHandler(const TOOL_ACTION &aAction)
Unregister a UI handler for an action that was registered using RegisterUIUpdateHandler.
Definition: tools_holder.h:105
std::map< int, const TOOL_ACTION * > m_toolActions
wxBitmap KiScaledBitmap(BITMAP_DEF aBitmap, wxWindow *aWindow)
Construct a wxBitmap from a memory record, scaling it if device DPI demands it.
Definition: bitmap.cpp:118
const BITMAP_OPAQUE * GetIcon() const
Returns an icon associated with the action.
Definition: tool_action.h:155
void Refresh()
Update the board display after modifying it by a python script (note: it is automatically called by a...
wxString GetDescription(bool aIncludeHotkey=true) const
Definition: tool_action.cpp:83
TOOLS_HOLDER * GetToolHolder() const
Definition: tool_manager.h:301
TOOL_MANAGER * m_toolManager
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:201
ACTION_MANAGER * GetActionManager()
Definition: tool_manager.h:200
Functors that can be used to figure out how the action controls should be displayed in the UI and if ...
int GetUIId() const
Get the ID used in the UI to reference this group.
const ACTION_CONDITIONS * GetCondition(const TOOL_ACTION &aAction) const
Get the conditions to use for a specific tool action.
virtual void RegisterUIUpdateHandler(const TOOL_ACTION &aAction, const ACTION_CONDITIONS &aConditions)
Register an action's update conditions with the UI layer to allow the UI to appropriately display the...
Definition: tools_holder.h:85
const std::string & GetName() const
Returns name of the action.
Definition: tool_action.h:75

References Format(), TOOL_MANAGER::GetActionManager(), ACTION_MANAGER::GetCondition(), TOOL_ACTION::GetDescription(), TOOL_ACTION::GetIcon(), TOOL_ACTION::GetName(), TOOL_MANAGER::GetToolHolder(), ACTION_GROUP::GetUIId(), KiScaledBitmap(), m_toolActions, m_toolManager, Refresh(), TOOLS_HOLDER::RegisterUIUpdateHandler(), and TOOLS_HOLDER::UnregisterUIUpdateHandler().

Referenced by AddGroup(), onPaletteEvent(), and SelectAction().

◆ OnCustomRender()

void ACTION_TOOLBAR::OnCustomRender ( wxDC &  aDc,
const wxAuiToolBarItem &  aItem,
const wxRect &  aRect 
)
overrideprotected

Render the triangle in the lower-right corner that represents that an action pallette is available for an item

Definition at line 665 of file action_toolbar.cpp.

667 {
668  auto it = m_actionGroups.find( aItem.GetId() );
669 
670  if( it == m_actionGroups.end() )
671  return;
672 
673  // Choose the color to draw the triangle
674  wxColour clr;
675 
676  if( aItem.GetState() & wxAUI_BUTTON_STATE_DISABLED )
677  clr = wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT );
678  else
679  clr = wxSystemSettings::GetColour( wxSYS_COLOUR_BTNTEXT );
680 
681  // Must set both the pen (for the outline) and the brush (for the polygon fill)
682  aDc.SetPen( wxPen( clr ) );
683  aDc.SetBrush( wxBrush( clr ) );
684 
685  // Make the side length of the triangle approximately 1/5th of the bitmap
686  int sideLength = KiROUND( aRect.height / 5.0 );
687 
688  // This will create a triangle with its point at the bottom right corner,
689  // and its other two corners along the right and bottom sides
690  wxPoint btmRight = aRect.GetBottomRight();
691  wxPoint topCorner( btmRight.x, btmRight.y - sideLength );
692  wxPoint btmCorner( btmRight.x - sideLength, btmRight.y );
693 
694  wxPointList points;
695  points.Append( &btmRight );
696  points.Append( &topCorner );
697  points.Append( &btmCorner );
698 
699  aDc.DrawPolygon( &points );
700 }
std::map< int, ACTION_GROUP * > m_actionGroups
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:68

References KiROUND(), and m_actionGroups.

◆ onItemDrag()

void ACTION_TOOLBAR::onItemDrag ( wxAuiToolBarEvent &  aEvent)
protected

Handler for when a drag event occurs on an item

Definition at line 480 of file action_toolbar.cpp.

481 {
482  int toolId = aEvent.GetToolId();
483 
484  if( m_actionGroups.find( toolId ) != m_actionGroups.end() )
485  {
486  wxAuiToolBarItem* item = FindTool( toolId );
487 
488  // Use call after because opening the palette from a mouse handler
489  // creates a weird mouse state that causes problems on OSX.
490  CallAfter( &ACTION_TOOLBAR::popupPalette, item );
491 
492  // Don't skip this event since we are handling it
493  return;
494  }
495 
496  // Skip since we don't care about it
497  aEvent.Skip();
498 }
void popupPalette(wxAuiToolBarItem *aItem)
Popup the ACTION_TOOLBAR_PALETTE associated with the ACTION_GROUP of the given toolbar item.
std::map< int, ACTION_GROUP * > m_actionGroups

References m_actionGroups, and popupPalette().

Referenced by ACTION_TOOLBAR().

◆ onMouseClick()

void ACTION_TOOLBAR::onMouseClick ( wxMouseEvent &  aEvent)
protected

Handler for a mouse up/down event

Definition at line 452 of file action_toolbar.cpp.

453 {
454  wxAuiToolBarItem* item = FindToolByPosition( aEvent.GetX(), aEvent.GetY() );
455 
456  if( item )
457  {
458  // Ensure there is no active palette
459  if( m_palette )
460  {
461  m_palette->Hide();
462  m_palette->Destroy();
463  m_palette = nullptr;
464  }
465 
466  // Start the popup conditions if it is a left mouse click and the tool clicked is a group
467  if( aEvent.LeftDown() && ( m_actionGroups.find( item->GetId() ) != m_actionGroups.end() ) )
468  m_paletteTimer->StartOnce( PALETTE_OPEN_DELAY );
469 
470  // Clear the popup conditions if it is a left up, because that implies a click happened
471  if( aEvent.LeftUp() )
472  m_paletteTimer->Stop();
473  }
474 
475  // Skip the event so wx can continue processing the mouse event
476  aEvent.Skip();
477 }
#define PALETTE_OPEN_DELAY
ACTION_TOOLBAR_PALETTE * m_palette
std::map< int, ACTION_GROUP * > m_actionGroups
wxTimer * m_paletteTimer

References m_actionGroups, m_palette, m_paletteTimer, and PALETTE_OPEN_DELAY.

Referenced by ACTION_TOOLBAR().

◆ onPaletteEvent()

void ACTION_TOOLBAR::onPaletteEvent ( wxCommandEvent &  aEvent)
protected

Handle the button select inside the palette

Definition at line 513 of file action_toolbar.cpp.

514 {
515  if( !m_palette )
516  return;
517 
518  OPT_TOOL_EVENT evt;
519  ACTION_GROUP* group = m_palette->GetGroup();
520 
521  // Find the action corresponding to the button press
522  auto actionIt = std::find_if( group->GetActions().begin(), group->GetActions().end(),
523  [=]( const TOOL_ACTION* aAction )
524  {
525  return aAction->GetUIId() == aEvent.GetId();
526  } );
527 
528  if( actionIt != group->GetActions().end() )
529  {
530  const TOOL_ACTION* action = *actionIt;
531 
532  // Dispatch a tool event
533  evt = action->MakeEvent();
534  evt->SetHasPosition( false );
535  m_toolManager->ProcessEvent( *evt );
536 
537  // Update the main toolbar item with the selected action
538  doSelectAction( group, *action );
539  }
540 
541  // Hide the palette
542  m_palette->Hide();
543  m_palette->Destroy();
544  m_palette = nullptr;
545 }
ACTION_GROUP * GetGroup()
A group of actions that will be displayed together on a toolbar palette.
void doSelectAction(ACTION_GROUP *aGroup, const TOOL_ACTION &aAction)
Update a group toolbar item to look like a specific action.
bool ProcessEvent(const TOOL_EVENT &aEvent)
Propagates an event to tools that requested events of matching type(s).
ACTION_TOOLBAR_PALETTE * m_palette
TOOL_MANAGER * m_toolManager
Represents a single user action.
Definition: tool_action.h:44
TOOL_EVENT MakeEvent() const
Returns the event associated with the action (i.e.
Definition: tool_action.h:113
const std::vector< const TOOL_ACTION * > & GetActions() const
Get a vector of all the actions contained inside this group.
void SetHasPosition(bool aHasPosition)
Definition: tool_event.h:261
OPT< TOOL_EVENT > OPT_TOOL_EVENT
Definition: tool_event.h:556

References doSelectAction(), ACTION_GROUP::GetActions(), ACTION_TOOLBAR_PALETTE::GetGroup(), m_palette, m_toolManager, TOOL_ACTION::MakeEvent(), TOOL_MANAGER::ProcessEvent(), and TOOL_EVENT::SetHasPosition().

Referenced by popupPalette().

◆ onTimerDone()

void ACTION_TOOLBAR::onTimerDone ( wxTimerEvent &  aEvent)
protected

Handle the palette timer triggering

Definition at line 501 of file action_toolbar.cpp.

502 {
503  // We need to search for the tool using the client coordinates
504  wxPoint mousePos = ScreenToClient( wxGetMousePosition() );
505 
506  wxAuiToolBarItem* item = FindToolByPosition( mousePos.x, mousePos.y );
507 
508  if( item )
509  popupPalette( item );
510 }
void popupPalette(wxAuiToolBarItem *aItem)
Popup the ACTION_TOOLBAR_PALETTE associated with the ACTION_GROUP of the given toolbar item.

References popupPalette().

Referenced by ACTION_TOOLBAR().

◆ onToolEvent()

void ACTION_TOOLBAR::onToolEvent ( wxAuiToolBarEvent &  aEvent)
protected

The default tool event handler

Definition at line 372 of file action_toolbar.cpp.

373 {
374  int id = aEvent.GetId();
375  wxEventType type = aEvent.GetEventType();
376  OPT_TOOL_EVENT evt;
377 
378  bool handled = false;
379 
380  if( m_toolManager && type == wxEVT_COMMAND_TOOL_CLICKED && id >= TOOL_ACTION::GetBaseUIId() )
381  {
382  const auto actionIt = m_toolActions.find( id );
383 
384  // The toolbar item is toggled before the event is sent, so we check for it not being
385  // toggled to see if it was toggled originally
386  if( m_toolCancellable[id] && !GetToolToggled( id ) )
387  {
388  // Send a cancel event
390  handled = true;
391  }
392  else if( actionIt != m_toolActions.end() )
393  {
394  // Dispatch a tool event
395  evt = actionIt->second->MakeEvent();
396  evt->SetHasPosition( false );
397  m_toolManager->ProcessEvent( *evt );
398  handled = true;
399  }
400  }
401 
402  // Skip the event if we don't handle it
403  if( !handled )
404  aEvent.Skip();
405 }
std::map< int, const TOOL_ACTION * > m_toolActions
static int GetBaseUIId()
Definition: tool_action.h:107
bool ProcessEvent(const TOOL_EVENT &aEvent)
Propagates an event to tools that requested events of matching type(s).
std::map< int, bool > m_toolCancellable
TOOL_MANAGER * m_toolManager
void CancelTool()
Send a cancel event to the tool currently at the top of the tool stack.
OPT< TOOL_EVENT > OPT_TOOL_EVENT
Definition: tool_event.h:556

References TOOL_MANAGER::CancelTool(), TOOL_ACTION::GetBaseUIId(), m_toolActions, m_toolCancellable, m_toolManager, and TOOL_MANAGER::ProcessEvent().

Referenced by ACTION_TOOLBAR().

◆ onToolRightClick()

void ACTION_TOOLBAR::onToolRightClick ( wxAuiToolBarEvent &  aEvent)
protected

Handle a right-click on a menu item

Definition at line 408 of file action_toolbar.cpp.

409 {
410  int toolId = aEvent.GetToolId();
411 
412  // This means the event was not on a button
413  if( toolId == -1 )
414  return;
415 
416  // Ensure that the ID used maps to a proper tool ID.
417  // If right-clicked on a group item, this is needed to get the ID of the currently selected
418  // action, since the event's ID is that of the group.
419  const auto actionIt = m_toolActions.find( toolId );
420 
421  if( actionIt != m_toolActions.end() )
422  toolId = actionIt->second->GetUIId();
423 
424  // Find the menu for the action
425  const auto menuIt = m_toolMenus.find( toolId );
426 
427  if( menuIt == m_toolMenus.end() )
428  return;
429 
430  // Update and show the menu
431  std::unique_ptr<ACTION_MENU>& owningMenu = menuIt->second;
432 
433  // Get the actual menu pointer to show it
434  ACTION_MENU* menu = owningMenu.get();
435  SELECTION dummySel;
436 
437  if( CONDITIONAL_MENU* condMenu = dynamic_cast<CONDITIONAL_MENU*>( menu ) )
438  condMenu->Evaluate( dummySel );
439 
440  menu->UpdateAll();
441  PopupMenu( menu );
442 
443  // Remove hovered item when the menu closes, otherwise it remains hovered even if the
444  // mouse is not on the toolbar
445  SetHoverItem( nullptr );
446 }
Defines the structure of a menu based on ACTIONs.
Definition: action_menu.h:43
void UpdateAll()
Runs update handlers for the menu and its submenus.
std::map< int, const TOOL_ACTION * > m_toolActions
std::map< int, std::unique_ptr< ACTION_MENU > > m_toolMenus

References m_toolActions, m_toolMenus, and ACTION_MENU::UpdateAll().

Referenced by ACTION_TOOLBAR().

◆ popupPalette()

void ACTION_TOOLBAR::popupPalette ( wxAuiToolBarItem *  aItem)
protected

Popup the ACTION_TOOLBAR_PALETTE associated with the ACTION_GROUP of the given toolbar item.

Definition at line 548 of file action_toolbar.cpp.

549 {
550  // Clear all popup conditions
551  m_paletteTimer->Stop();
552 
553  wxWindow* parent = dynamic_cast<wxWindow*>( m_toolManager->GetToolHolder() );
554 
555  wxASSERT( m_auiManager );
556  wxASSERT( parent );
557 
558  // Ensure the item we are using for the palette has a group associated with it.
559  const auto it = m_actionGroups.find( aItem->GetId() );
560 
561  if( it == m_actionGroups.end() )
562  return;
563 
564  ACTION_GROUP* group = it->second;
565 
566  wxAuiPaneInfo& pane = m_auiManager->GetPane( this );
567 
568  // We use the size of the toolbar items for our palette buttons
569  wxRect toolRect = GetToolRect( aItem->GetId() );
570 
571  // The position for the palette window must be in screen coordinates
572  wxPoint pos( ClientToScreen( toolRect.GetPosition() ) );
573 
574  // True for vertical buttons, false for horizontal
575  bool dir = true;
576  size_t numActions = group->m_actions.size();
577 
578  // The size of the palette in the long dimension
579  int paletteLongDim = ( 2 * PALETTE_BORDER ) // The border on all sides of the buttons
580  + ( BUTTON_BORDER ) // The border on the start of the buttons
581  + ( numActions * BUTTON_BORDER ) // The other button borders
582  + ( numActions * toolRect.GetHeight() ); // The size of the buttons
583 
584  // Determine the position of the top left corner of the palette window
585  switch( pane.dock_direction )
586  {
587  case wxAUI_DOCK_TOP:
588  // Top toolbars need to shift the palette window down by the toolbar padding
589  dir = true; // Buttons are vertical in the palette
590  pos = ClientToScreen( toolRect.GetBottomLeft() );
591  pos += wxPoint( -PALETTE_BORDER, // Shift left to align the button edges
592  m_bottomPadding ); // Shift down to move away from the toolbar
593  break;
594 
595  case wxAUI_DOCK_BOTTOM:
596  // Bottom toolbars need to shift the palette window up by its height (all buttons + border + toolbar padding)
597  dir = true; // Buttons are vertical in the palette
598  pos = ClientToScreen( toolRect.GetTopLeft() );
599  pos += wxPoint( -PALETTE_BORDER, // Shift left to align the button
600  -( paletteLongDim + m_topPadding ) ); // Shift up by the entire length of the palette
601  break;
602 
603  case wxAUI_DOCK_LEFT:
604  // Left toolbars need to shift the palette window up by the toolbar padding
605  dir = false; // Buttons are horizontal in the palette
606  pos = ClientToScreen( toolRect.GetTopRight() );
607  pos += wxPoint( m_rightPadding, // Shift right to move away from the toolbar
608  -( PALETTE_BORDER + BUTTON_BORDER ) ); // Shift up to align the button tops
609  break;
610 
611  case wxAUI_DOCK_RIGHT:
612  // Right toolbars need to shift the palette window left by its width (all buttons + border + toolbar padding)
613  dir = false; // Buttons are horizontal in the palette
614  pos = ClientToScreen( toolRect.GetTopLeft() );
615  pos += wxPoint( -( paletteLongDim + m_leftPadding ), // Shift left by the entire length of the palette
616  -( PALETTE_BORDER + BUTTON_BORDER ) ); // Shift up to align the button
617  break;
618  }
619 
620  m_palette = new ACTION_TOOLBAR_PALETTE( parent, dir );
621 
622  // We handle the button events in the toolbar class, so connect the right handler
623  m_palette->SetGroup( group );
624  m_palette->SetButtonSize( toolRect );
625  m_palette->Connect( wxEVT_BUTTON, wxCommandEventHandler( ACTION_TOOLBAR::onPaletteEvent ),
626  NULL, this );
627 
628 
629  // Add the actions in the group to the palette and update their state
630  for( const TOOL_ACTION* action : group->m_actions )
631  {
632  wxUpdateUIEvent evt( action->GetUIId() );
633 
634  parent->ProcessWindowEvent( evt );
635 
636  m_palette->AddAction( *action );
637 
638  if( evt.GetSetChecked() )
639  m_palette->CheckAction( *action, evt.GetChecked() );
640 
641  if( evt.GetSetEnabled() )
642  m_palette->EnableAction( *action, evt.GetEnabled() );
643  }
644 
645  // Release the mouse to ensure the first click will be recognized in the palette
646  ReleaseMouse();
647 
648  m_palette->SetPosition( pos );
649  m_palette->Popup();
650 
651  // Clear the mouse state on the toolbar because otherwise wxWidgets gets confused
652  // and won't properly display any highlighted items after the palette is closed.
653  // (This is the equivalent of calling the DoResetMouseState() private function)
654  RefreshOverflowState();
655  SetHoverItem( nullptr );
656  SetPressedItem( nullptr );
657 
658  m_dragging = false;
659  m_tipItem = nullptr;
660  m_actionPos = wxPoint( -1, -1 );
661  m_actionItem = nullptr;
662 }
void CheckAction(const TOOL_ACTION &aAction, bool aCheck=true)
Check/Toggle the button for an action on the palette.
int GetUIId() const
Definition: tool_action.h:102
void SetButtonSize(wxRect &aSize)
Set the size all the buttons on this palette should be.
A group of actions that will be displayed together on a toolbar palette.
void AddAction(const TOOL_ACTION &aAction)
Add an action to the palette.
#define NULL
void SetGroup(ACTION_GROUP *aGroup)
Set the action group that this palette contains the actions for.
ACTION_TOOLBAR_PALETTE * m_palette
std::vector< const TOOL_ACTION * > m_actions
The actions that compose the group
TOOLS_HOLDER * GetToolHolder() const
Definition: tool_manager.h:301
wxAuiManager * m_auiManager
TOOL_MANAGER * m_toolManager
std::map< int, ACTION_GROUP * > m_actionGroups
Represents a single user action.
Definition: tool_action.h:44
#define PALETTE_BORDER
void Popup(wxWindow *aFocus=nullptr) override
Popup this window.
#define BUTTON_BORDER
void EnableAction(const TOOL_ACTION &aAction, bool aEnable=true)
Enable the button for an action on the palette.
wxTimer * m_paletteTimer
A popup window that contains a row of toolbar-like buttons for the user to choose from.
void onPaletteEvent(wxCommandEvent &aEvent)
Handle the button select inside the palette

References ACTION_TOOLBAR_PALETTE::AddAction(), BUTTON_BORDER, ACTION_TOOLBAR_PALETTE::CheckAction(), ACTION_TOOLBAR_PALETTE::EnableAction(), TOOL_MANAGER::GetToolHolder(), TOOL_ACTION::GetUIId(), m_actionGroups, ACTION_GROUP::m_actions, m_auiManager, m_palette, m_paletteTimer, m_toolManager, NULL, onPaletteEvent(), PALETTE_BORDER, ACTION_TOOLBAR_PALETTE::Popup(), ACTION_TOOLBAR_PALETTE::SetButtonSize(), and ACTION_TOOLBAR_PALETTE::SetGroup().

Referenced by onItemDrag(), and onTimerDone().

◆ SelectAction()

void ACTION_TOOLBAR::SelectAction ( ACTION_GROUP aGroup,
const TOOL_ACTION aAction 
)

Select an action inside a group.

Parameters
aGroupis the group that contains the action
aActionis the action inside the group

Definition at line 276 of file action_toolbar.cpp.

277 {
278  bool valid = std::any_of( aGroup->m_actions.begin(), aGroup->m_actions.end(),
279  [&]( const TOOL_ACTION* action2 ) -> bool
280  {
281  // For some reason, we can't compare the actions directly
282  return aAction.GetId() == action2->GetId();
283  } );
284 
285  if( valid )
286  doSelectAction( aGroup, aAction );
287 }
void doSelectAction(ACTION_GROUP *aGroup, const TOOL_ACTION &aAction)
Update a group toolbar item to look like a specific action.
std::vector< const TOOL_ACTION * > m_actions
The actions that compose the group
int GetId() const
Returns the unique id of the TOOL_ACTION object.
Definition: tool_action.h:94
Represents a single user action.
Definition: tool_action.h:44

References doSelectAction(), TOOL_ACTION::GetId(), and ACTION_GROUP::m_actions.

◆ SetAuiManager()

◆ SetToolBitmap()

void ACTION_TOOLBAR::SetToolBitmap ( const TOOL_ACTION aAction,
const wxBitmap &  aBitmap 
)

Updates the bitmap of a particular tool.

Not icon-based because we use it for the custom-drawn layer pair bitmap.

Definition at line 338 of file action_toolbar.cpp.

339 {
340  int toolId = aAction.GetUIId();
341  wxAuiToolBar::SetToolBitmap( toolId, aBitmap );
342 
343  // Set the disabled bitmap: we use the disabled bitmap version
344  // of aBitmap.
345  wxAuiToolBarItem* tb_item = wxAuiToolBar::FindTool( toolId );
346 
347  if( tb_item )
348  tb_item->SetDisabledBitmap( aBitmap.ConvertToDisabled() );
349 }
int GetUIId() const
Definition: tool_action.h:102

References TOOL_ACTION::GetUIId().

Referenced by PCB_EDIT_FRAME::PrepareLayerIndicator(), and KICAD_MANAGER_FRAME::RecreateLauncher().

◆ Toggle() [1/2]

void ACTION_TOOLBAR::Toggle ( const TOOL_ACTION aAction,
bool  aState 
)

Applies the default toggle action.

For checked items this is check/uncheck; for non-checked items it's enable/disable.

Definition at line 352 of file action_toolbar.cpp.

353 {
354  int toolId = aAction.GetUIId();
355 
356  if( m_toolKinds[ toolId ] )
357  ToggleTool( toolId, aState );
358  else
359  EnableTool( toolId, aState );
360 }
int GetUIId() const
Definition: tool_action.h:102
std::map< int, bool > m_toolKinds

References TOOL_ACTION::GetUIId(), and m_toolKinds.

◆ Toggle() [2/2]

void ACTION_TOOLBAR::Toggle ( const TOOL_ACTION aAction,
bool  aEnabled,
bool  aChecked 
)

Definition at line 363 of file action_toolbar.cpp.

364 {
365  int toolId = aAction.GetUIId();
366 
367  EnableTool( toolId, aEnabled );
368  ToggleTool( toolId, aEnabled && aChecked );
369 }
int GetUIId() const
Definition: tool_action.h:102

References TOOL_ACTION::GetUIId().

Member Data Documentation

◆ CANCEL

◆ m_actionGroups

std::map<int, ACTION_GROUP*> ACTION_TOOLBAR::m_actionGroups
protected

◆ m_auiManager

wxAuiManager* ACTION_TOOLBAR::m_auiManager
protected

Definition at line 318 of file action_toolbar.h.

Referenced by popupPalette(), and SetAuiManager().

◆ m_palette

ACTION_TOOLBAR_PALETTE* ACTION_TOOLBAR::m_palette
protected

Definition at line 320 of file action_toolbar.h.

Referenced by onMouseClick(), onPaletteEvent(), and popupPalette().

◆ m_paletteTimer

wxTimer* ACTION_TOOLBAR::m_paletteTimer
protected

Definition at line 316 of file action_toolbar.h.

Referenced by ACTION_TOOLBAR(), onMouseClick(), popupPalette(), and ~ACTION_TOOLBAR().

◆ m_toolActions

std::map<int, const TOOL_ACTION*> ACTION_TOOLBAR::m_toolActions
protected

◆ m_toolCancellable

std::map<int, bool> ACTION_TOOLBAR::m_toolCancellable
protected

Definition at line 323 of file action_toolbar.h.

Referenced by Add(), ClearToolbar(), onToolEvent(), and ~ACTION_TOOLBAR().

◆ m_toolKinds

std::map<int, bool> ACTION_TOOLBAR::m_toolKinds
protected

Definition at line 322 of file action_toolbar.h.

Referenced by Add(), AddButton(), AddGroup(), ClearToolbar(), Toggle(), and ~ACTION_TOOLBAR().

◆ m_toolManager

TOOL_MANAGER* ACTION_TOOLBAR::m_toolManager
protected

◆ m_toolMenus

std::map<int, std::unique_ptr<ACTION_MENU> > ACTION_TOOLBAR::m_toolMenus
protected

◆ TOGGLE


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