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 )
130 m_frame->GetCanvas()->Refresh();
141 bool past_item = !aAfter;
142 std::vector<SCH_ITEM*> sorted_items;
147 sorted_items.push_back( item );
154 sorted_items.push_back( &field );
157 sorted_items.push_back(
pin );
164 sorted_items.push_back( &field );
167 sorted_items.push_back(
pin );
169 else if( item->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
174 sorted_items.push_back( &field );
181 addItem(
static_cast<SCH_ITEM*
>( item ) );
185 if(
LIB_SYMBOL* symbol = symbolEditor->GetCurSymbol() )
187 for(
SCH_ITEM& item : symbol->GetDrawItems() )
197 std::sort( sorted_items.begin(), sorted_items.end(),
200 if( a->GetPosition().x == b->GetPosition().x )
203 if( a->GetPosition().y == b->GetPosition().y )
204 return a->m_Uuid < b->m_Uuid;
206 return a->GetPosition().y < b->GetPosition().y;
213 std::reverse( sorted_items.begin(), sorted_items.end() );
215 for(
SCH_ITEM* item : sorted_items )
226 if( item->Matches( aData, aSheet ) )
238 bool searchAllSheets =
false;
239 bool selectedOnly =
false;
257 catch(
const std::bad_cast& )
279 bool wrappedAround =
false;
281 for(
int attempt = 0; attempt < 2; ++attempt )
290 afterSheet =
nullptr;
291 wrappedAround =
true;
296 if( afterSheet || !searchAllSheets || selectedOnly )
299 if( !item && searchAllSheets && !selectedOnly )
303 SCH_SCREENS screens( editFrame->Schematic().Root() );
311 paths.push_back( sheet );
317 std::reverse( paths.begin(), paths.end() );
321 if( afterSheet && !freshSession )
324 afterSheet =
nullptr;
329 item =
nextMatch( sheet.LastScreen(), &sheet,
nullptr, data, isReversed );
333 if( editFrame->Schematic().CurrentSheet() != sheet )
369 m_frame->GetCanvas()->Refresh();
376 msg =
_(
"Reached end of symbol." );
377 else if( searchAllSheets )
378 msg =
_(
"Reached end of schematic." );
380 msg =
_(
"Reached end of sheet." );
382 m_frame->ShowFindReplaceStatus( msg, 2000 );
389 m_frame->ShowFindReplaceStatus(
_(
"No matches found." ), 2000 );
413 return match && match->
Matches( data, sheetPath );
436 if( item->
Replace( data, currentSheet ) )
441 commit.
Push( wxS(
"Find and Replace" ) );
455 bool currentSheetOnly =
true;
456 bool selectedOnly =
false;
470 catch(
const std::bad_cast& )
482 wxCHECK_RET( aSheet, wxT(
"must have a sheetpath for undo" ) );
486 if( aItem->
Replace( aData, aSheet ) )
487 m_frame->UpdateItem( aItem,
false,
true );
490 if( currentSheetOnly || selectedOnly )
497 doReplace( item, currentSheet, data );
504 SCH_SHEET_LIST allSheets = schematicFrame->Schematic().Hierarchy();
505 SCH_SCREENS screens( schematicFrame->Schematic().Root() );
511 for(
unsigned ii = 0; ii < sheets.size(); ++ii )
519 doReplace( item, &sheets[0], data );
527 doReplace( field, &sheets[ii], data );
530 item =
nextMatch( screen, &sheets[ii], item, data,
false );
536 if( !commit.
Empty() )
538 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".