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 );
82 visit( item, sheetPath );
95 visit( item, sheetPath );
102 if( !
m_frame->GetFindReplaceDialog() )
110 else if( selectedOnly )
126 m_frame->GetCanvas()->Refresh();
137 bool past_item = !aAfter;
138 std::vector<SCH_ITEM*> sorted_items;
143 sorted_items.push_back( item );
150 sorted_items.push_back( &field );
153 sorted_items.push_back(
pin );
160 sorted_items.push_back( &field );
163 sorted_items.push_back(
pin );
165 else if( item->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
170 sorted_items.push_back( &field );
177 addItem(
static_cast<SCH_ITEM*
>( item ) );
181 if(
LIB_SYMBOL* symbol = symbolEditor->GetCurSymbol() )
183 for(
SCH_ITEM& item : symbol->GetDrawItems() )
193 std::sort( sorted_items.begin(), sorted_items.end(),
196 if( a->GetPosition().x == b->GetPosition().x )
199 if( a->GetPosition().y == b->GetPosition().y )
200 return a->m_Uuid < b->m_Uuid;
202 return a->GetPosition().y < b->GetPosition().y;
209 std::reverse( sorted_items.begin(), sorted_items.end() );
211 for(
SCH_ITEM* item : sorted_items )
222 if( item->Matches( aData, aSheet ) )
234 bool searchAllSheets =
false;
235 bool selectedOnly =
false;
253 catch(
const std::bad_cast& )
275 bool wrappedAround =
false;
277 for(
int attempt = 0; attempt < 2; ++attempt )
286 afterSheet =
nullptr;
287 wrappedAround =
true;
292 if( afterSheet || !searchAllSheets || selectedOnly )
295 if( !item && searchAllSheets && !selectedOnly )
299 SCH_SCREENS screens( editFrame->Schematic().Root() );
307 paths.push_back( sheet );
313 std::reverse( paths.begin(), paths.end() );
317 if( afterSheet && !freshSession )
320 afterSheet =
nullptr;
325 item =
nextMatch( sheet.LastScreen(), &sheet,
nullptr, data, isReversed );
329 if( editFrame->Schematic().CurrentSheet() != sheet )
365 m_frame->GetCanvas()->Refresh();
372 msg =
_(
"Reached end of symbol." );
373 else if( searchAllSheets )
374 msg =
_(
"Reached end of schematic." );
376 msg =
_(
"Reached end of sheet." );
378 m_frame->ShowFindReplaceStatus( msg, 2000 );
385 m_frame->ShowFindReplaceStatus(
_(
"No matches found." ), 2000 );
409 return match && match->
Matches( data, sheetPath );
432 if( item->
Replace( data, currentSheet ) )
437 commit.
Push( wxS(
"Find and Replace" ) );
451 bool currentSheetOnly =
true;
452 bool selectedOnly =
false;
466 catch(
const std::bad_cast& )
478 wxCHECK_RET( aSheet, wxT(
"must have a sheetpath for undo" ) );
482 if( aItem->
Replace( aData, aSheet ) )
483 m_frame->UpdateItem( aItem,
false,
true );
486 if( currentSheetOnly || selectedOnly )
495 doReplace( item, currentSheet, data );
503 SCH_SHEET_LIST allSheets = schematicFrame->Schematic().Hierarchy();
504 SCH_SCREENS screens( schematicFrame->Schematic().Root() );
510 for(
unsigned ii = 0; ii < sheets.size(); ++ii )
518 doReplace( item, &sheets[0], data );
526 doReplace( field, &sheets[ii], data );
529 item =
nextMatch( screen, &sheets[ii], item, data,
false );
535 if( !commit.
Empty() )
537 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".