KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pcb_selection_tool.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2013-2017 CERN
5 * Copyright The KiCad Developers, see AUTHORS.TXT for contributors.
6 *
7 * @author Tomasz Wlostowski <[email protected]>
8 * @author Maciej Suminski <[email protected]>
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License
12 * as published by the Free Software Foundation; either version 2
13 * of the License, or (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
24#ifndef PCB_SELECTION_TOOL_H
25#define PCB_SELECTION_TOOL_H
26
27#include <functional>
28#include <memory>
29
30#include <tool/actions.h>
31#include <math/vector2d.h>
34#include <tool/action_menu.h>
35#include <tool/selection_tool.h>
36#include <tool/tool_menu.h>
38#include <tools/pcb_tool_base.h>
39#include <tools/pcb_selection.h>
40
41class PCB_BASE_FRAME;
42class BOARD_ITEM;
44class PAD;
45class PCB_TABLE;
46class PCB_TABLECELL;
47
48namespace KIGFX
49{
50 class GAL;
51}
52
53
64{
65public:
67 using AREA_PREVIEW = std::function<void( KIGFX::PREVIEW::SELECTION_AREA& aArea )>;
68
71
73 bool Init() override;
74
76 void Reset( RESET_REASON aReason ) override;
77
78 void OnIdle( wxIdleEvent& aEvent );
79
81 {
83 }
84
88 int Main( const TOOL_EVENT& aEvent );
89
94
103
105 int CursorSelection( const TOOL_EVENT& aEvent );
106
107 int SelectColumns( const TOOL_EVENT& aEvent );
108 int SelectRows( const TOOL_EVENT& aEvent );
109 int SelectTable( const TOOL_EVENT& aEvent );
110
112 int ClearSelection( const TOOL_EVENT& aEvent );
113 void ClearSelection( bool aQuietMode = false );
114
116 int SelectAll( const TOOL_EVENT& aEvent );
117
119 int UnselectAll( const TOOL_EVENT& aEvent );
120
122 int SetSelectRect( const TOOL_EVENT& aEvent );
123 int SetSelectPoly( const TOOL_EVENT& aEvent );
124
130 int SelectRectArea( const TOOL_EVENT& aEvent );
131
142 bool DragSelectionArea( TOOL_INTERACTIVE& aTool, AREA_PREVIEW aPreview = nullptr );
143
150 int SelectPolyArea( const TOOL_EVENT& aEvent );
151
161 std::vector<BOARD_ITEM*> CollectPoint( const VECTOR2I& aWhere,
162 CLIENT_SELECTION_FILTER aClientFilter = nullptr );
163
170 std::vector<BOARD_ITEM*> CollectMultiple( KIGFX::PREVIEW::SELECTION_AREA& aArea );
171
175 void SelectMultiple( KIGFX::PREVIEW::SELECTION_AREA& aArea, bool aSubtractive = false,
176 bool aExclusiveOr = false );
177
183 void FindItem( BOARD_ITEM* aItem );
184
190 void select( EDA_ITEM* aItem ) override;
191
195 bool Selectable( const BOARD_ITEM* aItem, bool checkVisibilityOnly = false ) const;
196
207 static LSET resolveVisibleLayers( const LSET& aVisibleLayers, const LSET& aEnabledLayers );
208
215 static bool isPadVisible( const PAD& aPad, const LSET& aVisibleLayers );
216
223 void SelectAllItemsOnNet( int aNetCode, bool aSelect = true );
224
232 void GuessSelectionCandidates( GENERAL_COLLECTOR& aCollector, const VECTOR2I& aWhere ) const;
233
240 void RebuildSelection();
241
246
248 void setTransitions() override;
249
251 void zoomFitSelection();
252
254 void ZoomFitCrossProbeBBox( const BOX2I& bbox );
255
259 void EnterGroup() override;
260
266 void ExitGroup( bool aSelectGroup = false ) override;
267
272
273 PCB_LAYER_ID GetActiveLayer() { return m_frame->GetActiveLayer(); }
274
294
301 void selectAllConnectedTracks( const std::vector<BOARD_CONNECTED_ITEM*>& aStartItems,
302 STOP_CONDITION aStopCondition );
303
308
314 static bool HasLockedDescendant( const BOARD_ITEM* aItem );
315
317 static bool isWithinEnteredGroup( BOARD_ITEM* aItem, PCB_GROUP* aEnteredGroup, bool aIsFootprintEditor );
318
323 static bool isOnVisibleFootprintSide( const BOARD_ITEM& aItem, bool aFrontVisible,
324 bool aBackVisible, bool aIsFootprintEditor );
325
332
337 void FilterCollectorForHierarchy( GENERAL_COLLECTOR& aCollector, bool aMultiselect ) const;
338
344 bool aForcePromotion = false ) const;
345
349 void FilterCollectorForTableCells( GENERAL_COLLECTOR& aCollector ) const;
350
354 void FilterCollectorForMarkers( GENERAL_COLLECTOR& aCollector ) const;
355
359 void FilterCollectedItems( GENERAL_COLLECTOR& aCollector, bool aMultiSelect,
360 PCB_SELECTION_FILTER_OPTIONS* aRejected = nullptr );
361
366 const VECTOR2I& aWhere ) const;
367
368protected:
370 {
371 return static_cast<KIGFX::PCB_VIEW*>( getView() );
372 }
373
375 {
376 return getViewControls();
377 }
378
380 {
382 }
383
388
389 BOARD* board() const
390 {
391 return getModel<BOARD>();
392 }
393
395 {
396 return static_cast<PCB_DRAW_PANEL_GAL*>( frame()->GetCanvas() );
397 }
398
399 virtual bool ctrlClickHighlights() override;
400
401 SELECTION& selection() override { return m_selection; }
402
403private:
407 bool selectChartRow( const VECTOR2I& aPosition );
408
423 bool selectPoint( const VECTOR2I& aWhere, bool aOnDrag = false,
424 bool* aSelectionCancelledFlag = nullptr,
425 CLIENT_SELECTION_FILTER aClientFilter = nullptr );
426
429 {
430 bool m_OnDrag = false;
431 bool m_SelectedOnly = false;
433 size_t m_PreFilterCount = 0;
434 };
435
448 bool collectAtPoint( const VECTOR2I& aWhere, GENERAL_COLLECTOR& aCollector,
449 POINT_COLLECT& aOptions, CLIENT_SELECTION_FILTER aClientFilter );
450
459 bool selectCursor( bool aForceSelect = false,
460 CLIENT_SELECTION_FILTER aClientFilter = nullptr );
461
462 bool selectTableCells( PCB_TABLE* aTable );
463
469
475 void selectCellsBetween( const VECTOR2D& aStart, const VECTOR2D& aEnd, PCB_TABLE* aTable );
476
485 bool extendTableCellSelectionTo( const VECTOR2I& aPosition );
486
496 bool toggleTableCellSelection( const VECTOR2I& aPosition );
497
502 void collectTableCellsAt( const VECTOR2I& aPosition, GENERAL_COLLECTOR& aCollector );
503
509
513 int disambiguateCursor( const TOOL_EVENT& aEvent );
514
518 int expandConnection( const TOOL_EVENT& aEvent );
519
523 int unrouteSelected( const TOOL_EVENT& aEvent );
524
528 int unrouteSegment( const TOOL_EVENT& aEvent );
529
533 int selectNet( const TOOL_EVENT& aEvent );
534
538 int selectNetChain( const TOOL_EVENT& aEvent );
539
543 int selectUnconnected( const TOOL_EVENT& aEvent );
544
548 int grabUnconnected( const TOOL_EVENT& aEvent );
549
555 void selectAllConnectedShapes( const std::vector<PCB_SHAPE*>& aStartItems );
556
560 bool isExpandableGraphicShape( const EDA_ITEM* aItem ) const;
561
562 /*
563 * Select tracks and vias connected to specified board items.
564 */
565 void selectConnections( const std::vector<BOARD_ITEM*>& aItems );
566
572 void selectAllItemsOnSheet( wxString& aSheetPath );
573
575 int selectSheetContents( const TOOL_EVENT& aEvent );
576
579 int selectSameSheet( const TOOL_EVENT& aEvent );
580
583 int syncSelection( const TOOL_EVENT& aEvent );
584 int syncSelectionWithNets( const TOOL_EVENT& aEvent );
585 void doSyncSelection( const std::vector<BOARD_ITEM*>& aItems, bool aWithNets );
586
588 int filterSelection( const TOOL_EVENT& aEvent );
589
591 bool itemPassesFilter( BOARD_ITEM* aItem, bool aMultiSelect,
592 PCB_SELECTION_FILTER_OPTIONS* aRejected = nullptr );
593
599 void unselect( EDA_ITEM* aItem ) override;
600
608 void highlight( EDA_ITEM* aItem, int aHighlightMode, SELECTION* aGroup = nullptr ) override;
609
617 void unhighlight( EDA_ITEM* aItem, int aHighlightMode, SELECTION* aGroup = nullptr ) override;
618
622 bool selectionContains( const VECTOR2I& aPoint ) const;
623
627 int hitTestDistance( const VECTOR2I& aWhere, BOARD_ITEM* aItem, int aMaxDistance ) const;
628
632 int updateSelection( const TOOL_EVENT& aEvent );
633
634 void pruneObscuredSelectionCandidates( GENERAL_COLLECTOR& aCollector ) const;
635
637
638private:
639 void highlightInternal( EDA_ITEM* aItem, int aHighlightMode, bool aUsingOverlay );
640
641 void unhighlightInternal( EDA_ITEM* aItem, int aHighlightMode, bool aUsingOverlay );
642
643private:
644 PCB_BASE_FRAME* m_frame; // Pointer to the parent frame
646
647 PCB_SELECTION m_selection; // Current state of selection
648
649 PCB_SELECTION m_blockedSelection; // Empty selection returned when locked items
650 // block an action, real selection stays intact
651
653
654 KICURSOR m_nonModifiedCursor; // Cursor in the absence of shift/ctrl/alt
655
656 PCB_GROUP* m_enteredGroup; // If non-null, selections are limited to
657 // members of this group
658 KIGFX::VIEW_GROUP m_enteredGroupOverlay; // Overlay for the entered group's frame.
659
660 SELECTION_MODE m_selectionMode; // Current selection mode
661
663
666
668 class PRIV;
669 std::unique_ptr<PRIV> m_priv;
670};
671
672#endif /* PCB_SELECTION_TOOL_H */
std::function< void(const VECTOR2I &, GENERAL_COLLECTOR &, PCB_SELECTION_TOOL *)> CLIENT_SELECTION_FILTER
Definition actions.h:33
BOX2< VECTOR2I > BOX2I
Definition box2.h:914
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition board_item.h:84
Information pertinent to a Pcbnew printed circuit board.
Definition board.h:410
A base class for most all the KiCad significant classes used in schematics and boards.
Definition eda_item.h:98
A general implementation of a COLLECTORS_GUIDE.
Definition collectors.h:320
Used when the right click button is pressed, or when the select tool is in effect.
Definition collectors.h:203
Abstract interface for drawing on a 2D-surface.
Represent a selection area (currently a rectangle) in a VIEW, drawn corner-to-corner between two poin...
An interface for classes handling user events controlling the view behavior such as zooming,...
Extend VIEW_ITEM by possibility of grouping items into a single object.
Definition view_group.h:39
LSET is a set of PCB_LAYER_IDs.
Definition lset.h:37
Definition pad.h:61
Common, abstract interface for edit frames.
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
A set of BOARD_ITEMs (i.e., without duplicates).
Definition pcb_group.h:51
Private implementation of firewalled private data.
void highlight(EDA_ITEM *aItem, int aHighlightMode, SELECTION *aGroup=nullptr) override
Highlight the item visually.
static LSET resolveVisibleLayers(const LSET &aVisibleLayers, const LSET &aEnabledLayers)
Return the layers of aVisibleLayers which are actually shown.
int syncSelectionWithNets(const TOOL_EVENT &aEvent)
int SelectTable(const TOOL_EVENT &aEvent)
std::function< void(KIGFX::PREVIEW::SELECTION_AREA &aArea)> AREA_PREVIEW
Called with the drag box every time it changes, before anything is selected.
PCB_BASE_FRAME * frame() const
int syncSelection(const TOOL_EVENT &aEvent)
Set selection to items passed by parameter and connected nets (optionally).
int selectNet(const TOOL_EVENT &aEvent)
Select all copper connections belonging to the same net(s) as the items in the selection.
int filterSelection(const TOOL_EVENT &aEvent)
Invoke filter dialog and modify current selection.
void ZoomFitCrossProbeBBox(const BOX2I &bbox)
Zoom the screen to fit the bounding box for cross probing/selection sync.
void EnterGroup() override
Enter the group at the head of the current selection.
void doSyncSelection(const std::vector< BOARD_ITEM * > &aItems, bool aWithNets)
SELECTION_MODE m_selectionMode
void GuessSelectionCandidates(GENERAL_COLLECTOR &aCollector, const VECTOR2I &aWhere) const
Try to guess best selection candidates in case multiple items are clicked, by doing some brain-dead h...
int selectNetChain(const TOOL_EVENT &aEvent)
Select all copper connections belonging to every net in the selected item's net chain.
bool DragSelectionArea(TOOL_INTERACTIVE &aTool, AREA_PREVIEW aPreview=nullptr)
Drive the rectangle drag-selection loop from another tool's event loop.
void ExitGroup(bool aSelectGroup=false) override
Leave the currently-entered group.
bool isExpandableGraphicShape(const EDA_ITEM *aItem) const
bool toggleTableCellSelection(const VECTOR2I &aPosition)
When the user Ctrl-clicks inside a PCB_TABLE whose cells are already in the selection,...
static bool HasLockedDescendant(const BOARD_ITEM *aItem)
int disambiguateCursor(const TOOL_EVENT &aEvent)
Handle disambiguation actions including displaying the menu.
int SelectPolyArea(const TOOL_EVENT &aEvent)
Handles drawing a lasso selection area that allows multiple items to be selected simultaneously.
void FilterCollectorForMarkers(GENERAL_COLLECTOR &aCollector) const
Drop any PCB_MARKERs from the collector.
int UnselectAll(const TOOL_EVENT &aEvent)
Unselect all items on the board.
void unhighlightInternal(EDA_ITEM *aItem, int aHighlightMode, bool aUsingOverlay)
bool selectionContains(const VECTOR2I &aPoint) const
void select(EDA_ITEM *aItem) override
Take necessary action mark an item as selected.
bool selectCursor(bool aForceSelect=false, CLIENT_SELECTION_FILTER aClientFilter=nullptr)
Select an item under the cursor unless there is something already selected.
bool collectAtPoint(const VECTOR2I &aWhere, GENERAL_COLLECTOR &aCollector, POINT_COLLECT &aOptions, CLIENT_SELECTION_FILTER aClientFilter)
Collect the items at aWhere and narrow them the way a click does.
int SetSelectPoly(const TOOL_EVENT &aEvent)
int SetSelectRect(const TOOL_EVENT &aEvent)
Change the selection mode.
int SelectColumns(const TOOL_EVENT &aEvent)
std::unique_ptr< PRIV > m_priv
static bool isPadVisible(const PAD &aPad, const LSET &aVisibleLayers)
PCB_TABLECELL * singleSelectedCell() const
int unrouteSelected(const TOOL_EVENT &aEvent)
Unroute the selected board connected items.
int unrouteSegment(const TOOL_EVENT &aEvent)
Unroute the selected track connected item.
SELECTION & selection() override
Return a reference to the selection.
int grabUnconnected(const TOOL_EVENT &aEvent)
Select and move other nearest footprint unconnected on same net as selected items.
PCB_SELECTION & RequestSelection(CLIENT_SELECTION_FILTER aClientFilter)
Return the current selection, filtered according to aClientFilter.
static bool isWithinEnteredGroup(BOARD_ITEM *aItem, PCB_GROUP *aEnteredGroup, bool aIsFootprintEditor)
True if aItem may be selected while aEnteredGroup is entered (24967).
bool ReportFilteredLockedItems()
If the most recent FilterCollectorForLockedItems call filtered a locked item, show an InfoBar warning...
void FilterCollectorForFreePads(GENERAL_COLLECTOR &aCollector, bool aForcePromotion=false) const
Check the "allow free pads" setting and if disabled, replace any pads in the collector with their par...
bool itemPassesFilter(BOARD_ITEM *aItem, bool aMultiSelect, PCB_SELECTION_FILTER_OPTIONS *aRejected=nullptr)
Return true if the given item passes the current SELECTION_FILTER_OPTIONS.
const GENERAL_COLLECTORS_GUIDE getCollectorsGuide() const
bool Selectable(const BOARD_ITEM *aItem, bool checkVisibilityOnly=false) const
std::vector< BOARD_ITEM * > CollectPoint(const VECTOR2I &aWhere, CLIENT_SELECTION_FILTER aClientFilter=nullptr)
The items a click at aWhere would consider, best first.
bool selectPoint(const VECTOR2I &aWhere, bool aOnDrag=false, bool *aSelectionCancelledFlag=nullptr, CLIENT_SELECTION_FILTER aClientFilter=nullptr)
Select an item pointed by the parameter aWhere.
KIGFX::PCB_VIEW * view() const
void selectAllItemsOnSheet(wxString &aSheetPath)
Select all items with the given sheet timestamp/UUID name (the sheet path).
PCB_GROUP * GetEnteredGroup()
void FilterCollectorForHierarchy(GENERAL_COLLECTOR &aCollector, bool aMultiselect) const
In general we don't want to select both a parent and any of it's children.
void SelectMultiple(KIGFX::PREVIEW::SELECTION_AREA &aArea, bool aSubtractive=false, bool aExclusiveOr=false)
Selects multiple PCB items within a specified area.
void setTransitions() override
Set up handlers for various events.
PCB_BASE_EDIT_FRAME * editFrame() const
int expandConnection(const TOOL_EVENT &aEvent)
Expand the current connected-item selection to the next boundary (junctions, pads,...
PCB_SELECTION_FILTER_OPTIONS & GetFilter()
bool selectChartRow(const VECTOR2I &aPosition)
Select the drill chart row under a point, when the chart itself is what is selected.
PCB_LAYER_ID GetActiveLayer()
int selectUnconnected(const TOOL_EVENT &aEvent)
Select nearest unconnected footprints on same net as selected items.
virtual bool ctrlClickHighlights() override
Determine if ctrl-click is highlight net or XOR selection.
int selectSheetContents(const TOOL_EVENT &aEvent)
Select all footprints belonging to same sheet, from Eeschema using cross-probing.
int SelectRows(const TOOL_EVENT &aEvent)
int selectSameSheet(const TOOL_EVENT &aEvent)
Select all footprints belonging to same hierarchical sheet as the selected footprint (same sheet path...
void zoomFitSelection()
Zoom the screen to center and fit the current selection.
std::vector< BOARD_ITEM * > CollectMultiple(KIGFX::PREVIEW::SELECTION_AREA &aArea)
The items a drag over aArea would take, in the order SelectMultiple() would take them.
void selectAllConnectedTracks(const std::vector< BOARD_CONNECTED_ITEM * > &aStartItems, STOP_CONDITION aStopCondition)
Select connected tracks and vias.
KIGFX::VIEW_CONTROLS * controls() const
int CursorSelection(const TOOL_EVENT &aEvent)
Select a single item under cursor event handler.
int ClearSelection(const TOOL_EVENT &aEvent)
Clear current selection event handler.
void collectTableCellsAt(const VECTOR2I &aPosition, GENERAL_COLLECTOR &aCollector)
Collect PCB_TABLECELL items at aPosition into aCollector, scoped to either the active footprint (in t...
void highlightInternal(EDA_ITEM *aItem, int aHighlightMode, bool aUsingOverlay)
PCB_BASE_FRAME * m_frame
PCB_SELECTION_FILTER_OPTIONS m_filter
void initializeTableCellSelectionState(PCB_TABLE *aTable)
Mark the existing selection state of table cells so that drag- and shift-click range selection can pr...
PCB_SELECTION & GetSelection()
@ STOP_AT_SEGMENT
Stop when reaching a segment (next track/arc/via).
@ STOP_AT_PAD
Stop when reaching a pad.
@ STOP_NEVER
Select the entire net.
@ STOP_AT_JUNCTION
Stop at any place where more than two traces meet.
int Main(const TOOL_EVENT &aEvent)
The main loop.
void RebuildSelection()
Rebuild the selection from the EDA_ITEMs' selection flags.
void pruneObscuredSelectionCandidates(GENERAL_COLLECTOR &aCollector) const
void OnIdle(wxIdleEvent &aEvent)
PCB_DRAW_PANEL_GAL * canvas() const
void FilterCollectorForFootprints(GENERAL_COLLECTOR &aCollector, const VECTOR2I &aWhere) const
Drop footprints that are not directly selected.
PCB_TABLECELL * m_previousFirstCell
Anchor cell for shift+click range selection in a PCB_TABLE.
PCB_SELECTION m_blockedSelection
void FindItem(BOARD_ITEM *aItem)
Take necessary actions to mark an item as found.
void FilterCollectorForLockedItems(GENERAL_COLLECTOR &aCollector)
In the PCB editor strip out any locked items unless the OverrideLocks checkbox is set.
int SelectRectArea(const TOOL_EVENT &aEvent)
Handles drawing a selection box that allows multiple items to be selected simultaneously.
int updateSelection(const TOOL_EVENT &aEvent)
Event handler to update the selection VIEW_ITEM.
bool Init() override
Init() is called once upon a registration of the tool.
KIGFX::VIEW_GROUP m_enteredGroupOverlay
void selectConnections(const std::vector< BOARD_ITEM * > &aItems)
int hitTestDistance(const VECTOR2I &aWhere, BOARD_ITEM *aItem, int aMaxDistance) const
bool extendTableCellSelectionTo(const VECTOR2I &aPosition)
If the current selection holds one or more cells from a single PCB_TABLE and the cursor is over anoth...
void selectAllConnectedShapes(const std::vector< PCB_SHAPE * > &aStartItems)
Select all non-closed shapes that are graphically connected to the given start items.
void SelectAllItemsOnNet(int aNetCode, bool aSelect=true)
Select all items with the given net code.
void FilterCollectorForTableCells(GENERAL_COLLECTOR &aCollector) const
Promote any table cell selections to the whole table.
void unselect(EDA_ITEM *aItem) override
Take necessary action mark an item as unselected.
int SelectAll(const TOOL_EVENT &aEvent)
Select all items on the board.
void FilterCollectedItems(GENERAL_COLLECTOR &aCollector, bool aMultiSelect, PCB_SELECTION_FILTER_OPTIONS *aRejected=nullptr)
Apply the SELECTION_FITLER_OPTIONS to the collector.
static bool isOnVisibleFootprintSide(const BOARD_ITEM &aItem, bool aFrontVisible, bool aBackVisible, bool aIsFootprintEditor)
True if the Render tab's Footprints Front/Back switches leave aItem drawn, mirroring the ViewGetLOD()...
void selectCellsBetween(const VECTOR2D &aStart, const VECTOR2D &aEnd, PCB_TABLE *aTable)
Select table cells contained within the rectangle defined by two corner points, combining the result ...
bool selectTableCells(PCB_TABLE *aTable)
void unhighlight(EDA_ITEM *aItem, int aHighlightMode, SELECTION *aGroup=nullptr) override
Unhighlight the item visually.
SELECTION_TOOL(const std::string &aName)
T * getEditFrame() const
Return the application window object, casted to requested user type.
Definition tool_base.h:182
T * getModel() const
Return the model object if it matches the requested type.
Definition tool_base.h:195
KIGFX::VIEW_CONTROLS * getViewControls() const
Return the instance of VIEW_CONTROLS object used in the application.
Definition tool_base.cpp:40
KIGFX::VIEW * getView() const
Return the instance of KIGFX::VIEW object used in the application.
Definition tool_base.cpp:34
RESET_REASON
Determine the reason of reset for a tool.
Definition tool_base.h:74
Generic, UI-independent tool event.
Definition tool_event.h:167
KICURSOR
Definition cursors.h:40
void Reset() override
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:56
The Cairo implementation of the graphics abstraction layer.
Definition eda_group.h:30
SELECTION_MODE
This file contains data structures that are saved in the project file or project local settings file ...
What one point collection needs beyond the point, and the one count it reports back.
bool m_SelectedOnly
Subtracting takes only selected.
size_t m_PreFilterCount
Count before that filter, out.
bool m_OnDrag
Locked items cannot be dragged.
PCB_SELECTION_FILTER_OPTIONS * m_Rejected
What the Selection Filter took.
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:708
VECTOR2< double > VECTOR2D
Definition vector2d.h:707