mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-21 09:41:41 +00:00
eeschema: move SwapData to SwapItemData/swapData paradigm
Used by BOARD_ITEM to support groups, which we are adding to the schematic. Also adds an unused group pointer for now.
This commit is contained in:
parent
79924b5dfd
commit
7cf699bc9d
eeschema
sch_bitmap.cppsch_bitmap.hsch_bus_entry.cppsch_bus_entry.hsch_commit.cppsch_field.cppsch_field.hsch_item.cppsch_item.hsch_junction.cppsch_junction.hsch_label.cppsch_label.hsch_line.cppsch_line.hsch_marker.cppsch_marker.hsch_no_connect.cppsch_no_connect.hsch_shape.cppsch_shape.hsch_sheet.cppsch_sheet.hsch_sheet_pin.cppsch_sheet_pin.hsch_symbol.cppsch_symbol.hsch_table.cppsch_table.hsch_tablecell.cppsch_tablecell.hsch_text.cppsch_text.hsch_textbox.cppsch_textbox.hschematic_undo_redo.cpp
@ -83,7 +83,7 @@ EDA_ITEM* SCH_BITMAP::Clone() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_BITMAP::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_BITMAP::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_ITEM::SwapFlags( aItem );
|
||||
|
||||
|
@ -69,8 +69,6 @@ public:
|
||||
|
||||
const BOX2I GetBoundingBox() const override;
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
/// @copydoc VIEW_ITEM::ViewGetLayers()
|
||||
virtual std::vector<int> ViewGetLayers() const override;
|
||||
|
||||
@ -116,6 +114,9 @@ public:
|
||||
void Show( int nestLevel, std::ostream& os ) const override;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
private:
|
||||
friend struct SCH_BITMAP_DESC;
|
||||
|
||||
|
@ -134,7 +134,7 @@ VECTOR2I SCH_BUS_ENTRY_BASE::GetEnd() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_BUS_ENTRY_BASE::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_BUS_ENTRY_BASE::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_ITEM::SwapFlags( aItem );
|
||||
|
||||
|
@ -93,7 +93,7 @@ public:
|
||||
COLOR4D GetBusEntryColor() const;
|
||||
void SetBusEntryColor( const COLOR4D& aColor );
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
std::vector<int> ViewGetLayers() const override;
|
||||
|
||||
|
@ -575,7 +575,7 @@ void SCH_COMMIT::Revert()
|
||||
|
||||
bool unselect = !item->IsSelected();
|
||||
|
||||
item->SwapData( copy );
|
||||
item->SwapItemData( copy );
|
||||
|
||||
if( unselect )
|
||||
{
|
||||
|
@ -404,7 +404,7 @@ void SCH_FIELD::ImportValues( const SCH_FIELD& aSource )
|
||||
}
|
||||
|
||||
|
||||
void SCH_FIELD::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_FIELD::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
wxCHECK_RET( aItem && aItem->Type() == SCH_FIELD_T, wxT( "Cannot swap with invalid item." ) );
|
||||
|
||||
|
@ -219,7 +219,7 @@ public:
|
||||
bool CanAutoplace() const { return m_allowAutoPlace; }
|
||||
void SetCanAutoplace( bool aCanPlace ) { m_allowAutoPlace = aCanPlace; }
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
int GetPenWidth() const override;
|
||||
|
||||
|
@ -78,7 +78,8 @@ SCH_ITEM::SCH_ITEM( EDA_ITEM* aParent, KICAD_T aType, int aUnit, int aBodyStyle
|
||||
EDA_ITEM( aParent, aType, true, false ),
|
||||
m_unit( aUnit ),
|
||||
m_bodyStyle( aBodyStyle ),
|
||||
m_private( false )
|
||||
m_private( false ),
|
||||
m_group( nullptr )
|
||||
{
|
||||
m_layer = LAYER_WIRE; // It's only a default, in fact
|
||||
m_fieldsAutoplaced = AUTOPLACE_NONE;
|
||||
@ -94,6 +95,7 @@ SCH_ITEM::SCH_ITEM( const SCH_ITEM& aItem ) :
|
||||
m_bodyStyle = aItem.m_bodyStyle;
|
||||
m_private = aItem.m_private;
|
||||
m_fieldsAutoplaced = aItem.m_fieldsAutoplaced;
|
||||
m_group = aItem.m_group;
|
||||
m_connectivity_dirty = aItem.m_connectivity_dirty;
|
||||
}
|
||||
|
||||
@ -105,6 +107,7 @@ SCH_ITEM& SCH_ITEM::operator=( const SCH_ITEM& aItem )
|
||||
m_bodyStyle = aItem.m_bodyStyle;
|
||||
m_private = aItem.m_private;
|
||||
m_fieldsAutoplaced = aItem.m_fieldsAutoplaced;
|
||||
m_group = aItem.m_group;
|
||||
m_connectivity_dirty = aItem.m_connectivity_dirty;
|
||||
|
||||
return *this;
|
||||
@ -113,6 +116,8 @@ SCH_ITEM& SCH_ITEM::operator=( const SCH_ITEM& aItem )
|
||||
|
||||
SCH_ITEM::~SCH_ITEM()
|
||||
{
|
||||
wxASSERT( m_group == nullptr );
|
||||
|
||||
for( const auto& it : m_connection_map )
|
||||
delete it.second;
|
||||
|
||||
@ -343,12 +348,30 @@ const wxString& SCH_ITEM::GetCachedDriverName() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_ITEM::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_ITEM::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
UNIMPLEMENTED_FOR( GetClass() );
|
||||
}
|
||||
|
||||
|
||||
void SCH_ITEM::SwapItemData( SCH_ITEM* aImage )
|
||||
{
|
||||
if( aImage == nullptr )
|
||||
return;
|
||||
|
||||
EDA_ITEM* parent = GetParent();
|
||||
SCH_GROUP* group = GetParentGroup();
|
||||
|
||||
SetParentGroup( nullptr );
|
||||
aImage->SetParentGroup( nullptr );
|
||||
swapData( aImage );
|
||||
|
||||
// Restore pointers to be sure they are not broken
|
||||
SetParent( parent );
|
||||
SetParentGroup( group );
|
||||
}
|
||||
|
||||
|
||||
void SCH_ITEM::SwapFlags( SCH_ITEM* aItem )
|
||||
{
|
||||
EDA_ITEM_FLAGS editFlags = GetEditFlags();
|
||||
|
@ -40,6 +40,7 @@
|
||||
|
||||
class CONNECTION_GRAPH;
|
||||
class SCH_CONNECTION;
|
||||
class SCH_GROUP;
|
||||
class SCH_SHEET_PATH;
|
||||
class SCHEMATIC;
|
||||
class SYMBOL;
|
||||
@ -174,6 +175,9 @@ public:
|
||||
|
||||
virtual ~SCH_ITEM();
|
||||
|
||||
void SetParentGroup( SCH_GROUP* aGroup ) { m_group = aGroup; }
|
||||
SCH_GROUP* GetParentGroup() const { return m_group; }
|
||||
|
||||
wxString GetClass() const override
|
||||
{
|
||||
return wxT( "SCH_ITEM" );
|
||||
@ -203,13 +207,16 @@ public:
|
||||
}
|
||||
|
||||
/**
|
||||
* Swap the internal data structures \a aItem with the schematic item.
|
||||
* Swap data between \a aItem and \a aImage.
|
||||
*
|
||||
* Obviously, aItem must have the same type than me.
|
||||
* \a aItem and \a aImage should have the same type.
|
||||
*
|
||||
* @param aItem The item to swap the data structures with.
|
||||
* Used in undo and redo commands to swap values between an item and its copy.
|
||||
* Only values like layer, size .. which are modified by editing are swapped.
|
||||
*
|
||||
* @param aImage the item image which contains data to swap.
|
||||
*/
|
||||
virtual void SwapData( SCH_ITEM* aItem );
|
||||
void SwapItemData( SCH_ITEM* aImage );
|
||||
|
||||
/**
|
||||
* Swap the non-temp and non-edit flags.
|
||||
@ -638,6 +645,15 @@ public:
|
||||
virtual bool operator<( const SCH_ITEM& aItem ) const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Swap the internal data structures \a aItem with the schematic item.
|
||||
*
|
||||
* Obviously, aItem must have the same type than me.
|
||||
*
|
||||
* @param aItem The item to swap the data structures with.
|
||||
*/
|
||||
virtual void swapData( SCH_ITEM* aItem );
|
||||
|
||||
SCH_RENDER_SETTINGS* getRenderSettings( PLOTTER* aPlotter ) const
|
||||
{
|
||||
return static_cast<SCH_RENDER_SETTINGS*>( aPlotter->RenderSettings() );
|
||||
@ -698,6 +714,7 @@ protected:
|
||||
AUTOPLACE_ALGO m_fieldsAutoplaced; // indicates status of field autoplacement
|
||||
VECTOR2I m_storedPos; // temp variable used in some move commands to store
|
||||
// an initial position of the item or mouse cursor
|
||||
SCH_GROUP* m_group; // The group this item belongs to
|
||||
|
||||
/// Store pointers to other items that are connected to this one, per sheet.
|
||||
std::map<SCH_SHEET_PATH, SCH_ITEM_VEC, SHEET_PATH_CMP> m_connected_items;
|
||||
|
@ -58,7 +58,7 @@ EDA_ITEM* SCH_JUNCTION::Clone() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_JUNCTION::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_JUNCTION::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_ITEM::SwapFlags( aItem );
|
||||
|
||||
|
@ -52,7 +52,7 @@ public:
|
||||
return wxT( "SCH_JUNCTION" );
|
||||
}
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
void SetLastResolvedState( const SCH_ITEM* aItem ) override
|
||||
{
|
||||
|
@ -266,9 +266,9 @@ bool SCH_LABEL_BASE::IsType( const std::vector<KICAD_T>& aScanTypes ) const
|
||||
}
|
||||
|
||||
|
||||
void SCH_LABEL_BASE::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_LABEL_BASE::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_TEXT::SwapData( aItem );
|
||||
SCH_TEXT::swapData( aItem );
|
||||
|
||||
SCH_LABEL_BASE* label = static_cast<SCH_LABEL_BASE*>( aItem );
|
||||
|
||||
@ -1510,9 +1510,9 @@ SCH_DIRECTIVE_LABEL::SCH_DIRECTIVE_LABEL( const VECTOR2I& pos ) :
|
||||
}
|
||||
|
||||
|
||||
void SCH_DIRECTIVE_LABEL::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_DIRECTIVE_LABEL::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_LABEL_BASE::SwapData( aItem );
|
||||
SCH_LABEL_BASE::swapData( aItem );
|
||||
|
||||
SCH_DIRECTIVE_LABEL* label = static_cast<SCH_DIRECTIVE_LABEL*>( aItem );
|
||||
|
||||
|
@ -145,8 +145,6 @@ public:
|
||||
|
||||
bool IsType( const std::vector<KICAD_T>& aScanTypes ) const override;
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
bool CanConnect( const SCH_ITEM* aItem ) const override
|
||||
{
|
||||
switch( aItem->Type() )
|
||||
@ -361,6 +359,8 @@ public:
|
||||
bool operator==( const SCH_ITEM& aItem ) const override;
|
||||
|
||||
protected:
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
void cacheShownText() override;
|
||||
|
||||
protected:
|
||||
@ -457,7 +457,7 @@ public:
|
||||
return new SCH_DIRECTIVE_LABEL( *this );
|
||||
}
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
FLAG_SHAPE GetFlagShape() const { return (FLAG_SHAPE) m_shape; }
|
||||
void SetFlagShape( FLAG_SHAPE aShape ) { m_shape = (LABEL_FLAG_SHAPE) aShape; }
|
||||
|
@ -796,7 +796,7 @@ bool SCH_LINE::HitTest( const BOX2I& aRect, bool aContained, int aAccuracy ) con
|
||||
}
|
||||
|
||||
|
||||
void SCH_LINE::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_LINE::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_ITEM::SwapFlags( aItem );
|
||||
|
||||
|
@ -307,8 +307,6 @@ public:
|
||||
|
||||
EDA_ITEM* Clone() const override;
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
|
||||
|
||||
const wxString& GetOperatingPoint() const { return m_operatingPoint; }
|
||||
@ -343,6 +341,9 @@ public:
|
||||
|
||||
bool operator==( const SCH_ITEM& aOther ) const override;
|
||||
|
||||
protected:
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
private:
|
||||
bool doIsConnected( const VECTOR2I& aPosition ) const override;
|
||||
|
||||
|
@ -68,7 +68,7 @@ EDA_ITEM* SCH_MARKER::Clone() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_MARKER::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_MARKER::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_ITEM::SwapFlags( aItem );
|
||||
|
||||
|
@ -51,8 +51,6 @@ public:
|
||||
|
||||
const KIID GetUUID() const override { return m_Uuid; }
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
wxString SerializeToString() const;
|
||||
static SCH_MARKER* DeserializeFromString( const SCH_SHEET_LIST& aSheetList,
|
||||
const wxString& data );
|
||||
@ -137,6 +135,8 @@ public:
|
||||
#endif
|
||||
|
||||
protected:
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
KIGFX::COLOR4D getColor() const override;
|
||||
|
||||
bool m_isLegacyMarker; ///< True if marker was deserialized from a file version < 20230121.
|
||||
|
@ -55,7 +55,7 @@ EDA_ITEM* SCH_NO_CONNECT::Clone() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_NO_CONNECT::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_NO_CONNECT::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_ITEM::SwapFlags( aItem );
|
||||
|
||||
|
@ -61,8 +61,6 @@ public:
|
||||
|
||||
int GetPenWidth() const override;
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
std::vector<int> ViewGetLayers() const override;
|
||||
|
||||
void GetEndPoints( std::vector< DANGLING_END_ITEM >& aItemList ) override;
|
||||
@ -119,6 +117,9 @@ public:
|
||||
void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
|
||||
#endif
|
||||
|
||||
protected:
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
private:
|
||||
bool doIsConnected( const VECTOR2I& aPosition ) const override;
|
||||
|
||||
|
@ -49,7 +49,7 @@ EDA_ITEM* SCH_SHAPE::Clone() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_SHAPE::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_SHAPE::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_ITEM::SwapFlags( aItem );
|
||||
|
||||
|
@ -45,8 +45,6 @@ public:
|
||||
return wxT( "SCH_SHAPE" );
|
||||
}
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
|
||||
bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
|
||||
|
||||
@ -134,6 +132,8 @@ public:
|
||||
#endif
|
||||
|
||||
protected:
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
void setFilled( bool aFlag ) override
|
||||
{
|
||||
m_fill = aFlag ? FILL_T::FILLED_WITH_COLOR : FILL_T::NO_FILL;
|
||||
|
@ -325,7 +325,7 @@ bool SCH_SHEET::ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token, in
|
||||
}
|
||||
|
||||
|
||||
void SCH_SHEET::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_SHEET::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_ITEM::SwapFlags( aItem );
|
||||
|
||||
|
@ -270,7 +270,7 @@ public:
|
||||
*/
|
||||
VECTOR2I GetRotationCenter() const;
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
/**
|
||||
* Count our own symbols, without the power symbols.
|
||||
|
@ -65,9 +65,9 @@ EDA_ITEM* SCH_SHEET_PIN::Clone() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_SHEET_PIN::SwapData( SCH_ITEM* aItem )
|
||||
void SCH_SHEET_PIN::swapData( SCH_ITEM* aItem )
|
||||
{
|
||||
SCH_HIERLABEL::SwapData( aItem );
|
||||
SCH_HIERLABEL::swapData( aItem );
|
||||
|
||||
wxCHECK_RET( aItem->Type() == SCH_SHEET_PIN_T,
|
||||
wxString::Format( "SCH_SHEET_PIN object cannot swap data with %s object.",
|
||||
|
@ -114,8 +114,6 @@ public:
|
||||
void CreateGraphicShape( const RENDER_SETTINGS* aSettings, std::vector<VECTOR2I>& aPoints,
|
||||
const VECTOR2I& aPos ) const override;
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
int GetPenWidth() const override;
|
||||
|
||||
/**
|
||||
@ -206,6 +204,9 @@ public:
|
||||
|
||||
bool operator==( const SCH_ITEM& aOther ) const override;
|
||||
|
||||
protected:
|
||||
void swapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
private:
|
||||
int m_number; ///< Label number use for saving sheet label to file.
|
||||
///< Sheet label numbering begins at 2.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user