KiCad PCB EDA Suite
SCH_COMPONENT Class Reference

Class SCH_COMPONENT describes a real schematic component. More...

#include <sch_component.h>

Inheritance diagram for SCH_COMPONENT:
SCH_ITEM EDA_ITEM KIGFX::VIEW_ITEM

Public Types

enum  AUTOPLACED { AUTOPLACED_NO = 0, AUTOPLACED_AUTO, AUTOPLACED_MANUAL }
 

Public Member Functions

 SCH_COMPONENT (const wxPoint &pos=wxPoint(0, 0), SCH_ITEM *aParent=NULL)
 
 SCH_COMPONENT (LIB_PART &aPart, SCH_SHEET_PATH *aSheet, int unit=0, int convert=0, const wxPoint &pos=wxPoint(0, 0), bool setNewItemFlag=false)
 Create schematic component from library component object. More...
 
 SCH_COMPONENT (const SCH_COMPONENT &aComponent)
 Clones aComponent into a new schematic symbol object. More...
 
 ~SCH_COMPONENT ()
 
wxString GetClass () const override
 Function GetClass returns the class name. More...
 
const wxArrayString & GetPathsAndReferences () const
 
bool IsMovableFromAnchorPoint () override
 Return true for items which are moved with the anchor point at mouse cursor and false for items moved with no reference to anchor. More...
 
void SetLibId (const LIB_ID &aName, PART_LIBS *aLibs=NULL)
 
void SetLibId (const LIB_ID &aLibId, SYMBOL_LIB_TABLE *aSymLibTable, PART_LIB *aCacheLib)
 
const LIB_IDGetLibId () const
 
PART_REFGetPartRef ()
 
wxString GetAliasDescription () const
 Return information about the aliased parts. More...
 
wxString GetAliasDocumentation () const
 Return the documentation text for the given part alias. More...
 
bool Resolve (PART_LIBS *aLibs)
 Assigns the current LIB_PART from aLibs which this symbol is based on. More...
 
bool Resolve (SYMBOL_LIB_TABLE &aLibTable, PART_LIB *aCacheLib=NULL)
 
int GetUnit () const
 
void UpdatePinCache ()
 Updates the local cache of pin positions. More...
 
void SetUnit (int aUnit)
 Change the unit number to aUnit. More...
 
void UpdateUnit (int aUnit)
 Change the unit number to aUnit without setting any internal flags. More...
 
int GetConvert () const
 
void SetConvert (int aConvert)
 
wxString GetPrefix () const
 
void SetPrefix (const wxString &aPrefix)
 
TRANSFORMGetTransform () const
 
void SetTransform (const TRANSFORM &aTransform)
 
int GetUnitCount () const
 Return the number of units per package of the symbol. More...
 
void SetOrientation (int aOrientation)
 Compute the new transform matrix based on aOrientation for the symbol which is applied to the current transform. More...
 
int GetOrientation ()
 Get the display symbol orientation. More...
 
wxPoint GetScreenCoord (const wxPoint &aPoint)
 Returns the coordinate points relative to the orientation of the symbol to aPoint. More...
 
void GetMsgPanelInfo (std::vector< MSG_PANEL_ITEM > &aList) override
 Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for display purposes. More...
 
void ClearAnnotation (SCH_SHEET_PATH *aSheetPath)
 Clear exiting component annotation. More...
 
void SetTimeStamp (timestamp_t aNewTimeStamp)
 Change the time stamp to aNewTimeStamp and updates the reference path. More...
 
const EDA_RECT GetBoundingBox () const override
 Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes. More...
 
EDA_RECT GetBodyBoundingBox () const
 Return a bounding box for the symbol body but not the fields. More...
 
SCH_FIELDGetField (int aFieldNdx) const
 Returns a field in this symbol. More...
 
wxString GetFieldText (const wxString &aFieldName, bool aIncludeDefaultFields=true) const
 Search for a field named aFieldName and returns text associated with this field. More...
 
void GetFields (std::vector< SCH_FIELD * > &aVector, bool aVisibleOnly)
 Populates a std::vector with SCH_FIELDs. More...
 
SCH_FIELDAddField (const SCH_FIELD &aField)
 Add a field to the symbol. More...
 
SCH_FIELDFindField (const wxString &aFieldName, bool aIncludeDefaultFields=true)
 Search for a SCH_FIELD with aFieldName. More...
 
void SetFields (const SCH_FIELDS &aFields)
 Set multiple schematic fields. More...
 
void UpdateFields (bool aResetStyle, bool aResetRef=false)
 Restores fields to the original library values. More...
 
int GetFieldCount () const
 Return the number of fields in this symbol. More...
 
AUTOPLACED GetFieldsAutoplaced () const
 Return whether the fields have been automatically placed. More...
 
void ClearFieldsAutoplaced ()
 Set fields automatically placed flag false. More...
 
void AutoplaceFields (SCH_SCREEN *aScreen, bool aManual)
 Automatically orient all the fields in the component. More...
 
void AutoAutoplaceFields (SCH_SCREEN *aScreen)
 Autoplace fields only if correct to do so automatically. More...
 
LIB_PINGetPin (const wxString &number)
 Find a symbol pin by number. More...
 
void GetPins (std::vector< LIB_PIN * > &aPinsList)
 Populate a vector with all the pins. More...
 
void Draw (EDA_DRAW_PANEL *aPanel, wxDC *aDC, const wxPoint &aOffset, GR_DRAWMODE aDrawMode, COLOR4D aColor=COLOR4D::UNSPECIFIED) override
 Function Draw Draw a schematic item. More...
 
void Draw (EDA_DRAW_PANEL *aPanel, wxDC *aDC, const wxPoint &aOffset, GR_DRAWMODE aDrawMode, COLOR4D aColor, bool aDrawPinText)
 Draw a component with or without pin text. More...
 
void SwapData (SCH_ITEM *aItem) override
 Function SwapData swap the internal data structures aItem with the schematic item. More...
 
wxString GetPath (const SCH_SHEET_PATH *sheet) const
 
void SetCurrentSheetPath (const SCH_SHEET_PATH *aSheetPath)
 
const wxString GetRef (const SCH_SHEET_PATH *aSheet)
 Return the reference for the given sheet path. More...
 
void SetRef (const SCH_SHEET_PATH *aSheet, const wxString &aReference)
 Set the reference for the given sheet path for this symbol. More...
 
void AddHierarchicalReference (const wxString &aPath, const wxString &aRef, int aMulti)
 Add a full hierarchical reference to this symbol. More...
 
int GetUnitSelection (SCH_SHEET_PATH *aSheet)
 
void SetUnitSelection (SCH_SHEET_PATH *aSheet, int aUnitSelection)
 
void Move (const wxPoint &aMoveVector) override
 Function Move moves the item by aMoveVector to a new position. More...
 
void MirrorY (int aYaxis_position) override
 Function MirrorY mirrors item relative to the Y axis about aYaxis_position. More...
 
void MirrorX (int aXaxis_position) override
 Function MirrorX mirrors item relative to the X axis about aXaxis_position. More...
 
void Rotate (wxPoint aPosition) override
 Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction. More...
 
bool Matches (wxFindReplaceData &aSearchData, void *aAuxData, wxPoint *aFindLocation) override
 Function Matches compares the item against the search criteria in aSearchData. More...
 
void GetEndPoints (std::vector< DANGLING_END_ITEM > &aItemList) override
 Function GetEndPoints adds the schematic item end points to aItemList if the item has end points. More...
 
bool IsDanglingStateChanged (std::vector< DANGLING_END_ITEM > &aItemList) override
 Test if the component's dangling state has changed for all pins. More...
 
bool IsDangling () const override
 Return whether any pin in this symbol is dangling. More...
 
wxPoint GetPinPhysicalPosition (const LIB_PIN *Pin) const
 
bool IsSelectStateChanged (const wxRect &aRect) override
 Function IsSelectStateChanged checks if the selection state of an item inside aRect has changed. More...
 
bool IsConnectable () const override
 Function IsConnectable returns true if the schematic item can connect to another schematic item. More...
 
bool CanConnect (const SCH_ITEM *aItem) const override
 
bool IsInNetlist () const
 
void GetConnectionPoints (std::vector< wxPoint > &aPoints) const override
 Function GetConnectionPoints add all the connection points for this item to aPoints. More...
 
SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[]) override
 Function Visit may be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
LIB_ITEMGetDrawItem (const wxPoint &aPosition, KICAD_T aType=TYPE_NOT_INIT)
 Return the component library item at aPosition that is part of this component. More...
 
wxString GetSelectMenuText () const override
 Function GetSelectMenuText returns the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position. More...
 
BITMAP_DEF GetMenuImage () const override
 Function GetMenuImage returns a pointer to an image to be used in menus. More...
 
void GetNetListItem (NETLIST_OBJECT_LIST &aNetListItems, SCH_SHEET_PATH *aSheetPath) override
 Function GetNetListItem creates a new NETLIST_OBJECT for the schematic object and adds it to aNetListItems. More...
 
bool operator< (const SCH_ITEM &aItem) const override
 
bool operator== (const SCH_COMPONENT &aComponent) const
 
bool operator!= (const SCH_COMPONENT &aComponent) const
 
SCH_ITEMoperator= (const SCH_ITEM &aItem)
 
bool IsReplaceable () const override
 Function IsReplaceable. More...
 
wxPoint GetPosition () const override
 Function GetPosition. More...
 
void SetPosition (const wxPoint &aPosition) override
 Function SetPosition set the schematic item position to aPosition. More...
 
bool HitTest (const wxPoint &aPosition, int aAccuracy) const override
 Function HitTest tests if aPosition is contained within or on the bounding box of an item. More...
 
bool HitTest (const EDA_RECT &aRect, bool aContained=false, int aAccuracy=0) const override
 Function HitTest tests if aRect intersects or is contained within the bounding box of an item. More...
 
void Plot (PLOTTER *aPlotter) override
 Function Plot plots the schematic item to aPlotter. More...
 
EDA_ITEMClone () const override
 Function Clone creates a duplicate of this item with linked list members set to NULL. More...
 
SCH_ITEMNext () const
 
SCH_ITEMBack () const
 
wxPointGetStoredPos ()
 
void SetStoredPos (wxPoint aPos)
 
SCH_LAYER_ID GetLayer () const
 Function GetLayer returns the layer this item is on. More...
 
void SetLayer (SCH_LAYER_ID aLayer)
 Function SetLayer sets the layer this item is on. More...
 
virtual int GetPenSize () const
 Function GetPenSize virtual pure. More...
 
virtual bool Load (LINE_READER &aLine, wxString &aErrorMsg)
 Function Load reads a schematic item from aLine in a .sch file. More...
 
void ClearConnections ()
 Function ClearConnections clears all of the connection items from the list. More...
 
bool IsConnected (const wxPoint &aPoint) const
 Function IsConnected tests the item to see if it is connected to aPoint. More...
 
virtual bool HitTest (const wxPoint &aPosition) const override
 Function HitTest tests if aPosition is contained within or on the bounding area of an item. More...
 
virtual bool CanIncrementLabel () const
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
KICAD_T Type () const
 Function Type() More...
 
timestamp_t GetTimeStamp () const
 
EDA_ITEMGetParent () const
 
DHEADGetList () const
 
void SetNext (EDA_ITEM *aNext)
 
void SetBack (EDA_ITEM *aBack)
 
void SetParent (EDA_ITEM *aParent)
 
void SetList (DHEAD *aList)
 
bool IsNew () const
 
bool IsModified () const
 
bool IsMoving () const
 
bool IsDragging () const
 
bool IsWireImage () const
 
bool IsSelected () const
 
bool IsResized () const
 
bool IsHighlighted () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetHighlighted ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearHighlighted ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (int type) const
 
void SetState (int type, int state)
 
STATUS_FLAGS GetStatus () const
 
void SetStatus (STATUS_FLAGS aStatus)
 
void SetFlags (STATUS_FLAGS aMask)
 
void ClearFlags (STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
STATUS_FLAGS GetFlags () const
 
void SetForceVisible (bool aEnable)
 Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible. More...
 
bool Replace (wxFindReplaceData &aSearchData, wxString &aText)
 Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool Replace (wxFindReplaceData &aSearchData, void *aAuxData=NULL)
 Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual const BOX2I ViewBBox () const override
 Function ViewBBox() returns the bounding box of the item covering all its layers. More...
 
virtual void ViewGetLayers (int aLayers[], int &aCount) const override
 Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Function ViewDraw() Draws the parts of the object belonging to layer aLayer. More...
 
virtual unsigned int ViewGetLOD (int aLayer, VIEW *aView) const
 Function ViewGetLOD() Returns the level of detail (LOD) of the item. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 

Static Public Member Functions

static void ResolveAll (const SCH_COLLECTOR &aComponents, PART_LIBS *aLibs)
 
static void ResolveAll (const SCH_COLLECTOR &aComponents, SYMBOL_LIB_TABLE &aLibTable, PART_LIB *aCacheLib=NULL)
 
static void UpdateAllPinCaches (const SCH_COLLECTOR &aComponents)
 Update the pin cache for all components in aComponents. More...
 
static bool IsReferenceStringValid (const wxString &aReferenceString)
 Tests for an acceptable reference string. More...
 
static std::string FormatInternalUnits (int aValue)
 Function FormatInternalUnits converts aValue from schematic internal units to a string appropriate for writing to file. More...
 
static std::string FormatInternalUnits (const wxPoint &aPoint)
 
static std::string FormatInternalUnits (const wxSize &aSize)
 
static std::string FormatAngle (double aAngle)
 Function FormatAngle converts aAngle from board units to a string appropriate for writing to file. More...
 
static SEARCH_RESULT IterateForward (EDA_ITEM *listStart, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Function IterateForward walks through the object tree calling the inspector() on each object type requested in scanTypes. More...
 
static bool Sort (const EDA_ITEM *aLeft, const EDA_ITEM *aRight)
 Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers. More...
 

Protected Member Functions

bool Matches (const wxString &aText, wxFindReplaceData &aSearchData)
 Function Matches compares aText against search criteria in aSearchData. More...
 

Protected Attributes

SCH_LAYER_ID m_Layer
 
EDA_ITEMS m_connections
 List of items connected to this item. More...
 
wxPoint m_storedPos
 a temporary variable used in some move commands

to store a initial pos (of the item or mouse cursor)

More...
 
EDA_ITEMPnext
 next in linked list More...
 
EDA_ITEMPback
 previous in linked list More...
 
DHEADm_List
 which DLIST I am on. More...
 
EDA_ITEMm_Parent
 Linked list: Link (parent struct) More...
 
timestamp_t m_TimeStamp
 Time stamp used for logical links. More...
 
bool m_forceVisible
 Set to true to override the visibility setting of the item. More...
 
STATUS_FLAGS m_Flags
 Flag bits for editing and other uses. More...
 

Private Member Functions

void Init (const wxPoint &pos=wxPoint(0, 0))
 
bool doIsConnected (const wxPoint &aPosition) const override
 Function doIsConnected provides the object specific test to see if it is connected to aPosition. More...
 

Private Attributes

wxPoint m_Pos
 Name and library where symbol was loaded from, i.e. "74xx:74LS00". More...
 
LIB_ID m_lib_id
 
int m_unit
 The unit for multiple part per package components. More...
 
int m_convert
 The alternate body style for components that have more than one body style defined. More...
 
wxString m_prefix
 C, R, U, Q etc - the first character which typically indicates what the component is. More...
 
TRANSFORM m_transform
 The rotation/mirror transformation matrix. More...
 
SCH_FIELDS m_Fields
 Variable length list of fields. More...
 
PART_REF m_part
 points into the PROJECT's libraries to the LIB_PART for this component More...
 
std::vector< bool > m_isDangling
 One isDangling per pin. More...
 
std::vector< wxPointm_Pins
 
AUTOPLACED m_fieldsAutoplaced
 indicates status of field autoplacement More...
 
const SCH_SHEET_PATHm_currentSheetPath
 A temporary sheet path is required to generate the correct reference designator string in complex hierarchies. More...
 
wxArrayString m_PathsAndReferences
 Defines the hierarchical path and reference of the component. More...
 

Friends

class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC
 

Detailed Description

Class SCH_COMPONENT describes a real schematic component.

Definition at line 69 of file sch_component.h.

Member Enumeration Documentation

Enumerator
AUTOPLACED_NO 
AUTOPLACED_AUTO 
AUTOPLACED_MANUAL 

Definition at line 74 of file sch_component.h.

Constructor & Destructor Documentation

SCH_COMPONENT::SCH_COMPONENT ( const wxPoint pos = wxPoint( 0, 0 ),
SCH_ITEM aParent = NULL 
)

Definition at line 121 of file sch_component.cpp.

References AUTOPLACED_NO, Init(), m_currentSheetPath, and m_fieldsAutoplaced.

Referenced by Clone().

121  :
122  SCH_ITEM( aParent, SCH_COMPONENT_T )
123 {
124  Init( aPos );
125  m_currentSheetPath = NULL;
127 }
const SCH_SHEET_PATH * m_currentSheetPath
A temporary sheet path is required to generate the correct reference designator string in complex hie...
void Init(const wxPoint &pos=wxPoint(0, 0))
AUTOPLACED m_fieldsAutoplaced
indicates status of field autoplacement
Definition: sch_component.h:98
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType)
SCH_COMPONENT::SCH_COMPONENT ( LIB_PART aPart,
SCH_SHEET_PATH aSheet,
int  unit = 0,
int  convert = 0,
const wxPoint pos = wxPoint( 0, 0 ),
bool  setNewItemFlag = false 
)

Create schematic component from library component object.

Parameters
aPart- library part to create schematic component from.
aSheet- Schematic sheet the component is place into.
unit- Part for components that have multiple parts per package.
convert- Use the alternate body style for the schematic component.
pos- Position to place new component.
setNewItemFlag- Set the component IS_NEW and IS_MOVED flags.

Definition at line 130 of file sch_component.cpp.

References AUTOPLACED_NO, GetField(), GetLibId(), LIB_PART::GetName(), GetNewTimeStamp(), LIB_PART::GetReferenceField(), EDA_TEXT::GetText(), Init(), IS_MOVED, IS_NEW, m_convert, m_currentSheetPath, m_fieldsAutoplaced, EDA_ITEM::m_Flags, m_lib_id, m_part, m_prefix, m_unit, LIB_ID::SetLibItemName(), SetRef(), EDA_TEXT::SetText(), SetTimeStamp(), LIB_PART::SharedPtr(), UpdateFields(), UpdatePinCache(), and VALUE.

131  :
132  SCH_ITEM( NULL, SCH_COMPONENT_T )
133 {
134  Init( pos );
135 
136  m_unit = unit;
137  m_convert = convert;
138  m_lib_id.SetLibItemName( aPart.GetName(), false );
139  m_part = aPart.SharedPtr();
140  m_currentSheetPath = NULL;
142 
144 
145  if( setNewItemFlag )
146  m_Flags = IS_NEW | IS_MOVED;
147 
148  // Import user defined fields from the library component
149  UpdateFields( true, true );
150 
151  // Update the pin locations
152  UpdatePinCache();
153 
154  wxString msg = aPart.GetReferenceField().GetText();
155 
156  if( msg.IsEmpty() )
157  msg = wxT( "U" );
158 
159  m_prefix = msg;
160 
161  // update the reference -- just the prefix for now.
162  msg += wxT( "?" );
163  SetRef( sheet, msg );
164 
165  // Use the schematic component name instead of the library value field name.
166  GetField( VALUE )->SetText( GetLibId().GetLibItemName() );
167 }
void UpdateFields(bool aResetStyle, bool aResetRef=false)
Restores fields to the original library values.
void SetTimeStamp(timestamp_t aNewTimeStamp)
Change the time stamp to aNewTimeStamp and updates the reference path.
const SCH_SHEET_PATH * m_currentSheetPath
A temporary sheet path is required to generate the correct reference designator string in complex hie...
#define IS_NEW
New item, just created.
Definition: base_struct.h:109
timestamp_t GetNewTimeStamp()
Definition: common.cpp:167
void UpdatePinCache()
Updates the local cache of pin positions.
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
LIB_FIELD & GetReferenceField()
Return reference to the reference designator field.
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:128
PART_SPTR SharedPtr()
int SetLibItemName(const UTF8 &aLibItemName, bool aTestForRev=true)
Override the library item name portion of the LIB_ID to aLibItemName.
Definition: lib_id.cpp:232
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
void Init(const wxPoint &pos=wxPoint(0, 0))
void SetRef(const SCH_SHEET_PATH *aSheet, const wxString &aReference)
Set the reference for the given sheet path for this symbol.
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
const LIB_ID & GetLibId() const
const wxString & GetName() const
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
AUTOPLACED m_fieldsAutoplaced
indicates status of field autoplacement
Definition: sch_component.h:98
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
#define VALUE
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType)
virtual void SetText(const wxString &aText)
Definition: eda_text.h:139
#define IS_MOVED
Item being moved.
Definition: base_struct.h:108
SCH_COMPONENT::SCH_COMPONENT ( const SCH_COMPONENT aComponent)

Clones aComponent into a new schematic symbol object.

All fields are copied as is except for the linked list management pointers which are set to NULL, and the SCH_FIELD's m_Parent pointers which are set to the new object.

Parameters
aComponentis the schematic symbol to clone.

Definition at line 170 of file sch_component.cpp.

References GetField(), GetFieldCount(), i, m_convert, m_currentSheetPath, m_Fields, m_fieldsAutoplaced, m_isDangling, m_lib_id, EDA_ITEM::m_Parent, m_part, m_PathsAndReferences, m_Pins, m_Pos, m_prefix, EDA_ITEM::m_TimeStamp, m_transform, m_unit, EDA_ITEM::SetParent(), and SetTimeStamp().

170  :
171  SCH_ITEM( aComponent )
172 {
173  m_currentSheetPath = NULL;
174  m_Parent = aComponent.m_Parent;
175  m_Pos = aComponent.m_Pos;
176  m_unit = aComponent.m_unit;
177  m_convert = aComponent.m_convert;
178  m_lib_id = aComponent.m_lib_id;
179  m_part = aComponent.m_part;
180  m_Pins = aComponent.m_Pins;
181 
182  SetTimeStamp( aComponent.m_TimeStamp );
183 
184  m_transform = aComponent.m_transform;
185  m_prefix = aComponent.m_prefix;
187  m_Fields = aComponent.m_Fields;
188 
189  // Re-parent the fields, which before this had aComponent as parent
190  for( int i = 0; i<GetFieldCount(); ++i )
191  {
192  GetField( i )->SetParent( this );
193  }
194 
195  m_isDangling = aComponent.m_isDangling;
197 }
void SetTimeStamp(timestamp_t aNewTimeStamp)
Change the time stamp to aNewTimeStamp and updates the reference path.
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:179
timestamp_t m_TimeStamp
Time stamp used for logical links.
Definition: base_struct.h:180
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
const SCH_SHEET_PATH * m_currentSheetPath
A temporary sheet path is required to generate the correct reference designator string in complex hie...
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
std::vector< bool > m_isDangling
One isDangling per pin.
Definition: sch_component.h:95
std::vector< wxPoint > m_Pins
Definition: sch_component.h:96
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:224
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
int GetFieldCount() const
Return the number of fields in this symbol.
size_t i
Definition: json11.cpp:597
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
AUTOPLACED m_fieldsAutoplaced
indicates status of field autoplacement
Definition: sch_component.h:98
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType)
SCH_COMPONENT::~SCH_COMPONENT ( )
inline

