KiCad PCB EDA Suite
SCH_FIND_COLLECTOR Class Reference

Class SCH_FIND_COLLECTOR is used to iterate over all of the items in a schematic or sheet and collect all the items that match the given search criteria. More...

#include <sch_collectors.h>

Inheritance diagram for SCH_FIND_COLLECTOR:
COLLECTOR

Public Member Functions

 SCH_FIND_COLLECTOR (const KICAD_T *aScanTypes=SCH_COLLECTOR::AllItems)
 Function dump is a helper to dump the items in the find list for debugging purposes. More...
 
void Empty ()
 
SCH_ITEMGetItem (int ndx) const
 
SCH_ITEMoperator[] (int ndx) const
 
void SetForceSearch (bool doSearch=true)
 
int GetLibHash () const
 
void SetLibHash (int aHash)
 
int GetFoundIndex () const
 
void SetFoundIndex (int aIndex)
 
bool PassedEnd () const
 Function PassedEnd tests if m_foundIndex is beyond the end of the list give the current find/replace criterial in m_findReplaceData. More...
 
void UpdateIndex ()
 Function UpdateIndex updates the list index according to the current find and replace criteria. More...
 
SCH_FIND_COLLECTOR_DATA GetFindData (int aIndex)
 Function GetFindData returns the data associated with the item found at aIndex. More...
 
bool IsSearchRequired (const SCH_FIND_REPLACE_DATA &aFindReplaceData)
 Function IsSearchRequired checks the current collector state against aFindReplaceData to see if a new search needs to be performed to update the collector. More...
 
wxString GetText ()
 Function GetText() More...
 
EDA_ITEMGetItem (SCH_FIND_COLLECTOR_DATA &aFindData)
 Function GetItem returns the item and associated data of the current index. More...
 
bool ReplaceItem (SCH_SHEET_PATH *aSheetPath=NULL)
 Function ReplaceItem performs a string replace of the item at the current index. More...
 
SEARCH_RESULT Inspect (EDA_ITEM *aItem, void *aTestData) override
 
void SetReplaceString (const wxString &aReplaceString)
 Update the replace string without changing anything else. More...
 
void Collect (SCH_FIND_REPLACE_DATA &aFindReplaceData, SCH_SHEET_PATH *aSheetPath=NULL)
 Function Collect scans aSheetPath using this class's Inspector method for items matching aFindReplaceData. More...
 
void IncrementIndex ()
 
bool IsValidIndex (int aIndex)
 Function IsValidIndex tests if aIndex is with the limits of the list of collected items. More...
 
int GetCount () const
 Function GetCount returns the number of objects in the list. More...
 
void Append (EDA_ITEM *item)
 Function Append adds an item to the end of the list. More...
 
void Remove (int aIndex)
 Function Remove removes the item at aIndex (first position is 0);. More...
 
void Remove (const EDA_ITEM *aItem)
 Function Remove removes the item aItem (if exists in the collector). More...
 
EDA_ITEM *const * BasePtr () const
 Function BasePtr returns the address of the first element in the array. More...
 
bool HasItem (const EDA_ITEM *aItem) const
 Function HasItem tests if aItem has already been collected. More...
 
void SetScanTypes (const KICAD_T *scanTypes)
 Function SetScanTypes records the list of KICAD_T types to consider for collection by the Inspect() function. More...
 
void SetTimeNow ()
 
time_t GetTime ()
 
void SetRefPos (const wxPoint &aRefPos)
 
const wxPointGetRefPos () const
 
void SetBoundingBox (const EDA_RECT &aRefBox)
 
const EDA_RECTGetBoundingBox () const
 
bool IsSimilarPointAndTime (const wxPoint &aRefPos)
 Function IsSimilarPointAndTime returns true if the given reference point is "similar" (defined here) to the internal reference point and the current time is within a few seconds of the internal m_TimeAtCollection. More...
 
int CountType (KICAD_T aType)
 Function CountType counts the number of items matching aType. More...
 

Protected Attributes

INSPECTOR_FUNC m_inspector
 a class common bridge into the polymorphic Inspect() More...
 
const KICAD_Tm_ScanTypes
 Which object types to scan. More...
 
std::vector< EDA_ITEM * > m_List
 A place to hold collected objects without taking ownership of their memory. More...
 
wxPoint m_RefPos
 A point to test against, and that was used to make the collection. More...
 
EDA_RECT m_RefBox
 A bounding box to test against, and that was used to make the collection. More...
 
time_t m_TimeAtCollection
 The time at which the collection was made. More...
 

Private Attributes

