35#include <wx/fdrepdlg.h>
83 if( parent->
Type() == aType )
95 wxCHECK( aParent !=
this, );
104 return group->AsEdaItem()->m_Uuid;
130 wxCHECK_MSG(
false,
nullptr, wxT(
"Clone not implemented in derived class " ) +
GetClass() +
131 wxT(
". Bad programmer!" ) );
138 const std::vector<KICAD_T>& aScanTypes )
140#if 0 && defined(DEBUG)
141 std::cout <<
GetClass().mb_str() <<
' ';
144 if(
IsType( aScanTypes ) )
156 wxFAIL_MSG( wxT(
"GetItemDescription() was not overridden for item type " ) +
GetClass() );
158 return wxString( wxT(
"Undefined item description for " ) +
GetClass() );
164 return wxIsalnum( c ) || c ==
'_';
170 wxString
text = aText;
180 searchText.MakeUpper();
184 [](
const wxUniChar& c )
186 return wxIsalnum( c ) || c ==
'_';
199 while( ii < (
int)
text.length() )
201 int next =
text.find( searchText, ii );
203 if(
next == wxNOT_FOUND )
207 next += searchText.length();
209 bool startOK = ( ii == 0 || !
isWordChar(
text.GetChar( ii - 1 ) ) );
212 if( startOK && endOK )
222 return text.Matches( searchText );
231 if( !aSearchData.
regex.Compile( searchText,
flag ) )
237 return aSearchData.
regex.Matches(
text );
241 return text.Find( searchText ) != wxNOT_FOUND;
248 wxString
text = aText;
251 bool replaced =
false;
260 if( !aSearchData.
regex.Compile( searchText,
flag ) )
276 searchText = searchText.Upper();
281 while( ii < (
int)
text.length() )
283 int next =
text.find( searchText, ii );
285 if(
next == wxNOT_FOUND )
287 result += aText.Mid( ii, wxString::npos );
295 next += searchText.length();
311 if( startOK && endOK )
319 result += aText.GetChar( ii );
331 wxFAIL_MSG( wxString::Format( wxT(
"Less than operator not defined for item type %s." ),
365 std::vector<int> layers{ 1 };
378void EDA_ITEM::ShowDummy( std::ostream& os )
const
383 os <<
'<' << s.Lower().mb_str() <<
">"
384 <<
" Need ::Show() override for this class "
385 <<
"</" << s.Lower().mb_str() <<
">\n";
389std::ostream& EDA_ITEM::NestedSpace(
int nestLevel, std::ostream& os )
391 for(
int i = 0; i<nestLevel; ++i )
407 return wxGetTranslation( typeDescr );
423 .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
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
std::weak_ptr< LIB_SYMBOL > m_parent
Use for inherited symbols.
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