74    wxCHECK( aItem, *
this );
 
   81                Stage( member, aChangeType, aScreen, aRecurse );
 
 
  105        Stage( item, aChangeType, aScreen );
 
 
  121            view->Update( symbol );
 
  126                        view->Update( aChild );
 
  137                    frame->PushSymbolToUndoList( aMessage, 
copy );
 
 
  165    bool                itemsDeselected = 
false;
 
  166    bool                selectedModified = 
false;
 
  167    bool                dirtyConnectivity = 
false;
 
  168    bool                refreshHierarchy = 
false;
 
  177    std::vector<SCH_ITEM*> bulkAddedItems;
 
  178    std::vector<SCH_ITEM*> bulkRemovedItems;
 
  179    std::vector<SCH_ITEM*> itemsChanged;
 
  181    auto updateConnectivityFlag =
 
  184                if( schItem->IsConnectable() || ( schItem->Type() == 
SCH_RULE_AREA_T ) )
 
  186                    dirtyConnectivity = 
true;
 
  220        int       changeType = entry.m_type & 
CHT_TYPE;
 
  222        wxCHECK2( schItem, 
continue );
 
  230        int         changeType = entry.m_type & 
CHT_TYPE;
 
  231        int         changeFlags = entry.m_type & 
CHT_FLAGS;
 
  235        wxCHECK2( schItem, 
continue );
 
  236        wxCHECK2( screen, 
continue );
 
  243            selectedModified = 
true;
 
  248                    [&selectedModified]( 
SCH_ITEM* aChild )
 
  251                            selectedModified = 
true;
 
  263            updateConnectivityFlag( schItem );
 
  271                    screen->
Append( schItem );
 
  274                    view->
Add( schItem );
 
  280            bulkAddedItems.push_back( schItem );
 
  283                refreshHierarchy = 
true;
 
  290            updateConnectivityFlag( schItem );
 
  295                itemWrapper.
SetLink( entry.m_copy );
 
  296                entry.m_copy = 
nullptr;   
 
  305                itemsDeselected = 
true;
 
  310                static_cast<SCH_FIELD*
>( schItem )->SetVisible( 
false );
 
  315                group->RemoveItem( schItem );
 
  319                screen->
Remove( schItem );
 
  329                refreshHierarchy = 
true;
 
  331            bulkRemovedItems.push_back( schItem );
 
  346                updateConnectivityFlag( schItem );
 
  352                itemWrapper.
SetLink( entry.m_copy );
 
  353                entry.m_copy = 
nullptr;   
 
  361                wxCHECK2( modifiedSheet && originalSheet, 
continue );
 
  364                    refreshHierarchy = 
true;
 
  370            itemsChanged.push_back( schItem );
 
  381        entry.m_copy = 
nullptr;
 
  401        if( bulkAddedItems.size() > 0 )
 
  404        if( bulkRemovedItems.size() > 0 )
 
  407        if( itemsChanged.size() > 0 )
 
  410        if( refreshHierarchy )
 
  425            if( dirtyConnectivity )
 
  427                wxLogTrace( wxS( 
"CONN_PROFILE" ),
 
  428                            wxS( 
"SCH_COMMIT::pushSchEdit() %s clean up connectivity rebuild." ),
 
  429                            connectivityCleanUp == 
LOCAL_CLEANUP ? wxS( 
"local" ) : wxS( 
"global" ) );
 
  437    if( itemsDeselected )
 
  440    if( selectedModified )
 
 
  460        if( frame && frame->GetCanvas() )
 
  461            frame->GetCanvas()->Refresh();
 
 
  475    if( parent && parent->
IsType( { SCH_SYMBOL_T, SCH_TABLE_T, SCH_SHEET_T, SCH_LABEL_LOCATE_ANY_T } ) )
 
 
  488        std::vector<KIID>  selected;
 
  493            if( item.IsSelected() )
 
  494                selected.push_back( item.m_Uuid );
 
  509    return aItem->
Clone();
 
 
  553    std::vector<SCH_ITEM*> bulkAddedItems;
 
  554    std::vector<SCH_ITEM*> bulkRemovedItems;
 
  555    std::vector<SCH_ITEM*> itemsChanged;
 
  559        int         changeType = ent.m_type & 
CHT_TYPE;
 
  560        int         changeFlags = ent.m_type & 