std::vector< SCH_FIND_COLLECTOR_DATAm_data
 Data associated with each found item. More...
 
SCH_FIND_REPLACE_DATA m_findReplaceData
 The criteria used to test for matching items. More...
 
SCH_SHEET_PATHm_currentSheetPath
 The path of the sheet currently being iterated over. More...
 
SCH_SHEET_PATHS m_sheetPaths
 The paths of the all the sheets in the collector. More...
 
int m_foundIndex
 The current found item list index. More...
 
bool m_forceSearch
 A flag to indicate that the schemtic has been modified and a new search must be performed even if the search criteria hasn't changed. More...
 
int m_lib_hash
 last known library change hash, used to detect library changes which should trigger cache obsolescence. More...
 

Detailed Description

Class SCH_FIND_COLLECTOR is used to iterate over all of the items in a schematic or sheet and collect all the items that match the given search criteria.

Definition at line 232 of file sch_collectors.h.

Constructor & Destructor Documentation

SCH_FIND_COLLECTOR::SCH_FIND_COLLECTOR ( const KICAD_T aScanTypes = SCH_COLLECTOR::AllItems)
inline

Function dump is a helper to dump the items in the find list for debugging purposes.

Constructor SCH_FIND_COLLECTOR

Definition at line 270 of file sch_collectors.h.

References COLLECTOR::SetScanTypes().

271  {
272  SetScanTypes( aScanTypes );
273  m_foundIndex = 0;
274  SetForceSearch( false );
275  m_currentSheetPath = NULL;
276  m_lib_hash = 0;
277  }
SCH_SHEET_PATH * m_currentSheetPath
The path of the sheet currently being iterated over.
void SetScanTypes(const KICAD_T *scanTypes)
Function SetScanTypes records the list of KICAD_T types to consider for collection by the Inspect() f...
Definition: collector.h:208
void SetForceSearch(bool doSearch=true)
int m_lib_hash
last known library change hash, used to detect library changes which should trigger cache obsolescenc...
int m_foundIndex
The current found item list index.

Member Function Documentation

void COLLECTOR::Append ( EDA_ITEM item)
inlineinherited

Function Append adds an item to the end of the list.

Parameters
itemAn EDA_ITEM* to add.

Definition at line 126 of file collector.h.

Referenced by GENERAL_COLLECTOR::Collect(), SELECTION_TOOL::guessSelectionCandidates(), GERBER_COLLECTOR::Inspect(), LIB_COLLECTOR::Inspect(), SCH_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), Inspect(), SCH_TYPE_COLLECTOR::Inspect(), PCB_TYPE_COLLECTOR::Inspect(), and PCB_LAYER_COLLECTOR::Inspect().

