52 if(
m_frame->GetFindReplaceDialog() !=
nullptr
54 && aItem->
Matches( data, aSheet )
73 if(
LIB_SYMBOL* symbol = symbolEditor->GetCurSymbol() )
75 for(
SCH_ITEM& item : symbol->GetDrawItems() )
76 visit( &item,
nullptr );
83 visit( item, sheetPath );
88 visit( aChild, sheetPath );
104 visit( item, sheetPath );
111 if( !
m_frame->GetFindReplaceDialog() )
119 else if( selectedOnly )
135 m_frame->GetCanvas()->Refresh();
146 bool past_item = !aAfter;
147 std::vector<SCH_ITEM*> sorted_items;
152 sorted_items.push_back( item );
159 sorted_items.push_back( &field );
162 sorted_items.push_back(
pin );
169 sorted_items.push_back( &field );
172 sorted_items.push_back(
pin );
174 else if( item->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
179 sorted_items.push_back( &field );
186 addItem(
static_cast<SCH_ITEM*
>( item ) );
190 if(
LIB_SYMBOL* symbol = symbolEditor->GetCurSymbol() )
192 for(
SCH_ITEM& item : symbol->GetDrawItems() )
202 std::sort( sorted_items.begin(), sorted_items.end(),
205 if( a->GetPosition().x == b->GetPosition().x )
208 if( a->GetPosition().y == b->GetPosition().y )
209 return a->m_Uuid < b->m_Uuid;
211 return a->GetPosition().y < b->GetPosition().y;
218 std::reverse( sorted_items.begin(), sorted_items.end() );
220 for(
SCH_ITEM* item : sorted_items )
231 if( item->Matches( aData, aSheet ) )
243 bool searchAllSheets =
false;
244 bool selectedOnly =
false;
262 catch(
const std::bad_cast& )
284 bool wrappedAround =
false;
286 for(
int attempt = 0; attempt < 2; ++attempt )
295 afterSheet =
nullptr;
296 wrappedAround =
true;
301 if( afterSheet || !searchAllSheets || selectedOnly )
304 if( !item && searchAllSheets && !selectedOnly )
308 SCH_SCREENS screens( editFrame->Schematic().Root() );
316 paths.push_back( sheet );
322 std::reverse( paths.begin(), paths.end() );
326 if( afterSheet && !freshSession )
329 afterSheet =
nullptr;
334 item =
nextMatch( sheet.LastScreen(), &sheet,
nullptr, data, isReversed );
338 if( editFrame->Schematic().CurrentSheet() != sheet )
374 m_frame->GetCanvas()->Refresh();
381 msg =
_(
"Reached end of symbol." );
382 else if( searchAllSheets )
383 msg =
_(
"Reached end of schematic." );
385 msg =
_(
"Reached end of sheet." );
387 m_frame->ShowFindReplaceStatus( msg, 2000 );
394 m_frame->ShowFindReplaceStatus(
_(
"No matches found." ), 2000 );
418 return match && match->
Matches( data, sheetPath );
441 if( item->
Replace( data, currentSheet ) )
446 commit.
Push( wxS(
"Find and Replace" ) );
460 bool currentSheetOnly =
true;
461 bool selectedOnly =
false;
475 catch(
const std::bad_cast& )
487 wxCHECK_RET( aSheet, wxT(
"must have a sheetpath for undo" ) );
491 if( aItem->
Replace( aData, aSheet ) )
492 m_frame->UpdateItem( aItem,
false,
true );
495 if( currentSheetOnly || selectedOnly )
504 doReplace( item, currentSheet, data );
512 SCH_SHEET_LIST allSheets = schematicFrame->Schematic().Hierarchy();
513 SCH_SCREENS screens( schematicFrame->Schematic().Root() );
519 for(
unsigned ii = 0; ii < sheets.size(); ++ii )
527 doReplace( item, &sheets[0], data );
535 doReplace( field, &sheets[ii], data );
538 item =
nextMatch( screen, &sheets[ii], item, data,
false );
544 if( !commit.
Empty() )
546 commit.
Push( wxS(
"Find and Replace All" ) );
static TOOL_ACTION replaceAll
static TOOL_ACTION updateFind
static TOOL_ACTION findPrevious
static TOOL_ACTION findAndReplace
static TOOL_ACTION replaceAndFindNext
static TOOL_ACTION findNext
static TOOL_ACTION findNextMarker
constexpr const Vec GetCenter() const
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
A base class for most all the KiCad significant classes used in schematics and boards.
virtual VECTOR2I GetPosition() const
virtual const BOX2I GetBoundingBox() const
Return the orthogonal bounding box of this object for display purposes.
KICAD_T Type() const
Returns the type of object.
void SetForceVisible(bool aEnable)
Set and clear force visible flag used to force the item to be drawn even if it's draw attribute is se...
virtual bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const
Compare the item against the search criteria in aSearchData.
bool IsBrightened() const
bool IsForceVisible() const
static bool Replace(const EDA_SEARCH_DATA &aSearchData, wxString &aText)
Perform a text replace on aText using the find and replace criteria in aSearchData on items that supp...
static const TOOL_EVENT ClearedEvent
static const TOOL_EVENT SelectedEvent
static const TOOL_EVENT SelectedItemsModified
Selected items were moved, this can be very high frequency on the canvas, use with care.
static const TOOL_EVENT PointSelectedEvent
static const TOOL_EVENT UnselectedEvent
void UpdateItems()
Iterate through the list of items that asked for updating and updates them.
Define a library symbol object.
static TOOL_ACTION changeSheet
virtual void Push(const wxString &aMessage=wxT("A commit"), int aCommitFlags=0) override
Execute the changes.
Schematic editor (Eeschema) main window.
Base class for any item which can be embedded within the SCHEMATIC container class,...
std::vector< SCH_FIELD > & GetFields()
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
void BuildClientSheetPathList()
Build the list of sheet paths sharing a screen for each screen in use.
EE_RTREE & Items()
Get the full RTree, usually for iterating.
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
void SortByPageNumbers(bool aUpdateVirtualPageNums=true)
Sort the list of sheets by page number.
SCH_SHEET_LIST FindAllSheetsForScreen(const SCH_SCREEN *aScreen) const
Return a SCH_SHEET_LIST with a copy of all the SCH_SHEET_PATH using a particular screen.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
size_t GetCurrentHash() const
void UpdateAllScreenReferences() const
Update all the symbol references for this sheet path.
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
std::vector< SCH_FIELD > & GetFields()
Return a reference to the vector holding the sheet's fields.
std::vector< SCH_SHEET_PIN * > & GetPins()
std::vector< const SCH_PIN * > GetPins(const SCH_SHEET_PATH *aSheet) const
Retrieve a list of the SCH_PINs for the given sheet path.
void GetFields(std::vector< SCH_FIELD * > &aVector, bool aVisibleOnly) const override
Populate a std::vector with SCH_FIELDs, sorted in ordinal order.
The symbol library editor main window.
@ FRAME_SCH_SYMBOL_EDITOR
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
bool searchCurrentSheetOnly
@ REFERENCE
Field Reference of part, i.e. "IC21".