KiCad PCB EDA Suite
SELECTION_CONDITIONS Class Reference

Class that groups generic conditions for selected items. More...

#include <selection_conditions.h>

Inheritance diagram for SELECTION_CONDITIONS:
EDA_3D_CONDITIONS EDITOR_CONDITIONS EE_CONDITIONS PCB_SELECTION_CONDITIONS PCB_EDITOR_CONDITIONS SCH_EDITOR_CONDITIONS

Static Public Member Functions

static bool ShowAlways (const SELECTION &aSelection)
 The default condition function (always returns true). More...
 
static bool ShowNever (const SELECTION &aSelection)
 Always returns false. More...
 
static bool NotEmpty (const SELECTION &aSelection)
 Test if there are any items selected. More...
 
static bool Empty (const SELECTION &aSelection)
 Test if there are no items selected. More...
 
static bool Idle (const SELECTION &aSelection)
 Test if there no items selected or being edited. More...
 
static bool IdleSelection (const SELECTION &aSelection)
 Test if all selected items are not being edited. More...
 
static SELECTION_CONDITION HasType (KICAD_T aType)
 Create a functor that tests if among the selected items there is at least one of a given type. More...
 
static SELECTION_CONDITION HasTypes (std::vector< KICAD_T > aTypes)
 Create a functor that tests if among the selected items there is at least one of a given types. More...
 
static SELECTION_CONDITION OnlyTypes (std::vector< KICAD_T > aTypes)
 Create a functor that tests if the selected items are only of given types. More...
 
static SELECTION_CONDITION Count (int aNumber)
 Create a functor that tests if the number of selected items is equal to the value given as parameter. More...
 
static SELECTION_CONDITION MoreThan (int aNumber)
 Create a functor that tests if the number of selected items is greater than the value given as parameter. More...
 
static SELECTION_CONDITION LessThan (int aNumber)
 Create a functor that tests if the number of selected items is smaller than the value given as parameter. More...
 

Static Private Member Functions

static bool hasTypeFunc (const SELECTION &aSelection, KICAD_T aType)
 < Helper function used by HasType() More...
 
static bool hasTypesFunc (const SELECTION &aSelection, std::vector< KICAD_T > aTypes)
 Helper function used by OnlyTypes() More...
 
static bool onlyTypesFunc (const SELECTION &aSelection, std::vector< KICAD_T > aTypes)
 Helper function used by Count() More...
 
static bool countFunc (const SELECTION &aSelection, int aNumber)
 Helper function used by MoreThan() More...
 
static bool moreThanFunc (const SELECTION &aSelection, int aNumber)
 Helper function used by LessThan() More...
 
static bool lessThanFunc (const SELECTION &aSelection, int aNumber)
 Helper function used by operator||. More...
 
static bool orFunc (const SELECTION_CONDITION &aConditionA, const SELECTION_CONDITION &aConditionB, const SELECTION &aSelection)
 Helper function used by operator&&. More...
 
static bool andFunc (const SELECTION_CONDITION &aConditionA, const SELECTION_CONDITION &aConditionB, const SELECTION &aSelection)
 Helper function used by operator! More...
 
static bool notFunc (const SELECTION_CONDITION &aCondition, const SELECTION &aSelection)
 Helper function used by operator||. More...
 
static bool orBoolFunc (const SELECTION_CONDITION &aConditionA, SELECTION_BOOL &aConditionB, const SELECTION &aSelection)
 Helper function used by operator&&. More...
 
static bool andBoolFunc (const SELECTION_CONDITION &aConditionA, SELECTION_BOOL &aConditionB, const SELECTION &aSelection)
 

Friends

SELECTION_CONDITION operator|| (const SELECTION_CONDITION &aConditionA, const SELECTION_CONDITION &aConditionB)
 
SELECTION_CONDITION operator&& (const SELECTION_CONDITION &aConditionA, const SELECTION_CONDITION &aConditionB)
 
SELECTION_CONDITION operator! (const SELECTION_CONDITION &aCondition)
 
SELECTION_CONDITION operator|| (const SELECTION_CONDITION &aConditionA, SELECTION_BOOL aConditionB)
 