Definition at line 149 of file sch_component.h.

149 { }

Member Function Documentation

SCH_FIELD * SCH_COMPONENT::AddField ( const SCH_FIELD aField)

Add a field to the symbol.

Parameters
aFieldis the field to add to this symbol.
Returns
the newly inserted field.

Definition at line 950 of file sch_component.cpp.

References m_Fields.

Referenced by GetTransform(), Init(), and UpdateFields().

951 {
952  int newNdx = m_Fields.size();
953 
954  m_Fields.push_back( aField );
955  return &m_Fields[newNdx];
956 }
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
void SCH_COMPONENT::AddHierarchicalReference ( const wxString &  aPath,
const wxString &  aRef,
int  aMulti 
)

Add a full hierarchical reference to this symbol.

Parameters
aPathis the hierarchical path (/&ltsheet timestamp&gt/&ltcomponent timestamp&gt like /05678E50/A23EF560)
aRefis the local reference like C45, R56
aMultiis the unit selection used for symbols with multiple units per package.

Definition at line 652 of file sch_component.cpp.

References m_PathsAndReferences.

Referenced by SetCurrentSheetPath(), SetRef(), and SetUnitSelection().

655 {
656  wxString h_path, h_ref;
657  wxStringTokenizer tokenizer;
658  wxString separators( wxT( " " ) );
659 
660  // Search for an existing path and remove it if found (should not occur)
661  for( unsigned ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
662  {
663  tokenizer.SetString( m_PathsAndReferences[ii], separators );
664  h_path = tokenizer.GetNextToken();
665 
666  if( h_path.Cmp( aPath ) == 0 )
667  {
668  m_PathsAndReferences.RemoveAt( ii );
669  ii--;
670  }
671  }
672 
673  h_ref = aPath + wxT( " " ) + aRef;
674  h_ref << wxT( " " ) << aMulti;
675  m_PathsAndReferences.Add( h_ref );
676 }
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
void SCH_COMPONENT::AutoAutoplaceFields ( SCH_SCREEN aScreen)
inline

Autoplace fields only if correct to do so automatically.

Fields that have been moved by hand are not automatically placed.

Parameters
aScreenis the SCH_SCREEN associated with the current instance of the component.

Definition at line 417 of file sch_component.h.

References AutoplaceFields(), GetFieldsAutoplaced(), GetPin(), and GetPins().

Referenced by SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::OnOrient(), SCH_EDIT_FRAME::OnRotate(), and SCH_EDIT_FRAME::OnSelectUnit().

418  {
419  if( GetFieldsAutoplaced() )
421  }
AUTOPLACED GetFieldsAutoplaced() const
Return whether the fields have been automatically placed.
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual)
Automatically orient all the fields in the component.
void SCH_COMPONENT::AutoplaceFields ( SCH_SCREEN aScreen,
bool  aManual 
)

Automatically orient all the fields in the component.

Parameters
aScreenis the SCH_SCREEN associated with the current instance of the component. This can be NULL when aManual is false.
aManualshould be true if the autoplace was manually initiated (e.g. by a hotkey or a menu item). Some more 'intelligent' routines will be used that would be annoying if done automatically during moves.

Definition at line 717 of file autoplace_fields.cpp.

References AUTOPLACER::DoAutoplace().

Referenced by AutoAutoplaceFields(), ClearFieldsAutoplaced(), SCH_EDIT_FRAME::Load_Component(), and SCH_EDIT_FRAME::OnAutoplaceFields().

718 {
719  if( aManual )
720  wxASSERT_MSG( aScreen, "A SCH_SCREEN pointer must be given for manual autoplacement" );
721  AUTOPLACER autoplacer( this, aScreen );
722  autoplacer.DoAutoplace( aManual );
724 }
AUTOPLACED m_fieldsAutoplaced
indicates status of field autoplacement
Definition: sch_component.h:98
SCH_ITEM* SCH_ITEM::Back ( ) const
inlineinherited

Definition at line 144 of file sch_item_struct.h.

Referenced by DrawSegment(), SCH_SHEET_PATH::FindPreviousItem(), and SCH_SHEET_LIST::FindPreviousItem().

144 { return static_cast<SCH_ITEM*>( Pback ); }
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:176
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
bool SCH_COMPONENT::CanConnect ( const SCH_ITEM aItem) const
inlineoverridevirtual

Reimplemented from SCH_ITEM.

Definition at line 573 of file sch_component.h.

References GetConnectionPoints(), GetDrawItem(), SCH_ITEM::GetLayer(), GetMenuImage(), GetNetListItem(), GetSelectMenuText(), IsInNetlist(), LAYER_WIRE, operator!=(), operator<(), operator=(), operator==(), SCH_JUNCTION_T, SCH_LINE_T, SCH_NO_CONNECT_T, EDA_ITEM::Type(), TYPE_NOT_INIT, and Visit().

574  {
575  return ( aItem->Type() == SCH_LINE_T && aItem->GetLayer() == LAYER_WIRE ) ||
576  ( aItem->Type() == SCH_NO_CONNECT_T ) ||
577  ( aItem->Type() == SCH_JUNCTION_T );
578  }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:209
SCH_LAYER_ID GetLayer() const
Function GetLayer returns the layer this item is on.
virtual bool SCH_ITEM::CanIncrementLabel ( ) const
inlinevirtualinherited

Reimplemented in SCH_TEXT.

Definition at line 338 of file sch_item_struct.h.

Referenced by SCH_EDIT_FRAME::RepeatDrawItem().

338 { return false; }
void SCH_COMPONENT::ClearAnnotation ( SCH_SHEET_PATH aSheetPath)

Clear exiting component annotation.

For example, IC23 would be changed to IC? and unit number would be reset.

Parameters
aSheetPathis the hierarchical path of the symbol to clear or remove all annotations for this symbol if NULL.

Definition at line 1079 of file sch_component.cpp.

References GetPath(), IsReferenceStringValid(), m_Fields, m_part, m_PathsAndReferences, m_prefix, m_unit, REFERENCE, and EDA_ITEM::SetModified().

Referenced by SCH_SCREEN::ClearAnnotation(), GetTransform(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), and SCH_EDIT_FRAME::PasteListOfItems().

1080 {
1081  bool keepMulti = false;
1082  wxArrayString reference_fields;
1083 
1084  static const wxChar separators[] = wxT( " " );
1085 
1086  PART_SPTR part = m_part.lock();
1087 
1088  if( part && part->UnitsLocked() )
1089  keepMulti = true;
1090 
1091  // Build a reference with no annotation,
1092  // i.e. a reference ended by only one '?'
1093  wxString defRef = m_prefix;
1094 
1095  if( IsReferenceStringValid( defRef ) )
1096  {
1097  while( defRef.Last() == '?' )
1098  defRef.RemoveLast();
1099  }
1100  else
1101  { // This is a malformed reference: reinit this reference
1102  m_prefix = defRef = wxT("U"); // Set to default ref prefix
1103  }
1104 
1105  defRef.Append( wxT( "?" ) );
1106 
1107  wxString multi = wxT( "1" );
1108 
1109  // For components with units locked,
1110  // we cannot remove all annotations: part selection must be kept
1111  // For all components: if aSheetPath is not NULL,
1112  // remove annotation only for the given path
1113  if( keepMulti || aSheetPath )
1114  {
1115  wxString NewHref;
1116  wxString path;
1117 
1118  if( aSheetPath )
1119  path = GetPath( aSheetPath );
1120 
1121  for( unsigned int ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
1122  {
1123  // Break hierarchical reference in path, ref and multi selection:
1124  reference_fields = wxStringTokenize( m_PathsAndReferences[ii], separators );
1125 
1126  if( aSheetPath == NULL || reference_fields[0].Cmp( path ) == 0 )
1127  {
1128  if( keepMulti ) // Get and keep part selection
1129  multi = reference_fields[2];
1130 
1131  NewHref = reference_fields[0];
1132  NewHref << wxT( " " ) << defRef << wxT( " " ) << multi;
1133  m_PathsAndReferences[ii] = NewHref;
1134  }
1135  }
1136  }
1137  else
1138  {
1139  // Clear reference strings, but does not free memory because a new annotation
1140  // will reuse it
1141  m_PathsAndReferences.Empty();
1142  m_unit = 1;
1143  }
1144 
1145  // These 2 changes do not work in complex hierarchy.
1146  // When a clear annotation is made, the calling function must call a
1147  // UpdateAllScreenReferences for the active sheet.
1148  // But this call cannot made here.
1149  m_Fields[REFERENCE].SetText( defRef ); //for drawing.
1150 
1151  SetModified();
1152 }
void SetModified()
wxString GetPath(const SCH_SHEET_PATH *sheet) const
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
Field Reference of part, i.e. "IC21".
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
static bool IsReferenceStringValid(const wxString &aReferenceString)
Tests for an acceptable reference string.
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
void EDA_ITEM::ClearBrightened ( )
inlineinherited

Definition at line 244 of file base_struct.h.

References BRIGHTENED, EDA_ITEM::ClearFlags(), and EDA_ITEM::SetModified().

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), and SELECTION_TOOL::disambiguationMenu().

244 { ClearFlags( BRIGHTENED ); }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:133
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:265
void SCH_ITEM::ClearConnections ( )
inlineinherited

Function ClearConnections clears all of the connection items from the list.

The vector release method is used to prevent the item pointers from being deleted. Do not use the vector erase method on the connection list.

Definition at line 298 of file sch_item_struct.h.

298 { m_connections.clear(); }
EDA_ITEMS m_connections
List of items connected to this item.
void SCH_COMPONENT::ClearFieldsAutoplaced ( )
inline

Set fields automatically placed flag false.

Definition at line 396 of file sch_component.h.

References AUTOPLACED_NO, and AutoplaceFields().

Referenced by SCH_EDIT_FRAME::OnRotate(), SCH_EDIT_FRAME::PrepareMoveItem(), and DIALOG_SCH_EDIT_ONE_FIELD::UpdateField().

AUTOPLACED m_fieldsAutoplaced
indicates status of field autoplacement
Definition: sch_component.h:98
void EDA_ITEM::ClearFlags ( STATUS_FLAGS  aMask = EDA_ITEM_ALL_FLAGS)
inlineinherited

Definition at line 265 of file base_struct.h.

