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 );
114 else if( selectedOnly )
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 );
173 sorted_items.push_back( &field );
179 for(
EDA_ITEM* item : m_selectionTool->GetSelection() )
180 addItem(
static_cast<SCH_ITEM*
>( item ) );
184 if(
LIB_SYMBOL* symbol = symbolEditor->GetCurSymbol() )
186 for(
SCH_ITEM& item : symbol->GetDrawItems() )
192 for(
SCH_ITEM* item : aScreen->Items() )
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;
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 )
348 msg =
_(
"Reached end of symbol." );
349 else if( searchAllSheets )
350 msg =
_(
"Reached end of schematic." );
352 msg =
_(
"Reached end of sheet." );
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 commit.
Modify( aItem, aSheet ? aSheet->LastScreen() :
nullptr, RECURSE_MODE::NO_RECURSE );
452 if( aItem->
Replace( aData, aSheet ) )
459 if( currentSheetOnly || selectedOnly )
466 doReplace( item, currentSheet, data );
473 SCH_SHEET_LIST allSheets = schematicFrame->Schematic().Hierarchy();
474 SCH_SCREENS screens( schematicFrame->Schematic().Root() );
480 for(
unsigned ii = 0; ii < sheets.size(); ++ii )
488 doReplace( item, &sheets[0], data );
495 if( field->
GetId() == FIELD_T::REFERENCE )
496 doReplace( field, &sheets[ii], data );
499 item =
nextMatch( screen, &sheets[ii], item, data,
false );
507 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.
FRAME_T GetFrameType() const
void FocusOnLocation(const VECTOR2I &aPos)
Useful to focus on a particular location, in find functions.
EDA_SEARCH_DATA & GetFindReplaceData()
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
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
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
DIALOG_SCH_FIND * GetFindReplaceDialog() const
void ShowFindReplaceDialog(bool aReplace)
Run the Find or Find & Replace dialog.
virtual void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false)
Mark an item for refresh.
void ShowFindReplaceStatus(const wxString &aMsg, int aStatusTime)
void ClearFindReplaceStatus()
virtual void Push(const wxString &aMessage=wxT("A commit"), int aCommitFlags=0) override
Execute the changes.
Schematic editor (Eeschema) main window.
SCH_SHEET_PATH & GetCurrentSheet() const
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