bool SCH_FIND_COLLECTOR::ReplaceItem( SCH_SHEET_PATH* aSheetPath ) { if( PassedEnd() ) return false; wxCHECK_MSG( IsValidIndex( m_foundIndex ), false, wxT( "Invalid replace list index in SCH_FIND_COLLECTOR." ) ); EDA_ITEM* item = m_List[ m_foundIndex ]; bool replaced = item->Replace( m_findReplaceData, aSheetPath ); if( replaced ) SetForceSearch(); return replaced; }
void SCH_FIND_COLLECTOR::Collect( SCH_FIND_REPLACE_DATA& aFindReplaceData, SCH_SHEET_PATH* aSheetPath ) { if( !IsSearchRequired( aFindReplaceData ) && !m_List.empty() && !m_forceSearch ) return; m_findReplaceData = aFindReplaceData; Empty(); // empty the collection just in case m_data.clear(); m_foundIndex = 0; SetForceSearch( false ); if( aSheetPath ) { m_sheetPath = aSheetPath; EDA_ITEM::IterateForward( aSheetPath->LastDrawList(), this, NULL, m_ScanTypes ); } else { SCH_SHEET_LIST schematic; m_sheetPath = schematic.GetFirst(); while( m_sheetPath != NULL ) { EDA_ITEM::IterateForward( m_sheetPath->LastDrawList(), this, NULL, m_ScanTypes ); m_sheetPath = schematic.GetNext(); } } #if defined(DEBUG) dump(); #endif if( m_List.size() != m_data.size() ) { wxFAIL_MSG( wxT( "List size mismatch." ) ); m_List.clear(); m_data.clear(); } }