Referenced by Abort_Edit_Pcb_Text(), Abort_EditEdge(), Abort_Move_ModuleOutline(), Abort_Move_Pad(), Abort_MoveOrCopyModule(), Abort_MoveTrack(), Abort_Zone_Create_Outline(), Abort_Zone_Move_Corner_Or_Outlines(), AbortMoveAndEditTarget(), abortMoveBitmap(), AbortMoveDimensionText(), abortMoveItem(), AbortMoveTextModule(), AbortPinMove(), SCH_SCREEN::addConnectedItemsToBlock(), SCH_EDIT_FRAME::addCurrentItemToList(), PNS_KICAD_IFACE::AddItem(), PCB_EDIT_FRAME::AppendBoardFile(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Zone(), SCH_EDIT_FRAME::BeginSegment(), PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Block_Flip(), PCB_EDIT_FRAME::Block_Move(), PCB_EDIT_FRAME::Change_Side_Module(), SCH_SCREEN::ClearAnnotation(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearHighlighted(), DRAG_LIST::ClearList(), ClearMarkItems(), clearModuleItemFlags(), EDA_ITEM::ClearSelected(), SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::copyBlockItems(), CopyMarkedItems(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), MWAVE::CreateMicrowaveInductor(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), PCB_EDIT_FRAME::Delete_LastCreatedCorner(), PCB_EDIT_FRAME::Delete_Segment_Edge(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), PCB_EDIT_FRAME::EditDimension(), PCB_EDIT_FRAME::End_Edge(), FOOTPRINT_EDIT_FRAME::End_Edge_Module(), PCB_EDIT_FRAME::End_Move_Zone_Corner_Or_Outlines(), PCB_EDIT_FRAME::End_Zone(), EraseDragList(), PCB_EDIT_FRAME::Exchange_Module(), ExitSheet(), SCH_SCREEN::GetConnection(), PCB_BASE_FRAME::GlobalChange_PadSettings(), PCB_BASE_FRAME::Import_Pad_Settings(), SCH_JUNCTION::IsSelectStateChanged(), SCH_NO_CONNECT::IsSelectStateChanged(), SCH_MARKER::IsSelectStateChanged(), SCH_BUS_ENTRY_BASE::IsSelectStateChanged(), SCH_BITMAP::IsSelectStateChanged(), SCH_LINE::IsSelectStateChanged(), SCH_TEXT::IsSelectStateChanged(), SCH_SHEET::IsSelectStateChanged(), IsSelectStateChanged(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), MarkItemsInBloc(), MirrorX(), MirrorY(), moveBitmap(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), LIB_EDIT_FRAME::OnEditPin(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnRotateItem(), SCH_EDIT_FRAME::OnSelectUnit(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), SCH_FIELD::Place(), PCB_EDIT_FRAME::Place_DrawItem(), FOOTPRINT_EDIT_FRAME::Place_EdgeMod(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCBNEW_CONTROL::placeBoardItems(), PCB_EDIT_FRAME::PlaceDimensionText(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), PCB_BASE_FRAME::PlaceModule(), PCB_BASE_FRAME::PlacePad(), PCB_EDIT_FRAME::PlaceTarget(), DRAWING_TOOL::PlaceText(), PCB_BASE_FRAME::PlaceTexteModule(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::RepeatDrawItem(), LIB_EDIT_FRAME::RepeatPinItem(), BOARD_COMMIT::Revert(), PCB_BASE_FRAME::Rotate_Module(), RotateListOfItems(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SCH_LEGACY_PLUGIN_CACHE::savePin(), FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint(), SCH_EDIT_FRAME::SetRepeatItem(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveModule(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

265 { m_Flags &= ~aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
void EDA_ITEM::ClearHighlighted ( )
inlineinherited

Definition at line 243 of file base_struct.h.

References EDA_ITEM::ClearFlags(), and HIGHLIGHTED.

243 { ClearFlags( HIGHLIGHTED ); }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:132
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:265
void EDA_ITEM::ClearSelected ( )
inlineinherited
EDA_ITEM * SCH_COMPONENT::Clone ( ) const
overridevirtual

Function Clone creates a duplicate of this item with linked list members set to NULL.

The default version will return NULL in release builds and likely crash the program. In debug builds, a warning message indicating the derived class has not implemented cloning. This really should be a pure virtual function. Due to the fact that there are so many objects derived from EDA_ITEM, the decision was made to return NULL until all the objects derived from EDA_ITEM implement cloning. Once that happens, this function should be made pure.

Returns
A clone of the item.

Reimplemented from EDA_ITEM.

Definition at line 229 of file sch_component.cpp.

References SCH_COMPONENT().

Referenced by SetPosition().

230 {
231  return new SCH_COMPONENT( *this );
232 }
SCH_COMPONENT(const wxPoint &pos=wxPoint(0, 0), SCH_ITEM *aParent=NULL)
bool SCH_COMPONENT::doIsConnected ( const wxPoint aPosition) const
overrideprivatevirtual

Function doIsConnected provides the object specific test to see if it is connected to aPosition.

Note
Override this function if the derived object can be connect to another object such as a wire, bus, or junction. Do not override this function for objects that cannot have connections. The default will always return false. This functions is call through the public function IsConnected() which performs tests common to all schematic items before calling the item specific connection testing.
Parameters
aPositionA reference to a wxPoint object containing the test position.
Returns
True if connection to aPosition exists.

Reimplemented from SCH_ITEM.

Definition at line 1956 of file sch_component.cpp.

References TRANSFORM::InverseTransform(), m_Pins, m_Pos, m_transform, and TRANSFORM::TransformCoordinate().

Referenced by SetPosition().

1957 {
1958  wxPoint new_pos = m_transform.InverseTransform().TransformCoordinate( aPosition - m_Pos );
1959  return std::find( m_Pins.begin(), m_Pins.end(), new_pos ) != m_Pins.end();
1960 }
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
std::vector< wxPoint > m_Pins
Definition: sch_component.h:96
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:41
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
TRANSFORM InverseTransform() const
Calculate the Inverse mirror/rotation transform.
Definition: transform.cpp:58
void SCH_COMPONENT::Draw ( EDA_DRAW_PANEL aPanel,
wxDC *  aDC,
const wxPoint aOffset,
GR_DRAWMODE  aDrawMode,
COLOR4D  aColor = COLOR4D::UNSPECIFIED 
)
inlineoverridevirtual

Function Draw Draw a schematic item.

Each schematic item should have its own method

Parameters
aPanelDrawPanel to use (can be null) mainly used for clipping purposes.
aDCDevice Context (can be null)
aOffsetdrawing Offset (usually wxPoint(0,0), but can be different when moving an object)
aDrawModeGR_OR, GR_XOR, ...
aColorCOLOR4D::UNSPECIFIED to use the normal body item color, or force this color if it is a valid color

Implements SCH_ITEM.

Definition at line 443 of file sch_component.h.

References GetPath(), IsReferenceStringValid(), and SwapData().

Referenced by SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::Load_Component(), moveItemWithMouseCursor(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), SCH_EDIT_FRAME::OnSelectUnit(), and DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp().

445  {
446  Draw( aPanel, aDC, aOffset, aDrawMode, aColor, true );
447  }
void Draw(EDA_DRAW_PANEL *aPanel, wxDC *aDC, const wxPoint &aOffset, GR_DRAWMODE aDrawMode, COLOR4D aColor=COLOR4D::UNSPECIFIED) override
Function Draw Draw a schematic item.
void SCH_COMPONENT::Draw ( EDA_DRAW_PANEL aPanel,
wxDC *  aDC,
const wxPoint aOffset,
GR_DRAWMODE  aDrawMode,
COLOR4D  aColor,
bool  aDrawPinText 
)

Draw a component with or without pin text.

Parameters
aPanelis the panel to use (can be null) mainly used for clipping purposes.
aDCis the device context (can be null)
aOffsetis the drawing offset (usually wxPoint(0,0), but can be different when moving an object)
aDrawModeis the drawing mode, GR_OR, GR_XOR, ...
aColoruse COLOR4D::UNSPECIFIED for the normal body item color or use this color if >= 0
aDrawPinTextuse true to draw pin texts, false to draw only the pin shape usually false to draw a component when moving it and true otherwise.

Definition at line 583 of file sch_component.cpp.

References boundingBox(), BROWN, PART_DRAW_OPTIONS::Default(), SCH_FIELD::Draw(), LIB_PART::Draw(), dummy(), SCH_FIELD::GetBoundingBox(), GetBoundingBox(), EDA_DRAW_PANEL::GetClipBox(), BASE_SCREEN::GetCurItem(), GetField(), GetFieldCount(), EDA_DRAW_PANEL::GetScreen(), GRRect(), EDA_DRAW_PANEL::IsMouseCaptured(), EDA_ITEM::IsMoving(), EDA_TEXT::IsVisible(), m_convert, m_isDangling, m_part, m_Pos, m_transform, m_unit, REFERENCE, and VALUE.

586 {
587  auto opts = PART_DRAW_OPTIONS::Default();
588  opts.draw_mode = aDrawMode;
589  opts.color = aColor;
590  opts.transform = m_transform;
591  opts.show_pin_text = aDrawPinText;
592  opts.draw_visible_fields = false;
593  opts.draw_hidden_fields = false;
594 
595  if( PART_SPTR part = m_part.lock() )
596  {
597  // Draw pin targets if part is being dragged
598  bool dragging = aPanel->GetScreen()->GetCurItem() == this && aPanel->IsMouseCaptured();
599 
600  if( !dragging )
601  {
602  opts.dangling = m_isDangling;
603  }
604 
605  part->Draw( aPanel, aDC, m_Pos + aOffset, m_unit, m_convert, opts );
606  }
607  else // Use dummy() part if the actual cannot be found.
608  {
609  dummy()->Draw( aPanel, aDC, m_Pos + aOffset, 0, 0, opts );
610  }
611 
612  SCH_FIELD* field = GetField( REFERENCE );
613 
614  if( field->IsVisible() && !field->IsMoving() )
615  {
616  field->Draw( aPanel, aDC, aOffset, aDrawMode );
617  }
618 
619  for( int ii = VALUE; ii < GetFieldCount(); ii++ )
620  {
621  field = GetField( ii );
622 
623  if( field->IsMoving() )
624  continue;
625 
626  field->Draw( aPanel, aDC, aOffset, aDrawMode );
627  }
628 
629 #if 0
630  // Only for testing purposes, draw the component bounding box
631  {
633  GRRect( aPanel->GetClipBox(), aDC, boundingBox, 0, BROWN );
634 #if 1
635  if( GetField( REFERENCE )->IsVisible() )
636  {
637  boundingBox = GetField( REFERENCE )->GetBoundingBox();
638  GRRect( aPanel->GetClipBox(), aDC, boundingBox, 0, BROWN );
639  }
640 
641  if( GetField( VALUE )->IsVisible() )
642  {
643  boundingBox = GetField( VALUE )->GetBoundingBox();
644  GRRect( aPanel->GetClipBox(), aDC, boundingBox, 0, BROWN );
645  }
646 #endif
647  }
648 #endif
649 }
Class SCH_FIELD instances are attached to a component and provide a place for the component&#39;s value...
Definition: sch_field.h:56
void Draw(EDA_DRAW_PANEL *aPanel, wxDC *aDc, const wxPoint &aOffset, int aMulti, int aConvert, const PART_DRAW_OPTIONS &aOpts)
Draw part.
bool IsMoving() const
Definition: base_struct.h:229
EDA_ITEM * GetCurItem() const
Definition: base_screen.h:233
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
void Draw(EDA_DRAW_PANEL *aPanel, wxDC *aDC, const wxPoint &aOffset, GR_DRAWMODE aDrawMode, COLOR4D aColor=COLOR4D::UNSPECIFIED) override
Function Draw Draw a schematic item.
Definition: sch_field.cpp:119
std::vector< bool > m_isDangling
One isDangling per pin.
Definition: sch_component.h:95
Field Reference of part, i.e. "IC21".
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
BOX2I boundingBox(T aObject)
boundingBox template method
Definition: shape_index.h:59
void GRRect(EDA_RECT *aClipBox, wxDC *aDC, int x1, int y1, int x2, int y2, COLOR4D aColor)
Definition: gr_basic.cpp:1098
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
bool IsMouseCaptured() const
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
EDA_RECT * GetClipBox()
static PART_DRAW_OPTIONS Default()
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
int GetFieldCount() const
Return the number of fields in this symbol.
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
Definition: sch_field.cpp:252
static LIB_PART * dummy()
Used when a LIB_PART is not found in library to draw a dummy shape This component is a 400 mils squar...
bool IsVisible() const
Definition: eda_text.h:174
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
BASE_SCREEN * GetScreen()
Definition: draw_panel.cpp:193
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
#define VALUE
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
Definition: colors.h:62
SCH_FIELD * SCH_COMPONENT::FindField ( const wxString &  aFieldName,
bool  aIncludeDefaultFields = true 
)

Search for a SCH_FIELD with aFieldName.

Parameters
aFieldNameis the name of the field to find.
aIncludeDefaultFieldssearches the library symbol default fields if true.
Returns
the field if found or NULL if the field was not found.

Definition at line 959 of file sch_component.cpp.

References i, m_Fields, and MANDATORY_FIELDS.

Referenced by NETLIST_EXPORTER_PSPICE::GetSpiceField(), GetTransform(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers(), NETLIST_EXPORTER_PSPICE::ProcessNetlist(), and UpdateFields().

960 {
961  unsigned start = aIncludeDefaultFields ? 0 : MANDATORY_FIELDS;
962 
963  for( unsigned i = start; i<m_Fields.size(); ++i )
964  {
965  if( aFieldName == m_Fields[i].GetName( false ) )
966  {
967  return &m_Fields[i];
968  }
969  }
970 
971  return NULL;
972 }
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
The first 4 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors...
size_t i
Definition: json11.cpp:597
std::string SCH_ITEM::FormatAngle ( double  aAngle)
staticinherited

Function FormatAngle converts aAngle from board units to a string appropriate for writing to file.

Note
Internal angles for board items can be either degrees or tenths of degree on how KiCad is built.
Parameters
aAngleA angle value to convert.
Returns
A std::string object containing the converted angle.

Definition at line 123 of file sch_item_struct.cpp.

124 {
125  char temp[50];
126  int len;
127 
128  len = snprintf( temp, sizeof(temp), "%.10g", aAngle / 10.0 );
129 
130  return std::string( temp, len );
131 }
std::string SCH_ITEM::FormatInternalUnits ( int  aValue)
staticinherited

Function FormatInternalUnits converts aValue from schematic internal units to a string appropriate for writing to file.

Parameters
aValueA coordinate value to convert.
Returns
A std::string object containing the converted value.

Definition at line 99 of file sch_item_struct.cpp.

Referenced by SCH_ITEM::FormatInternalUnits().

100 {
101  char buf[50];
102  double engUnits = aValue;
103  int len;
104 
105  if( engUnits != 0.0 && fabs( engUnits ) <= 0.0001 )
106  {
107  len = snprintf( buf, sizeof(buf), "%.10f", engUnits );
108 
109  while( --len > 0 && buf[len] == '0' )
110  buf[len] = '\0';
111 
112  ++len;
113  }
114  else
115  {
116  len = snprintf( buf, sizeof(buf), "%.10g", engUnits );
117  }
118 
119  return std::string( buf, len );
120 }
std::string SCH_ITEM::FormatInternalUnits ( const wxPoint aPoint)
staticinherited

Definition at line 134 of file sch_item_struct.cpp.

References SCH_ITEM::FormatInternalUnits(), wxPoint::x, and wxPoint::y.

135 {
136  return FormatInternalUnits( aPoint.x ) + " " + FormatInternalUnits( aPoint.y );
137 }
static std::string FormatInternalUnits(int aValue)
Function FormatInternalUnits converts aValue from schematic internal units to a string appropriate fo...
std::string SCH_ITEM::FormatInternalUnits ( const wxSize &  aSize)
staticinherited

Definition at line 140 of file sch_item_struct.cpp.

References SCH_ITEM::FormatInternalUnits().

141 {
142  return FormatInternalUnits( aSize.GetWidth() ) + " " + FormatInternalUnits( aSize.GetHeight() );
143 }
static std::string FormatInternalUnits(int aValue)
Function FormatInternalUnits converts aValue from schematic internal units to a string appropriate fo...
wxString SCH_COMPONENT::GetAliasDescription ( ) const

Return information about the aliased parts.

Definition at line 274 of file sch_component.cpp.

References LIB_ALIAS::GetDescription(), GetLibId(), and m_part.

Referenced by GetPartRef().

275 {
276  if( PART_SPTR part = m_part.lock() )
277  {
278  LIB_ALIAS* alias = part->GetAlias( GetLibId().GetLibItemName() );
279 
280  if( !alias )
281  return wxEmptyString;
282 
283  return alias->GetDescription();
284  }
285 
286  return wxEmptyString;
287 }
Part library alias object definition.
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
wxString GetDescription() const
const LIB_ID & GetLibId() const
wxString SCH_COMPONENT::GetAliasDocumentation ( ) const

Return the documentation text for the given part alias.

Definition at line 290 of file sch_component.cpp.

References LIB_ALIAS::GetDocFileName(), GetLibId(), and m_part.

Referenced by GetPartRef().

291 {
292  if( PART_SPTR part = m_part.lock() )
293  {
294  LIB_ALIAS* alias = part->GetAlias( GetLibId().GetLibItemName() );
295 
296  if( !alias )
297  return wxEmptyString;
298 
299  return alias->GetDocFileName();
300  }
301 
302  return wxEmptyString;
303 }
Part library alias object definition.
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
wxString GetDocFileName() const
const LIB_ID & GetLibId() const
EDA_RECT SCH_COMPONENT::GetBodyBoundingBox ( ) const

Return a bounding box for the symbol body but not the fields.

Definition at line 1359 of file sch_component.cpp.

References dummy(), LIB_PART::GetBodyBoundingBox(), EDA_RECT::GetBottom(), EDA_RECT::GetRight(), EDA_RECT::GetX(), EDA_RECT::GetY(), m_convert, m_part, m_Pos, m_transform, m_unit, EDA_RECT::Offset(), EDA_RECT::SetHeight(), EDA_RECT::SetWidth(), EDA_RECT::SetX(), EDA_RECT::SetY(), TRANSFORM::x1, TRANSFORM::x2, TRANSFORM::y1, and TRANSFORM::y2.

Referenced by AUTOPLACER::AUTOPLACER(), GetBoundingBox(), GetTransform(), HitTest(), and operator<().

1360 {
1361  EDA_RECT bBox;
1362 
1363  if( PART_SPTR part = m_part.lock() )
1364  {
1365  bBox = part->GetBodyBoundingBox( m_unit, m_convert );
1366  }
1367  else
1368  {
1369  bBox = dummy()->GetBodyBoundingBox( m_unit, m_convert );
1370  }
1371 
1372  int x0 = bBox.GetX();
1373  int xm = bBox.GetRight();
1374 
1375  // We must reverse Y values, because matrix orientation
1376  // suppose Y axis normal for the library items coordinates,
1377  // m_transform reverse Y values, but bBox is already reversed!
1378  int y0 = -bBox.GetY();
1379  int ym = -bBox.GetBottom();
1380 
1381  // Compute the real Boundary box (rotated, mirrored ...)
1382  int x1 = m_transform.x1 * x0 + m_transform.y1 * y0;
1383  int y1 = m_transform.x2 * x0 + m_transform.y2 * y0;
1384  int x2 = m_transform.x1 * xm + m_transform.y1 * ym;
1385  int y2 = m_transform.x2 * xm + m_transform.y2 * ym;
1386 
1387  // H and W must be > 0:
1388  if( x2 < x1 )
1389  std::swap( x2, x1 );
1390 
1391  if( y2 < y1 )
1392  std::swap( y2, y1 );
1393 
1394  bBox.SetX( x1 );
1395  bBox.SetY( y1 );
1396  bBox.SetWidth( x2 - x1 );
1397  bBox.SetHeight( y2 - y1 );
1398 
1399  bBox.Offset( m_Pos );
1400  return bBox;
1401 }
void Offset(int dx, int dy)
Definition: eda_rect.h:128
int y2
Definition: transform.h:51
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
const EDA_RECT GetBodyBoundingBox(int aUnit, int aConvert) const
Get the symbol bounding box excluding fields.
int x2
Definition: transform.h:50
int x1
Definition: transform.h:48
int y1
Definition: transform.h:49
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
void SetHeight(int val)
Definition: eda_rect.h:133
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
void SetX(int val)
Definition: eda_rect.h:130
int GetBottom() const
Definition: eda_rect.h:122
int GetRight() const
Definition: eda_rect.h:119
void SetWidth(int val)
Definition: eda_rect.h:132
void SetY(int val)
Definition: eda_rect.h:131
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
static LIB_PART * dummy()
Used when a LIB_PART is not found in library to draw a dummy shape This component is a 400 mils squar...
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
int GetX() const
Definition: eda_rect.h:109
int GetY() const
Definition: eda_rect.h:110
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
const EDA_RECT SCH_COMPONENT::GetBoundingBox ( ) const
overridevirtual

Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.

This box should be an enclosing perimeter for visible components of this object, and the units should be in the pcb or schematic coordinate system. It is OK to overestimate the size by a few counts.

Reimplemented from EDA_ITEM.

Definition at line 1404 of file sch_component.cpp.

References GetBodyBoundingBox(), i, m_Fields, and EDA_RECT::Merge().

Referenced by Draw(), GetTransform(), and IsSelectStateChanged().

1405 {
1406  EDA_RECT bbox = GetBodyBoundingBox();
1407 
1408  for( size_t i = 0; i < m_Fields.size(); i++ )
1409  {
1410  bbox.Merge( m_Fields[i].GetBoundingBox() );
1411  }
1412 
1413  return bbox;
1414 }
void Merge(const EDA_RECT &aRect)
Function Merge modifies the position and size of the rectangle in order to contain aRect...
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
EDA_RECT GetBodyBoundingBox() const
Return a bounding box for the symbol body but not the fields.
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
size_t i
Definition: json11.cpp:597
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
wxString SCH_COMPONENT::GetClass ( ) const
inlineoverridevirtual

Function GetClass returns the class name.

Returns
wxString

Reimplemented from SCH_ITEM.

Definition at line 151 of file sch_component.h.

Referenced by GetScreenCoord(), and operator=().

152  {
153  return wxT( "SCH_COMPONENT" );
154  }
void SCH_COMPONENT::GetConnectionPoints ( std::vector< wxPoint > &  aPoints) const
overridevirtual

Function GetConnectionPoints add all the connection points for this item to aPoints.

Not all schematic items have connection points so the default method does nothing.

Parameters
aPointsList of connection points to add to.

Reimplemented from SCH_ITEM.

Definition at line 1689 of file sch_component.cpp.

References m_Pins, m_Pos, m_transform, and TRANSFORM::TransformCoordinate().

Referenced by CanConnect(), and SCH_EDIT_FRAME::importFile().

1690 {
1691  for( auto pin : m_Pins )
1692  aPoints.push_back( m_transform.TransformCoordinate( pin ) + m_Pos );
1693 }
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
std::vector< wxPoint > m_Pins
Definition: sch_component.h:96
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:41
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
int SCH_COMPONENT::GetConvert ( ) const
inline
LIB_ITEM * SCH_COMPONENT::GetDrawItem ( const wxPoint aPosition,
KICAD_T  aType = TYPE_NOT_INIT 
)

Return the component library item at aPosition that is part of this component.

Parameters
aPositionis the schematic position of the component library object.
aTypeis the type of symbol library object to find or any if set to TYPE_NOT_INIT.
Returns
is the symbol library object if found otherwise NULL.

Definition at line 1696 of file sch_component.cpp.

References LIB_PIN_T, m_convert, m_part, m_Pins, m_Pos, m_transform, and m_unit.

Referenced by CanConnect(), and SCH_SCREEN::GetPin().

1697 {
1698  if( PART_SPTR part = m_part.lock() )
1699  {
1700 
1701  m_Pins.clear();
1702 
1703  for( LIB_PIN* pin = part->GetNextPin(); pin; pin = part->GetNextPin( pin ) )
1704  {
1705  wxASSERT( pin->Type() == LIB_PIN_T );
1706 
1707  if( pin->GetUnit() && m_unit && ( m_unit != pin->GetUnit() ) )
1708  continue;
1709 
1710  if( pin->GetConvert() && m_convert && ( m_convert != pin->GetConvert() ) )
1711  continue;
1712 
1713  m_Pins.push_back( pin->GetPosition() );
1714  }
1715 
1716  // Calculate the position relative to the component.
1717  wxPoint libPosition = aPosition - m_Pos;
1718 
1719  return part->LocateDrawItem( m_unit, m_convert, aType, libPosition, m_transform );
1720  }
1721 
1722  return NULL;
1723 }
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
std::vector< wxPoint > m_Pins
Definition: sch_component.h:96
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
void SCH_COMPONENT::GetEndPoints ( std::vector< DANGLING_END_ITEM > &  aItemList)
overridevirtual

Function GetEndPoints adds the schematic item end points to aItemList if the item has end points.

The default version doesn't do anything since many of the schematic object cannot be tested for dangling ends. If you add a new schematic item that can have a dangling end ( no connect ), override this method to provide the correct end points.

Parameters
aItemList- List of DANGLING_END_ITEMS to add to.

Reimplemented from SCH_ITEM.

Definition at line 1571 of file sch_component.cpp.

References GetPinPhysicalPosition(), LIB_PIN_T, m_convert, m_part, m_unit, and PIN_END.

Referenced by Move().

1572 {
1573  if( PART_SPTR part = m_part.lock() )
1574  {
1575  for( LIB_PIN* pin = part->GetNextPin(); pin; pin = part->GetNextPin( pin ) )
1576  {
1577  wxASSERT( pin->Type() == LIB_PIN_T );
1578 
1579  if( pin->GetUnit() && m_unit && ( m_unit != pin->GetUnit() ) )
1580  continue;
1581 
1582  if( pin->GetConvert() && m_convert && ( m_convert != pin->GetConvert() ) )
1583  continue;
1584 
1585  DANGLING_END_ITEM item( PIN_END, pin, GetPinPhysicalPosition( pin ), this );
1586  aItemList.push_back( item );
1587  }
1588  }
1589 }
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
Class DANGLING_END_ITEM is a helper class used to store the state of schematic items that can be conn...
wxPoint GetPinPhysicalPosition(const LIB_PIN *Pin) const
SCH_FIELD * SCH_COMPONENT::GetField ( int  aFieldNdx) const

Returns a field in this symbol.

Parameters
aFieldNdxis the index into the array of fields, not a field id.
Returns
is the field at aFieldNdx or NULL if the field does not exist.

Definition at line 889 of file sch_component.cpp.

References m_Fields.

Referenced by NETLIST_EXPORTER_GENERIC::addComponentFields(), SCH_EAGLE_PLUGIN::addImplicitConnections(), AddMenusForComponent(), SIM_PLOT_FRAME::AddTuner(), SCH_EDIT_FRAME::AnnotateComponents(), FIELDS_EDITOR_GRID_DATA_MODEL::ApplyData(), SCH_EDIT_FRAME::backAnnotateFootprints(), SCH_SHEET::ComponentCount(), Draw(), SCH_EDIT_FRAME::FindComponentAndItem(), FormatProbeItem(), SCH_SCREEN::GetItem(), LIB_PIN::GetMsgPanelInfo(), GetMsgPanelInfo(), GetRef(), GetScreenCoord(), GetSelectMenuText(), NETLIST_EXPORTER_PSPICE::GetSpiceFieldDefVal(), GetTransform(), SCH_EDIT_FRAME::importFile(), DIALOG_EDIT_COMPONENTS_LIBID::initDlg(), IsInNetlist(), SCH_EDIT_FRAME::Load_Component(), DIALOG_FIELDS_EDITOR_GLOBAL::LoadFieldNames(), SCH_EAGLE_PLUGIN::loadSchematic(), mapExistingAnnotation(), MirrorX(), MirrorY(), Move(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), TUNER_SLIDER::onSave(), operator=(), operator==(), SCH_EDIT_FRAME::ProcessCmpToFootprintLinkFile(), Rotate(), SCH_LEGACY_PLUGIN::saveComponent(), SCH_COMPONENT(), SCH_REFERENCE::SCH_REFERENCE(), SCH_SCREEN::SetComponentFootprint(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), SetRef(), SCH_REFERENCE_LIST::sortByReferenceOnly(), SwapData(), TestMultiunitFootprints(), TUNER_SLIDER::TUNER_SLIDER(), SCH_SHEET_PATH::UpdateAllScreenReferences(), UpdateFields(), Visit(), NETLIST_EXPORTER_ORCADPCB2::WriteNetlist(), and NETLIST_EXPORTER_CADSTAR::WriteNetlist().

890 {
891  const SCH_FIELD* field;
892 
893  if( (unsigned) aFieldNdx < m_Fields.size() )
894  field = &m_Fields[aFieldNdx];
895  else
896  field = NULL;
897 
898  wxASSERT( field );
899 
900  // use cast to remove const-ness
901  return (SCH_FIELD*) field;
902 }
Class SCH_FIELD instances are attached to a component and provide a place for the component&#39;s value...
Definition: sch_field.h:56
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
void SCH_COMPONENT::GetFields ( std::vector< SCH_FIELD * > &  aVector,
bool  aVisibleOnly 
)

Populates a std::vector with SCH_FIELDs.

Parameters
aVectoris the vector to populate.
aVisibleOnlyis used to add only the fields that are visible and contain text.

Definition at line 940 of file sch_component.cpp.

References m_Fields.

Referenced by AUTOPLACER::AUTOPLACER(), GetTransform(), and DIALOG_UPDATE_FIELDS::updateFields().

941 {
942  for( SCH_FIELD& each_field : m_Fields )
943  {
944  if( !aVisibleOnly || ( each_field.IsVisible() && !each_field.IsVoid() ) )
945  aVector.push_back( &each_field );
946  }
947 }
Class SCH_FIELD instances are attached to a component and provide a place for the component&#39;s value...
Definition: sch_field.h:56
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
AUTOPLACED SCH_COMPONENT::GetFieldsAutoplaced ( ) const
inline

Return whether the fields have been automatically placed.

Definition at line 391 of file sch_component.h.

References m_fieldsAutoplaced.

Referenced by AutoAutoplaceFields().

391 { return m_fieldsAutoplaced; }
AUTOPLACED m_fieldsAutoplaced
indicates status of field autoplacement
Definition: sch_component.h:98
wxString SCH_COMPONENT::GetFieldText ( const wxString &  aFieldName,
bool  aIncludeDefaultFields = true 
) const

Search for a field named aFieldName and returns text associated with this field.

Parameters
aFieldNameis the name of the field
aIncludeDefaultFieldsis used to search the default library symbol fields in the search.

Definition at line 905 of file sch_component.cpp.

References TEMPLATE_FIELDNAME::GetDefaultFieldName(), i, m_Fields, and MANDATORY_FIELDS.

Referenced by FIELDS_EDITOR_GRID_DATA_MODEL::AddColumn(), and GetTransform().

906 {
907  // Field name for comparison
908  wxString cmpFieldName;
909 
910  if( aIncludeDefaultFields )
911  {
912 
913  // Default field names
914  for ( unsigned int i=0; i<MANDATORY_FIELDS; i++)
915  {
916  cmpFieldName = TEMPLATE_FIELDNAME::GetDefaultFieldName( i );
917 
918  if( cmpFieldName.Cmp( aFieldName ) == 0 )
919  {
920  return m_Fields[i].GetText();
921  }
922  }
923  }
924 
925  // Search custom fields
926  for( unsigned int ii=MANDATORY_FIELDS; ii<m_Fields.size(); ii++ )
927  {
928  cmpFieldName = m_Fields[ii].GetName();
929 
930  if( cmpFieldName.Cmp( aFieldName ) == 0 )
931  {
932  return m_Fields[ii].GetText();
933  }
934  }
935 
936  return wxEmptyString;
937 }
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
The first 4 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors...
static const wxString GetDefaultFieldName(int aFieldNdx)
Function GetDefaultFieldName returns a default symbol field name for field aFieldNdx for all componen...
size_t i
Definition: json11.cpp:597
STATUS_FLAGS EDA_ITEM::GetFlags ( ) const
inlineinherited

Definition at line 266 of file base_struct.h.

References EDA_ITEM::m_Flags.

Referenced by AbortMoveAndEditTarget(), SCH_SCREEN::addConnectedItemsToBlock(), AddMenusForBitmap(), AddMenusForBusEntry(), AddMenusForComponent(), AddMenusForComponentField(), AddMenusForEditComponent(), AddMenusForGLabel(), AddMenusForHierchicalSheet(), AddMenusForHLabel(), AddMenusForLabel(), AddMenusForSheetPin(), AddMenusForText(), SCH_EDIT_FRAME::BeginSegment(), SCH_EDIT_FRAME::ChangeTextOrient(), Collect_TrackSegmentsToDrag(), SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::copyBlockItems(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), LIB_EDIT_FRAME::copySelectedItems(), LIB_EDIT_FRAME::CreatePin(), PCB_EDIT_FRAME::createPopUpMenuForFootprints(), PCB_EDIT_FRAME::createPopUpMenuForFpPads(), PCB_EDIT_FRAME::createPopUpMenuForFpTexts(), PCB_EDIT_FRAME::createPopUpMenuForTexts(), PCB_EDIT_FRAME::createPopupMenuForTracks(), PCB_EDIT_FRAME::createPopUpMenuForZones(), PCB_EDIT_FRAME::Delete_Segment_Edge(), SCH_EDIT_FRAME::DeleteItem(), SCH_EDIT_FRAME::DeleteItemsInList(), SCH_EDIT_FRAME::DeleteJunction(), BOARD::Draw(), PCB_EDIT_FRAME::Edit_TrackSegm_Width(), SCH_EDIT_FRAME::EditComponentFieldText(), SCH_EDIT_FRAME::EditImage(), PCB_EDIT_FRAME::FlipTextePcb(), LIB_VIEW_FRAME::GeneralControl(), SCH_EDIT_FRAME::GeneralControl(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), SCH_SCREEN::GetConnection(), InitialiseDragParameters(), EDA_DRAW_FRAME::isBusy(), Magnetize(), SCH_EDIT_FRAME::MirrorImage(), SCH_EDIT_FRAME::MirrorSheet(), moveBitmap(), SCH_EDIT_FRAME::OnAutoplaceFields(), SCH_EDIT_FRAME::OnConvertTextType(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), SCH_EDIT_FRAME::OnDragItem(), SCH_EDIT_FRAME::OnEditItem(), LIB_EDIT_FRAME::OnEditPin(), FOOTPRINT_EDIT_FRAME::OnHotKey(), SCH_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotkeyBeginRoute(), PCB_EDIT_FRAME::OnHotkeyCopyItem(), PCB_EDIT_FRAME::OnHotkeyDeleteItem(), PCB_EDIT_FRAME::OnHotkeyDuplicateOrArrayItem(), PCB_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyFlipItem(), PCB_EDIT_FRAME::OnHotkeyMoveItem(), PCB_EDIT_FRAME::OnHotkeyPlaceItem(), PCB_EDIT_FRAME::OnHotkeyRotateItem(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), FOOTPRINT_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), EDA_DRAW_PANEL::OnMouseEvent(), SCH_EDIT_FRAME::OnMoveItem(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), TARGET_PROPERTIES_DIALOG_EDITOR::OnOkClick(), SCH_EDIT_FRAME::OnOpenLibraryEditor(), SCH_EDIT_FRAME::OnOrient(), FOOTPRINT_EDIT_FRAME::OnRightClick(), GERBVIEW_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRightClick(), PCB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRotate(), SCH_EDIT_FRAME::OnSelectUnit(), SCH_EDIT_FRAME::OrientComponent(), PCBNEW_CONTROL::placeBoardItems(), PCB_EDIT_FRAME::PlaceTarget(), FOOTPRINT_EDIT_FRAME::PrepareItemForHotkey(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), TRACKS_CLEANER::removeDuplicatesOfTrack(), PCB_BASE_FRAME::Rotate_Module(), PCB_EDIT_FRAME::Rotate_Texte_Pcb(), SCH_EDIT_FRAME::RotateField(), SCH_EDIT_FRAME::RotateHierarchicalSheet(), SCH_EDIT_FRAME::RotateImage(), PCB_BASE_FRAME::RotateTextModule(), LIB_EDIT_FRAME::SaveCopyInUndoList(), SCH_EDIT_FRAME::SaveCopyInUndoList(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_SCREEN::SelectBlockItems(), SCH_EDIT_FRAME::SetBusEntryShape(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), Show_Drag_Track_Segment_With_Cte_Slope(), Show_MoveNode(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), DIALOG_LABEL_EDITOR::TextPropertiesAccept(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), and DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow().

266 { return m_Flags; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
DHEAD* EDA_ITEM::GetList ( ) const
inlineinherited
BITMAP_DEF SCH_COMPONENT::GetMenuImage ( ) const
overridevirtual

Function GetMenuImage returns a pointer to an image to be used in menus.

The default version returns the right arrow image. Override this function to provide object specific menu images.

Returns
The menu image associated with the item.

Reimplemented from EDA_ITEM.

Definition at line 1500 of file sch_component.cpp.

Referenced by CanConnect().

1501 {
1502  return add_component_xpm;
1503 }
void SCH_COMPONENT::GetMsgPanelInfo ( std::vector< MSG_PANEL_ITEM > &  aList)
overridevirtual

Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.

Note
This method replaces DisplayInfo() so that KiCad objects no longer have any knowledge of wxWidgets UI objects.
Parameters
aListis the list to populate.

Reimplemented from EDA_ITEM.

Definition at line 1417 of file sch_component.cpp.

References BROWN, DARKCYAN, DARKRED, dummy(), UTF8::empty(), FOOTPRINT, Format(), LIB_ALIAS::GetDescription(), GetField(), LIB_ALIAS::GetKeyWords(), LIB_ALIAS::GetLib(), GetLibId(), LIB_ID::GetLibNickname(), LIB_ALIAS::GetLibraryName(), LIB_ALIAS::GetName(), GetRef(), EDA_TEXT::GetShownText(), PART_LIB::IsCache(), m_currentSheetPath, m_lib_id, m_part, RED, and VALUE.

Referenced by GetTransform(), and SCH_EDIT_FRAME::Load_Component().

1418 {
1419  wxString msg;
1420 
1421  // part and alias can differ if alias is not the root
1422  if( PART_SPTR part = m_part.lock() )
1423  {
1424  if( part.get() != dummy() )
1425  {
1426  LIB_ALIAS* alias = nullptr;
1427 
1428  if( part->GetLib() && part->GetLib()->IsCache() )
1429  alias = part->GetAlias( GetLibId().Format() );
1430  else
1431  alias = part->GetAlias( GetLibId().GetLibItemName() );
1432 
1433  if( !alias )
1434  return;
1435 
1436  if( m_currentSheetPath )
1437  aList.push_back( MSG_PANEL_ITEM( _( "Reference" ),
1439  DARKCYAN ) );
1440 
1441  msg = part->IsPower() ? _( "Power symbol" ) : _( "Value" );
1442 
1443  aList.push_back( MSG_PANEL_ITEM( msg, GetField( VALUE )->GetShownText(), DARKCYAN ) );
1444 
1445  // Display component reference in library and library
1446  aList.push_back( MSG_PANEL_ITEM( _( "Name" ), GetLibId().GetLibItemName(),
1447  BROWN ) );
1448 
1449  if( alias->GetName() != part->GetName() )
1450  aList.push_back( MSG_PANEL_ITEM( _( "Alias of" ), part->GetName(), BROWN ) );
1451 
1452  if( alias->GetLib() && alias->GetLib()->IsCache() )
1453  aList.push_back( MSG_PANEL_ITEM( _( "Library" ), alias->GetLibraryName(), RED ) );
1454  else if( !m_lib_id.GetLibNickname().empty() )
1455  aList.push_back( MSG_PANEL_ITEM( _( "Library" ), m_lib_id.GetLibNickname(),
1456  BROWN ) );
1457  else
1458  aList.push_back( MSG_PANEL_ITEM( _( "Library" ), _( "Undefined!!!" ), RED ) );
1459 
1460  // Display the current associated footprint, if exists.
1461  if( !GetField( FOOTPRINT )->IsVoid() )
1462  msg = GetField( FOOTPRINT )->GetShownText();
1463  else
1464  msg = _( "<Unknown>" );
1465 
1466  aList.push_back( MSG_PANEL_ITEM( _( "Footprint" ), msg, DARKRED ) );
1467 
1468  // Display description of the component, and keywords found in lib
1469  aList.push_back( MSG_PANEL_ITEM( _( "Description" ), alias->GetDescription(),
1470  DARKCYAN ) );
1471  aList.push_back( MSG_PANEL_ITEM( _( "Key words" ), alias->GetKeyWords(), DARKCYAN ) );
1472  }
1473  }
1474  else
1475  {
1476  if( m_currentSheetPath )
1477  aList.push_back( MSG_PANEL_ITEM( _( "Reference" ), GetRef( m_currentSheetPath ),
1478  DARKCYAN ) );
1479 
1480  aList.push_back( MSG_PANEL_ITEM( _( "Value" ), GetField( VALUE )->GetShownText(),
1481  DARKCYAN ) );
1482  aList.push_back( MSG_PANEL_ITEM( _( "Name" ), GetLibId().GetLibItemName(), BROWN ) );
1483 
1484  wxString libNickname = GetLibId().GetLibNickname();
1485 
1486  if( libNickname.empty() )
1487  {
1488  aList.push_back( MSG_PANEL_ITEM( _( "Library" ),
1489  _( "No library defined!!!" ), RED ) );
1490  }
1491  else
1492  {
1493  msg.Printf( _( "Symbol not found in %s!!!" ), libNickname );
1494  aList.push_back( MSG_PANEL_ITEM( _( "Library" ), msg , RED ) );
1495  }
1496  }
1497 }
Part library alias object definition.
const SCH_SHEET_PATH * m_currentSheetPath
A temporary sheet path is required to generate the correct reference designator string in complex hie...
const wxString GetLibraryName()
bool IsCache() const
PART_LIB * GetLib()
Field Name Module PCB, i.e. "16DIP300".
Definition: colors.h:54
virtual wxString GetShownText() const
Returns the string actually shown after processing of the base text.
Definition: eda_text.h:133
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
bool empty() const
Definition: utf8.h:108
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
wxString GetDescription() const
Definition: colors.h:60
const wxString GetRef(const SCH_SHEET_PATH *aSheet)
Return the reference for the given sheet path.
const wxString & GetName() const
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:205
static LIB_PART * dummy()
Used when a LIB_PART is not found in library to draw a dummy shape This component is a 400 mils squar...
const LIB_ID & GetLibId() const
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:101
#define VALUE
wxString GetKeyWords() const
Definition: colors.h:62
void SCH_COMPONENT::GetNetListItem ( NETLIST_OBJECT_LIST aNetListItems,
SCH_SHEET_PATH aSheetPath 
)
overridevirtual

Function GetNetListItem creates a new NETLIST_OBJECT for the schematic object and adds it to aNetListItems.

Not all schematic objects have net list items associated with them. This method only needs to be overridden for those schematic objects that have net list objects associated with them.

Reimplemented from SCH_ITEM.

Definition at line 1801 of file sch_component.cpp.

References GetConvert(), GetTransform(), GetUnitSelection(), LIB_PIN_T, NETLIST_OBJECT::m_Comp, NETLIST_OBJECT::m_ElectricalPinType, NETLIST_OBJECT::m_End, NETLIST_OBJECT::m_Label, NETLIST_OBJECT::m_Link, m_part, NETLIST_OBJECT::m_PinNum, m_Pos, NETLIST_OBJECT::m_SheetPath, NETLIST_OBJECT::m_SheetPathInclude, NETLIST_OBJECT::m_Start, NETLIST_OBJECT::m_Type, NET_PIN, NET_PINLABEL, and TRANSFORM::TransformCoordinate().

Referenced by CanConnect().

1803 {
1804  if( PART_SPTR part = m_part.lock() )
1805  {
1806  for( LIB_PIN* pin = part->GetNextPin(); pin; pin = part->GetNextPin( pin ) )
1807  {
1808  wxASSERT( pin->Type() == LIB_PIN_T );
1809 
1810  if( pin->GetUnit() && ( pin->GetUnit() != GetUnitSelection( aSheetPath ) ) )
1811  continue;
1812 
1813  if( pin->GetConvert() && ( pin->GetConvert() != GetConvert() ) )
1814  continue;
1815 
1816  wxPoint pos = GetTransform().TransformCoordinate( pin->GetPosition() ) + m_Pos;
1817 
1818  NETLIST_OBJECT* item = new NETLIST_OBJECT();
1819  item->m_SheetPathInclude = *aSheetPath;
1820  item->m_Comp = (SCH_ITEM*) pin;
1821  item->m_SheetPath = *aSheetPath;
1822  item->m_Type = NET_PIN;
1823  item->m_Link = (SCH_ITEM*) this;
1824  item->m_ElectricalPinType = pin->GetType();
1825  item->m_PinNum = pin->GetNumber();
1826  item->m_Label = pin->GetName();
1827  item->m_Start = item->m_End = pos;
1828 
1829  aNetListItems.push_back( item );
1830 
1831  if( pin->IsPowerConnection() )
1832  {
1833  // There is an associated PIN_LABEL.
1834  item = new NETLIST_OBJECT();
1835  item->m_SheetPathInclude = *aSheetPath;
1836  item->m_Comp = NULL;
1837  item->m_SheetPath = *aSheetPath;
1838  item->m_Type = NET_PINLABEL;
1839  item->m_Label = pin->GetName();
1840  item->m_Start = pos;
1841  item->m_End = item->m_Start;
1842 
1843  aNetListItems.push_back( item );
1844  }
1845  }
1846  }
1847 }
TRANSFORM & GetTransform() const
SCH_SHEET_PATH m_SheetPathInclude
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
int GetUnitSelection(SCH_SHEET_PATH *aSheet)
SCH_SHEET_PATH m_SheetPath
ELECTRICAL_PINTYPE m_ElectricalPinType
NETLIST_ITEM_T m_Type
EDA_ITEM * m_Comp
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:41
int GetConvert() const
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
SCH_ITEM * m_Link
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
int SCH_COMPONENT::GetOrientation ( void  )

Get the display symbol orientation.

Because there are different ways to have a given orientation/mirror, the orientation/mirror is not necessary what the user does. For example: a mirrorX then a mirrorY returns no mirror but a rotate. This function finds a rotation and a mirror value CMP_MIRROR_X because this is the first mirror option tested. This can differs from the orientation made by an user. A CMP_MIRROR_Y is returned as a CMP_MIRROR_X with an orientation 180 because they are equivalent.

See also
COMPONENT_ORIENTATION_T
Returns
the orientation and mirror of the symbol.

Definition at line 1282 of file sch_component.cpp.

References CMP_MIRROR_X, CMP_MIRROR_Y, CMP_NORMAL, CMP_ORIENT_0, CMP_ORIENT_180, CMP_ORIENT_270, CMP_ORIENT_90, m_transform, ROTATE_VALUES_COUNT, and SetOrientation().

Referenced by DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyOptionsToPanel(), AUTOPLACER::get_preferred_sides(), and GetTransform().

1283 {
1284  int type_rotate = CMP_ORIENT_0;
1285  TRANSFORM transform;
1286  int ii;
1287 
1288  #define ROTATE_VALUES_COUNT 12
1289 
1290  // list of all possibilities, but only the first 8 are actually used
1291  int rotate_value[ROTATE_VALUES_COUNT] =
1292  {
1297  CMP_MIRROR_Y + CMP_ORIENT_0, CMP_MIRROR_Y + CMP_ORIENT_90,
1298  CMP_MIRROR_Y + CMP_ORIENT_180, CMP_MIRROR_Y + CMP_ORIENT_270
1299  };
1300 
1301  // Try to find the current transform option:
1302  transform = m_transform;
1303 
1304  for( ii = 0; ii < ROTATE_VALUES_COUNT; ii++ )
1305  {
1306  type_rotate = rotate_value[ii];
1307  SetOrientation( type_rotate );
1308 
1309  if( transform == m_transform )
1310  return type_rotate;
1311  }
1312 
1313  // Error: orientation not found in list (should not happen)
1314  wxMessageBox( wxT( "Component orientation matrix internal error" ) );
1315  m_transform = transform;
1316 
1317  return CMP_NORMAL;
1318 }
Class for tranforming drawing coordinates for a wxDC device context.
Definition: transform.h:45
#define ROTATE_VALUES_COUNT
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...
wxString SCH_COMPONENT::GetPath ( const SCH_SHEET_PATH sheet) const

Definition at line 679 of file sch_component.cpp.

References EDA_ITEM::m_TimeStamp, SCH_SHEET_PATH::Path(), and str.

Referenced by ClearAnnotation(), Draw(), GetRef(), GetUnitSelection(), SetRef(), SetUnitSelection(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

680 {
681  wxCHECK_MSG( sheet != NULL, wxEmptyString,
682  wxT( "Cannot get component path with invalid sheet object." ) );
683 
684  wxString str;
685 
686  str.Printf( wxT( "%8.8lX" ), (long unsigned) m_TimeStamp );
687  return sheet->Path() + str;
688 }
timestamp_t m_TimeStamp
Time stamp used for logical links.
Definition: base_struct.h:180
const string & str
Definition: json11.cpp:596
wxString Path() const
Function Path the path uses the time stamps which do not changes even when editing sheet parameters a...
const wxArrayString& SCH_COMPONENT::GetPathsAndReferences ( ) const
inline

Definition at line 156 of file sch_component.h.

References m_PathsAndReferences.

Referenced by SCH_LEGACY_PLUGIN::saveComponent().

156 { return m_PathsAndReferences; }
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
virtual int SCH_ITEM::GetPenSize ( ) const
inlinevirtualinherited

Function GetPenSize virtual pure.

Returns
the size of the "pen" that be used to draw or plot this item

Reimplemented in SCH_SHEET, SCH_BUS_BUS_ENTRY, SCH_TEXT, SCH_BUS_WIRE_ENTRY, SCH_FIELD, SCH_SHEET_PIN, SCH_LINE, and SCH_NO_CONNECT.

Definition at line 176 of file sch_item_struct.h.

References MirrorX(), and MirrorY().

Referenced by SCH_JUNCTION::GetBoundingBox(), SCH_BUS_WIRE_ENTRY::GetClass(), SCH_BUS_BUS_ENTRY::GetClass(), and SCH_BITMAP::Plot().

176 { return 0; }
LIB_PIN * SCH_COMPONENT::GetPin ( const wxString &  number)

Find a symbol pin by number.

Parameters
numberis the number of the pin to find.
Returns
Pin object if found, otherwise NULL.

Definition at line 1022 of file sch_component.cpp.

References m_convert, m_part, and m_unit.

Referenced by AutoAutoplaceFields(), and SCH_EDIT_FRAME::FindComponentAndItem().

1023 {
1024  if( PART_SPTR part = m_part.lock() )
1025  {
1026  return part->GetPin( number, m_unit, m_convert );
1027  }
1028  return NULL;
1029 }
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
wxPoint SCH_COMPONENT::GetPinPhysicalPosition ( const LIB_PIN Pin) const

Definition at line 1665 of file sch_component.cpp.

References LIB_PIN::GetPosition(), LIB_PIN_T, m_Pos, m_transform, TRANSFORM::TransformCoordinate(), and EDA_ITEM::Type().

Referenced by SCH_EAGLE_PLUGIN::addImplicitConnections(), SCH_EAGLE_PLUGIN::checkConnections(), GetEndPoints(), SCH_SCREEN::GetPin(), and Move().

1666 {
1667  wxCHECK_MSG( Pin != NULL && Pin->Type() == LIB_PIN_T, wxPoint( 0, 0 ),
1668  wxT( "Cannot get physical position of pin." ) );
1669 
1670  return m_transform.TransformCoordinate( Pin->GetPosition() ) + m_Pos;
1671 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:209
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:41
wxPoint GetPosition() const override
Return the current draw object position.
Definition: lib_pin.h:462
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
void SCH_COMPONENT::GetPins ( std::vector< LIB_PIN * > &  aPinsList)

Populate a vector with all the pins.

Parameters
aPinsListis the list to populate with all of the pins.

Definition at line 1032 of file sch_component.cpp.

References m_convert, m_part, and m_unit.

Referenced by AutoAutoplaceFields(), NETLIST_EXPORTER_PSPICE::GetSpiceFieldDefVal(), and AUTOPLACER::pins_on_side().

1033 {
1034  if( PART_SPTR part = m_part.lock() )
1035  {
1036  part->GetPins( aPinsList, m_unit, m_convert );
1037  }
1038  else
1039  wxFAIL_MSG( "Could not obtain PART_SPTR lock" );
1040 }
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
wxPoint SCH_COMPONENT::GetPosition ( ) const
inlineoverridevirtual

Function GetPosition.

Returns
A wxPoint object containing the schematic item position.

Implements SCH_ITEM.

Definition at line 617 of file sch_component.h.

References m_Pos.

Referenced by SCH_FIELD::Draw(), SCH_EDIT_FRAME::FindComponentAndItem(), SCH_FIELD::GetBoundingBox(), LIB_PIN::GetMsgPanelInfo(), SCH_FIELD::GetPosition(), SCH_COLLECTOR::Inspect(), SCH_FIND_COLLECTOR::Inspect(), SCH_LEGACY_PLUGIN::saveComponent(), SCH_REFERENCE::SCH_REFERENCE(), SCH_SCREEN::SetComponentFootprint(), and TestMultiunitFootprints().

617 { return m_Pos; }
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
wxString SCH_COMPONENT::GetPrefix ( ) const
inline

Definition at line 239 of file sch_component.h.

References m_prefix.

Referenced by SCH_LEGACY_PLUGIN::saveComponent().

239 { return m_prefix; }
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
const wxString SCH_COMPONENT::GetRef ( const SCH_SHEET_PATH aSheet)

Return the reference for the given sheet path.

Returns
the reference for the sheet.

Definition at line 691 of file sch_component.cpp.

References GetField(), GetPath(), GetText(), EDA_TEXT::GetText(), m_PathsAndReferences, m_prefix, REFERENCE, and SetRef().

Referenced by NETLIST_EXPORTER_GENERIC::addComponentFields(), Diagnose(), NETLIST_EXPORTER::findAllUnitsOfComponent(), SCH_EDIT_FRAME::FindComponentAndItem(), NETLIST_EXPORTER::findNextComponent(), NETLIST_EXPORTER::findNextComponentAndCreatePinList(), SCH_SHEET_PATH::GetComponents(), GetMsgPanelInfo(), SCH_SHEET_PATH::GetMultiUnitComponents(), NETLIST_OBJECT::GetShortNetName(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers(), NETLIST_EXPORTER_GENERIC::makeComponents(), NETLIST_EXPORTER_GENERIC::makeListOfNets(), SCH_FIELD::Matches(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), NETLIST_EXPORTER_PSPICE::ProcessNetlist(), SCH_REFERENCE::SCH_REFERENCE(), SCH_SCREEN::SetComponentFootprint(), SetCurrentSheetPath(), TestMultiunitFootprints(), SCH_SHEET_PATH::UpdateAllScreenReferences(), NETLIST_EXPORTER_CADSTAR::writeListOfNets(), NETLIST_EXPORTER_ORCADPCB2::WriteNetlist(), and NETLIST_EXPORTER_CADSTAR::WriteNetlist().

692 {
693  wxString path = GetPath( sheet );
694  wxString h_path, h_ref;
695  wxStringTokenizer tokenizer;
696  wxString separators( wxT( " " ) );
697 
698  for( unsigned ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
699  {
700  tokenizer.SetString( m_PathsAndReferences[ii], separators );
701  h_path = tokenizer.GetNextToken();
702 
703  if( h_path.Cmp( path ) == 0 )
704  {
705  h_ref = tokenizer.GetNextToken();
706 
707  /* printf( "GetRef hpath: %s\n",
708  * TO_UTF8( m_PathsAndReferences[ii] ) ); */
709  return h_ref;
710  }
711  }
712 
713  // if it was not found in m_Paths array, then see if it is in
714  // m_Field[REFERENCE] -- if so, use this as a default for this path.
715  // this will happen if we load a version 1 schematic file.
716  // it will also mean that multiple instances of the same sheet by default
717  // all have the same component references, but perhaps this is best.
718  if( !GetField( REFERENCE )->GetText().IsEmpty() )
719  {
720  SetRef( sheet, GetField( REFERENCE )->GetText() );
721  return GetField( REFERENCE )->GetText();
722  }
723 
724  return m_prefix;
725 }
wxString GetPath(const SCH_SHEET_PATH *sheet) const
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
Field Reference of part, i.e. "IC21".
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:128
wxString GetText(GRAPHIC_PINSHAPE shape)
Definition: pin_shape.cpp:33
void SetRef(const SCH_SHEET_PATH *aSheet, const wxString &aReference)
Set the reference for the given sheet path for this symbol.
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
wxPoint SCH_COMPONENT::GetScreenCoord ( const wxPoint aPoint)

Returns the coordinate points relative to the orientation of the symbol to aPoint.

The coordinates are always relative to the anchor position of the component.

Parameters
aPointThe coordinates to transform.
Returns
The transformed point.

Definition at line 1321 of file sch_component.cpp.

References LIB_ID::Format(), GetClass(), GetField(), GetFieldCount(), GetLibId(), EDA_TEXT::GetText(), i, SCH_ITEM::m_Layer, m_Pos, m_transform, TO_UTF8, and TRANSFORM::TransformCoordinate().

Referenced by SCH_FIELD::Draw(), and GetTransform().

1322 {
1323  return m_transform.TransformCoordinate( aPoint );
1324 }
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:41
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
wxString SCH_COMPONENT::GetSelectMenuText ( ) const
overridevirtual

Function GetSelectMenuText returns the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position.

The default version of this function raises an assertion in the debug mode and returns a string to indicate that it was not overridden to provide the object specific text.

Returns
The menu text string.

Reimplemented from EDA_ITEM.

Definition at line 1726 of file sch_component.cpp.

References GetChars(), GetField(), GetLibId(), and REFERENCE.

Referenced by CanConnect(), and Matches().

1727 {
1728  wxString tmp;
1729  tmp.Printf( _( "Symbol %s, %s" ),
1730  GetChars( GetLibId().GetLibItemName() ),
1731  GetChars( GetField( REFERENCE )->GetShownText() ) );
1732  return tmp;
1733 }
Field Reference of part, i.e. "IC21".
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
const LIB_ID & GetLibId() const
STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 261 of file base_struct.h.

References EDA_ITEM::m_Status.

Referenced by PCB_IO::format(), and GERBER_DRAW_ITEM::HitTest().

261 { return m_Status; }
STATUS_FLAGS m_Status
Definition: base_struct.h:172
wxPoint& SCH_ITEM::GetStoredPos ( )
inlineinherited

Definition at line 155 of file sch_item_struct.h.

Referenced by moveItemWithMouseCursor().

155 { return m_storedPos; }
wxPoint m_storedPos
a temporary variable used in some move commands to store a initial pos (of the item or mouse cursor) ...
int SCH_COMPONENT::GetUnitCount ( void  ) const

Return the number of units per package of the symbol.

Returns
the number of units per package or zero if the library entry cannot be found.

Definition at line 572 of file sch_component.cpp.

References m_part.

Referenced by NETLIST_EXPORTER_GENERIC::addComponentFields(), SCH_EDIT_FRAME::AnnotateComponents(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyOptionsToPanel(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), SCH_FIELD::GetFullyQualifiedText(), GetTransform(), SCH_FIELD::Matches(), and DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick().

573 {
574  if( PART_SPTR part = m_part.lock() )
575  {
576  return part->GetUnitCount();
577  }
578 
579  return 0;
580 }
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
int SCH_COMPONENT::GetUnitSelection ( SCH_SHEET_PATH aSheet)

Definition at line 826 of file sch_component.cpp.

References GetPath(), m_PathsAndReferences, and m_unit.

Referenced by NETLIST_EXPORTER::findAllUnitsOfComponent(), NETLIST_EXPORTER::findNextComponentAndCreatePinList(), GetNetListItem(), SCH_REFERENCE::SCH_REFERENCE(), SetCurrentSheetPath(), and SCH_SHEET_PATH::UpdateAllScreenReferences().

827 {
828  wxString path = GetPath( aSheet );
829  wxString h_path, h_multi;
830  wxStringTokenizer tokenizer;
831  wxString separators( wxT( " " ) );
832 
833  for( unsigned ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
834  {
835  tokenizer.SetString( m_PathsAndReferences[ii], separators );
836  h_path = tokenizer.GetNextToken();
837 
838  if( h_path.Cmp( path ) == 0 )
839  {
840  tokenizer.GetNextToken(); // Skip reference
841  h_multi = tokenizer.GetNextToken();
842  long imulti = 1;
843  h_multi.ToLong( &imulti );
844  return imulti;
845  }
846  }
847 
848  // if it was not found in m_Paths array, then use m_unit.
849  // this will happen if we load a version 1 schematic file.
850  return m_unit;
851 }
wxString GetPath(const SCH_SHEET_PATH *sheet) const
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
virtual bool SCH_ITEM::HitTest ( const wxPoint aPosition) const
inlineoverridevirtualinherited

Function HitTest tests if aPosition is contained within or on the bounding area of an item.

Parameters
aPositionA reference to a wxPoint object containing the coordinates to test.
Returns
True if aPosition is within or on the item bounding area.

Reimplemented from EDA_ITEM.

Definition at line 309 of file sch_item_struct.h.

Referenced by SCH_SCREEN::addConnectedItemsToBlock().

310  {
311  return HitTest( aPosition, 0 );
312  }
virtual bool HitTest(const wxPoint &aPosition) const override
Function HitTest tests if aPosition is contained within or on the bounding area of an item...
bool SCH_COMPONENT::HitTest ( const wxPoint aPosition,
int  aAccuracy 
) const
overridevirtual

Function HitTest tests if aPosition is contained within or on the bounding box of an item.

Parameters
aPositionA reference to a wxPoint object containing the coordinates to test.
aAccuracyIncrease the item bounding box by this amount.
Returns
True if aPosition is within the item bounding box.

Reimplemented from SCH_ITEM.

Definition at line 1928 of file sch_component.cpp.

References EDA_RECT::Contains(), GetBodyBoundingBox(), and EDA_RECT::Inflate().

Referenced by SetPosition().

1929 {
1930  EDA_RECT bBox = GetBodyBoundingBox();
1931  bBox.Inflate( aAccuracy );
1932 
1933  if( bBox.Contains( aPosition ) )
1934  return true;
1935 
1936  return false;
1937 }
bool Contains(const wxPoint &aPoint) const
Function Contains.
EDA_RECT GetBodyBoundingBox() const
Return a bounding box for the symbol body but not the fields.
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
bool SCH_COMPONENT::HitTest ( const EDA_RECT aRect,
bool  aContained = false,
int  aAccuracy = 0 
) const
overridevirtual

Function HitTest tests if aRect intersects or is contained within the bounding box of an item.

Parameters
aRectA reference to a EDA_RECT object containing the rectangle to test.
aContainedSet to true to test for containment instead of an intersection.
aAccuracyIncrease aRect by this amount.
Returns
True if aRect contains or intersects the item bounding box.

Reimplemented from SCH_ITEM.

Definition at line 1940 of file sch_component.cpp.

References EDA_RECT::Contains(), GetBodyBoundingBox(), EDA_RECT::Inflate(), EDA_RECT::Intersects(), EDA_ITEM::m_Flags, SKIP_STRUCT, and STRUCT_DELETED.

1941 {
1943  return false;
1944 
1945  EDA_RECT rect = aRect;
1946 
1947  rect.Inflate( aAccuracy );
1948 
1949  if( aContained )
1950  return rect.Contains( GetBodyBoundingBox() );
1951 
1952  return rect.Intersects( GetBodyBoundingBox() );
1953 }
bool Contains(const wxPoint &aPoint) const
Function Contains.
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: base_struct.h:120
EDA_RECT GetBodyBoundingBox() const
Return a bounding box for the symbol body but not the fields.
#define STRUCT_DELETED
flag indication structures to be erased
Definition: base_struct.h:118
bool Intersects(const EDA_RECT &aRect) const
Function Intersects tests for a common area between rectangles.
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
void SCH_COMPONENT::Init ( const wxPoint pos = wxPoint( 0, 0 ))
private

Definition at line 200 of file sch_component.cpp.

References AddField(), TEMPLATE_FIELDNAME::GetDefaultFieldName(), i, LAYER_REFERENCEPART, LAYER_VALUEPART, m_convert, m_Pos, m_prefix, m_transform, m_unit, MANDATORY_FIELDS, REFERENCE, SCH_ITEM::SetLayer(), and VALUE.

Referenced by SCH_COMPONENT().

201 {
202  m_Pos = pos;
203  m_unit = 0; // In multi unit chip - which unit to draw.
204  m_convert = 0; // De Morgan Handling
205 
206  // The rotation/mirror transformation matrix. pos normal
208 
209  // construct only the mandatory fields, which are the first 4 only.
210  for( int i = 0; i < MANDATORY_FIELDS; ++i )
211  {
212  SCH_FIELD field( pos, i, this, TEMPLATE_FIELDNAME::GetDefaultFieldName( i ) );
213 
214  if( i == REFERENCE )
215  field.SetLayer( LAYER_REFERENCEPART );
216  else if( i == VALUE )
217  field.SetLayer( LAYER_VALUEPART );
218 
219  // else keep LAYER_FIELDS from SCH_FIELD constructor
220 
221  // SCH_FIELD's implicitly created copy constructor is called in here
222  AddField( field );
223  }
224 
225  m_prefix = wxString( wxT( "U" ) );
226 }
Class SCH_FIELD instances are attached to a component and provide a place for the component&#39;s value...
Definition: sch_field.h:56
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
The first 4 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors...
static const wxString GetDefaultFieldName(int aFieldNdx)
Function GetDefaultFieldName returns a default symbol field name for field aFieldNdx for all componen...
Field Reference of part, i.e. "IC21".
Class for tranforming drawing coordinates for a wxDC device context.
Definition: transform.h:45
SCH_FIELD * AddField(const SCH_FIELD &aField)
Add a field to the symbol.
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
size_t i
Definition: json11.cpp:597
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
#define VALUE
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
bool EDA_ITEM::IsBrightened ( ) const
inlineinherited

Definition at line 235 of file base_struct.h.

References BRIGHTENED.

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), KIGFX::GERBVIEW_PAINTER::draw(), and KIGFX::PCB_RENDER_SETTINGS::GetColor().

235 { return m_Flags & BRIGHTENED; }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:133
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
bool SCH_COMPONENT::IsConnectable ( ) const
inlineoverridevirtual

Function IsConnectable returns true if the schematic item can connect to another schematic item.

Reimplemented from SCH_ITEM.

Definition at line 571 of file sch_component.h.

571 { return true; }
bool SCH_ITEM::IsConnected ( const wxPoint aPoint) const
inherited

Function IsConnected tests the item to see if it is connected to aPoint.

Parameters
aPointA reference to a wxPoint object containing the coordinates to test.
Returns
True if connection to aPoint exists.

Definition at line 71 of file sch_item_struct.cpp.

References SCH_ITEM::doIsConnected(), EDA_ITEM::m_Flags, SKIP_STRUCT, and STRUCT_DELETED.

Referenced by SCH_SCREEN::addConnectedItemsToBlock(), SCH_SCREEN::CountConnectedItems(), and SCH_SCREEN::IsTerminalPoint().

72 {
74  return false;
75 
76  return doIsConnected( aPosition );
77 }
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: base_struct.h:120
virtual bool doIsConnected(const wxPoint &aPosition) const
Function doIsConnected provides the object specific test to see if it is connected to aPosition...
#define STRUCT_DELETED
flag indication structures to be erased
Definition: base_struct.h:118
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
bool SCH_COMPONENT::IsDangling ( ) const
overridevirtual

Return whether any pin in this symbol is dangling.

Note
This does not update the internal status. It only checks the existing status.
Returns
true if any pins of this symbol are not connect otherwise false.

Reimplemented from SCH_ITEM.

Definition at line 1654 of file sch_component.cpp.

References m_isDangling.

Referenced by Move().

1655 {
1656  for( bool each : m_isDangling )
1657  {
1658  if( each )
1659  return true;
1660  }
1661  return false;
1662 }
std::vector< bool > m_isDangling
One isDangling per pin.
Definition: sch_component.h:95
bool SCH_COMPONENT::IsDanglingStateChanged ( std::vector< DANGLING_END_ITEM > &  aItemList)
overridevirtual

Test if the component's dangling state has changed for all pins.

As a side effect, actually update the dangling status for all pins.

Note
This does not test for short circuits.
Parameters
aItemListis list of all DANGLING_END_ITEM items to be tested.
Returns
true if any pin's state has changed.

Reimplemented from SCH_ITEM.

Definition at line 1592 of file sch_component.cpp.

References i, JUNCTION_END, LABEL_END, m_isDangling, m_Pins, m_Pos, m_transform, NO_CONNECT_END, PIN_END, SHEET_LABEL_END, TRANSFORM::TransformCoordinate(), WIRE_END_END, and WIRE_START_END.

Referenced by Move().

1593 {
1594  bool changed = false;
1595 
1596  for( size_t i = 0; i < m_Pins.size(); ++i )
1597  {
1598  bool previousState;
1600 
1601  if( i < m_isDangling.size() )
1602  {
1603  previousState = m_isDangling[ i ];
1604  m_isDangling[ i ] = true;
1605  }
1606  else
1607  {
1608  previousState = true;
1609  m_isDangling.push_back( true );
1610  }
1611 
1612  for( DANGLING_END_ITEM& each_item : aItemList )
1613  {
1614  // Some people like to stack pins on top of each other in a symbol to indicate
1615  // internal connection. While technically connected, it is not particularly useful
1616  // to display them that way, so skip any pins that are in the same symbol as this
1617  // one.
1618  if( each_item.GetParent() == this )
1619  continue;
1620 
1621  switch( each_item.GetType() )
1622  {
1623  case PIN_END:
1624  case LABEL_END:
1625  case SHEET_LABEL_END:
1626  case WIRE_START_END:
1627  case WIRE_END_END:
1628  case NO_CONNECT_END:
1629  case JUNCTION_END:
1630 
1631  if( pos == each_item.GetPosition() )
1632  m_isDangling[ i ] = false;
1633 
1634  break;
1635 
1636  default:
1637  break;
1638  }
1639 
1640  if( !m_isDangling[ i ] )
1641  break;
1642  }
1643 
1644  changed = ( changed || ( previousState != m_isDangling[ i ] ) );
1645  }
1646 
1647  while( m_isDangling.size() > m_Pins.size() )
1648  m_isDangling.pop_back();
1649 
1650  return changed;
1651 }
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
std::vector< bool > m_isDangling
One isDangling per pin.
Definition: sch_component.h:95
std::vector< wxPoint > m_Pins
Definition: sch_component.h:96
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:41
size_t i
Definition: json11.cpp:597
Class DANGLING_END_ITEM is a helper class used to store the state of schematic items that can be conn...
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
bool EDA_ITEM::IsDragging ( ) const
inlineinherited
bool EDA_ITEM::IsHighlighted ( ) const
inlineinherited

Definition at line 234 of file base_struct.h.

References HIGHLIGHTED.

234 { return m_Flags & HIGHLIGHTED; }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:132
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
bool SCH_COMPONENT::IsInNetlist ( ) const
Returns
true if the component is in netlist which means this is not a power component, or something like a component reference starting by #

Definition at line 1963 of file sch_component.cpp.

References GetField(), EDA_TEXT::GetText(), and REFERENCE.

Referenced by AUTOPLACER::AUTOPLACER(), CanConnect(), and NETLIST_OBJECT_LIST::findBestNetNameForEachNet().

1964 {
1965  SCH_FIELD* rf = GetField( REFERENCE );
1966  return ! rf->GetText().StartsWith( wxT( "#" ) );
1967 }
Class SCH_FIELD instances are attached to a component and provide a place for the component&#39;s value...
Definition: sch_field.h:56
Field Reference of part, i.e. "IC21".
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:128
bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 228 of file base_struct.h.

References IS_CHANGED.

Referenced by LIB_EDIT_FRAME::OnEditPin().

228 { return m_Flags & IS_CHANGED; }
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:105
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
bool SCH_COMPONENT::IsMovableFromAnchorPoint ( )
inlineoverridevirtual

Return true for items which are moved with the anchor point at mouse cursor and false for items moved with no reference to anchor.

Usually return true for small items (labels, junctions) and false for items which can be large (hierarchical sheets, components).

Returns
false for a component

Reimplemented from SCH_ITEM.

Definition at line 167 of file sch_component.h.

References SetLibId().

167 { return false; }
bool EDA_ITEM::IsNew ( ) const
inlineinherited

Definition at line 227 of file base_struct.h.

References IS_NEW.

Referenced by Abort_Edit_Pcb_Text(), Abort_EditEdge(), Abort_Move_ModuleOutline(), Abort_MoveOrCopyModule(), Abort_Zone_Create_Outline(), AbortBuildDimension(), AbortMoveAndEditTarget(), abortMoveBitmap(), abortMoveItem(), AbortPinMove(), AbortSymbolTraceOn(), SCH_EDIT_FRAME::addCurrentItemToList(), SCH_EDIT_FRAME::addJunctionMenuEntries(), AddMenusForBus(), AddMenusForWire(), PCB_EDIT_FRAME::Delete_Segment(), PCB_EDIT_FRAME::Delete_Segment_Edge(), SCH_EDIT_FRAME::DeleteCurrentSegment(), LIB_ARC::drawEditGraphics(), LIB_ARC::drawGraphic(), DrawMovePin(), SCH_EDIT_FRAME::EditSheetPin(), LIB_PIN::EnableEditMode(), LIB_EDIT_FRAME::EndDrawGraphicItem(), SCH_EDIT_FRAME::EndSegment(), ExitSheet(), LIB_PART::LIB_PART(), SCH_EDIT_FRAME::OnAutoplaceFields(), SCH_EDIT_FRAME::OnConvertTextType(), LIB_EDIT_FRAME::OnEditPin(), SCH_EDIT_FRAME::OnHotKey(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), FOOTPRINT_EDIT_FRAME::OnLeftDClick(), LIB_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), LIB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRotate(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_BASE_FRAME::PlaceModule(), LIB_EDIT_FRAME::PlacePin(), PCB_EDIT_FRAME::PlaceTarget(), SCH_EDIT_FRAME::PrepareMoveItem(), SCH_EDIT_FRAME::ReSizeSheet(), ShowClearance(), PCB_EDIT_FRAME::StartMoveTextePcb(), PCB_EDIT_FRAME::SwitchLayer(), and DIALOG_LABEL_EDITOR::TextPropertiesAccept().

227 { return m_Flags & IS_NEW; }
#define IS_NEW
New item, just created.
Definition: base_struct.h:109
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
bool SCH_COMPONENT::IsReferenceStringValid ( const wxString &  aReferenceString)
static

Tests for an acceptable reference string.

An acceptable reference string must support unannotation i.e starts by letter

Parameters
aReferenceStringis the reference string to validate
Returns
true if reference string is valid.

Definition at line 728 of file sch_component.cpp.

Referenced by ClearAnnotation(), Draw(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnOKButtonClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), SetRef(), and DIALOG_EDIT_ONE_FIELD::TransferDataFromWindow().

729 {
730  wxString text = aReferenceString;
731  bool ok = true;
732 
733  // Try to unannotate this reference
734  while( !text.IsEmpty() && ( text.Last() == '?' || isdigit( text.Last() ) ) )
735  text.RemoveLast();
736 
737  if( text.IsEmpty() )
738  ok = false;
739 
740  // Add here other constraints
741  // Currently:no other constraint
742 
743  return ok;
744 }
bool SCH_COMPONENT::IsReplaceable ( ) const
inlineoverridevirtual

Function IsReplaceable.

Override this method in any derived object that supports test find and replace.

Returns
True if the item has replaceable text that can be modified using the find and replace dialog.

Reimplemented from EDA_ITEM.

Definition at line 615 of file sch_component.h.

615 { return true; }
bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 233 of file base_struct.h.

References IS_RESIZED.

Referenced by ExitSheet().

233 { return m_Flags & IS_RESIZED; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
#define IS_RESIZED
Item being resized.
Definition: base_struct.h:110
bool EDA_ITEM::IsSelected ( ) const
inlineinherited
bool SCH_COMPONENT::IsSelectStateChanged ( const wxRect &  aRect)
overridevirtual

Function IsSelectStateChanged checks if the selection state of an item inside aRect has changed.

This is used by the block selection code to verify if an item is selected or not. True is be return anytime the select state changes. If you need to know the the current selection state, use the IsSelected() method.

Parameters
aRect- Rectangle to test against.

Reimplemented from SCH_ITEM.

Definition at line 1674 of file sch_component.cpp.

References boundingBox(), EDA_ITEM::ClearFlags(), GetBoundingBox(), EDA_ITEM::IsSelected(), SELECTED, and EDA_ITEM::SetFlags().

Referenced by Move().

1675 {
1676  bool previousState = IsSelected();
1677 
1679 
1680  if( aRect.Intersects( boundingBox ) )
1681  SetFlags( SELECTED );
1682  else
1683  ClearFlags( SELECTED );
1684 
1685  return previousState != IsSelected();
1686 }
bool IsSelected() const
Definition: base_struct.h:232
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
BOX2I boundingBox(T aObject)
boundingBox template method
Definition: shape_index.h:59
#define SELECTED
Definition: base_struct.h:116
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:264
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:265
bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 231 of file base_struct.h.

References IS_WIRE_IMAGE.

Referenced by abortMoveItem(), and SCH_FIELD::Draw().

231 { return m_Flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:113
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
SEARCH_RESULT EDA_ITEM::IterateForward ( EDA_ITEM listStart,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
staticinherited

Function IterateForward walks through the object tree calling the inspector() on each object type requested in scanTypes.

Parameters
listStartThe first in a list of EDA_ITEMs to iterate over.
inspectorIs an INSPECTOR to call on each object that is one of the requested scanTypes.
testDataIs an aid to testFunc, and should be sufficient to allow it to fully determine if an item meets the match criteria, but it may also be used to collect output.
scanTypesA KICAD_T array that is EOT terminated, and provides both the order and interest level of of the types of objects to be iterated over.
Returns
SEARCH_RESULT SEARCH_QUIT if the called INSPECTOR returned SEARCH_QUIT, else SCAN_CONTINUE;

Definition at line 131 of file base_struct.cpp.

References EDA_ITEM::Pnext, SEARCH_CONTINUE, SEARCH_QUIT, and EDA_ITEM::Visit().

Referenced by SCH_COLLECTOR::Collect(), SCH_FIND_COLLECTOR::Collect(), SCH_TYPE_COLLECTOR::Collect(), SCH_FIND_COLLECTOR::GetItem(), EDA_ITEM::HitTest(), GERBER_FILE_IMAGE::Visit(), MODULE::Visit(), and BOARD::Visit().

135 {
136  EDA_ITEM* p = listStart;
137 
138  for( ; p; p = p->Pnext )
139  {
140  if( SEARCH_QUIT == p->Visit( inspector, testData, scanTypes ) )
141  return SEARCH_QUIT;
142  }
143 
144  return SEARCH_CONTINUE;
145 }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
Function Visit may be re-implemented for each derived class in order to handle all the types given by...
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:162
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:175
virtual bool SCH_ITEM::Load ( LINE_READER aLine,
wxString &  aErrorMsg 
)
inlinevirtualinherited

Function Load reads a schematic item from aLine in a .sch file.

Parameters
aLine- Essentially this is file to read the object from.
aErrorMsg- Description of the error if an error occurs while loading the object.
Returns
True if the object loaded successfully.

Definition at line 229 of file sch_item_struct.h.

229 { return false; }
bool EDA_ITEM::Matches ( const wxString &  aText,
wxFindReplaceData &  aSearchData 
)
protectedinherited

Function Matches compares aText against search criteria in aSearchData.

This is a helper function for simplify derived class logic.

Parameters
aTextA reference to a wxString object containing the string to test.
aSearchDataThe criteria to search against.
Returns
True if aText matches the search criteria in aSearchData.

Definition at line 183 of file base_struct.cpp.

References FR_MATCH_WILDCARD, FR_SEARCH_REPLACE, and EDA_ITEM::IsReplaceable().

184 {
185  wxString text = aText;
186  wxString searchText = aSearchData.GetFindString();
187 
188  // Don't match if searching for replaceable item and the item doesn't support text replace.
189  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
190  return false;
191 
192  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
193  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
194 
195  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
196  {
197  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
198  return text.Matches( searchText );
199 
200  return text.MakeUpper().Matches( searchText.MakeUpper() );
201  }
202 
203  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
204  return aText.Find( searchText ) != wxNOT_FOUND;
205 
206  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
207 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:455
Perform search using simple wild card matching (* & ?).
Perform a search for a item that has replaceable text.
bool SCH_COMPONENT::Matches ( wxFindReplaceData &  aSearchData,
void *  aAuxData,
wxPoint aFindLocation 
)
overridevirtual

Function Matches compares the item against the search criteria in aSearchData.

The base class returns false since many of the objects derived from EDA_ITEM do not have any text to search.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
aFindLocationA pointer to a wxPoint object to store the location of matched item. The pointer can be NULL if it is not used.
Returns
True if the item's text matches the search criteria in aSearchData.

Reimplemented from EDA_ITEM.

Definition at line 1561 of file sch_component.cpp.

References GetSelectMenuText(), and traceFindItem.

Referenced by Move().

1563 {
1564  wxLogTrace( traceFindItem, wxT( " item " ) + GetSelectMenuText() );
1565 
1566  // Components are searchable via the child field and pin item text.
1567  return false;
1568 }
const wxChar *const traceFindItem
Flag to enable find debug tracing.
wxString GetSelectMenuText() const override
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
void SCH_COMPONENT::MirrorX ( int  aXaxis_position)
overridevirtual

Function MirrorX mirrors item relative to the X axis about aXaxis_position.

Parameters
aXaxis_positionThe X axis position to mirror around.

Implements SCH_ITEM.

Definition at line 1524 of file sch_component.cpp.

References CMP_MIRROR_X, GetField(), GetFieldCount(), EDA_TEXT::GetTextPos(), m_Pos, MIRROR(), SetOrientation(), EDA_TEXT::SetTextPos(), and wxPoint::y.

Referenced by Move().

1525 {
1526  int dy = m_Pos.y;
1527 
1529  MIRROR( m_Pos.y, aXaxis_position );
1530  dy -= m_Pos.y; // dy,0 is the move vector for this transform
1531 
1532  for( int ii = 0; ii < GetFieldCount(); ii++ )
1533  {
1534  // Move the fields to the new position because the component itself has moved.
1535  wxPoint pos = GetField( ii )->GetTextPos();
1536  pos.y -= dy;
1537  GetField( ii )->SetTextPos( pos );
1538  }
1539 }
const wxPoint & GetTextPos() const
Definition: eda_text.h:222
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
void SetTextPos(const wxPoint &aPoint)
Definition: eda_text.h:221
void MIRROR(T &aPoint, const T &aMirrorRef)
Definition: macros.h:111
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
int GetFieldCount() const
Return the number of fields in this symbol.
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...
void SCH_COMPONENT::MirrorY ( int  aYaxis_position)
overridevirtual

Function MirrorY mirrors item relative to the Y axis about aYaxis_position.

Parameters
aYaxis_positionThe Y axis position to mirror around.

Implements SCH_ITEM.

Definition at line 1506 of file sch_component.cpp.

References CMP_MIRROR_Y, GetField(), GetFieldCount(), EDA_TEXT::GetTextPos(), m_Pos, MIRROR(), SetOrientation(), EDA_TEXT::SetTextPos(), and wxPoint::x.

Referenced by Move().

1507 {
1508  int dx = m_Pos.x;
1509 
1511  MIRROR( m_Pos.x, aYaxis_position );
1512  dx -= m_Pos.x; // dx,0 is the move vector for this transform
1513 
1514  for( int ii = 0; ii < GetFieldCount(); ii++ )
1515  {
1516  // Move the fields to the new position because the component itself has moved.
1517  wxPoint pos = GetField( ii )->GetTextPos();
1518  pos.x -= dx;
1519  GetField( ii )->SetTextPos( pos );
1520  }
1521 }
const wxPoint & GetTextPos() const
Definition: eda_text.h:222
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
void SetTextPos(const wxPoint &aPoint)
Definition: eda_text.h:221
void MIRROR(T &aPoint, const T &aMirrorRef)
Definition: macros.h:111
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
int GetFieldCount() const
Return the number of fields in this symbol.
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...
void SCH_COMPONENT::Move ( const wxPoint aMoveVector)
inlineoverridevirtual

Function Move moves the item by aMoveVector to a new position.

Parameters
aMoveVector= the displacement vector

Implements SCH_ITEM.

Definition at line 522 of file sch_component.h.

References GetEndPoints(), GetField(), GetFieldCount(), GetPinPhysicalPosition(), IsDangling(), IsDanglingStateChanged(), IsSelectStateChanged(), Matches(), MirrorX(), MirrorY(), SCH_FIELD::Move(), Rotate(), and EDA_ITEM::SetModified().

Referenced by SetPosition().

523  {
524  if( aMoveVector == wxPoint( 0, 0 ) )
525  return;
526 
527  m_Pos += aMoveVector;
528 
529  for( int ii = 0; ii < GetFieldCount(); ii++ )
530  GetField( ii )->Move( aMoveVector );
531 
532  SetModified();
533  }
void Move(const wxPoint &aMoveVector) override
Function Move moves the item by aMoveVector to a new position.
Definition: sch_field.h:148
void SetModified()
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
int GetFieldCount() const
Return the number of fields in this symbol.
SCH_ITEM* SCH_ITEM::Next ( ) const
inlineinherited

Definition at line 143 of file sch_item_struct.h.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), SCH_SCREEN::addConnectedItemsToBlock(), SCH_SHEET_LIST::AnnotatePowerSymbols(), HIERARCHY_NAVIG_DLG::buildHierarchyTree(), NETLIST_OBJECT_LIST::BuildNetListInfo(), SCH_SCREENS::ChangeSymbolLibNickname(), SCH_SCREEN::CheckIfOnDrawList(), SCH_SCREEN::ClearAnnotation(), SCH_SCREEN::ClearDrawingState(), SCH_SCREEN::CountConnectedItems(), SCH_EDIT_FRAME::CreateArchiveLibrary(), SCH_SCREENS::DeleteAllMarkers(), SCH_EDIT_FRAME::DeleteJunction(), DIALOG_ERC::DisplayERC_MarkersList(), SCH_SCREEN::Draw(), SCH_EDIT_FRAME::EndSegment(), SCH_SCREEN::ExtractWires(), SCH_EDIT_FRAME::FindComponentAndItem(), SCH_SHEET_PATH::FindNextItem(), SCH_SHEET_LIST::FindNextItem(), SCH_SHEET_PATH::FirstDrawList(), SCH_LEGACY_PLUGIN::Format(), get_components(), AUTOPLACER::get_possible_colliders(), SCH_SHEET_PATH::GetComponents(), SCH_SCREEN::GetConnection(), SCH_SCREEN::GetHierarchicalItems(), SCH_SCREEN::GetItem(), SCH_SCREEN::GetLabel(), SCH_SCREENS::GetLibNicknames(), SCH_SCREEN::GetLine(), SCH_SCREENS::GetMarkerCount(), SCH_SHEET_PATH::GetMultiUnitComponents(), SCH_SCREEN::GetNode(), SCH_SCREEN::GetPin(), SCH_SCREEN::GetSheet(), getSheetBbox(), SCH_SCREEN::GetSheetLabel(), SCH_SCREEN::GetWireOrBus(), SCH_SCREENS::HasNoFullyDefinedLibIds(), DIALOG_EDIT_COMPONENTS_LIBID::initDlg(), SCH_SCREEN::IsJunctionNeeded(), SCH_EAGLE_PLUGIN::loadSheet(), SCH_SCREEN::MarkConnections(), SCH_EAGLE_PLUGIN::moveLabels(), SCH_EDIT_FRAME::OnConvertTextType(), DIALOG_ERC::OnLeftClickMarkersList(), SCH_EDIT_FRAME::OnUpdateFields(), SCH_SCREEN::Plot(), DIALOG_SYMBOL_REMAP::remapSymbolsToLibTable(), SCH_SCREEN::ReplaceWires(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_SCREEN::SetComponentFootprint(), SCH_EDIT_FRAME::SetCurrentSheetHighlightFlags(), SCH_SCREEN::TestDanglingEnds(), TestDuplicateSheetNames(), SCH_EDIT_FRAME::TrimWire(), and SCH_SCREEN::UpdatePickList().

143 { return static_cast<SCH_ITEM*>( Pnext ); }
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:175
bool SCH_COMPONENT::operator!= ( const SCH_COMPONENT aComponent) const

Definition at line 1887 of file sch_component.cpp.

Referenced by CanConnect().

1888 {
1889  return !( *this == aComponent );
1890 }
bool EDA_ITEM::operator< ( const EDA_ITEM aItem) const
inherited

Test if another item is less than this object.

Parameters
aItem- Item to compare against.
Returns
- True if aItem is less than the item.

Definition at line 240 of file base_struct.cpp.

References Format(), GetChars(), and EDA_ITEM::GetClass().

Referenced by EDA_ITEM::IsReplaceable(), and LIB_ALIAS::operator==().

241 {
242  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
243  GetChars( GetClass() ) ) );
244 
245  return false;
246 }
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
virtual wxString GetClass() const =0
Function GetClass returns the class name.
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:205
bool SCH_COMPONENT::operator< ( const SCH_ITEM aItem) const
overridevirtual

Reimplemented from SCH_ITEM.

Definition at line 1850 of file sch_component.cpp.

References EDA_RECT::GetArea(), GetBodyBoundingBox(), m_Pos, EDA_ITEM::Type(), wxPoint::x, and wxPoint::y.

Referenced by CanConnect().

1851 {
1852  if( Type() != aItem.Type() )
1853  return Type() < aItem.Type();
1854 
1855  SCH_COMPONENT* component = (SCH_COMPONENT*) &aItem;
1856 
1857  EDA_RECT rect = GetBodyBoundingBox();
1858 
1859  if( rect.GetArea() != component->GetBodyBoundingBox().GetArea() )
1860  return rect.GetArea() < component->GetBodyBoundingBox().GetArea();
1861 
1862  if( m_Pos.x != component->m_Pos.x )
1863  return m_Pos.x < component->m_Pos.x;
1864 
1865  if( m_Pos.y != component->m_Pos.y )
1866  return m_Pos.y < component->m_Pos.y;
1867 
1868  return false;
1869 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:209
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
EDA_RECT GetBodyBoundingBox() const
Return a bounding box for the symbol body but not the fields.
double GetArea() const
Function GetArea returns the area of the rectangle.
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:69
SCH_ITEM & SCH_COMPONENT::operator= ( const SCH_ITEM aItem)

Definition at line 1893 of file sch_component.cpp.

References SCH_ITEM::GetClass(), GetClass(), GetField(), GetFieldCount(), m_convert, m_Fields, m_lib_id, m_part, m_PathsAndReferences, m_Pins, m_Pos, m_transform, m_unit, EDA_ITEM::operator=(), EDA_ITEM::SetParent(), and EDA_ITEM::Type().

Referenced by CanConnect().

1894 {
1895  wxCHECK_MSG( Type() == aItem.Type(), *this,
1896  wxT( "Cannot assign object type " ) + aItem.GetClass() + wxT( " to type " ) +
1897  GetClass() );
1898 
1899  if( &aItem != this )
1900  {
1901  SCH_ITEM::operator=( aItem );
1902 
1903  SCH_COMPONENT* c = (SCH_COMPONENT*) &aItem;
1904 
1905  m_lib_id = c->m_lib_id;
1906  m_part = c->m_part;
1907  m_Pos = c->m_Pos;
1908  m_unit = c->m_unit;
1909  m_convert = c->m_convert;
1910  m_transform = c->m_transform;
1911  m_Pins = c->m_Pins;
1912 
1914 
1915  m_Fields = c->m_Fields; // std::vector's assignment operator.
1916 
1917  // Reparent fields after assignment to new component.
1918  for( int ii = 0; ii < GetFieldCount(); ++ii )
1919  {
1920  GetField( ii )->SetParent( this );
1921  }
1922  }
1923 
1924  return *this;
1925 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:209
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
std::vector< wxPoint > m_Pins
Definition: sch_component.h:96
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:224
EDA_ITEM & operator=(const EDA_ITEM &aItem)
Operator assignment is used to assign the members of aItem to another object.
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
int GetFieldCount() const
Return the number of fields in this symbol.
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:69
virtual wxString GetClass() const override
Function GetClass returns the class name.
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
wxString GetClass() const override
Function GetClass returns the class name.
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
bool SCH_COMPONENT::operator== ( const SCH_COMPONENT aComponent) const

Definition at line 1872 of file sch_component.cpp.

References GetField(), GetFieldCount(), EDA_TEXT::GetText(), i, and VALUE.

Referenced by CanConnect().

1873 {
1874  if( GetFieldCount() != aComponent.GetFieldCount() )
1875  return false;
1876 
1877  for( int i = VALUE; i < GetFieldCount(); i++ )
1878  {
1879  if( GetField( i )->GetText().Cmp( aComponent.GetField( i )->GetText() ) != 0 )
1880  return false;
1881  }
1882 
1883  return true;
1884 }
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:128
int GetFieldCount() const
Return the number of fields in this symbol.
size_t i
Definition: json11.cpp:597
#define VALUE
void SCH_COMPONENT::Plot ( PLOTTER aPlotter)
overridevirtual

Function Plot plots the schematic item to aPlotter.

Parameters
aPlotterA pointer to a PLOTTER object.

Reimplemented from SCH_ITEM.

Definition at line 1970 of file sch_component.cpp.

References GetConvert(), GetTransform(), GetUnit(), i, m_Fields, m_part, and m_Pos.

Referenced by SetPosition().

1971 {
1972  TRANSFORM temp;
1973 
1974  if( PART_SPTR part = m_part.lock() )
1975  {
1976  temp = GetTransform();
1977 
1978  part->Plot( aPlotter, GetUnit(), GetConvert(), m_Pos, temp );
1979 
1980  for( size_t i = 0; i < m_Fields.size(); i++ )
1981  {
1982  m_Fields[i].Plot( aPlotter );
1983  }
1984  }
1985 }
TRANSFORM & GetTransform() const
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
int GetConvert() const
Class for tranforming drawing coordinates for a wxDC device context.
Definition: transform.h:45
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
int GetUnit() const
size_t i
Definition: json11.cpp:597
bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
wxString &  aText 
)
inherited

Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aTextA reference to a wxString object containing the text to be replaced.
Returns
True if aText was modified, otherwise false.

Definition at line 210 of file base_struct.cpp.

References GetChars(), EDA_ITEM::GetClass(), EDA_ITEM::IsReplaceable(), and traceFindReplace.

Referenced by EDA_ITEM::Matches(), SCH_TEXT::Replace(), SCH_FIELD::Replace(), SCH_SHEET_PIN::Replace(), SCH_SHEET::Replace(), and SCH_FIND_COLLECTOR::ReplaceItem().

211 {
212  wxCHECK_MSG( IsReplaceable(), false,
213  wxT( "Attempt to replace text in <" ) + GetClass() + wxT( "> item." ) );
214 
215  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
216 
217  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
218  aSearchData.GetFindString() :
219  aSearchData.GetFindString().Upper() );
220 
221  if( result == wxNOT_FOUND )
222  return false;
223 
224  wxString prefix = aText.Left( result );
225  wxString suffix;
226 
227  if( aSearchData.GetFindString().length() + result < aText.length() )
228  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
229 
230  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
231  GetChars( aText ), GetChars( prefix ), GetChars( aSearchData.GetReplaceString() ),
232  GetChars( suffix ) );
233 
234  aText = prefix + aSearchData.GetReplaceString() + suffix;
235 
236  return true;
237 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:455
const wxChar *const traceFindReplace
Flag to enable find and replace debug tracing.
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
virtual wxString GetClass() const =0
Function GetClass returns the class name.
virtual bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
void *  aAuxData = NULL 
)
inlinevirtualinherited

Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace.

This function must be overridden for items that support text replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item text was modified, otherwise false.

Reimplemented in SCH_SHEET, SCH_SHEET_PIN, SCH_FIELD, and SCH_TEXT.

Definition at line 443 of file base_struct.h.

443 { return false; }
bool SCH_COMPONENT::Resolve ( PART_LIBS aLibs)

Assigns the current LIB_PART from aLibs which this symbol is based on.

Parameters
aLibsis the current set of LIB_PARTs to choose from.

Definition at line 306 of file sch_component.cpp.

References PART_LIBS::FindLibPart(), m_lib_id, and m_part.

Referenced by GetPartRef(), SCH_EDIT_FRAME::Load_Component(), ResolveAll(), and SetLibId().

307 {
308  // I've never been happy that the actual individual PART_LIB is left up to
309  // flimsy search path ordering. None-the-less find a part based on that design:
310  if( LIB_PART* part = aLibs->FindLibPart( m_lib_id ) )
311  {
312  m_part = part->SharedPtr();
313  return true;
314  }
315 
316  return false;
317 }
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
Define a library symbol object.
LIB_PART * FindLibPart(const LIB_ID &aLibId, const wxString &aLibraryName=wxEmptyString)
Search all libraries in the list for a part.
bool SCH_COMPONENT::Resolve ( SYMBOL_LIB_TABLE aLibTable,
PART_LIB aCacheLib = NULL 
)

Definition at line 320 of file sch_component.cpp.

References PART_LIB::FindAlias(), LIB_ID::Format(), LIB_ID::GetLibNickname(), LIB_ALIAS::GetPart(), LIB_TABLE::HasLibrary(), LIB_ID::IsValid(), SYMBOL_LIB_TABLE::LoadSymbol(), m_lib_id, m_part, LIB_PART::SharedPtr(), and UTF8::wx_str().

321 {
322  LIB_ALIAS* alias = nullptr;
323 
324  try
325  {
326  // LIB_TABLE_BASE::LoadSymbol() throws an IO_ERROR if the the library nickname
327  // is not found in the table so check if the library still exists in the table
328  // before attempting to load the symbol.
329  if( m_lib_id.IsValid() && aLibTable.HasLibrary( m_lib_id.GetLibNickname() ) )
330  alias = aLibTable.LoadSymbol( m_lib_id );
331 
332  // Fall back to cache library. This is temporary until the new schematic file
333  // format is implemented.
334  if( !alias && aCacheLib )
335  alias = aCacheLib->FindAlias( m_lib_id.Format().wx_str() );
336 
337  if( alias && alias->GetPart() )
338  {
339  m_part = alias->GetPart()->SharedPtr();
340  return true;
341  }
342  }
343  catch( const IO_ERROR& )
344  {
345  wxLogDebug( "Cannot resolve library symbol %s", m_lib_id.Format().wx_str() );
346  }
347 
348  return false;
349 }
LIB_ALIAS * LoadSymbol(const wxString &aNickname, const wxString &aAliasName)
Load a LIB_ALIAS having aAliasName from the library given by aNickname.
bool IsValid() const
Definition: lib_id.h:158
Part library alias object definition.
wxString wx_str() const
Definition: utf8.cpp:48
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
PART_SPTR SharedPtr()
LIB_ALIAS * FindAlias(const wxString &aName) const
Find LIB_ALIAS by aName.
LIB_PART * GetPart() const
Get the shared LIB_PART.
UTF8 Format() const
Definition: lib_id.cpp:263
bool HasLibrary(const wxString &aNickname) const
Test for the existence of aNickname in the library table.
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:101
Struct IO_ERROR is a class used to hold an error message and may be used when throwing exceptions con...
Definition: ki_exception.h:47
void SCH_COMPONENT::ResolveAll ( const SCH_COLLECTOR aComponents,
PART_LIBS aLibs 
)
static

Definition at line 368 of file sch_component.cpp.

References COLLECTOR::GetCount(), i, m_convert, m_lib_id, m_part, m_Pins, m_unit, Resolve(), sort_by_libid(), and UpdatePinCache().

Referenced by GetPartRef(), and SCH_SCREEN::UpdateSymbolLinks().

369 {
370  // Usually, many components use the same part lib.
371  // to avoid too long calculation time the list of components is grouped
372  // and once the lib part is found for one member of a group, it is also
373  // set for all other members of this group
374  std::vector<SCH_COMPONENT*> cmp_list;
375 
376  // build the cmp list.
377  for( int i = 0; i < aComponents.GetCount(); ++i )
378  {
379  SCH_COMPONENT* cmp = dynamic_cast<SCH_COMPONENT*>( aComponents[i] );
380  wxASSERT( cmp );
381 
382  if( cmp ) // cmp == NULL should not occur.
383  cmp_list.push_back( cmp );
384  }
385 
386  // sort it by lib part. Cmp will be grouped by same lib part.
387  std::sort( cmp_list.begin(), cmp_list.end(), sort_by_libid );
388 
389  LIB_ID curr_libid;
390 
391  for( unsigned ii = 0; ii < cmp_list.size (); ++ii )
392  {
393  SCH_COMPONENT* cmp = cmp_list[ii];
394  curr_libid = cmp->m_lib_id;
395  cmp->Resolve( aLibs );
396  cmp->UpdatePinCache();
397 
398  // Propagate the m_part pointer to other members using the same lib_id
399  for( unsigned jj = ii+1; jj < cmp_list.size (); ++jj )
400  {
401  SCH_COMPONENT* next_cmp = cmp_list[jj];
402 
403  if( curr_libid != next_cmp->m_lib_id )
404  break;
405 
406  next_cmp->m_part = cmp->m_part;
407 
408  if( ( cmp->m_unit == next_cmp->m_unit ) && ( cmp->m_convert == next_cmp->m_convert ) )
409  // Propagate the pin cache vector as well
410  next_cmp->m_Pins = cmp->m_Pins;
411  else
412  next_cmp->UpdatePinCache();
413 
414  ii = jj;
415  }
416  }
417 }
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:106
bool Resolve(PART_LIBS *aLibs)
Assigns the current LIB_PART from aLibs which this symbol is based on.
static bool sort_by_libid(const SCH_COMPONENT *ref, SCH_COMPONENT *cmp)
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
std::vector< wxPoint > m_Pins
Definition: sch_component.h:96
void UpdatePinCache()
Updates the local cache of pin positions.
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
size_t i
Definition: json11.cpp:597
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:69
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
void SCH_COMPONENT::ResolveAll ( const SCH_COLLECTOR aComponents,
SYMBOL_LIB_TABLE aLibTable,
PART_LIB aCacheLib = NULL 
)
static

Definition at line 420 of file sch_component.cpp.

References COLLECTOR::GetCount(), i, m_convert, m_lib_id, m_part, m_Pins, m_unit, Resolve(), sort_by_libid(), and UpdatePinCache().

422 {
423  std::vector<SCH_COMPONENT*> cmp_list;
424 
425  for( int i = 0; i < aComponents.GetCount(); ++i )
426  {
427  SCH_COMPONENT* cmp = dynamic_cast<SCH_COMPONENT*>( aComponents[i] );
428 
429  wxCHECK2_MSG( cmp, continue, "Invalid SCH_COMPONENT pointer in list." );
430 
431  cmp_list.push_back( cmp );
432  }
433 
434  // sort it by lib part. Cmp will be grouped by same lib part.
435  std::sort( cmp_list.begin(), cmp_list.end(), sort_by_libid );
436 
437  LIB_ID curr_libid;
438 
439  for( unsigned ii = 0; ii < cmp_list.size (); ++ii )
440  {
441  SCH_COMPONENT* cmp = cmp_list[ii];
442  curr_libid = cmp->m_lib_id;
443  cmp->Resolve( aLibTable, aCacheLib );
444  cmp->UpdatePinCache();
445 
446  // Propagate the m_part pointer to other members using the same lib_id
447  for( unsigned jj = ii+1; jj < cmp_list.size (); ++jj )
448  {
449  SCH_COMPONENT* next_cmp = cmp_list[jj];
450 
451  if( curr_libid != next_cmp->m_lib_id )
452  break;
453 
454  next_cmp->m_part = cmp->m_part;
455 
456  if( ( cmp->m_unit == next_cmp->m_unit ) && ( cmp->m_convert == next_cmp->m_convert ) )
457  // Propagate the pin cache vector as well
458  next_cmp->m_Pins = cmp->m_Pins;
459  else
460  next_cmp->UpdatePinCache();
461 
462  ii = jj;
463  }
464  }
465 }
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:106
bool Resolve(PART_LIBS *aLibs)
Assigns the current LIB_PART from aLibs which this symbol is based on.
static bool sort_by_libid(const SCH_COMPONENT *ref, SCH_COMPONENT *cmp)
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
std::vector< wxPoint > m_Pins
Definition: sch_component.h:96
void UpdatePinCache()
Updates the local cache of pin positions.
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
size_t i
Definition: json11.cpp:597
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:69
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
void SCH_COMPONENT::Rotate ( wxPoint  aPosition)
overridevirtual

Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction.

Parameters
aPositionA reference to a wxPoint object containing the coordinates to rotate around.

Implements SCH_ITEM.

Definition at line 1542 of file sch_component.cpp.

References CMP_ROTATE_COUNTERCLOCKWISE, GetField(), GetFieldCount(), EDA_TEXT::GetTextPos(), m_Pos, RotatePoint(), SetOrientation(), EDA_TEXT::SetTextPos(), wxPoint::x, and wxPoint::y.

Referenced by Move().

1543 {
1544  wxPoint prev = m_Pos;
1545 
1546  RotatePoint( &m_Pos, aPosition, 900 );
1547 
1549 
1550  for( int ii = 0; ii < GetFieldCount(); ii++ )
1551  {
1552  // Move the fields to the new position because the component itself has moved.
1553  wxPoint pos = GetField( ii )->GetTextPos();
1554  pos.x -= prev.x - m_Pos.x;
1555  pos.y -= prev.y - m_Pos.y;
1556  GetField( ii )->SetTextPos( pos );
1557  }
1558 }
const wxPoint & GetTextPos() const
Definition: eda_text.h:222
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
void SetTextPos(const wxPoint &aPoint)
Definition: eda_text.h:221
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:216
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
int GetFieldCount() const
Return the number of fields in this symbol.
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...
void EDA_ITEM::SetBack ( EDA_ITEM aBack)
inlineinherited

Definition at line 223 of file base_struct.h.

Referenced by DHEAD::append(), DHEAD::insert(), SCH_EDIT_FRAME::PutDataInPreviousState(), DHEAD::remove(), and SwapItemData().

223 { Pback = aBack; }
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:176
void EDA_ITEM::SetBrightened ( )
inlineinherited

Definition at line 240 of file base_struct.h.

References BRIGHTENED, and EDA_ITEM::SetFlags().

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), and SELECTION_TOOL::disambiguationMenu().

240 { SetFlags( BRIGHTENED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:264
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:133
void SCH_COMPONENT::SetConvert ( int  aConvert)

Definition at line 552 of file sch_component.cpp.

References m_convert, and EDA_ITEM::SetModified().

Referenced by SCH_EDIT_FRAME::ConvertPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), and GetConvert().

553 {
554  if( m_convert != aConvert )
555  {
556  m_convert = aConvert;
557  SetModified();
558  }
559 }
void SetModified()
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
void SCH_COMPONENT::SetCurrentSheetPath ( const SCH_SHEET_PATH aSheetPath)
inline

Definition at line 482 of file sch_component.h.

References AddHierarchicalReference(), GetRef(), GetUnitSelection(), SetRef(), and SetUnitSelection().

Referenced by SCH_EDIT_FRAME::Load_Component().

483  {
484  m_currentSheetPath = aSheetPath;
485  }
const SCH_SHEET_PATH * m_currentSheetPath
A temporary sheet path is required to generate the correct reference designator string in complex hie...
void SCH_COMPONENT::SetFields ( const SCH_FIELDS aFields)
inline

Set multiple schematic fields.

Parameters
aFieldsare the fields to set in this symbol.

Definition at line 371 of file sch_component.h.

References UpdateFields().

Referenced by DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::EditSpiceModel(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), and DIALOG_UPDATE_FIELDS::updateFields().

372  {
373  m_Fields = aFields; // vector copying, length is changed possibly
374  }
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 264 of file base_struct.h.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), SCH_SCREEN::addConnectedItemsToBlock(), PCB_BASE_FRAME::AddModuleToBoard(), AddSegmentToDragList(), PCBNEW_CONTROL::AppendBoard(), PCB_EDIT_FRAME::AppendBoardFile(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Begin_Zone(), PCB_EDIT_FRAME::BeginMoveDimensionText(), PCB_EDIT_FRAME::BeginMoveTarget(), SCH_EDIT_FRAME::BeginSegment(), PCB_EDIT_FRAME::Change_Side_Module(), SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::copyBlockItems(), CopyMarkedItems(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), LIB_PART::CopySelectedItems(), LIB_EDIT_FRAME::copySelectedItems(), SCH_EDIT_FRAME::CreateBusBusEntry(), SCH_EDIT_FRAME::CreateBusWireEntry(), SCH_EDIT_FRAME::CreateNewImage(), SCH_EDIT_FRAME::CreateNewText(), LIB_EDIT_FRAME::CreatePin(), SCH_EDIT_FRAME::CreateSheet(), SCH_EDIT_FRAME::CreateSheetPin(), PCB_EDIT_FRAME::CreateTarget(), PCB_EDIT_FRAME::CreateTextePcb(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), SCH_EDIT_FRAME::DeleteItem(), PCB_EDIT_FRAME::EditDimension(), PCB_EDIT_FRAME::FlipTextePcb(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), SCH_SCREEN::GetConnection(), PCB_BASE_FRAME::GlobalChange_PadSettings(), FOOTPRINT_EDIT_FRAME::HandleBlockEnd(), PCB_BASE_FRAME::Import_Pad_Settings(), SCH_EDIT_FRAME::ImportSheetPin(), SCH_JUNCTION::IsSelectStateChanged(), SCH_NO_CONNECT::IsSelectStateChanged(), SCH_MARKER::IsSelectStateChanged(), SCH_BUS_ENTRY_BASE::IsSelectStateChanged(), SCH_BITMAP::IsSelectStateChanged(), SCH_LINE::IsSelectStateChanged(), SCH_TEXT::IsSelectStateChanged(), SCH_SHEET::IsSelectStateChanged(), IsSelectStateChanged(), SCH_EDIT_FRAME::Load_Component(), SCH_SCREEN::MarkConnections(), MarkItemsInBloc(), moveBitmap(), SCH_EDIT_FRAME::MoveImage(), SCH_EDIT_FRAME::OnConvertTextType(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), LIB_EDIT_FRAME::OnEditPin(), TARGET_PROPERTIES_DIALOG_EDITOR::OnOkClick(), SCH_EDIT_FRAME::OnSelectUnit(), KIGFX::ORIGIN_VIEWITEM::ORIGIN_VIEWITEM(), PCB_EDIT_FRAME::Other_Layer_Route(), DRAWING_TOOL::PlaceText(), SCH_EDIT_FRAME::PrepareMoveItem(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::RepeatDrawItem(), LIB_EDIT_FRAME::RepeatPinItem(), SCH_EDIT_FRAME::ReSizeSheet(), PCB_BASE_FRAME::Rotate_Module(), PCB_EDIT_FRAME::Rotate_Texte_Pcb(), LIB_EDIT_FRAME::SaveCopyInUndoList(), SCH_SCREEN::SelectBlockItems(), EDA_ITEM::SetBrightened(), LIB_PIN::SetConversion(), BLOCK_SELECTOR::SetFlags(), EDA_ITEM::SetHighlighted(), EDA_ITEM::SetModified(), EDA_ITEM::SetSelected(), EDA_ITEM::SetWireImage(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::Start_Move_DrawItem(), FOOTPRINT_EDIT_FRAME::Start_Move_EdgeMod(), PCB_EDIT_FRAME::Start_Move_Zone_Corner(), PCB_EDIT_FRAME::Start_Move_Zone_Drag_Outline_Edge(), PCB_EDIT_FRAME::Start_Move_Zone_Outlines(), PCB_EDIT_FRAME::StartMoveModule(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), PCB_BASE_FRAME::StartMovePad(), LIB_EDIT_FRAME::StartMovePin(), PCB_BASE_FRAME::StartMoveTexteModule(), PCB_EDIT_FRAME::StartMoveTextePcb(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and UndrawAndMarkSegmentsToDrag().

264 { m_Flags |= aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:186
void EDA_ITEM::SetForceVisible ( bool  aEnable)
inlineinherited

Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible.

Parameters
aEnableTrue forces the item to be drawn. False uses the item's visibility setting to determine if the item is to be drawn.

Definition at line 276 of file base_struct.h.

Referenced by SCH_EDIT_FRAME::OnFindSchematicItem(), and SCH_EDIT_FRAME::updateFindReplaceView().

276 { m_forceVisible = aEnable; }
bool m_forceVisible
Set to true to override the visibility setting of the item.
Definition: base_struct.h:183
void EDA_ITEM::SetHighlighted ( )
inlineinherited

Definition at line 239 of file base_struct.h.

References HIGHLIGHTED, and EDA_ITEM::SetFlags().

239 { SetFlags( HIGHLIGHTED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:264
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:132
void SCH_ITEM::SetLayer ( SCH_LAYER_ID  aLayer)
inlineinherited

Function SetLayer sets the layer this item is on.

Parameters
aLayerThe layer number.

Definition at line 170 of file sch_item_struct.h.

Referenced by Init(), SCH_FIELD::SCH_FIELD(), and SCH_NO_CONNECT::SCH_NO_CONNECT().

170 { m_Layer = aLayer; }
SCH_LAYER_ID m_Layer
void SCH_COMPONENT::SetLibId ( const LIB_ID aName,
PART_LIBS aLibs = NULL 
)

Definition at line 235 of file sch_component.cpp.

References m_lib_id, m_part, Resolve(), and EDA_ITEM::SetModified().

Referenced by SCH_SCREENS::ChangeSymbolLibNickname(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), IsMovableFromAnchorPoint(), SCH_EDIT_FRAME::Load_Component(), and DIALOG_SYMBOL_REMAP::remapSymbolToLibTable().

236 {
237  if( m_lib_id != aLibId )
238  {
239  m_lib_id = aLibId;
240  SetModified();
241 
242  if( aLibs )
243  Resolve( aLibs );
244  else
245  m_part.reset();
246  }
247 }
void SetModified()
bool Resolve(PART_LIBS *aLibs)
Assigns the current LIB_PART from aLibs which this symbol is based on.
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
void SCH_COMPONENT::SetLibId ( const LIB_ID aLibId,
SYMBOL_LIB_TABLE aSymLibTable,
PART_LIB aCacheLib 
)

Definition at line 250 of file sch_component.cpp.

References PART_LIB::FindAlias(), LIB_ID::Format(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), LIB_ALIAS::GetPart(), LIB_TABLE::HasLibrary(), SYMBOL_LIB_TABLE::LoadSymbol(), m_lib_id, m_part, EDA_ITEM::SetModified(), LIB_PART::SharedPtr(), and UTF8::wx_str().

252 {
253  if( m_lib_id == aLibId )
254  return;
255 
256  m_lib_id = aLibId;
257  SetModified();
258 
259  LIB_ALIAS* alias = nullptr;
260 
261  if( aSymLibTable && aSymLibTable->HasLibrary( m_lib_id.GetLibNickname() ) )
262  alias = aSymLibTable->LoadSymbol( m_lib_id.GetLibNickname(), m_lib_id.GetLibItemName() );
263 
264  if( !alias && aCacheLib )
265  alias = aCacheLib->FindAlias( m_lib_id.Format().wx_str() );
266 
267  if( alias && alias->GetPart() )
268  m_part = alias->GetPart()->SharedPtr();
269  else
270  m_part.reset();
271 }
LIB_ALIAS * LoadSymbol(const wxString &aNickname, const wxString &aAliasName)
Load a LIB_ALIAS having aAliasName from the library given by aNickname.
void SetModified()
Part library alias object definition.
wxString wx_str() const
Definition: utf8.cpp:48
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
const UTF8 & GetLibItemName() const
Definition: lib_id.h:118
PART_SPTR SharedPtr()
LIB_ALIAS * FindAlias(const wxString &aName) const
Find LIB_ALIAS by aName.
LIB_PART * GetPart() const
Get the shared LIB_PART.
UTF8 Format() const
Definition: lib_id.cpp:263
bool HasLibrary(const wxString &aNickname) const
Test for the existence of aNickname in the library table.
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:101
void EDA_ITEM::SetList ( DHEAD aList)
inlineinherited

Definition at line 225 of file base_struct.h.

Referenced by DHEAD::append(), DHEAD::insert(), DHEAD::remove(), and SwapItemData().

225 { m_List = aList; }
DHEAD * m_List
which DLIST I am on.
Definition: base_struct.h:177
void EDA_ITEM::SetModified ( )
inherited

Definition at line 101 of file base_struct.cpp.

References IS_CHANGED, EDA_ITEM::m_Parent, EDA_ITEM::SetFlags(), and EDA_ITEM::SetModified().

Referenced by ClearAnnotation(), EDA_ITEM::ClearBrightened(), SCH_LINE::Move(), LIB_PIN::Move(), Move(), LIB_PART::RemoveDrawItem(), SetConvert(), LIB_PIN::SetLength(), SetLibId(), EDA_ITEM::SetModified(), LIB_FIELD::SetName(), LIB_PIN::SetName(), LIB_PIN::SetNameTextSize(), LIB_PIN::SetNumber(), LIB_PIN::SetNumberTextSize(), LIB_PIN::SetOrientation(), LIB_PIN::SetPartNumber(), LIB_PIN::SetPinPosition(), LIB_PIN::SetShape(), SetTransform(), LIB_PIN::SetType(), SetUnit(), LIB_PIN::SetVisible(), and LIB_PIN::SetWidth().

102 {
103  SetFlags( IS_CHANGED );
104 
105  // If this a child object, then the parent modification state also needs to be set.
106  if( m_Parent )
108 }
void SetModified()
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:179
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:105
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:264
void EDA_ITEM::SetNext ( EDA_ITEM aNext)
inlineinherited

Definition at line 222 of file base_struct.h.

Referenced by DHEAD::append(), DHEAD::insert(), SCH_EDIT_FRAME::PutDataInPreviousState(), DHEAD::remove(), and SwapItemData().

222 { Pnext = aNext; }
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:175
void SCH_COMPONENT::SetOrientation ( int  aOrientation)

Compute the new transform matrix based on aOrientation for the symbol which is applied to the current transform.

Parameters
aOrientationis the orientation to apply to the transform.

Definition at line 1155 of file sch_component.cpp.

References CMP_MIRROR_X, CMP_MIRROR_Y, CMP_NORMAL, CMP_ORIENT_0, CMP_ORIENT_180, CMP_ORIENT_270, CMP_ORIENT_90, CMP_ROTATE_CLOCKWISE, CMP_ROTATE_COUNTERCLOCKWISE, m_transform, TRANSFORM::x1, TRANSFORM::x2, TRANSFORM::y1, and TRANSFORM::y2.

Referenced by DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), GetOrientation(), GetTransform(), MirrorX(), MirrorY(), Rotate(), and DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp().

1156 {
1157  TRANSFORM temp = TRANSFORM();
1158  bool transform = false;
1159 
1160  switch( aOrientation )
1161  {
1162  case CMP_ORIENT_0:
1163  case CMP_NORMAL: // default transform matrix
1164  m_transform.x1 = 1;
1165  m_transform.y2 = -1;
1166  m_transform.x2 = m_transform.y1 = 0;
1167  break;
1168 
1169  case CMP_ROTATE_COUNTERCLOCKWISE: // Rotate + (incremental rotation)
1170  temp.x1 = temp.y2 = 0;
1171  temp.y1 = 1;
1172  temp.x2 = -1;
1173  transform = true;
1174  break;
1175 
1176  case CMP_ROTATE_CLOCKWISE: // Rotate - (incremental rotation)
1177  temp.x1 = temp.y2 = 0;
1178  temp.y1 = -1;
1179  temp.x2 = 1;
1180  transform = true;
1181  break;
1182 
1183  case CMP_MIRROR_Y: // Mirror Y (incremental rotation)
1184  temp.x1 = -1;
1185  temp.y2 = 1;
1186  temp.y1 = temp.x2 = 0;
1187  transform = true;
1188  break;
1189 
1190  case CMP_MIRROR_X: // Mirror X (incremental rotation)
1191  temp.x1 = 1;
1192  temp.y2 = -1;
1193  temp.y1 = temp.x2 = 0;
1194  transform = true;
1195  break;
1196 
1197  case CMP_ORIENT_90:
1200  break;
1201 
1202  case CMP_ORIENT_180:
1206  break;
1207 
1208  case CMP_ORIENT_270:
1211  break;
1212 
1213  case ( CMP_ORIENT_0 + CMP_MIRROR_X ):
1216  break;
1217 
1218  case ( CMP_ORIENT_0 + CMP_MIRROR_Y ):
1221  break;
1222 
1223  case ( CMP_ORIENT_90 + CMP_MIRROR_X ):
1226  break;
1227 
1228  case ( CMP_ORIENT_90 + CMP_MIRROR_Y ):
1231  break;
1232 
1233  case ( CMP_ORIENT_180 + CMP_MIRROR_X ):
1236  break;
1237 
1238  case ( CMP_ORIENT_180 + CMP_MIRROR_Y ):
1241  break;
1242 
1243  case ( CMP_ORIENT_270 + CMP_MIRROR_X ):
1246  break;
1247 
1248  case ( CMP_ORIENT_270 + CMP_MIRROR_Y ):
1251  break;
1252 
1253  default:
1254  transform = false;
1255  wxMessageBox( wxT( "SetRotateMiroir() error: ill value" ) );
1256  break;
1257  }
1258 
1259  if( transform )
1260  {
1261  /* The new matrix transform is the old matrix transform modified by the
1262  * requested transformation, which is the temp transform (rot,
1263  * mirror ..) in order to have (in term of matrix transform):
1264  * transform coord = new_m_transform * coord
1265  * where transform coord is the coord modified by new_m_transform from
1266  * the initial value coord.
1267  * new_m_transform is computed (from old_m_transform and temp) to
1268  * have:
1269  * transform coord = old_m_transform * temp
1270  */
1271  TRANSFORM newTransform;
1272 
1273  newTransform.x1 = m_transform.x1 * temp.x1 + m_transform.x2 * temp.y1;
1274  newTransform.y1 = m_transform.y1 * temp.x1 + m_transform.y2 * temp.y1;
1275  newTransform.x2 = m_transform.x1 * temp.x2 + m_transform.x2 * temp.y2;
1276  newTransform.y2 = m_transform.y1 * temp.x2 + m_transform.y2 * temp.y2;
1277  m_transform = newTransform;
1278  }
1279 }
int y2
Definition: transform.h:51
int x2
Definition: transform.h:50
int x1
Definition: transform.h:48
int y1
Definition: transform.h:49
Class for tranforming drawing coordinates for a wxDC device context.
Definition: transform.h:45
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...
void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlineinherited
void SCH_COMPONENT::SetPosition ( const wxPoint aPosition)
inlineoverridevirtual

Function SetPosition set the schematic item position to aPosition.

Parameters
aPositionA reference to a wxPoint object containing the new position.

Implements SCH_ITEM.

Definition at line 619 of file sch_component.h.

References Clone(), doIsConnected(), HitTest(), Move(), Plot(), and DIALOG_SHIM::Show().

619 { Move( aPosition - m_Pos ); }
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
void Move(const wxPoint &aMoveVector) override
Function Move moves the item by aMoveVector to a new position.
void SCH_COMPONENT::SetPrefix ( const wxString &  aPrefix)
inline

Definition at line 241 of file sch_component.h.

241 { m_prefix = aPrefix; }
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
void SCH_COMPONENT::SetRef ( const SCH_SHEET_PATH aSheet,
const wxString &  aReference 
)

Set the reference for the given sheet path for this symbol.

Parameters
aSheetis the hierarchical path of the reference.
aReferenceis the new reference for the symbol.

Definition at line 747 of file sch_component.cpp.

References abs, AddHierarchicalReference(), GetField(), GetPath(), EDA_TEXT::GetText(), EDA_TEXT::GetTextPos(), IsReferenceStringValid(), m_PathsAndReferences, m_Pos, m_prefix, m_unit, REFERENCE, EDA_TEXT::SetText(), EDA_TEXT::SetTextPos(), wxPoint::x, and wxPoint::y.

Referenced by GetRef(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), SCH_COMPONENT(), SCH_REFERENCE::SCH_REFERENCE(), SetCurrentSheetPath(), and DIALOG_SCH_EDIT_ONE_FIELD::UpdateField().

748 {
749  wxString path = GetPath( sheet );
750 
751  bool notInArray = true;
752 
753  wxString h_path, h_ref;
754  wxStringTokenizer tokenizer;
755  wxString separators( wxT( " " ) );
756 
757  // check to see if it is already there before inserting it
758  for( unsigned ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
759  {
760  tokenizer.SetString( m_PathsAndReferences[ii], separators );
761  h_path = tokenizer.GetNextToken();
762 
763  if( h_path.Cmp( path ) == 0 )
764  {
765  // just update the reference text, not the timestamp.
766  h_ref = h_path + wxT( " " ) + ref;
767  h_ref += wxT( " " );
768  tokenizer.GetNextToken(); // Skip old reference
769  h_ref += tokenizer.GetNextToken(); // Add part selection
770 
771  // Add the part selection
772  m_PathsAndReferences[ii] = h_ref;
773  notInArray = false;
774  }
775  }
776 
777  if( notInArray )
778  AddHierarchicalReference( path, ref, m_unit );
779 
780  SCH_FIELD* rf = GetField( REFERENCE );
781 
782  if( rf->GetText().IsEmpty()
783  || ( abs( rf->GetTextPos().x - m_Pos.x ) +
784  abs( rf->GetTextPos().y - m_Pos.y ) > 10000 ) )
785  {
786  // move it to a reasonable position
787  rf->SetTextPos( m_Pos + wxPoint( 50, 50 ) );
788  }
789 
790  rf->SetText( ref ); // for drawing.
791 
792  // Reinit the m_prefix member if needed
793  wxString prefix = ref;
794 
795  if( IsReferenceStringValid( prefix ) )
796  {
797  while( prefix.Last() == '?' || isdigit( prefix.Last() ) )
798  prefix.RemoveLast();
799  }
800  else
801  {
802  prefix = wxT( "U" ); // Set to default ref prefix
803  }
804 
805  if( m_prefix != prefix )
806  m_prefix = prefix;
807 }
Class SCH_FIELD instances are attached to a component and provide a place for the component&#39;s value...
Definition: sch_field.h:56
wxString GetPath(const SCH_SHEET_PATH *sheet) const
const wxPoint & GetTextPos() const
Definition: eda_text.h:222
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
void SetTextPos(const wxPoint &aPoint)
Definition: eda_text.h:221
#define abs(a)
Definition: auxiliary.h:84
Field Reference of part, i.e. "IC21".
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:128
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
void AddHierarchicalReference(const wxString &aPath, const wxString &aRef, int aMulti)
Add a full hierarchical reference to this symbol.
static bool IsReferenceStringValid(const wxString &aReferenceString)
Tests for an acceptable reference string.
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
virtual void SetText(const wxString &aText)
Definition: eda_text.h:139
void EDA_ITEM::SetSelected ( )
inlineinherited

Definition at line 238 of file base_struct.h.

References SELECTED, and EDA_ITEM::SetFlags().

Referenced by LIB_EDIT_FRAME::pasteClipboard(), GERBVIEW_SELECTION_TOOL::selectVisually(), and SELECTION_TOOL::selectVisually().

238 { SetFlags( SELECTED ); }
#define SELECTED
Definition: base_struct.h:116
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:264
void EDA_ITEM::SetStatus ( STATUS_FLAGS  aStatus)
inlineinherited
void SCH_ITEM::SetStoredPos ( wxPoint  aPos)
inlineinherited

Definition at line 156 of file sch_item_struct.h.

Referenced by SCH_EDIT_FRAME::PrepareMoveItem().

156 { m_storedPos = aPos; }
wxPoint m_storedPos
a temporary variable used in some move commands to store a initial pos (of the item or mouse cursor) ...
void SCH_COMPONENT::SetTimeStamp ( timestamp_t  aNewTimeStamp)

Change the time stamp to aNewTimeStamp and updates the reference path.

See also
m_PathsAndReferences
Parameters
aNewTimeStamp= new time stamp

Definition at line 810 of file sch_component.cpp.

References m_PathsAndReferences, EDA_ITEM::m_TimeStamp, and EDA_ITEM::SetTimeStamp().

Referenced by GetTransform(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), SCH_EDIT_FRAME::PasteListOfItems(), and SCH_COMPONENT().

811 {
812  wxString string_timestamp, string_oldtimestamp;
813 
814  string_timestamp.Printf( wxT( "%08lX" ), (long unsigned) aNewTimeStamp );
815  string_oldtimestamp.Printf( wxT( "%08lX" ), (long unsigned) m_TimeStamp );
816  EDA_ITEM::SetTimeStamp( aNewTimeStamp );
817 
818  for( unsigned ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
819  {
820  m_PathsAndReferences[ii].Replace( string_oldtimestamp.GetData(),
821  string_timestamp.GetData() );
822  }
823 }
timestamp_t m_TimeStamp
Time stamp used for logical links.
Definition: base_struct.h:180
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
void SetTimeStamp(timestamp_t aNewTimeStamp)
Definition: base_struct.h:214
void SCH_COMPONENT::SetTransform ( const TRANSFORM aTransform)

Definition at line 562 of file sch_component.cpp.

References m_transform, and EDA_ITEM::SetModified().

Referenced by GetTransform().

563 {
564  if( m_transform != aTransform )
565  {
566  m_transform = aTransform;
567  SetModified();
568  }
569 }
void SetModified()
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
void SCH_COMPONENT::SetUnit ( int  aUnit)

Change the unit number to aUnit.

This has meaning only for symbols made up of multiple units per package.

Note
This also set the modified flag bit
Parameters
aUnitis the new unit to select.

Definition at line 536 of file sch_component.cpp.

References m_unit, and EDA_ITEM::SetModified().

Referenced by DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), GetUnit(), SCH_EDIT_FRAME::OnSelectUnit(), and SCH_EDIT_FRAME::PasteListOfItems().

537 {
538  if( m_unit != aUnit )
539  {
540  m_unit = aUnit;
541  SetModified();
542  }
543 }
void SetModified()
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
void SCH_COMPONENT::SetUnitSelection ( SCH_SHEET_PATH aSheet,
int  aUnitSelection 
)

Definition at line 854 of file sch_component.cpp.

References AddHierarchicalReference(), GetPath(), m_PathsAndReferences, and m_prefix.

Referenced by DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), SCH_EDIT_FRAME::OnSelectUnit(), and SetCurrentSheetPath().

855 {
856  wxString path = GetPath( aSheet );
857 
858  bool notInArray = true;
859 
860  wxString h_path, h_ref;
861  wxStringTokenizer tokenizer;
862  wxString separators( wxT( " " ) );
863 
864  //check to see if it is already there before inserting it
865  for( unsigned ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
866  {
867  tokenizer.SetString( m_PathsAndReferences[ii], separators );
868  h_path = tokenizer.GetNextToken();
869 
870  if( h_path.Cmp( path ) == 0 )
871  {
872  //just update the unit selection.
873  h_ref = h_path + wxT( " " );
874  h_ref += tokenizer.GetNextToken(); // Add reference
875  h_ref += wxT( " " );
876  h_ref << aUnitSelection; // Add part selection
877 
878  // Ann the part selection
879  m_PathsAndReferences[ii] = h_ref;
880  notInArray = false;
881  }
882  }
883 
884  if( notInArray )
885  AddHierarchicalReference( path, m_prefix, aUnitSelection );
886 }
wxString GetPath(const SCH_SHEET_PATH *sheet) const
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
void AddHierarchicalReference(const wxString &aPath, const wxString &aRef, int aMulti)
Add a full hierarchical reference to this symbol.
wxString m_prefix
C, R, U, Q etc - the first character which typically indicates what the component is...
Definition: sch_component.h:86
void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 237 of file base_struct.h.

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

Referenced by moveItemWithMouseCursor().

237 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:264
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:113
static bool EDA_ITEM::Sort ( const EDA_ITEM aLeft,
const EDA_ITEM aRight 
)
inlinestaticinherited

Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers.

Parameters
aLeftThe left hand item to compare.
aRightThe right hand item to compare.
Returns
True if aLeft is less than aRight.

Definition at line 474 of file base_struct.h.

References EDA_ITEM::Matches(), EDA_ITEM::operator=(), EDA_ITEM::ViewBBox(), and EDA_ITEM::ViewGetLayers().

Referenced by PART_LIB::GetEntryTypePowerNames().

474 { return *aLeft < *aRight; }
void SCH_COMPONENT::SwapData ( SCH_ITEM aItem)
overridevirtual

Function SwapData swap the internal data structures aItem with the schematic item.

Obviously, aItem must have the same type than me

Parameters
aItemThe item to swap the data structures with.

Reimplemented from SCH_ITEM.

Definition at line 1043 of file sch_component.cpp.

References GetField(), GetFieldCount(), m_convert, m_Fields, m_lib_id, m_part, m_PathsAndReferences, m_Pos, m_transform, m_unit, SCH_COMPONENT_T, EDA_ITEM::SetParent(), and EDA_ITEM::Type().

Referenced by Draw().

1044 {
1045  wxCHECK_RET( (aItem != NULL) && (aItem->Type() == SCH_COMPONENT_T),
1046  wxT( "Cannot swap data with invalid component." ) );
1047 
1048  SCH_COMPONENT* component = (SCH_COMPONENT*) aItem;
1049 
1050  std::swap( m_lib_id, component->m_lib_id );
1051  std::swap( m_part, component->m_part );
1052  std::swap( m_Pos, component->m_Pos );
1053  std::swap( m_unit, component->m_unit );
1054  std::swap( m_convert, component->m_convert );
1055 
1056  TRANSFORM tmp = m_transform;
1057 
1058  m_transform = component->m_transform;
1059  component->m_transform = tmp;
1060 
1061  m_Fields.swap( component->m_Fields ); // std::vector's swap()
1062 
1063  // Reparent items after copying data
1064  // (after swap(), m_Parent member does not point to the right parent):
1065  for( int ii = 0; ii < component->GetFieldCount(); ++ii )
1066  {
1067  component->GetField( ii )->SetParent( component );
1068  }
1069 
1070  for( int ii = 0; ii < GetFieldCount(); ++ii )
1071  {
1072  GetField( ii )->SetParent( this );
1073  }
1074 
1075  std::swap( m_PathsAndReferences, component->m_PathsAndReferences );
1076 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:209
SCH_FIELDS m_Fields
Variable length list of fields.
Definition: sch_component.h:91
wxArrayString m_PathsAndReferences
Defines the hierarchical path and reference of the component.
wxPoint m_Pos
Name and library where symbol was loaded from, i.e. "74xx:74LS00".
Definition: sch_component.h:77
Class for tranforming drawing coordinates for a wxDC device context.
Definition: transform.h:45
PART_REF m_part
points into the PROJECT&#39;s libraries to the LIB_PART for this component
Definition: sch_component.h:93
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:224
int m_unit
The unit for multiple part per package components.
Definition: sch_component.h:82
int GetFieldCount() const
Return the number of fields in this symbol.
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:69
int m_convert
The alternate body style for components that have more than one body style defined.
Definition: sch_component.h:83
TRANSFORM m_transform
The rotation/mirror transformation matrix.
Definition: sch_component.h:90
KICAD_T EDA_ITEM::Type ( ) const
inlineinherited

Function Type()

returns the type of object. This attribute should never be changed after a constructor sets it, so there is no public "setter" method.

Returns
KICAD_T - the type of object.

Definition at line 209 of file base_struct.h.

References EDA_ITEM::m_StructType.

Referenced by Abort_Move_ModuleOutline(), abortMoveBitmap(), abortMoveItem(), AbortPinMove(), MODULE::Add(), CN_CLUSTER::Add(), BOARD::Add(), CN_CONNECTIVITY_ALGO::Add(), PCB_EDIT_FRAME::Add45DegreeSegment(), SCH_SCREEN::addConnectedItemsToBlock(), POINT_EDITOR::addCorner(), POINT_EDITOR::addCornerCondition(), SCH_EDIT_FRAME::addCurrentItemToList(), AddMenusForComponent(), AddMenusForEditComponent(), SCH_SHEET::AddPin(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), PCB_EDIT_FRAME::Attribut_Track(), PCB_EDIT_FRAME::Autoroute(), PCB_EDIT_FRAME::Begin_Route(), SCH_EDIT_FRAME::BeginSegment(), PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Block_Duplicate(), PCB_EDIT_FRAME::Block_Flip(), PCB_EDIT_FRAME::Block_Move(), PCB_EDIT_FRAME::Block_Rotate(), HIERARCHY_NAVIG_DLG::buildHierarchyTree(), SCH_SCREENS::buildScreenList(), SCH_SHEET_LIST::BuildSheetList(), calcArea(), calcMaxArea(), SCH_NO_CONNECT::CanConnect(), SCH_JUNCTION::CanConnect(), SCH_BUS_WIRE_ENTRY::CanConnect(), SCH_LINE::CanConnect(), SCH_BUS_BUS_ENTRY::CanConnect(), SCH_LABEL::CanConnect(), SCH_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SHEET::CanConnect(), CanConnect(), ROUTER_TOOL::CanInlineDrag(), DIALOG_EXCHANGE_FOOTPRINTS::changeSameFootprints(), SCH_SCREENS::ChangeSymbolLibNickname(), SCH_EDIT_FRAME::CheckListConnections(), EDGE_MODULE::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), TEXTE_PCB::ClassOf(), TEXTE_MODULE::ClassOf(), DRAWSEGMENT::ClassOf(), TRACK::ClassOf(), NETINFO_ITEM::ClassOf(), MODULE::ClassOf(), D_PAD::ClassOf(), BOARD::ClassOf(), VIA::ClassOf(), SCH_SHEET::CleanupSheet(), Collect_TrackSegmentsToDrag(), LIB_BEZIER::compare(), LIB_CIRCLE::compare(), LIB_RECTANGLE::compare(), LIB_POLYLINE::compare(), LIB_TEXT::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), LIB_PIN::compare(), SCH_SHEET::ComponentCount(), GRID_HELPER::computeAnchors(), SCH_SCREEN::CountConnectedItems(), SCH_SHEET::CountSheets(), MODULE::CoverageRatio(), LIB_EDIT_FRAME::CreateGraphicItem(), CINFO3D_VISU::createLayers(), BOARD::CreateLockPoint(), SCH_EDIT_FRAME::CreateNewText(), CINFO3D_VISU::createNewTrack(), PCB_EDIT_FRAME::createPopupMenuForTracks(), CreateRoutesSection(), PCB_EDITOR_CONTROL::CrossProbeSchToPcb(), D_PAD::D_PAD(), FOOTPRINT_EDIT_FRAME::Delete_Edge_Module(), PCB_EDIT_FRAME::Delete_Segment_Edge(), SCH_SCREENS::DeleteAllMarkers(), SCH_SCREEN::DeleteItem(), LIB_EDIT_FRAME::deleteItem(), deleteItem(), SCH_EDIT_FRAME::DeleteItem(), DeleteNullTrackSegments(), PYTHON_ACTION_PLUGINS::deregister_action(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), DIALOG_ERC::DisplayERC_MarkersList(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), DRC::doTrackDrc(), DRC::doTrackKeepoutDrc(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), KIGFX::PCB_PAINTER::draw(), DrawMovePin(), DrawMovingBlockOutlines(), drawPickedItems(), CN_ITEM::Dump(), BOARD::Duplicate(), MODULE::Duplicate(), PCB_EDIT_FRAME::duplicateItems(), DuplicateItemsInList(), SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::EditComponentFieldText(), LIB_EDIT_FRAME::EditSymbolText(), SCH_EDIT_FRAME::EndSegment(), PCB_EDIT_FRAME::EraseRedundantTrack(), ExitSheet(), SCH_SCREEN::ExtractWires(), DRC::fillMarker(), find_vias_and_tracks_at(), SCH_EDIT_FRAME::FindComponentAndItem(), NETLIST_EXPORTER::findNextComponent(), NETLIST_EXPORTER::findNextComponentAndCreatePinList(), SCH_SHEET_PATH::FindNextItem(), SCH_SHEET_LIST::FindNextItem(), SCH_SHEET_PATH::FindPreviousItem(), SCH_SHEET_LIST::FindPreviousItem(), EDIT_TOOL::FootprintFilter(), FootprintWriteShape(), PCB_IO::Format(), PCB_IO::format(), FormatProbeItem(), POINT_EDITOR::get45DegConstrainer(), getAnchorPoint(), TRACK::GetBestInsertPoint(), BOARD_ITEM::GetBoard(), TRACK::GetBoundingBox(), BOARD_CONNECTED_ITEM::GetClearance(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), NETLIST_OBJECT::GetComponentParent(), SCH_SCREEN::GetConnection(), SCH_TEXT::GetConnectionPoints(), SCH_TEXT::GetEndPoints(), SCH_SHEET::GetEndPoints(), GetFirstTrack(), GetFirstVia(), SCH_SCREEN::GetHierarchicalItems(), SCH_SCREENS::GetLibNicknames(), TEXTE_PCB::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), BOARD_CONNECTED_ITEM::GetNetClass(), CONNECTIVITY_DATA::GetNetItems(), LIB_PART::GetNextDrawItem(), DRAWSEGMENT::GetParentModule(), SCH_SCREEN::GetPin(), LIB_PART::GetPin(), GetPinPhysicalPosition(), getRect(), SELECTION::GetTopLeftItem(), LIB_EDIT_FRAME::GlobalSetPins(), SELECTION_TOOL::guessSelectionCandidates(), hash_eda(), SCH_SCREENS::HasNoFullyDefinedLibIds(), SCH_SHEET::HasUndefinedPins(), SCH_EDIT_FRAME::ImportSheetPin(), DIALOG_LABEL_EDITOR::InitDialog(), ROUTER_TOOL::InlineDrag(), SCH_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), SCH_FIND_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), ARRAY_CREATOR::Invoke(), CN_ANCHOR::IsDangling(), SCH_TEXT::IsDanglingStateChanged(), SCH_COLLECTOR::IsNode(), TRACK::IsNull(), SCH_LINE::IsParallel(), SCH_SCREEN::IsTerminalPoint(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), CLIPBOARD_IO::Load(), PNS_PCBNEW_RULE_RESOLVER::localPadClearance(), SCH_EDIT_FRAME::LocateAndShowItem(), SCH_EDIT_FRAME::LocateItem(), SCH_SHEET::LocatePathOfScreen(), Magnetize(), EDIT_POINTS_FACTORY::Make(), SCH_SCREEN::MarkConnections(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), MarkItemsInBloc(), BOARD::MarkTrace(), TRACKS_CLEANER::mergeCollinearSegmentIfPossible(), TRACKS_CLEANER::MergeCollinearTracks(), SCH_LINE::MergeOverlap(), FOOTPRINT_EDIT_FRAME::ModeditLocateAndDisplay(), moveItemWithMouseCursor(), MoveMarkedItems(), MoveMarkedItemsExactly(), ROUTER_TOOL::NeighboringSegmentFilter(), SCH_EDIT_FRAME::OnConvertTextType(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), SCH_EDIT_FRAME::OnDragItem(), SCH_EDIT_FRAME::OnEditItem(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), SCH_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotkeyCopyItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyDeleteItem(), PCB_EDIT_FRAME::OnHotkeyDeleteItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyDuplicateItem(), PCB_EDIT_FRAME::OnHotkeyDuplicateOrArrayItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyFlipItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyMoveItem(), PCB_EDIT_FRAME::OnHotkeyMoveItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyMoveItemExact(), PCB_EDIT_FRAME::OnHotkeyPlaceItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyRotateItem(), PCB_EDIT_FRAME::OnHotkeyRotateItem(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftDClick(), LIB_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnMoveItem(), SCH_EDIT_FRAME::OnOpenLibraryEditor(), SCH_EDIT_FRAME::OnOrient(), FOOTPRINT_EDIT_FRAME::OnRightClick(), LIB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRightClick(), PCB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRotate(), SCH_EDIT_FRAME::OnSelectUnit(), SCH_LINE::operator<(), LIB_ITEM::operator<(), SCH_ITEM::operator<(), operator<(), SCH_BITMAP::operator=(), SCH_SHEET::operator=(), operator=(), LIB_ITEM::operator==(), OrCell_Trace(), SCH_EDIT_FRAME::OrientComponent(), BOARD_COMMIT::parentObject(), PCBNEW_CONTROL::PasteItemsFromClipboard(), SCH_EDIT_FRAME::PasteListOfItems(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), LIB_EDIT_FRAME::PlacePin(), SCH_FIELD::Plot(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), SCH_EDIT_FRAME::PrepareMoveItem(), GAL_ARRAY_CREATOR::prePushAction(), PCB_EDIT_FRAME::PrintPage(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), LIB_EDIT_FRAME::Process_Special_Functions(), SCH_EDIT_FRAME::Process_Special_Functions(), PCB_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), RedrawWhileMovingCursor(), DIALOG_SYMBOL_REMAP::remapSymbolsToLibTable(), MODULE::Remove(), BOARD::Remove(), CN_CONNECTIVITY_ALGO::Remove(), POINT_EDITOR::removeCorner(), POINT_EDITOR::removeCornerCondition(), LIB_PART::RemoveDrawItem(), TRACKS_CLEANER::removeDuplicatesOfTrack(), SCH_SHEET::RemovePin(), FOOTPRINT_EDIT_FRAME::RemoveStruct(), PCB_EDIT_FRAME::RemoveStruct(), SCH_EDIT_FRAME::RepeatDrawItem(), LIB_EDIT_FRAME::RepeatPinItem(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_SCREEN::ReplaceWires(), GERBVIEW_SELECTION_TOOL::RequestSelection(), SELECTION_TOOL::RequestSelection(), PCB_EDIT_FRAME::Reset_All_Tracks_And_Vias_To_Netclass_Values(), PCB_BASE_FRAME::ResetTextSize(), SCH_EDIT_FRAME::ReSizeSheet(), BOARD_COMMIT::Revert(), SCH_EDIT_FRAME::RotateField(), SCH_LEGACY_PLUGIN_CACHE::saveArc(), SCH_LEGACY_PLUGIN_CACHE::saveBezier(), SCH_LEGACY_PLUGIN_CACHE::saveCircle(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SCH_LEGACY_PLUGIN_CACHE::saveField(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePolyLine(), SCH_LEGACY_PLUGIN_CACHE::saveRectangle(), SCH_LEGACY_PLUGIN_CACHE::saveText(), SCH_EDIT_FRAME::SaveUndoItemInUndoList(), SCH_EDIT_FRAME::SchematicCleanUp(), CN_CONNECTIVITY_ALGO::searchConnections(), SCH_SHEET::SearchHierarchy(), SELECTION_TOOL::select(), SELECTION_TOOL::selectable(), SCH_SCREEN::SelectBlockItems(), PCB_EDIT