41 m_toolMgr( aToolMgr ),
42 m_isLibEditor( false )
70 wxCHECK( aItem, *
this );
77 SCH_LABEL_LOCATE_ANY_T } ) )
104 Stage( item, aChangeType, aScreen );
168 for(
size_t ii = 1; ii <
m_changes.size(); ++ii )
183 bool itemsDeselected =
false;
184 bool selectedModified =
false;
185 bool dirtyConnectivity =
false;
193 std::vector<SCH_ITEM*> bulkAddedItems;
194 std::vector<SCH_ITEM*> bulkRemovedItems;
195 std::vector<SCH_ITEM*> itemsChanged;
199 int changeType = ent.m_type &
CHT_TYPE;
200 int changeFlags = ent.m_type &
CHT_FLAGS;
204 wxCHECK2( schItem && screen,
continue );
210 selectedModified =
true;
213 dirtyConnectivity =
true;
225 screen->
Append( schItem );
228 view->
Add( schItem );
234 bulkAddedItems.push_back( schItem );
249 itemsDeselected =
true;
254 static_cast<SCH_FIELD*
>( schItem )->SetVisible(
false );
260 screen->
Remove( schItem );
269 bulkRemovedItems.push_back( schItem );
278 ITEM_PICKER itemWrapper( screen, schItem, UNDO_REDO::CHANGED );
279 wxASSERT( ent.m_copy );
280 itemWrapper.
SetLink( ent.m_copy );
282 ent.m_copy =
nullptr;
288 itemsChanged.push_back( schItem );
294 ent.m_copy =
nullptr;
313 if( bulkAddedItems.size() > 0 )
316 if( bulkRemovedItems.size() > 0 )
319 if( itemsChanged.size() > 0 )
327 frame->
SaveCopyInUndoList( undoList, UNDO_REDO::UNSPECIFIED,
false, dirtyConnectivity );
334 if( itemsDeselected )
337 if( selectedModified )
387 return aItem->
Clone();
407 for(
size_t ii = 1; ii <
m_changes.size(); ++ii )
433 std::vector<SCH_ITEM*> bulkAddedItems;
434 std::vector<SCH_ITEM*> bulkRemovedItems;
435 std::vector<SCH_ITEM*> itemsChanged;
439 int changeType = ent.m_type &
CHT_TYPE;
440 int changeFlags = ent.m_type &
CHT_FLAGS;
445 wxCHECK2( item && screen,
continue );
460 bulkRemovedItems.push_back( item );
473 bulkAddedItems.push_back( item );
515 if( bulkAddedItems.size() > 0 )
518 if( bulkRemovedItems.size() > 0 )
521 if( itemsChanged.size() > 0 )
Handles how to draw a screen (a board, a schematic ...)
Represent a set of changes (additions, deletions or modifications) of a data model (e....
virtual COMMIT & Stage(EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN *aScreen=nullptr)
bool Empty() const
Returns status of an item.
std::vector< COMMIT_LINE > m_changes
bool IsType(FRAME_T aType) const
The base class for create windows for drawing purpose.
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.
KICAD_T Type() const
Returns the type of object.
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
virtual bool IsType(const std::vector< KICAD_T > &aScanTypes) const
Check whether the item is one of the listed types.
EDA_ITEM * GetParent() const
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
bool HasFlag(EDA_ITEM_FLAGS aFlag) const
virtual const wxString & GetText() const
Return the string associated with the text object.
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 UnselectedEvent
void SetLink(EDA_ITEM *aItem)
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
virtual void Remove(VIEW_ITEM *aItem)
Remove a VIEW_ITEM from the view.
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
The base class for drawable items used by schematic library symbols.
Define a library symbol object.
void RunOnChildren(const std::function< void(LIB_ITEM *)> &aFunction)
A holder to handle information on schematic or board items.
void PushItem(const ITEM_PICKER &aItem)
Push aItem to the top of the list.
void SetDescription(const wxString &aDescription)
Holds all the data relating to one schematic.
void OnItemsAdded(std::vector< SCH_ITEM * > &aNewItems)
Must be used if Add() is used using a BULK_x ADD_MODE to generate a change event for listeners.
void OnItemsRemoved(std::vector< SCH_ITEM * > &aRemovedItems)
Must be used if Remove() is used using a BULK_x REMOVE_MODE to generate a change event for listeners.
SCH_SHEET_LIST GetSheets() const override
Builds and returns an updated schematic hierarchy TODO: can this be cached?
void OnItemsChanged(std::vector< SCH_ITEM * > &aItems)
Notify the schematic and its listeners that an item on the schematic has been modified in some way.
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
virtual void Push(const wxString &aMessage=wxT("A commit"), int aCommitFlags=0) override
Revert the commit by restoring the modified items state.
COMMIT & Stage(EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN *aScreen=nullptr) override
virtual void Revert() override
SCH_COMMIT(TOOL_MANAGER *aToolMgr)
void pushLibEdit(const wxString &aMessage, int aCommitFlags)
EDA_ITEM * makeImage(EDA_ITEM *aItem) const override
EDA_ITEM * parentObject(EDA_ITEM *aItem) const override
void pushSchEdit(const wxString &aMessage, int aCommitFlags)
Schematic editor (Eeschema) main window.
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag and update other data struc...
void SaveCopyInUndoList(SCH_SCREEN *aScreen, SCH_ITEM *aItemToCopy, UNDO_REDO aTypeCommand, bool aAppend, bool aDirtyConnectivity=true)
Create a copy of the current schematic item, and put it in the undo list.
void RecalculateConnections(SCH_COMMIT *aCommit, SCH_CLEANUP_FLAGS aCleanupFlags)
Generate the connection data for the entire schematic hierarchy.
void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false) override
Mark an item for refresh.
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Base class for any item which can be embedded within the SCHEMATIC container class,...
SCHEMATIC * Schematic() const
Searches the item hierarchy to find a SCHEMATIC.
virtual void SwapData(SCH_ITEM *aItem)
Swap the internal data structures aItem with the schematic item.
void SetConnectivityDirty(bool aDirty=true)
void Append(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
bool Remove(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Remove aItem from the schematic associated with this screen.
void Update(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Update aItem's bounding box in the tree.
bool CheckIfOnDrawList(const SCH_ITEM *aItem) const
SCH_SHEET_PATH FindSheetForScreen(const SCH_SCREEN *aScreen)
Return the first SCH_SHEET_PATH object (not necessarily the only one) using a particular screen.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
void SetRef(const SCH_SHEET_PATH *aSheet, const wxString &aReference)
Set the reference for the given sheet path for this symbol.
The symbol library editor main window.
void SaveCopyInUndoList(const wxString &aDescription, EDA_ITEM *aItem, UNDO_REDO aUndoType=UNDO_REDO::LIBEDIT)
Create a copy of the current symbol, and save it in the undo list.
void SetCurSymbol(LIB_SYMBOL *aSymbol, bool aUpdateZoom)
Take ownership of aSymbol and notes that it is the one currently being edited.
LIB_SYMBOL * GetCurSymbol() const
Return the current symbol being edited or NULL if none selected.
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current symbol.
CHANGE_TYPE
Types of changes.
@ CHT_DONE
Flag to indicate the change is already applied.
#define SELECTED
Item was manually selected by the user.
#define SELECTED_BY_DRAG
Item was algorithmically selected as a dragged item.
#define EDA_ITEM_ALL_FLAGS
@ FRAME_SCH_SYMBOL_EDITOR
This file contains miscellaneous commonly used macros and functions.
#define SKIP_CONNECTIVITY
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".
UNDO_REDO
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...