CHT_FLAGS;
 
  565        wxCHECK2( item && screen, 
continue );
 
  580            bulkRemovedItems.push_back( item );
 
  593            bulkAddedItems.push_back( item );
 
  598            wxCHECK2( 
copy, 
break );
 
  670        if( bulkAddedItems.size() > 0 )
 
  673        if( bulkRemovedItems.size() > 0 )
 
  676        if( itemsChanged.size() > 0 )
 
 
Handles how to draw a screen (a board, a schematic ...)
 
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
 
std::vector< COMMIT_LINE > m_entries
 
void clear()
Should be called in Push() & Revert() methods.
 
virtual COMMIT & Stage(EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Add a change of the item aItem of type aChangeType to the change list.
 
Calculate the connectivity of a schematic and generates netlists.
 
void RemoveItem(SCH_ITEM *aItem)
 
bool IsType(FRAME_T aType) const
 
The base class for create windows for drawing purpose.
 
A set of EDA_ITEMs (i.e., without duplicates).
 
void AddItem(EDA_ITEM *aItem)
Add item to group.
 
virtual EDA_ITEM * AsEdaItem()=0
 
A base class for most all the KiCad significant classes used in schematics and boards.
 
virtual EDA_GROUP * GetParentGroup() const
 
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.
 
Define a library symbol object.
 
LIB_ITEMS_CONTAINER & GetDrawItems()
Return a reference to the draw item list.
 
void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode) override
 
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 Hierarchy() const
Return the full schematic flattened hierarchical sheet list.
 
CONNECTION_GRAPH * ConnectionGraph() const
 
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,...
 
COMMIT & Stage(EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE) override
Add a change of the item aItem of type aChangeType to the change list.
 
virtual void Push(const wxString &aMessage=wxT("A commit"), int aCommitFlags=0) override
Execute the changes.
 
EDA_ITEM * undoLevelItem(EDA_ITEM *aItem) const override
 
virtual void Revert() override
Revert the commit by restoring the modified items state.
 
SCH_COMMIT(TOOL_MANAGER *aToolMgr)
 
void pushLibEdit(const wxString &aMessage, int aCommitFlags)
 
EDA_ITEM * makeImage(EDA_ITEM *aItem) const override
 
void pushSchEdit(const wxString &aMessage, int aCommitFlags)
 
Schematic editor (Eeschema) main window.
 
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
 
void SaveCopyInUndoList(SCH_SCREEN *aScreen, SCH_ITEM *aItemToCopy, UNDO_REDO aTypeCommand, bool aAppend)
Create a copy of the current schematic item, and put it in the undo list.
 
SCH_SHEET_PATH & GetCurrentSheet() const
 
void RecalculateConnections(SCH_COMMIT *aCommit, SCH_CLEANUP_FLAGS aCleanupFlags, PROGRESS_REPORTER *aProgressReporter=nullptr)
Generate the connection data for the entire schematic hierarchy.
 
void UpdateHierarchyNavigator(bool aRefreshNetNavigator=true, bool aClear=false)
Update the hierarchy navigation tree and history.
 
void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false) override
Mark an item for refresh.
 
void UpdateHopOveredWires(SCH_ITEM *aItem)
 
A set of SCH_ITEMs (i.e., without duplicates).
 
Base class for any item which can be embedded within the SCHEMATIC container class,...
 
virtual void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode)
 
SCHEMATIC * Schematic() const
Search the item hierarchy to find a SCHEMATIC.
 
void SetConnectivityDirty(bool aDirty=true)
 
virtual bool HasConnectivityChanges(const SCH_ITEM *aItem, const SCH_SHEET_PATH *aInstance=nullptr) const
Check if aItem has connectivity changes against this object.
 
bool IsGroupableType() const
 
void SwapItemData(SCH_ITEM *aImage)
Swap data between aItem and aImage.
 
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
 
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
 
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
 
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
 
bool HasPageNumberChanges(const SCH_SHEET &aOther) const
Check if the instance data of this sheet has any changes compared to aOther.
 
void UpdatePins()
Updates the cache of SCH_PIN objects for each pin.
 
void SetRef(const SCH_SHEET_PATH *aSheet, const wxString &aReference)
Set the reference for the given sheet path for this symbol.
 
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.
 
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.
 
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
 
#define ENDPOINT
ends. (Used to support dragging.)
 
#define STARTPOINT
When a line is selected, these flags indicate which.
 
@ FRAME_SCH_SYMBOL_EDITOR
 
This file contains miscellaneous commonly used macros and functions.
 
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
 
Class to handle a set of SCH_ITEMs.
 
@ REFERENCE
Field Reference of part, i.e. "IC21".