SELECTION_CONDITION operator&& (const SELECTION_CONDITION &aConditionA, SELECTION_BOOL aConditionB)
 

Detailed Description

Class that groups generic conditions for selected items.

Definition at line 68 of file selection_conditions.h.

Member Function Documentation

◆ andBoolFunc()

static bool SELECTION_CONDITIONS::andBoolFunc ( const SELECTION_CONDITION aConditionA,
SELECTION_BOOL aConditionB,
const SELECTION aSelection 
)
inlinestaticprivate

Definition at line 201 of file selection_conditions.h.

203 {
204 return aConditionA( aSelection ) && aConditionB( aSelection );
205 }

◆ andFunc()

static bool SELECTION_CONDITIONS::andFunc ( const SELECTION_CONDITION aConditionA,
const SELECTION_CONDITION aConditionB,
const SELECTION aSelection 
)
inlinestaticprivate

Helper function used by operator!

Definition at line 181 of file selection_conditions.h.

◆ Count()

SELECTION_CONDITION SELECTION_CONDITIONS::Count ( int  aNumber)
static

Create a functor that tests if the number of selected items is equal to the value given as parameter.

Parameters
aNumberis the number of expected items.
Returns
Functor testing if the number of selected items is equal aNumber.

Definition at line 79 of file selection_conditions.cpp.

80{
81 return std::bind( &SELECTION_CONDITIONS::countFunc, _1, aNumber );
82}
static bool countFunc(const SELECTION &aSelection, int aNumber)
Helper function used by MoreThan()

References countFunc().

Referenced by EE_SELECTION_TOOL::Init(), SCH_EDIT_TOOL::Init(), SYMBOL_EDITOR_EDIT_TOOL::Init(), SYMBOL_EDITOR_PIN_TOOL::Init(), CONVERT_TOOL::Init(), EDIT_TOOL::Init(), PAD_TOOL::Init(), PCB_SELECTION_TOOL::Init(), and PCB_EDIT_FRAME::setupUIConditions().

◆ countFunc()

bool SELECTION_CONDITIONS::countFunc ( const SELECTION aSelection,
int  aNumber 
)
staticprivate

Helper function used by MoreThan()

Definition at line 142 of file selection_conditions.cpp.

143{
144 return aSelection.Size() == aNumber;
145}
int Size() const
Returns the number of selected parts.
Definition: selection.h:115

References SELECTION::Size().

Referenced by Count().

◆ Empty()

bool SELECTION_CONDITIONS::Empty ( const SELECTION aSelection)
static

Test if there are no items selected.

Definition at line 41 of file selection_conditions.cpp.

42{
43 return aSelection.Empty();
44}
bool Empty() const
Checks if there is anything selected.
Definition: selection.h:109

References SELECTION::Empty().

Referenced by EE_SELECTION_TOOL::Init(), and PL_SELECTION_TOOL::Init().

◆ HasType()

SELECTION_CONDITION SELECTION_CONDITIONS::HasType ( KICAD_T  aType)
static

Create a functor that tests if among the selected items there is at least one of a given type.

Parameters
aTypeis the type that is searched.
Returns
Functor testing for presence of items of a given type.

Definition at line 61 of file selection_conditions.cpp.

62{
63 return std::bind( &SELECTION_CONDITIONS::hasTypeFunc, _1, aType );
64}
static bool hasTypeFunc(const SELECTION &aSelection, KICAD_T aType)
< Helper function used by HasType()

References hasTypeFunc().

Referenced by EDIT_TOOL::Init(), PAD_TOOL::Init(), PCB_SELECTION_TOOL::Init(), FOOTPRINT_EDIT_FRAME::setupUIConditions(), and PCB_EDIT_FRAME::setupUIConditions().

◆ hasTypeFunc()

bool SELECTION_CONDITIONS::hasTypeFunc ( const SELECTION aSelection,
KICAD_T  aType 
)
staticprivate

< Helper function used by HasType()

Helper function used by HasTypes()

Definition at line 97 of file selection_conditions.cpp.

