56 if(
m_frame->GetFindReplaceDialog() !=
nullptr
58 && aItem->
Matches( data, aSheet )
77 if(
LIB_SYMBOL* symbol = symbolEditor->GetCurSymbol() )
79 for(
SCH_ITEM& item : symbol->GetDrawItems() )
80 visit( &item,
nullptr );
86 visit( item, sheetPath );
99 visit( item, sheetPath );
106 if( !
m_frame->GetFindReplaceDialog() )
114 else if( selectedOnly )
129 m_frame->GetCanvas()->Refresh();
140 bool past_item = !aAfter;
141 std::vector<SCH_ITEM*> sorted_items;
146 sorted_items.push_back( item );
153 sorted_items.push_back( &field );
156 sorted_items.push_back(
pin );
163 sorted_items.push_back( &field );
166 sorted_items.push_back(
pin );
168 else if( item->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
173 sorted_items.push_back( &field );
180 addItem(
static_cast<SCH_ITEM*
>( item ) );
184 if(
LIB_SYMBOL* symbol = symbolEditor->GetCurSymbol() )
186 for(
SCH_ITEM& item : symbol->GetDrawItems() )
196 std::sort( sorted_items.begin(), sorted_items.end(),
199 if( a->GetPosition().x == b->GetPosition().x )
202 if( a->GetPosition().y == b->GetPosition().y )
203 return a->m_Uuid < b->m_Uuid;
205 return a->GetPosition().y < b->GetPosition().y;
212 std::reverse( sorted_items.begin(), sorted_items.end() );
214 for(
SCH_ITEM* item : sorted_items )
225 if( item->Matches( aData, aSheet ) )
237 bool searchAllSheets =
false;
238 bool selectedOnly =
false;
256 catch(
const std::bad_cast& )
267 afterSheet =
nullptr;
270 m_frame->ClearFindReplaceStatus();
273 if( afterSheet || !searchAllSheets )
276 if( !item && searchAllSheets )
280 SCH_SCREENS screens( editFrame->Schematic().Root() );
288 paths.push_back( sheet );
294 std::reverse( paths.begin(), paths.end() );
301 afterSheet =
nullptr;
306 item =
nextMatch( sheet.LastScreen(), &sheet,
nullptr, data, isReversed );
310 if( editFrame->Schematic().CurrentSheet() != sheet )
341 m_frame->GetCanvas()->Refresh();
348 msg =
_(
"Reached end of symbol." );
349 else if( searchAllSheets )
350 msg =
_(
"Reached end of schematic." );
352 msg =
_(
"Reached end of sheet." );
355 m_frame->ShowFindReplaceStatus( msg + wxS(
" " ) +
_(
"Find again to wrap around to the start." ), 4000 );
380 return match && match->
Matches( data, sheetPath );
403 if( item->
Replace( data, currentSheet ) )
408 commit.
Push( wxS(
"Find and Replace" ) );
422 bool currentSheetOnly =
true;
423 bool selectedOnly =
false;
437 catch(
const std::bad_cast& )
442 bool modified =
false;
450 wxCHECK_RET( aSheet, wxT(
"must have a sheetpath for undo" ) );
454 if( aItem->
Replace( aData, aSheet ) )
456 m_frame->UpdateItem( aItem,
false,
true );
461 if( currentSheetOnly || selectedOnly )
468 doReplace( item, currentSheet, data );
475 SCH_SHEET_LIST allSheets = schematicFrame->Schematic().Hierarchy();
476 SCH_SCREENS screens( schematicFrame->Schematic().Root() );
482 for(
unsigned ii = 0; ii < sheets.size(); ++ii )
490 doReplace( item, &sheets[0], data );
498 doReplace( field, &sheets[ii], data );
501 item =
nextMatch( screen, &sheets[ii], item, data,
false );
509 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()
void GetFields(std::vector< SCH_FIELD * > &aVector, bool aVisibleOnly) const override
Populate a std::vector with SCH_FIELDs, sorted in ordinal order.
std::vector< SCH_PIN * > GetPins(const SCH_SHEET_PATH *aSheet) const
Retrieve a list of the SCH_PINs for the given sheet path.
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".