127  {
128  m_List.push_back( item );
129  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
EDA_ITEM* const* COLLECTOR::BasePtr ( ) const
inlineinherited

Function BasePtr returns the address of the first element in the array.

Only call this if there is at least one element in the vector m_List, otherwise a C++ exception should get thrown.

Definition at line 178 of file collector.h.

179  {
180  return &m_List[0];
181  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
void SCH_FIND_COLLECTOR::Collect ( SCH_FIND_REPLACE_DATA aFindReplaceData,
SCH_SHEET_PATH aSheetPath = NULL 
)

Function Collect scans aSheetPath using this class's Inspector method for items matching aFindReplaceData.

Parameters
aFindReplaceDataA SCH_FIND_REPLACE_DATA object containing the search criteria.
aSheetPathA pointer to a SCH_SHEET_PATH object to test for matches. A NULL value searches the entire schematic hierarchy.

Definition at line 565 of file sch_collectors.cpp.

References COLLECTOR::Empty(), g_RootSheet, EDA_ITEM::IterateForward(), SCH_SHEET_PATH::LastDrawList(), COLLECTOR::m_inspector, COLLECTOR::m_List, and COLLECTOR::m_ScanTypes.

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

567 {
568  if( !IsSearchRequired( aFindReplaceData ) && !m_List.empty() && !m_forceSearch )
569  return;
570 
571  m_findReplaceData = aFindReplaceData;
572  Empty(); // empty the collection just in case
573  m_data.clear();
574  m_foundIndex = 0;
575  m_sheetPaths.clear();
576  SetForceSearch( false );
577 
578  if( aSheetPath )
579  {
580  m_currentSheetPath = aSheetPath;
581  m_sheetPaths.push_back( *m_currentSheetPath );
583  }
584  else
585  {
586  SCH_SHEET_LIST schematic( g_RootSheet );
587 
588  for( unsigned i = 0; i < schematic.size(); i++ )
589  {
590  m_currentSheetPath = &schematic[i];
591  m_sheetPaths.push_back( *m_currentSheetPath );
593  }
594  }
595 
596 #if defined(DEBUG)
597  dump();
598 #endif
599 
600  if( m_List.size() != m_data.size() )
601  {
602  wxFAIL_MSG( wxT( "List size mismatch." ) );
603  m_List.clear();
604  m_data.clear();
605  }
606 }
SCH_ITEM * LastDrawList() const
Function LastDrawList.
Class SCH_SHEET_LIST.
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 req...
bool IsSearchRequired(const SCH_FIND_REPLACE_DATA &aFindReplaceData)
Function IsSearchRequired checks the current collector state against aFindReplaceData to see if a new...
SCH_SHEET_PATH * m_currentSheetPath
The path of the sheet currently being iterated over.
std::vector< SCH_FIND_COLLECTOR_DATA > m_data
Data associated with each found item.
INSPECTOR_FUNC m_inspector
a class common bridge into the polymorphic Inspect()
Definition: collector.h:60
SCH_SHEET_PATHS m_sheetPaths
The paths of the all the sheets in the collector.
void SetForceSearch(bool doSearch=true)
SCH_SHEET * g_RootSheet
Definition: eeschema.cpp:55
int m_foundIndex
The current found item list index.
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
const KICAD_T * m_ScanTypes
Which object types to scan.
Definition: collector.h:63
bool m_forceSearch
A flag to indicate that the schemtic has been modified and a new search must be performed even if the...
SCH_FIND_REPLACE_DATA m_findReplaceData
The criteria used to test for matching items.
int COLLECTOR::CountType ( KICAD_T  aType)
inlineinherited

Function CountType counts the number of items matching aType.

Parameters
aTypetype we are interested in
Returns
number of occurences

Definition at line 258 of file collector.h.

Referenced by SELECTION_TOOL::guessSelectionCandidates(), and ROUTER_TOOL::NeighboringSegmentFilter().

259  {
260  int cnt = 0;
261  for( size_t i = 0; i < m_List.size(); i++ )
262  {
263  if( m_List[i]->Type() == aType )
264  cnt++;
265  }
266  return cnt;
267  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
void SCH_FIND_COLLECTOR::Empty ( )
inline

Definition at line 279 of file sch_collectors.h.

References COLLECTOR::Empty(), and SCH_COLLECTOR::operator[]().

280  {
281  m_foundIndex = 0;
283  m_data.clear();
284  }
void Empty()
Function Empty sets the list to empty.
Definition: collector.h:116
std::vector< SCH_FIND_COLLECTOR_DATA > m_data
Data associated with each found item.
int m_foundIndex
The current found item list index.
const EDA_RECT& COLLECTOR::GetBoundingBox ( ) const
inlineinherited

Definition at line 227 of file collector.h.

References COLLECTOR::m_RefBox.

227 { return m_RefBox; }
EDA_RECT m_RefBox
A bounding box to test against, and that was used to make the collection.
Definition: collector.h:72
int COLLECTOR::GetCount ( ) const
inlineinherited
SCH_FIND_COLLECTOR_DATA SCH_FIND_COLLECTOR::GetFindData ( int  aIndex)

Function GetFindData returns the data associated with the item found at aIndex.

Parameters
aIndexThe list index of the data to return.
Returns
The associated found item data at aIndex if aIndex is within the list limits. Otherwise an empty data item will be returned.

Definition at line 466 of file sch_collectors.cpp.

467 {
468  wxCHECK_MSG( (unsigned) aIndex < m_data.size(), SCH_FIND_COLLECTOR_DATA(),
469  wxT( "Attempt to get find data outside of list boundary." ) );
470 
471  return m_data[ aIndex ];
472 }
Class SCH_FIND_COLLECTOR_DATA is used as a data container for the associated item found by the SCH_FI...
std::vector< SCH_FIND_COLLECTOR_DATA > m_data
Data associated with each found item.
int SCH_FIND_COLLECTOR::GetFoundIndex ( ) const
inline

Definition at line 294 of file sch_collectors.h.

294 { return m_foundIndex; }
int m_foundIndex
The current found item list index.
SCH_ITEM * SCH_FIND_COLLECTOR::GetItem ( int  ndx) const

Definition at line 369 of file sch_collectors.cpp.

References g_DeletedSchItem, COLLECTOR::GetCount(), COLLECTOR::m_List, and EDA_ITEM::Next().

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

370 {
371  if( (unsigned)ndx >= (unsigned)GetCount() )
372  return NULL;
373 
374  // Do not simply return m_List[ ndx ] as it might have been deleted. Instead
375  // treat it as a weak reference and search the sheets for an item with the same
376  // pointer value.
377 
378  void* weakRef = m_List[ ndx ];
379 
380  for( unsigned i = 0; i < m_sheetPaths.size(); i++ )
381  {
382  for( EDA_ITEM* item = m_sheetPaths[ i ].LastDrawList(); item; item = item->Next() )
383  {
384  if( (void*) item == weakRef )
385  return (SCH_ITEM*) item;
386  }
387  }
388 
389  return &g_DeletedSchItem;
390 }
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:107
DELETED_SCH_ITEM g_DeletedSchItem
SCH_SHEET_PATHS m_sheetPaths
The paths of the all the sheets in the collector.
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:180
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
EDA_ITEM * SCH_FIND_COLLECTOR::GetItem ( SCH_FIND_COLLECTOR_DATA aFindData)

Function GetItem returns the item and associated data of the current index.

Parameters
aFindDataA reference to a SCH_FIND_COLLECTOR_DATA object to place the associated data for the current item into if the current item index is valid.
Returns
A pointer to the current EDA_ITEM in the list if the list index is valid Otherwise NULL is returned and the aFindData object is not updated.

Definition at line 503 of file sch_collectors.cpp.

504 {
505  if( PassedEnd() )
506  return NULL;
507 
508  aData = m_data[ m_foundIndex ];
509  return GetItem( m_foundIndex );
510 }
SCH_ITEM * GetItem(int ndx) const
std::vector< SCH_FIND_COLLECTOR_DATA > m_data
Data associated with each found item.
int m_foundIndex
The current found item list index.
bool PassedEnd() const
Function PassedEnd tests if m_foundIndex is beyond the end of the list give the current find/replace ...
int SCH_FIND_COLLECTOR::GetLibHash ( ) const
inline

Definition at line 291 of file sch_collectors.h.

Referenced by SCH_EDIT_FRAME::IsSearchCacheObsolete().

291 { return m_lib_hash; }
int m_lib_hash
last known library change hash, used to detect library changes which should trigger cache obsolescenc...
const wxPoint& COLLECTOR::GetRefPos ( ) const
inlineinherited

Definition at line 224 of file collector.h.

References COLLECTOR::m_RefPos.

Referenced by PCB_EDIT_FRAME::OnRightClick().

224 { return m_RefPos; }
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:69
wxString SCH_FIND_COLLECTOR::GetText ( )

Function GetText()

Returns
A wxString object containing the description of the item found at the current index or a wxEmptyString if the list is empty or the index is invalid.

Definition at line 475 of file sch_collectors.cpp.

References GetChars(), COLLECTOR::GetCount(), SCH_FIND_COLLECTOR_DATA::GetParent(), EDA_ITEM::GetSelectMenuText(), SCH_FIND_COLLECTOR_DATA::GetSheetPath(), and COLLECTOR::IsValidIndex().

Referenced by SCH_EDIT_FRAME::updateFindReplaceView().

476 {
477  wxCHECK_MSG( (GetCount() != 0) && IsValidIndex( m_foundIndex ), wxEmptyString,
478  wxT( "Cannot get found item at invalid index." ) );
479 
481  EDA_ITEM* foundItem = GetItem( m_foundIndex );
482 
483  wxString msg;
484 
485  if( data.GetParent() )
486  {
487  msg.Printf( _( "Child item %s of parent item %s found in sheet %s" ),
488  GetChars( foundItem->GetSelectMenuText() ),
489  GetChars( data.GetParent()->GetSelectMenuText() ),
490  GetChars( data.GetSheetPath() ) );
491  }
492  else
493  {
494  msg.Printf( _( "Item %s found in sheet %s" ),
495  GetChars( foundItem->GetSelectMenuText() ),
496  GetChars( data.GetSheetPath() ) );
497  }
498 
499  return msg;
500 }
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:107
SCH_ITEM * GetItem(int ndx) const
bool IsValidIndex(int aIndex)
Function IsValidIndex tests if aIndex is with the limits of the list of collected items...
Definition: collector.h:98
wxString GetSheetPath() const
Class SCH_FIND_COLLECTOR_DATA is used as a data container for the associated item found by the SCH_FI...
std::vector< SCH_FIND_COLLECTOR_DATA > m_data
Data associated with each found item.
virtual wxString GetSelectMenuText() const
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
SCH_ITEM * GetParent() const
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
int m_foundIndex
The current found item list index.
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:180
time_t COLLECTOR::GetTime ( )
inlineinherited

Definition at line 218 of file collector.h.

References COLLECTOR::m_TimeAtCollection.

219  {
220  return m_TimeAtCollection;
221  }
time_t m_TimeAtCollection
The time at which the collection was made.
Definition: collector.h:75
bool COLLECTOR::HasItem ( const EDA_ITEM aItem) const
inlineinherited

Function HasItem tests if aItem has already been collected.

Parameters
aItemThe EDA_ITEM* to be tested.
Returns
True if aItem is already collected.

Definition at line 190 of file collector.h.

191  {
192  for( size_t i = 0; i < m_List.size(); i++ )
193  {
194  if( m_List[i] == aItem )
195  return true;
196  }
197 
198  return false;
199  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
void SCH_FIND_COLLECTOR::IncrementIndex ( )
inline

Definition at line 387 of file sch_collectors.h.

Referenced by SCH_EDIT_FRAME::OnFindReplace().

387 { m_foundIndex += 1; }
int m_foundIndex
The current found item list index.
SEARCH_RESULT SCH_FIND_COLLECTOR::Inspect ( EDA_ITEM aItem,
void *  aTestData 
)
overridevirtual

Implements COLLECTOR.

Definition at line 529 of file sch_collectors.cpp.

References COLLECTOR::Append(), SCH_COMPONENT::GetPosition(), SCH_COMPONENT::GetTransform(), LIB_PIN_T, EDA_ITEM::Matches(), SCH_COMPONENT_T, SEARCH_CONTINUE, TRANSFORM::TransformCoordinate(), EDA_ITEM::Type(), and wxPoint::y.

530 {
531  wxPoint position;
532 
533  if( aItem->Matches( m_findReplaceData, m_currentSheetPath, &position ) )
534  {
535  if( aItem->Type() == LIB_PIN_T )
536  {
537  wxCHECK_MSG( aTestData && ( (EDA_ITEM*) aTestData )->Type() == SCH_COMPONENT_T,
538  SEARCH_CONTINUE, wxT( "Cannot inspect invalid data. Bad programmer!" ) );
539 
540  // Pin positions are relative to their parent component's position and
541  // orientation in the schematic. The pin's position must be converted
542  // schematic coordinates.
543  SCH_COMPONENT* component = (SCH_COMPONENT*) aTestData;
544  TRANSFORM transform = component->GetTransform();
545  position.y = -position.y;
546  position = transform.TransformCoordinate( position ) + component->GetPosition();
547  }
548 
549  Append( aItem );
550  m_data.push_back( SCH_FIND_COLLECTOR_DATA( position,
552  (SCH_ITEM*) aTestData ) );
553  }
554 
555  return SEARCH_CONTINUE;
556 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:227
TRANSFORM & GetTransform() const
SCH_SHEET_PATH * m_currentSheetPath
The path of the sheet currently being iterated over.
virtual bool Matches(wxFindReplaceData &aSearchData, void *aAuxData, wxPoint *aFindLocation)
Function Matches compares the item against the search criteria in aSearchData.
Definition: base_struct.h:429
Class SCH_FIND_COLLECTOR_DATA is used as a data container for the associated item found by the SCH_FI...
std::vector< SCH_FIND_COLLECTOR_DATA > m_data
Data associated with each found item.
void Append(EDA_ITEM *item)
Function Append adds an item to the end of the list.
Definition: collector.h:126
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:41
Class for tranforming drawing coordinates for a wxDC device context.
Definition: transform.h:45
wxString PathHumanReadable() const
Function PathHumanReadable returns the sheet path in a human readable form, i.e.
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:69
wxPoint GetPosition() const override
Function GetPosition.
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:180
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
SCH_FIND_REPLACE_DATA m_findReplaceData
The criteria used to test for matching items.
bool SCH_FIND_COLLECTOR::IsSearchRequired ( const SCH_FIND_REPLACE_DATA aFindReplaceData)
inline

Function IsSearchRequired checks the current collector state against aFindReplaceData to see if a new search needs to be performed to update the collector.

Parameters
aFindReplaceDataA SCH_FIND_REPLACE_DATA object containing the search criteria to test for changes against the current search criteria.
Returns
True if aFindReplaceData would require a new search to be performaed or the force search flag is true. Otherwise, false is returned.

Definition at line 335 of file sch_collectors.h.

References SCH_FIND_REPLACE_DATA::ChangesCompare(), SCH_COLLECTOR::Collect(), GetText(), SCH_COLLECTOR::Inspect(), and SCH_FIND_REPLACE_DATA::IsWrapping().

Referenced by SCH_EDIT_FRAME::IsSearchCacheObsolete().

336  {
337  return m_findReplaceData.ChangesCompare( aFindReplaceData ) || m_forceSearch ||
338  (m_findReplaceData.IsWrapping() != aFindReplaceData.IsWrapping());
339  }
bool ChangesCompare(const SCH_FIND_REPLACE_DATA &aFindReplaceData)
Function ChangesCompare tests aFindReplaceData to see if it would result in a change in the search st...
bool m_forceSearch
A flag to indicate that the schemtic has been modified and a new search must be performed even if the...
SCH_FIND_REPLACE_DATA m_findReplaceData
The criteria used to test for matching items.
bool COLLECTOR::IsSimilarPointAndTime ( const wxPoint aRefPos)
inlineinherited

Function IsSimilarPointAndTime returns true if the given reference point is "similar" (defined here) to the internal reference point and the current time is within a few seconds of the internal m_TimeAtCollection.

Parameters
aRefPosA wxPoint to compare to.
Returns
bool - true if the point and time are similar, else false.

Definition at line 238 of file collector.h.

References abs, GetNewTimeStamp(), wxPoint::x, and wxPoint::y.

239  {
240  const int distMax = 2; // adjust these here
241  const time_t timeMax = 3; // seconds
242 
243  int dx = abs( aRefPos.x - m_RefPos.x );
244  int dy = abs( aRefPos.y - m_RefPos.y );
245 
246  if( dx <= distMax && dy <= distMax &&
247  (int)GetNewTimeStamp() - m_TimeAtCollection <= timeMax )
248  return true;
249  else
250  return false;
251  }
#define abs(a)
Definition: auxiliary.h:84
timestamp_t GetNewTimeStamp()
Definition: common.cpp:166
time_t m_TimeAtCollection
The time at which the collection was made.
Definition: collector.h:75
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:69
bool COLLECTOR::IsValidIndex ( int  aIndex)
inlineinherited

Function IsValidIndex tests if aIndex is with the limits of the list of collected items.

Parameters
aIndexThe index to test.
Returns
True if aIndex is with the limits of the list of collected items, otherwise false.

Definition at line 98 of file collector.h.

Referenced by GetText(), and ReplaceItem().

99  {
100  return ( (unsigned) aIndex < m_List.size() );
101  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
SCH_ITEM * SCH_FIND_COLLECTOR::operator[] ( int  ndx) const

Definition at line 393 of file sch_collectors.cpp.

394 {
395  return GetItem( ndx );
396 }
SCH_ITEM * GetItem(int ndx) const
bool SCH_FIND_COLLECTOR::PassedEnd ( ) const

Function PassedEnd tests if m_foundIndex is beyond the end of the list give the current find/replace criterial in m_findReplaceData.

Returns
True if m_foundIndex has crossed the end of the found item list.

Definition at line 399 of file sch_collectors.cpp.

References FR_SEARCH_REPLACE, FR_SEARCH_WRAP, GetChars(), COLLECTOR::GetCount(), GetText(), and traceFindReplace.

Referenced by SCH_EDIT_FRAME::OnFindReplace().

400 {
401  bool retv = false;
402 
403  wxUint32 flags = m_findReplaceData.GetFlags();
404 
405  if( GetCount() == 0 )
406  return true;
407 
408  if( !(flags & FR_SEARCH_WRAP) || (flags & FR_SEARCH_REPLACE) )
409  {
410  if( flags & wxFR_DOWN )
411  {
412  if( m_foundIndex >= GetCount() )
413  retv = true;
414  }
415  else
416  {
417  if( m_foundIndex < 0 )
418  retv = true;
419  }
420  }
421 
422  return retv;
423 }
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:107
Wrap around the beginning or end of search list.
int m_foundIndex
The current found item list index.
Perform a search for a item that has replaceable text.
SCH_FIND_REPLACE_DATA m_findReplaceData
The criteria used to test for matching items.
void COLLECTOR::Remove ( int  aIndex)
inlineinherited

Function Remove removes the item at aIndex (first position is 0);.

Parameters
aIndexThe index into the list.

Definition at line 136 of file collector.h.

Referenced by connectedItemFilter(), connectedTrackFilter(), EDIT_TOOL::FootprintFilter(), SELECTION_TOOL::guessSelectionCandidates(), ROUTER_TOOL::NeighboringSegmentFilter(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), GERBVIEW_SELECTION_TOOL::selectPoint(), and SELECTION_TOOL::selectPoint().

137  {
138  m_List.erase( m_List.begin() + aIndex );
139  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
void COLLECTOR::Remove ( const EDA_ITEM aItem)
inlineinherited

Function Remove removes the item aItem (if exists in the collector).

Parameters
aItemthe item to be removed.

Definition at line 146 of file collector.h.

147  {
148  for( size_t i = 0; i < m_List.size(); i++ )
149  {
150  if( m_List[i] == aItem )
151  {
152  m_List.erase( m_List.begin() + i);
153  return;
154  }
155  }
156  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:66
bool SCH_FIND_COLLECTOR::ReplaceItem ( SCH_SHEET_PATH aSheetPath = NULL)

Function ReplaceItem performs a string replace of the item at the current index.

Returns
True if the text replace occurred otherwise false.

Definition at line 513 of file sch_collectors.cpp.

References COLLECTOR::IsValidIndex(), and EDA_ITEM::Replace().

Referenced by SCH_EDIT_FRAME::OnFindReplace().

514 {
515  if( PassedEnd() )
516  return false;
517 
518  wxCHECK_MSG( IsValidIndex( m_foundIndex ), false,
519  wxT( "Invalid replace list index in SCH_FIND_COLLECTOR." ) );
520 
521  EDA_ITEM* item = GetItem( m_foundIndex );
522 
523  bool replaced = item->Replace( m_findReplaceData, aSheetPath );
524 
525  return replaced;
526 }
SCH_ITEM * GetItem(int ndx) const
bool IsValidIndex(int aIndex)
Function IsValidIndex tests if aIndex is with the limits of the list of collected items...
Definition: collector.h:98
bool Replace(wxFindReplaceData &aSearchData, wxString &aText)
Helper function used in search and replace dialog Function Replace performs a text replace on aText u...
int m_foundIndex
The current found item list index.
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:180
bool PassedEnd() const
Function PassedEnd tests if m_foundIndex is beyond the end of the list give the current find/replace ...
SCH_FIND_REPLACE_DATA m_findReplaceData
The criteria used to test for matching items.
void COLLECTOR::SetBoundingBox ( const EDA_RECT aRefBox)
inlineinherited

Definition at line 226 of file collector.h.

226 { m_RefBox = aRefBox; }
EDA_RECT m_RefBox
A bounding box to test against, and that was used to make the collection.
Definition: collector.h:72
void SCH_FIND_COLLECTOR::SetForceSearch ( bool  doSearch = true)
inline

Definition at line 289 of file sch_collectors.h.

Referenced by SCH_EDIT_FRAME::IsSearchCacheObsolete(), and SCH_EDIT_FRAME::OnFindReplace().

289 { m_forceSearch = doSearch; }
bool m_forceSearch
A flag to indicate that the schemtic has been modified and a new search must be performed even if the...
void SCH_FIND_COLLECTOR::SetFoundIndex ( int  aIndex)
inline

Definition at line 295 of file sch_collectors.h.

296  {
297  m_foundIndex = ( (unsigned) aIndex < m_data.size() ) ? aIndex : 0;
298  }
std::vector< SCH_FIND_COLLECTOR_DATA > m_data
Data associated with each found item.
int m_foundIndex
The current found item list index.
void SCH_FIND_COLLECTOR::SetLibHash ( int  aHash)
inline

Definition at line 292 of file sch_collectors.h.

Referenced by SCH_EDIT_FRAME::IsSearchCacheObsolete().

292 { m_lib_hash = aHash; }
int m_lib_hash
last known library change hash, used to detect library changes which should trigger cache obsolescenc...
void COLLECTOR::SetRefPos ( const wxPoint aRefPos)
inlineinherited

Definition at line 223 of file collector.h.

Referenced by GERBER_COLLECTOR::Collect(), LIB_COLLECTOR::Collect(), SCH_COLLECTOR::Collect(), and GENERAL_COLLECTOR::Collect().

223 { m_RefPos = aRefPos; }
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:69
void SCH_FIND_COLLECTOR::SetReplaceString ( const wxString &  aReplaceString)

Update the replace string without changing anything else.

Definition at line 559 of file sch_collectors.cpp.

Referenced by SCH_EDIT_FRAME::OnFindReplace().

560 {
561  m_findReplaceData.SetReplaceString( aReplaceString );
562 }
SCH_FIND_REPLACE_DATA m_findReplaceData
The criteria used to test for matching items.
void COLLECTOR::SetScanTypes ( const KICAD_T scanTypes)
inlineinherited

Function SetScanTypes records the list of KICAD_T types to consider for collection by the Inspect() function.

Parameters
scanTypesAn array of KICAD_T, terminated by EOT. No copy is is made of this array (so cannot come from caller's stack).

Definition at line 208 of file collector.h.

Referenced by GERBER_COLLECTOR::Collect(), LIB_COLLECTOR::Collect(), SCH_COLLECTOR::Collect(), GENERAL_COLLECTOR::Collect(), SCH_TYPE_COLLECTOR::Collect(), GERBER_COLLECTOR::GERBER_COLLECTOR(), SCH_COLLECTOR::SCH_COLLECTOR(), and SCH_FIND_COLLECTOR().

209  {
210  m_ScanTypes = scanTypes;
211  }
const KICAD_T * m_ScanTypes
Which object types to scan.
Definition: collector.h:63
void COLLECTOR::SetTimeNow ( )
inlineinherited

Definition at line 213 of file collector.h.

References GetNewTimeStamp().

Referenced by GERBER_COLLECTOR::Collect(), and GENERAL_COLLECTOR::Collect().

214  {
216  }
timestamp_t GetNewTimeStamp()
Definition: common.cpp:166
time_t m_TimeAtCollection
The time at which the collection was made.
Definition: collector.h:75
void SCH_FIND_COLLECTOR::UpdateIndex ( )

Function UpdateIndex updates the list index according to the current find and replace criteria.

Definition at line 445 of file sch_collectors.cpp.

References FR_SEARCH_WRAP, and COLLECTOR::GetCount().

Referenced by SCH_EDIT_FRAME::OnFindSchematicItem().

446 {
447  wxUint32 flags = m_findReplaceData.GetFlags();
448 
449  if( flags & wxFR_DOWN )
450  {
451  if( m_foundIndex < GetCount() )
452  m_foundIndex += 1;
453  if( (m_foundIndex >= GetCount()) && (flags & FR_SEARCH_WRAP) )
454  m_foundIndex = 0;
455  }
456  else
457  {
458  if( m_foundIndex >= 0 )
459  m_foundIndex -= 1;
460  if( (m_foundIndex < 0) && (flags & FR_SEARCH_WRAP) )
461  m_foundIndex = GetCount() - 1;
462  }
463 }
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:107
Wrap around the beginning or end of search list.
int m_foundIndex
The current found item list index.
SCH_FIND_REPLACE_DATA m_findReplaceData
The criteria used to test for matching items.

Member Data Documentation

SCH_SHEET_PATH* SCH_FIND_COLLECTOR::m_currentSheetPath
private

The path of the sheet currently being iterated over.

Definition at line 241 of file sch_collectors.h.

std::vector< SCH_FIND_COLLECTOR_DATA > SCH_FIND_COLLECTOR::m_data
private

Data associated with each found item.

Definition at line 235 of file sch_collectors.h.

SCH_FIND_REPLACE_DATA SCH_FIND_COLLECTOR::m_findReplaceData
private

The criteria used to test for matching items.

Definition at line 238 of file sch_collectors.h.

bool SCH_FIND_COLLECTOR::m_forceSearch
private

A flag to indicate that the schemtic has been modified and a new search must be performed even if the search criteria hasn't changed.

Definition at line 251 of file sch_collectors.h.

int SCH_FIND_COLLECTOR::m_foundIndex
private

The current found item list index.

Definition at line 247 of file sch_collectors.h.

int SCH_FIND_COLLECTOR::m_lib_hash
private

last known library change hash, used to detect library changes which should trigger cache obsolescence.

Definition at line 255 of file sch_collectors.h.

std::vector<EDA_ITEM*> COLLECTOR::m_List
protectedinherited
EDA_RECT COLLECTOR::m_RefBox
protectedinherited

A bounding box to test against, and that was used to make the collection.

Definition at line 72 of file collector.h.

Referenced by COLLECTOR::GetBoundingBox().

wxPoint COLLECTOR::m_RefPos
protectedinherited

A point to test against, and that was used to make the collection.

Definition at line 69 of file collector.h.

Referenced by COLLECTOR::GetRefPos(), GERBER_COLLECTOR::Inspect(), LIB_COLLECTOR::Inspect(), SCH_COLLECTOR::Inspect(), and GENERAL_COLLECTOR::Inspect().

const KICAD_T* COLLECTOR::m_ScanTypes
protectedinherited
SCH_SHEET_PATHS SCH_FIND_COLLECTOR::m_sheetPaths
private

The paths of the all the sheets in the collector.

Definition at line 244 of file sch_collectors.h.

time_t COLLECTOR::m_TimeAtCollection
protectedinherited

The time at which the collection was made.

Definition at line 75 of file collector.h.

Referenced by COLLECTOR::GetTime().


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