98{
99 if( aSelection.Empty() )
100 return false;
101
102 for( const EDA_ITEM* item : aSelection )
103 {
104 if( item->Type() == aType )
105 return true;
106 }
107
108 return false;
109}
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85

References SELECTION::Empty().

Referenced by HasType().

◆ HasTypes()

SELECTION_CONDITION SELECTION_CONDITIONS::HasTypes ( std::vector< KICAD_T aTypes)
static

Create a functor that tests if among the selected items there is at least one of a given types.

Parameters
aTypesis an array containing types that are searched.
Returns
Functor testing for presence of items of a given types.

Definition at line 67 of file selection_conditions.cpp.

68{
69 return std::bind( &SELECTION_CONDITIONS::hasTypesFunc, _1, aTypes );
70}
static bool hasTypesFunc(const SELECTION &aSelection, std::vector< KICAD_T > aTypes)
Helper function used by OnlyTypes()

References hasTypesFunc().

Referenced by EE_SELECTION_TOOL::Init(), SCH_EDIT_TOOL::Init(), EDIT_TOOL::Init(), and PCB_EDIT_FRAME::setupUIConditions().

◆ hasTypesFunc()

bool SELECTION_CONDITIONS::hasTypesFunc ( const SELECTION aSelection,
std::vector< KICAD_T aTypes 
)
staticprivate

Helper function used by OnlyTypes()

Definition at line 112 of file selection_conditions.cpp.

113{
114 if( aSelection.Empty() )
115 return false;
116
117 for( const EDA_ITEM* item : aSelection )
118 {
119 if( item->IsType( aTypes ) )
120 return true;
121 }
122
123 return false;
124}

References SELECTION::Empty().

Referenced by HasTypes().

◆ Idle()

bool SELECTION_CONDITIONS::Idle ( const SELECTION aSelection)
static

Test if there no items selected or being edited.

Definition at line 47 of file selection_conditions.cpp.

48{
49 constexpr int busyMask = ( IS_NEW | IS_PASTED | IS_MOVING );
50
51 return !aSelection.Front() || ( aSelection.Front()->GetEditFlags() & busyMask ) == 0;
52}
EDA_ITEM_FLAGS GetEditFlags() const
Definition: eda_item.h:145
EDA_ITEM * Front() const
Definition: selection.h:208
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
#define IS_NEW
New item, just created.
#define IS_MOVING
Item being moved.

References SELECTION::Front(), EDA_ITEM::GetEditFlags(), IS_MOVING, IS_NEW, and IS_PASTED.

Referenced by EE_INSPECTION_TOOL::Init(), EE_SELECTION_TOOL::Init(), SCH_EDIT_TOOL::Init(), SCH_LINE_WIRE_BUS_TOOL::Init(), SYMBOL_EDITOR_EDIT_TOOL::Init(), SCH_EDIT_FRAME::setupUIConditions(), SYMBOL_EDIT_FRAME::setupUIConditions(), PL_EDITOR_FRAME::setupUIConditions(), FOOTPRINT_EDIT_FRAME::setupUIConditions(), and PCB_EDIT_FRAME::setupUIConditions().

◆ IdleSelection()

bool SELECTION_CONDITIONS::IdleSelection ( const SELECTION aSelection)
static

Test if all selected items are not being edited.

Definition at line 55 of file selection_conditions.cpp.

56{
57 return ( aSelection.Front() && aSelection.Front()->GetEditFlags() == 0 );
58}

References SELECTION::Front(), and EDA_ITEM::GetEditFlags().

Referenced by SCH_EDIT_TOOL::Init(), SYMBOL_EDITOR_EDIT_TOOL::Init(), and SYMBOL_EDITOR_MOVE_TOOL::Init().

◆ LessThan()

SELECTION_CONDITION SELECTION_CONDITIONS::LessThan ( int  aNumber)
static

Create a functor that tests if the number of selected items is smaller than the value given as parameter.

Parameters
aNumberis the number used for comparison.
Returns
Functor testing if the number of selected items is smaller than aNumber.

Definition at line 91 of file selection_conditions.cpp.

