35#include <wx/fdrepdlg.h>
83 if( parent->
Type() == aType )
95 wxCHECK( aParent !=
this, );
104 return group->AsEdaItem()->m_Uuid;
115 for(
const EDA_ITEM* item =
this; item; item = item->GetParent() )
118 group =
group->AsEdaItem()->GetParentGroup() )
120 if(
group->AsEdaItem()->IsSelected() )
149 wxCHECK_MSG(
false,
nullptr, wxT(
"Clone not implemented in derived class " ) +
GetClass() +
150 wxT(
". Bad programmer!" ) );
157 const std::vector<KICAD_T>& aScanTypes )
159#if 0 && defined(DEBUG)
160 std::cout <<
GetClass().mb_str() <<
' ';
163 if(
IsType( aScanTypes ) )
175 wxFAIL_MSG( wxT(
"GetItemDescription() was not overridden for item type " ) +
GetClass() );
177 return wxString( wxT(
"Undefined item description for " ) +
GetClass() );
183 return wxIsalnum( c ) || c ==
'_';
189 wxString
text = aText;
199 searchText.MakeUpper();
203 [](
const wxUniChar& c )
205 return wxIsalnum( c ) || c ==
'_';
218 while( ii < (
int)
text.length() )
220 int next =
text.find( searchText, ii );
222 if(
next == wxNOT_FOUND )
226 next += searchText.length();
228 bool startOK = ( ii == 0 || !
isWordChar(
text.GetChar( ii - 1 ) ) );
231 if( startOK && endOK )
241 return text.Matches( searchText );
250 if( !aSearchData.
regex.Compile( searchText,
flag ) )
256 return aSearchData.
regex.Matches(
text );
260 return text.Find( searchText ) != wxNOT_FOUND;
267 wxString
text = aText;
270 bool replaced =
false;
279 if( !aSearchData.
regex.Compile( searchText,
flag ) )
295 searchText = searchText.Upper();
300 while( ii < (
int)
text.length() )
302 int next =
text.find( searchText, ii );
304 if(
next == wxNOT_FOUND )
306 result += aText.Mid( ii, wxString::npos );
314 next += searchText.length();
330 if( startOK && endOK )
338 result += aText.GetChar( ii );
350 wxFAIL_MSG( wxString::Format( wxT(
"Less than operator not defined for item type %s." ),
384 std::vector<int> layers{ 1 };
397void EDA_ITEM::ShowDummy( std::ostream& os )
const
402 os <<
'<' << s.Lower().mb_str() <<
">"
403 <<
" Need ::Show() override for this class "
404 <<
"</" << s.Lower().mb_str() <<
">\n";
408std::ostream& EDA_ITEM::NestedSpace(
int nestLevel, std::ostream& os )
410 for(
int i = 0; i<nestLevel; ++i )
426 return wxGetTranslation( typeDescr );
442 .Map(
NOT_USED, wxT(
"<not used>" ) )
BITMAPS
A list of all bitmap identifiers.
bool Find(const wxString &aTerm, int &aMatchersTriggered, int &aPosition)
Look in all existing matchers, return the earliest match of any of the existing.
A set of EDA_ITEMs (i.e., without duplicates).
A base class for most all the KiCad significant classes used in schematics and boards.
EDA_ITEM & operator=(const EDA_ITEM &aItem)
Assign the members of aItem to another object.
virtual const BOX2I GetBoundingBox() const
Return the orthogonal bounding box of this object for display purposes.
wxString GetTypeDesc() const
Return a translated description of the type for this EDA_ITEM for display in user facing messages.
void SetFlags(EDA_ITEM_FLAGS aMask)
virtual wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const
Return a user-visible description string of this item.
virtual EDA_GROUP * GetParentGroup() const
KICAD_T Type() const
Returns the type of object.
bool operator<(const EDA_ITEM &aItem) const
Test if another item is less than this object.
virtual std::vector< int > ViewGetLayers() const override
Return the all the layers within the VIEW the object is painted on.
virtual bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const
Compare the item against the search criteria in aSearchData.
EDA_GROUP * m_group
The group this item belongs to, if any. No ownership implied.
KIID GetParentGroupId() const
virtual bool IsType(const std::vector< KICAD_T > &aScanTypes) const
Check whether the item is one of the listed types.
virtual INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &aScanTypes)
May be re-implemented for each derived class in order to handle all the types given by its member dat...
virtual wxString GetFriendlyName() const
EDA_ITEM * GetParent() const
bool HasSelectedAncestorGroup() const
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
virtual const BOX2I ViewBBox() const override
Return the bounding box of the item covering all its layers.
virtual void SetParent(EDA_ITEM *aParent)
EDA_ITEM * m_parent
Owner.
static bool Replace(const EDA_SEARCH_DATA &aSearchData, wxString &aText)
Perform a text replace on aText using the find and replace criteria in aSearchData on items that supp...
KICAD_T m_structType
Run time identification, keep private so it can never be changed after a ctor sets it.
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
virtual bool IsReplaceable() const
Override this method in any derived object that supports test find and replace.
EDA_ITEM * findParent(KICAD_T aType) const
virtual BITMAPS GetMenuImage() const
Return a pointer to an image to be used in menus.
static ENUM_MAP< T > & Instance()
VIEW_ITEM(bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
void SetForcedTransparency(double aForcedTransparency)
bool IsBOARD_ITEM() const
virtual wxString GetClass() const =0
Return the class name.
double GetForcedTransparency() const
PROPERTY_BASE & SetIsHiddenFromPropertiesManager(bool aHide=true)
Provide class metadata.Helper macro to map type hashes to names.
static PROPERTY_MANAGER & Instance()
PROPERTY_BASE & AddProperty(PROPERTY_BASE *aProperty, const wxString &aGroup=wxEmptyString)
Register a property.
static struct EDA_ITEM_DESC _EDA_ITEM_DESC
bool isWordChar(const wxUniChar &c)
const INSPECTOR_FUNC & INSPECTOR
std::function passed to nested users by ref, avoids copying std::function.
#define IS_CHANGED
Item was edited, and modified.
Abstract pattern-matching tool and implementations.
Some functions to handle hotkeys in KiCad.
The Cairo implementation of the graphics abstraction layer.
#define NO_SETTER(owner, type)
#define ENUM_TO_WXANY(type)
Macro to define read-only fields (no setter method available)
EDA_SEARCH_MATCH_MODE matchMode
wxString result
Test unit parsing edge cases and error handling.
wxLogTrace helper definitions.
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
@ PCB_SHAPE_T
class PCB_SHAPE, a segment not on copper layers
@ PCB_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
@ PCB_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
@ PCB_GENERATOR_T
class PCB_GENERATOR, generator on a layer
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
@ PCB_GROUP_T
class PCB_GROUP, a set of BOARD_ITEMs
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
@ PCB_ZONE_T
class ZONE, a copper pour area
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
@ PCB_REFERENCE_IMAGE_T
class PCB_REFERENCE_IMAGE, bitmap on a layer
@ PCB_ITEM_LIST_T
class BOARD_ITEM_LIST, a list of board items
@ PCB_FIELD_T
class PCB_FIELD, text associated with a footprint property
@ NOT_USED
the 3d code uses this value
@ PCB_MARKER_T
class PCB_MARKER, a marker used to show something
@ PCB_BARCODE_T
class PCB_BARCODE, a barcode (graphic item)
@ PCB_TARGET_T
class PCB_TARGET, a target (graphic item)
@ PCB_TABLECELL_T
class PCB_TABLECELL, PCB_TEXTBOX for use in tables
@ PCB_FOOTPRINT_T
class FOOTPRINT, a footprint
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
@ PCB_PAD_T
class PAD, a pad in a footprint
@ SCREEN_T
not really an item, used to identify a screen
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
@ PCB_TABLE_T
class PCB_TABLE, table of PCB_TABLECELLs
@ PCB_NETINFO_T
class NETINFO_ITEM, a description of a net
@ PCB_POINT_T
class PCB_POINT, a 0-dimensional point
@ PCB_TRACE_T
class PCB_TRACK, a track segment (segment on a copper layer)
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
VECTOR2< int32_t > VECTOR2I