92{
93 return std::bind( &SELECTION_CONDITIONS::lessThanFunc, _1, aNumber );
94}
static bool lessThanFunc(const SELECTION &aSelection, int aNumber)
Helper function used by operator||.

References lessThanFunc().

Referenced by EE_SELECTION_TOOL::Init().

◆ lessThanFunc()

bool SELECTION_CONDITIONS::lessThanFunc ( const SELECTION aSelection,
int  aNumber 
)
staticprivate

Helper function used by operator||.

Definition at line 154 of file selection_conditions.cpp.

155{
156 return aSelection.Size() < aNumber;
157}

References SELECTION::Size().

Referenced by LessThan().

◆ MoreThan()

SELECTION_CONDITION SELECTION_CONDITIONS::MoreThan ( int  aNumber)
static

Create a functor that tests if the number of selected items is greater than the value given as parameter.

Parameters
aNumberis the number used for comparison.
Returns
Functor testing if the number of selected items is greater than aNumber.

Definition at line 85 of file selection_conditions.cpp.

86{
87 return std::bind( &SELECTION_CONDITIONS::moreThanFunc, _1, aNumber );
88}
static bool moreThanFunc(const SELECTION &aSelection, int aNumber)
Helper function used by LessThan()

References moreThanFunc().

Referenced by EE_SELECTION_TOOL::Init(), SCH_EDIT_TOOL::Init(), SCH_LINE_WIRE_BUS_TOOL::Init(), CONVERT_TOOL::Init(), EDIT_TOOL::Init(), ALIGN_DISTRIBUTE_TOOL::Init(), FOOTPRINT_EDIT_FRAME::setupUIConditions(), and PCB_EDIT_FRAME::setupUIConditions().

◆ moreThanFunc()

bool SELECTION_CONDITIONS::moreThanFunc ( const SELECTION aSelection,
int  aNumber 
)
staticprivate

Helper function used by LessThan()

Definition at line 148 of file selection_conditions.cpp.

149{
150 return aSelection.Size() > aNumber;
151}

References SELECTION::Size().

Referenced by MoreThan().

◆ NotEmpty()

bool SELECTION_CONDITIONS::NotEmpty ( const SELECTION aSelection)
static

◆ notFunc()

static bool SELECTION_CONDITIONS::notFunc ( const SELECTION_CONDITION aCondition,
const SELECTION aSelection 
)
inlinestaticprivate

Helper function used by operator||.

Definition at line 188 of file selection_conditions.h.

◆ OnlyTypes()

SELECTION_CONDITION SELECTION_CONDITIONS::OnlyTypes ( std::vector< KICAD_T aTypes)
static

Create a functor that tests if the selected items are only of given types.

Parameters
aTypesis an array containing types that are searched.
Returns
Functor testing if selected items are exclusively of the requested types.

Definition at line 73 of file selection_conditions.cpp.

74{
75 return std::bind( &SELECTION_CONDITIONS::onlyTypesFunc, _1, aTypes );
76}
static bool onlyTypesFunc(const SELECTION &aSelection, std::vector< KICAD_T > aTypes)
Helper function used by Count()

References onlyTypesFunc().

Referenced by EE_SELECTION_TOOL::Init(), SCH_EDIT_TOOL::Init(), SCH_LINE_WIRE_BUS_TOOL::Init(), SCH_MOVE_TOOL::Init(), SYMBOL_EDITOR_PIN_TOOL::Init(), BOARD_EDITOR_CONTROL::Init(), BOARD_INSPECTION_TOOL::Init(), CONVERT_TOOL::Init(), EDIT_TOOL::Init(), PAD_TOOL::Init(), EDIT_TOOL::Properties(), PCB_EDIT_FRAME::setupUIConditions(), BOARD_EDITOR_CONTROL::TrackWidthDec(), BOARD_EDITOR_CONTROL::TrackWidthInc(), BOARD_EDITOR_CONTROL::ViaSizeDec(), and BOARD_EDITOR_CONTROL::ViaSizeInc().

◆ onlyTypesFunc()

bool SELECTION_CONDITIONS::onlyTypesFunc ( const SELECTION aSelection,
std::vector< KICAD_T aTypes 
)
staticprivate

Helper function used by Count()

Definition at line 127 of file selection_conditions.cpp.

128{
129 if( aSelection.Empty() )
130 return false;
131
132 for( const EDA_ITEM* item : aSelection )
133 {
134 if( !item->IsType( aTypes ) )
135 return false;
136 }
137
138 return true;
139}

References SELECTION::Empty().

Referenced by OnlyTypes().

◆ orBoolFunc()

static bool SELECTION_CONDITIONS::orBoolFunc ( const SELECTION_CONDITION aConditionA,
SELECTION_BOOL aConditionB,
const SELECTION aSelection 
)
inlinestaticprivate

Helper function used by operator&&.

Definition at line 194 of file selection_conditions.h.

◆ orFunc()

static bool SELECTION_CONDITIONS::orFunc ( const SELECTION_CONDITION aConditionA,
const SELECTION_CONDITION aConditionB,
const SELECTION aSelection 
)
inlinestaticprivate

Helper function used by operator&&.

Definition at line 174 of file selection_conditions.h.

◆ ShowAlways()

◆ ShowNever()

static bool SELECTION_CONDITIONS::ShowNever ( const SELECTION aSelection)
inlinestatic

Always returns false.

Definition at line 79 of file selection_conditions.h.

79{ return false; }

Referenced by ACTION_CONDITIONS::ACTION_CONDITIONS(), KICAD_MANAGER_FRAME::setupUIConditions(), and PL_EDITOR_FRAME::setupUIConditions().

Friends And Related Function Documentation

◆ operator!

SELECTION_CONDITION operator! ( const SELECTION_CONDITION aCondition)
friend

Definition at line 174 of file selection_conditions.cpp.

175{
176 return std::bind( &SELECTION_CONDITIONS::notFunc, aCondition, _1 );
177}
static bool notFunc(const SELECTION_CONDITION &aCondition, const SELECTION &aSelection)
Helper function used by operator||.

◆ operator&& [1/2]

SELECTION_CONDITION operator&& ( const SELECTION_CONDITION aConditionA,
const SELECTION_CONDITION aConditionB 
)
friend

Definition at line 167 of file selection_conditions.cpp.

169{
170 return std::bind( &SELECTION_CONDITIONS::andFunc, aConditionA, aConditionB, _1 );
171}
static bool andFunc(const SELECTION_CONDITION &aConditionA, const SELECTION_CONDITION &aConditionB, const SELECTION &aSelection)
Helper function used by operator!

◆ operator&& [2/2]

SELECTION_CONDITION operator&& ( const SELECTION_CONDITION aConditionA,
SELECTION_BOOL  aConditionB 
)
friend

Definition at line 193 of file selection_conditions.cpp.

195{
196 return std::bind( &SELECTION_CONDITIONS::andBoolFunc, aConditionA, std::ref( aConditionB ), _1 );
197}
static bool andBoolFunc(const SELECTION_CONDITION &aConditionA, SELECTION_BOOL &aConditionB, const SELECTION &aSelection)

◆ operator|| [1/2]

SELECTION_CONDITION operator|| ( const SELECTION_CONDITION aConditionA,
const SELECTION_CONDITION aConditionB 
)
friend

Definition at line 160 of file selection_conditions.cpp.

162{
163 return std::bind( &SELECTION_CONDITIONS::orFunc, aConditionA, aConditionB, _1 );
164}
static bool orFunc(const SELECTION_CONDITION &aConditionA, const SELECTION_CONDITION &aConditionB, const SELECTION &aSelection)
Helper function used by operator&&.

◆ operator|| [2/2]

SELECTION_CONDITION operator|| ( const SELECTION_CONDITION aConditionA,
SELECTION_BOOL  aConditionB 
)
friend

Definition at line 180 of file selection_conditions.cpp.

182{
183 return std::bind( &SELECTION_CONDITIONS::orBoolFunc, aConditionA, std::ref( aConditionB ), _1 );
184}
static bool orBoolFunc(const SELECTION_CONDITION &aConditionA, SELECTION_BOOL &aConditionB, const SELECTION &aSelection)
Helper function used by operator&&.

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