From 4dc877d0e923e561ffcb2f8b3ad33d7a4af0ea3b Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sun, 8 Nov 2020 21:29:04 +0000 Subject: [PATCH] Module -> Footprint. --- cvpcb/display_footprints_frame.cpp | 4 +- include/pcb_base_frame.h | 11 ++- pcbnew/array_creator.cpp | 2 +- pcbnew/board_commit.cpp | 28 +++--- pcbnew/board_commit.h | 6 +- pcbnew/class_board.h | 5 +- .../convert_drawsegment_list_to_polygon.cpp | 20 ++--- pcbnew/dialogs/dialog_cleanup_graphics.cpp | 9 +- pcbnew/dialogs/dialog_cleanup_graphics.h | 9 +- pcbnew/footprint_edit_frame.cpp | 67 ++++++++------- pcbnew/footprint_edit_frame.h | 4 +- pcbnew/footprint_editor_utils.cpp | 60 ++++++------- pcbnew/footprint_libraries_utils.cpp | 78 ++++++++--------- pcbnew/footprint_viewer_frame.cpp | 8 +- pcbnew/footprint_wizard_frame.cpp | 4 +- pcbnew/fp_tree_synchronizing_adapter.cpp | 2 +- pcbnew/import_gfx/dialog_import_gfx.cpp | 2 +- pcbnew/load_select_footprint.cpp | 2 +- pcbnew/microwave/microwave_footprint.cpp | 18 ++-- pcbnew/microwave/microwave_inductor.cpp | 44 +++++----- pcbnew/tools/convert_tool.cpp | 2 +- pcbnew/tools/drawing_tool.cpp | 2 +- pcbnew/tools/edit_tool.cpp | 23 ++--- pcbnew/tools/footprint_editor_tools.cpp | 63 ++++++++------ pcbnew/tools/footprint_editor_tools.h | 2 +- pcbnew/tools/global_edit_tool.cpp | 31 ++++--- pcbnew/tools/global_edit_tool.h | 2 +- pcbnew/tools/group_tool.cpp | 14 +-- pcbnew/tools/pad_tool.cpp | 14 +-- pcbnew/tools/pcb_tool_base.h | 2 +- pcbnew/tools/pcb_viewer_tools.h | 2 +- pcbnew/tools/pcbnew_control.cpp | 86 ++++++++++--------- 32 files changed, 318 insertions(+), 308 deletions(-) diff --git a/cvpcb/display_footprints_frame.cpp b/cvpcb/display_footprints_frame.cpp index a8560aa41a..8f4b401f26 100644 --- a/cvpcb/display_footprints_frame.cpp +++ b/cvpcb/display_footprints_frame.cpp @@ -500,7 +500,7 @@ void DISPLAY_FOOTPRINTS_FRAME::updateView() void DISPLAY_FOOTPRINTS_FRAME::UpdateMsgPanel() { - MODULE* footprint = GetBoard()->GetFirstModule(); + MODULE* footprint = GetBoard()->GetFirstFootprint(); MSG_PANEL_ITEMS items; if( footprint ) @@ -523,7 +523,7 @@ COLOR_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetColorSettings() BOARD_ITEM_CONTAINER* DISPLAY_FOOTPRINTS_FRAME::GetModel() const { - return GetBoard()->GetFirstModule(); + return GetBoard()->GetFirstFootprint(); } diff --git a/include/pcb_base_frame.h b/include/pcb_base_frame.h index 1987413c5c..6d65b9aa81 100644 --- a/include/pcb_base_frame.h +++ b/include/pcb_base_frame.h @@ -289,17 +289,16 @@ public: // footprints (footprints) /** - * Function CreateNewModule - * Creates a new module or footprint, at position 0,0 - * The new module contains only 2 texts: a reference and a value: + * Function CreateNewFootprint + * Creates a new footprint, at position 0,0 + * The new footprint contains only 2 texts: a reference and a value: * Reference = REF** * Value = "VAL**" or Footprint name in lib * Note: they are dummy texts, which will be replaced by the actual texts * when the fooprint is placed on a board and a netlist is read - * @param aModuleName = name of the new footprint in library - * @return a reference to the new module + * @param aFootprintName = name of the new footprint in library */ - MODULE* CreateNewModule( const wxString& aModuleName ); + MODULE* CreateNewFootprint( const wxString& aFootprintName ); /** * Function PlaceModule diff --git a/pcbnew/array_creator.cpp b/pcbnew/array_creator.cpp index e27f2a1e8f..6bfc40fd2c 100644 --- a/pcbnew/array_creator.cpp +++ b/pcbnew/array_creator.cpp @@ -52,7 +52,7 @@ void ARRAY_CREATOR::Invoke() if( m_selection.Size() == 0 ) return; - MODULE* const module = m_editModules ? m_parent.GetBoard()->GetFirstModule() : nullptr; + MODULE* const module = m_editModules ? m_parent.GetBoard()->GetFirstFootprint() : nullptr; const bool enableArrayNumbering = m_editModules; const wxPoint rotPoint = (wxPoint) m_selection.GetCenter(); diff --git a/pcbnew/board_commit.cpp b/pcbnew/board_commit.cpp index 80a5b903fd..59f753027d 100644 --- a/pcbnew/board_commit.cpp +++ b/pcbnew/board_commit.cpp @@ -41,14 +41,14 @@ using namespace std::placeholders; BOARD_COMMIT::BOARD_COMMIT( PCB_TOOL_BASE* aTool ) { m_toolMgr = aTool->GetManager(); - m_editModules = aTool->IsFootprintEditor(); + m_isFootprintEditor = aTool->IsFootprintEditor(); } BOARD_COMMIT::BOARD_COMMIT( EDA_DRAW_FRAME* aFrame ) { m_toolMgr = aFrame->GetToolManager(); - m_editModules = aFrame->IsType( FRAME_FOOTPRINT_EDITOR ); + m_isFootprintEditor = aFrame->IsType( FRAME_FOOTPRINT_EDITOR ); } @@ -103,7 +103,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a BOARD_ITEM* boardItem = static_cast( ent.m_item ); // Module items need to be saved in the undo buffer before modification - if( m_editModules ) + if( m_isFootprintEditor ) { // Be sure that we are storing a module if( ent.m_item->Type() != PCB_MODULE_T ) @@ -138,7 +138,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a { case CHT_ADD: { - if( m_editModules ) + if( m_isFootprintEditor ) { // footprints inside footprints are not supported yet wxASSERT( boardItem->Type() != PCB_MODULE_T ); @@ -172,7 +172,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a case CHT_REMOVE: { - if( !m_editModules && aCreateUndoEntry ) + if( !m_isFootprintEditor && aCreateUndoEntry ) undoList.PushItem( ITEM_PICKER( nullptr, boardItem, UNDO_REDO::DELETED ) ); if( boardItem->IsSelected() ) @@ -189,7 +189,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a case PCB_FP_TEXT_T: case PCB_FP_ZONE_AREA_T: // This level can only handle module items when editing footprints - wxASSERT( m_editModules ); + wxASSERT( m_isFootprintEditor ); if( boardItem->Type() == PCB_FP_TEXT_T ) { @@ -234,7 +234,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a case PCB_MODULE_T: { // There are no footprints inside a module yet - wxASSERT( !m_editModules ); + wxASSERT( !m_isFootprintEditor ); MODULE* module = static_cast( boardItem ); view->Remove( module ); @@ -248,8 +248,8 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a case PCB_GROUP_T: if( !( changeFlags & CHT_DONE ) ) { - if( m_editModules ) - board->GetFirstModule()->Remove( boardItem ); + if( m_isFootprintEditor ) + board->GetFirstFootprint()->Remove( boardItem ); else board->Remove( boardItem ); } @@ -270,7 +270,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a case CHT_MODIFY: { - if( !m_editModules && aCreateUndoEntry ) + if( !m_isFootprintEditor && aCreateUndoEntry ) { ITEM_PICKER itemWrapper( nullptr, boardItem, UNDO_REDO::CHANGED ); wxASSERT( ent.m_copy ); @@ -284,7 +284,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a connectivity->Update( boardItem ); view->Update( boardItem ); - if( m_editModules ) + if( m_isFootprintEditor ) { static_cast( boardItem )->RunOnChildren( [&]( BOARD_ITEM* aChild ) { @@ -307,7 +307,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a } } - if ( !m_editModules ) + if ( !m_isFootprintEditor ) { size_t num_changes = m_changes.size(); @@ -343,7 +343,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, bool aCreateUndoEntry, bool a } } - if( !m_editModules && aCreateUndoEntry ) + if( !m_isFootprintEditor && aCreateUndoEntry ) frame->SaveCopyInUndoList( undoList, UNDO_REDO::UNSPECIFIED ); m_toolMgr->PostEvent( { TC_MESSAGE, TA_MODEL_CHANGE, AS_GLOBAL } ); @@ -439,7 +439,7 @@ void BOARD_COMMIT::Revert() } } - if ( !m_editModules ) + if ( !m_isFootprintEditor ) connectivity->RecalculateRatsnest(); SELECTION_TOOL* selTool = m_toolMgr->GetTool(); diff --git a/pcbnew/board_commit.h b/pcbnew/board_commit.h index 4146015d19..47772fbc2f 100644 --- a/pcbnew/board_commit.h +++ b/pcbnew/board_commit.h @@ -57,9 +57,11 @@ public: bool HasRemoveEntry( EDA_ITEM* aItem ); private: - TOOL_MANAGER* m_toolMgr; - bool m_editModules; virtual EDA_ITEM* parentObject( EDA_ITEM* aItem ) const override; + +private: + TOOL_MANAGER* m_toolMgr; + bool m_isFootprintEditor; }; #endif diff --git a/pcbnew/class_board.h b/pcbnew/class_board.h index a301b621b9..d939d48af2 100644 --- a/pcbnew/class_board.h +++ b/pcbnew/class_board.h @@ -341,10 +341,11 @@ public: void Remove( BOARD_ITEM* aBoardItem ) override; /** - * Gets the first module in the list (used in footprint viewer/editor) or NULL if none + * Gets the first footprint on the board or nullptr. + * This is used primarily by the footprint editor which knows there is only one. * @return first module or null pointer */ - MODULE* GetFirstModule() const + MODULE* GetFirstFootprint() const { return m_modules.empty() ? nullptr : m_modules.front(); } diff --git a/pcbnew/convert_drawsegment_list_to_polygon.cpp b/pcbnew/convert_drawsegment_list_to_polygon.cpp index c5e3381fe3..8fcaae62c3 100644 --- a/pcbnew/convert_drawsegment_list_to_polygon.cpp +++ b/pcbnew/convert_drawsegment_list_to_polygon.cpp @@ -1021,12 +1021,10 @@ bool BuildFootprintPolygonOutlines( BOARD* aBoard, SHAPE_POLY_SET& aOutlines, std::vector* aIntersections ) { PCB_TYPE_COLLECTOR items; + SHAPE_POLY_SET outlines; - SHAPE_POLY_SET outlines; - - // Get all the DRAWSEGMENTS and module graphics into 'items', - // then keep only those on layer == Edge_Cuts. - static const KICAD_T scan_graphics[] = { PCB_SHAPE_T, PCB_FP_SHAPE_T, EOT }; + // Get all the SHAPEs into 'items', then keep only those on layer == Edge_Cuts. + static const KICAD_T scan_graphics[] = { PCB_SHAPE_T, PCB_FP_SHAPE_T, EOT }; items.Collect( aBoard, scan_graphics ); // Make a working copy of aSegList, because the list is modified during calculations @@ -1041,12 +1039,12 @@ bool BuildFootprintPolygonOutlines( BOARD* aBoard, SHAPE_POLY_SET& aOutlines, bool success = ConvertOutlineToPolygon( segList, outlines, aTolerance, aErrorText, aDiscontinuities, aIntersections ); - MODULE* boardMod = aBoard->GetFirstModule(); + MODULE* footprint = aBoard->GetFirstFootprint(); - // No module loaded - if( !boardMod ) + // No footprint loaded + if( !footprint ) { - wxLogTrace( traceBoardOutline, "No module found on board" ); + wxLogTrace( traceBoardOutline, "No footprint found on board" ); if( aErrorText ) *aErrorText = _( "No footprint loaded" ); @@ -1060,7 +1058,7 @@ bool BuildFootprintPolygonOutlines( BOARD* aBoard, SHAPE_POLY_SET& aOutlines, wxLogTrace( traceBoardOutline, "Closed outline found" ); // If copper is outside a closed polygon, treat it as a hole - if( isCopperOutside( boardMod, outlines ) ) + if( isCopperOutside( footprint, outlines ) ) { wxLogTrace( traceBoardOutline, "Treating outline as a hole" ); @@ -1315,7 +1313,7 @@ bool BuildFootprintPolygonOutlines( BOARD* aBoard, SHAPE_POLY_SET& aOutlines, poly2.NewOutline(); poly2.Append( lower ); - if( isCopperOutside( boardMod, poly1 ) ) + if( isCopperOutside( footprint, poly1 ) ) { wxLogTrace( traceBoardOutline, "Using lower shape" ); aOutlines = poly2; diff --git a/pcbnew/dialogs/dialog_cleanup_graphics.cpp b/pcbnew/dialogs/dialog_cleanup_graphics.cpp index 441cf352e1..d0d559cafc 100644 --- a/pcbnew/dialogs/dialog_cleanup_graphics.cpp +++ b/pcbnew/dialogs/dialog_cleanup_graphics.cpp @@ -29,10 +29,11 @@ #include -DIALOG_CLEANUP_GRAPHICS::DIALOG_CLEANUP_GRAPHICS( PCB_BASE_FRAME* aParent, bool isModEdit ) : +DIALOG_CLEANUP_GRAPHICS::DIALOG_CLEANUP_GRAPHICS( PCB_BASE_FRAME* aParent, + bool aIsFootprintEditor ) : DIALOG_CLEANUP_GRAPHICS_BASE( aParent ), m_parentFrame( aParent ), - m_isModEdit( isModEdit ) + m_isFootprintEditor( aIsFootprintEditor ) { m_changesTreeModel = new RC_TREE_MODEL( m_parentFrame, m_changesDataView ); m_changesDataView->AssociateModel( m_changesTreeModel ); @@ -41,7 +42,7 @@ DIALOG_CLEANUP_GRAPHICS::DIALOG_CLEANUP_GRAPHICS( PCB_BASE_FRAME* aParent, bool // We use a sdbSizer to get platform-dependent ordering of the action buttons, but // that requires us to correct the button labels here. - m_sdbSizerOK->SetLabel( isModEdit ? _( "Update Footprint" ) : _( "Update PCB" ) ); + m_sdbSizerOK->SetLabel( aIsFootprintEditor ? _( "Update Footprint" ) : _( "Update PCB" ) ); m_sdbSizerOK->SetDefault(); GetSizer()->SetSizeHints(this); @@ -83,7 +84,7 @@ void DIALOG_CLEANUP_GRAPHICS::doCleanup( bool aDryRun ) BOARD_COMMIT commit( m_parentFrame ); BOARD* board = m_parentFrame->GetBoard(); - MODULE* fp = m_isModEdit ? board->GetFirstModule() : nullptr; + MODULE* fp = m_isFootprintEditor ? board->GetFirstFootprint() : nullptr; GRAPHICS_CLEANER cleaner( fp ? fp->GraphicalItems() : board->Drawings(), fp, commit ); if( !aDryRun ) diff --git a/pcbnew/dialogs/dialog_cleanup_graphics.h b/pcbnew/dialogs/dialog_cleanup_graphics.h index e7176b9928..c3fc2aab03 100644 --- a/pcbnew/dialogs/dialog_cleanup_graphics.h +++ b/pcbnew/dialogs/dialog_cleanup_graphics.h @@ -34,10 +34,11 @@ class PCB_BASE_FRAME; class DIALOG_CLEANUP_GRAPHICS: public DIALOG_CLEANUP_GRAPHICS_BASE { - PCB_BASE_FRAME* m_parentFrame; - bool m_isModEdit; + PCB_BASE_FRAME* m_parentFrame; + bool m_isFootprintEditor; + RC_TREE_MODEL* m_changesTreeModel; + std::vector > m_items; - RC_TREE_MODEL* m_changesTreeModel; void doCleanup( bool aDryRun ); @@ -49,7 +50,7 @@ class DIALOG_CLEANUP_GRAPHICS: public DIALOG_CLEANUP_GRAPHICS_BASE bool TransferDataFromWindow() override; public: - DIALOG_CLEANUP_GRAPHICS( PCB_BASE_FRAME* aParent, bool isModEdit ); + DIALOG_CLEANUP_GRAPHICS( PCB_BASE_FRAME* aParent, bool aIsFootprintEditor ); ~DIALOG_CLEANUP_GRAPHICS(); }; diff --git a/pcbnew/footprint_edit_frame.cpp b/pcbnew/footprint_edit_frame.cpp index 5717eebc2e..8f63f01b4f 100644 --- a/pcbnew/footprint_edit_frame.cpp +++ b/pcbnew/footprint_edit_frame.cpp @@ -299,7 +299,7 @@ FOOTPRINT_EDIT_FRAME::~FOOTPRINT_EDIT_FRAME() bool FOOTPRINT_EDIT_FRAME::IsContentModified() { - return GetScreen() && GetScreen()->IsModify() && GetBoard() && GetBoard()->GetFirstModule(); + return GetScreen() && GetScreen()->IsModify() && GetBoard() && GetBoard()->GetFirstFootprint(); } @@ -346,7 +346,7 @@ bool FOOTPRINT_EDIT_FRAME::IsSearchTreeShown() BOARD_ITEM_CONTAINER* FOOTPRINT_EDIT_FRAME::GetModel() const { - return GetBoard()->GetFirstModule(); + return GetBoard()->GetFirstFootprint(); } @@ -375,7 +375,7 @@ LIB_ID FOOTPRINT_EDIT_FRAME::GetTargetFPID() const LIB_ID FOOTPRINT_EDIT_FRAME::GetLoadedFPID() const { - MODULE* footprint = GetBoard()->GetFirstModule(); + MODULE* footprint = GetBoard()->GetFirstFootprint(); if( footprint ) return LIB_ID( footprint->GetFPID().GetLibNickname(), m_footprintNameWhenLoaded ); @@ -386,7 +386,7 @@ LIB_ID FOOTPRINT_EDIT_FRAME::GetLoadedFPID() const bool FOOTPRINT_EDIT_FRAME::IsCurrentFPFromBoard() const { - MODULE* footprint = GetBoard()->GetFirstModule(); + MODULE* footprint = GetBoard()->GetFirstFootprint(); return ( footprint && footprint->GetLink() != niluuid ); } @@ -534,7 +534,7 @@ MAGNETIC_SETTINGS* FOOTPRINT_EDIT_FRAME::GetMagneticItemsSettings() const BOX2I FOOTPRINT_EDIT_FRAME::GetDocumentExtents( bool aIncludeAllVisible ) const { - MODULE* footprint = GetBoard()->GetFirstModule(); + MODULE* footprint = GetBoard()->GetFirstFootprint(); if( footprint ) { @@ -579,13 +579,13 @@ bool FOOTPRINT_EDIT_FRAME::canCloseWindow( wxCloseEvent& aEvent ) return false; } - wxString footprintName = GetBoard()->GetFirstModule()->GetFPID().GetLibItemName(); + wxString footprintName = GetBoard()->GetFirstFootprint()->GetFPID().GetLibItemName(); wxString msg = _( "Save changes to \"%s\" before closing?" ); if( !HandleUnsavedChanges( this, wxString::Format( msg, footprintName ), [&]() -> bool { - return SaveFootprint( GetBoard()->GetFirstModule() ); + return SaveFootprint( GetBoard()->GetFirstFootprint() ); } ) ) { aEvent.Veto(); @@ -629,7 +629,7 @@ void FOOTPRINT_EDIT_FRAME::CloseModuleEditor( wxCommandEvent& Event ) void FOOTPRINT_EDIT_FRAME::OnUpdateModuleSelected( wxUpdateUIEvent& aEvent ) { - aEvent.Enable( GetBoard()->GetFirstModule() != NULL ); + aEvent.Enable( GetBoard()->GetFirstFootprint() != NULL ); } @@ -637,7 +637,7 @@ void FOOTPRINT_EDIT_FRAME::OnUpdateLoadModuleFromBoard( wxUpdateUIEvent& aEvent { PCB_EDIT_FRAME* frame = (PCB_EDIT_FRAME*) Kiway().Player( FRAME_PCB_EDITOR, false ); - aEvent.Enable( frame && frame->GetBoard()->GetFirstModule() != NULL ); + aEvent.Enable( frame && frame->GetBoard()->GetFirstFootprint() != NULL ); } @@ -645,7 +645,7 @@ void FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard( wxUpdateUIEvent& aEvent { PCB_EDIT_FRAME* frame = (PCB_EDIT_FRAME*) Kiway().Player( FRAME_PCB_EDITOR, false ); - MODULE* editorFootprint = GetBoard()->GetFirstModule(); + MODULE* editorFootprint = GetBoard()->GetFirstFootprint(); bool canInsert = frame && editorFootprint && editorFootprint->GetLink() == niluuid; // If the source was deleted, the footprint can inserted but not updated in the board. @@ -708,13 +708,15 @@ void FOOTPRINT_EDIT_FRAME::updateTitle() { wxString title; LIB_ID fpid = GetLoadedFPID(); + MODULE* footprint = GetBoard()->GetFirstFootprint(); bool writable = true; if( IsCurrentFPFromBoard() ) { title += wxString::Format( _( "%s [from %s.%s]" ) + wxT( " \u2014 " ), - GetBoard()->GetFirstModule()->GetReference(), Prj().GetProjectName(), - PcbFileExtension ); + footprint->GetReference(), + Prj().GetProjectName(), + PcbFileExtension ); } else if( fpid.IsValid() ) { @@ -729,15 +731,16 @@ void FOOTPRINT_EDIT_FRAME::updateTitle() // Note: don't used GetLoadedFPID(); footprint name may have been edited title += wxString::Format( wxT( "%s %s\u2014 " ), - FROM_UTF8( GetBoard()->GetFirstModule()->GetFPID().Format().c_str() ), - writable ? wxString( wxEmptyString ) : _( "[Read Only]" ) + wxS( "" ) + wxS( " " )); + FROM_UTF8( footprint->GetFPID().Format().c_str() ), + writable ? wxString( wxEmptyString ) + : _( "[Read Only]" ) + wxS( " " ) ); } else if( !fpid.GetLibItemName().empty() ) { // Note: don't used GetLoadedFPID(); footprint name may have been edited title += wxString::Format( wxT( "%s %s \u2014 " ), - FROM_UTF8( GetBoard()->GetFirstModule()->GetFPID().GetLibItemName().c_str() ), - _( "[Unsaved]" ) ); + FROM_UTF8( footprint->GetFPID().GetLibItemName().c_str() ), + _( "[Unsaved]" ) ); } title += _( "Footprint Editor" ); @@ -919,16 +922,16 @@ void FOOTPRINT_EDIT_FRAME::setupUIConditions() #define CHECK( x ) ACTION_CONDITIONS().Check( x ) auto haveFootprintCond = - [this]( const SELECTION& ) - { - return GetBoard()->GetFirstModule() != nullptr; - }; + [this]( const SELECTION& ) + { + return GetBoard()->GetFirstFootprint() != nullptr; + }; auto footprintTargettedCond = - [this] ( const SELECTION& ) - { - return !GetTargetFPID().GetLibItemName().empty(); - }; + [this] ( const SELECTION& ) + { + return !GetTargetFPID().GetLibItemName().empty(); + }; mgr->SetConditions( ACTIONS::saveAs, ENABLE( footprintTargettedCond ) ); mgr->SetConditions( ACTIONS::revert, ENABLE( cond.ContentModified() ) ); @@ -963,16 +966,16 @@ void FOOTPRINT_EDIT_FRAME::setupUIConditions() auto highContrastCond = - [this] ( const SELECTION& ) - { - return GetDisplayOptions().m_ContrastModeDisplay != HIGH_CONTRAST_MODE::NORMAL; - }; + [this] ( const SELECTION& ) + { + return GetDisplayOptions().m_ContrastModeDisplay != HIGH_CONTRAST_MODE::NORMAL; + }; auto footprintTreeCond = - [this] (const SELECTION& ) - { - return IsSearchTreeShown(); - }; + [this] (const SELECTION& ) + { + return IsSearchTreeShown(); + }; mgr->SetConditions( ACTIONS::highContrastMode, CHECK( highContrastCond ) ); mgr->SetConditions( PCB_ACTIONS::toggleFootprintTree, CHECK( footprintTreeCond ) ); diff --git a/pcbnew/footprint_edit_frame.h b/pcbnew/footprint_edit_frame.h index 985e8813fe..03b3e05b39 100644 --- a/pcbnew/footprint_edit_frame.h +++ b/pcbnew/footprint_edit_frame.h @@ -175,10 +175,10 @@ public: /** * Save in an existing library a given footprint. * - * @param aModule = the given footprint + * @param aFootprint = the given footprint * @return : true if OK, false if abort */ - bool SaveFootprint( MODULE* aModule ); + bool SaveFootprint( MODULE* aFootprint ); bool SaveFootprintAs( MODULE* aModule ); bool SaveFootprintToBoard( bool aAddNew ); bool SaveFootprintInLibrary( MODULE* aModule, const wxString& aLibraryName ); diff --git a/pcbnew/footprint_editor_utils.cpp b/pcbnew/footprint_editor_utils.cpp index ca73bee2f7..5f7b61d04b 100644 --- a/pcbnew/footprint_editor_utils.cpp +++ b/pcbnew/footprint_editor_utils.cpp @@ -62,40 +62,35 @@ void FOOTPRINT_EDIT_FRAME::LoadModuleFromLibrary( LIB_ID aFPID) { bool is_last_fp_from_brd = IsCurrentFPFromBoard(); - MODULE* module = LoadFootprint( aFPID ); + MODULE* footprint = LoadFootprint( aFPID ); - if( !module ) + if( !footprint ) return; if( !Clear_Pcb( true ) ) return; GetCanvas()->GetViewControls()->SetCrossHairCursorPosition( VECTOR2D( 0, 0 ), false ); - AddModuleToBoard( module ); + AddModuleToBoard( footprint ); - auto fp = GetBoard()->GetFirstModule(); + footprint->ClearFlags(); - if( fp ) + // if either m_Reference or m_Value are gone, reinstall them - + // otherwise you cannot see what you are doing on board + FP_TEXT* ref = &footprint->Reference(); + FP_TEXT* val = &footprint->Value(); + + if( val && ref ) { - fp->ClearFlags(); + ref->SetType( FP_TEXT::TEXT_is_REFERENCE ); // just in case ... - // if either m_Reference or m_Value are gone, reinstall them - - // otherwise you cannot see what you are doing on board - FP_TEXT* ref = &fp->Reference(); - FP_TEXT* val = &fp->Value(); + if( ref->GetLength() == 0 ) + ref->SetText( wxT( "Ref**" ) ); - if( val && ref ) - { - ref->SetType( FP_TEXT::TEXT_is_REFERENCE ); // just in case ... + val->SetType( FP_TEXT::TEXT_is_VALUE ); // just in case ... - if( ref->GetLength() == 0 ) - ref->SetText( wxT( "Ref**" ) ); - - val->SetType( FP_TEXT::TEXT_is_VALUE ); // just in case ... - - if( val->GetLength() == 0 ) - val->SetText( wxT( "Val**" ) ); - } + if( val->GetLength() == 0 ) + val->SetText( wxT( "Val**" ) ); } if( m_zoomSelectBox->GetSelection() == 0 ) @@ -134,7 +129,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) case ID_MODEDIT_NEW_MODULE: { LIB_ID selected = m_treePane->GetLibTree()->GetSelectedLibId(); - MODULE* module = CreateNewModule( wxEmptyString ); + MODULE* module = CreateNewFootprint( wxEmptyString ); if( !module ) break; @@ -151,8 +146,8 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) GetBoard()->BuildListOfNets(); module->SetPosition( wxPoint( 0, 0 ) ); - if( GetBoard()->GetFirstModule() ) - GetBoard()->GetFirstModule()->ClearFlags(); + if( GetBoard()->GetFirstFootprint() ) + GetBoard()->GetFirstFootprint()->ClearFlags(); Zoom_Automatique( false ); GetScreen()->SetModify(); @@ -183,8 +178,9 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) { if( !HandleUnsavedChanges( this, _( "The current footprint has been modified. " "Save changes?" ), - [&]() -> bool { - return SaveFootprint( GetBoard()->GetFirstModule() ); + [&]() -> bool + { + return SaveFootprint( GetBoard()->GetFirstFootprint() ); } ) ) { break; @@ -240,14 +236,14 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) break; case ID_MODEDIT_SAVE: - if( !GetBoard()->GetFirstModule() ) // no loaded footprint + if( !GetBoard()->GetFirstFootprint() ) // no loaded footprint break; if( GetTargetFPID() == GetLoadedFPID() ) { - if( SaveFootprint( GetBoard()->GetFirstModule() ) ) + if( SaveFootprint( GetBoard()->GetFirstFootprint() ) ) { - m_toolManager->GetView()->Update( GetBoard()->GetFirstModule() ); + m_toolManager->GetView()->Update( GetBoard()->GetFirstFootprint() ); GetCanvas()->ForceRefresh(); GetScreen()->ClrModify(); @@ -270,7 +266,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) else if( GetTargetFPID() == GetLoadedFPID() ) { // Save Board Footprint As - MODULE* footprint = GetBoard()->GetFirstModule(); + MODULE* footprint = GetBoard()->GetFirstFootprint(); if( footprint && SaveFootprintAs( footprint ) ) { @@ -441,8 +437,8 @@ bool FOOTPRINT_EDIT_FRAME::OpenProjectFiles( const std::vector& aFileS GetCanvas()->GetViewControls()->SetCrossHairCursorPosition( VECTOR2D( 0, 0 ), false ); Import_Module( aFileSet[0] ); - if( GetBoard()->GetFirstModule() ) - GetBoard()->GetFirstModule()->ClearFlags(); + if( GetBoard()->GetFirstFootprint() ) + GetBoard()->GetFirstFootprint()->ClearFlags(); GetScreen()->ClrModify(); Zoom_Automatique( false ); diff --git a/pcbnew/footprint_libraries_utils.cpp b/pcbnew/footprint_libraries_utils.cpp index 0f15c98a76..ca1b40ac15 100644 --- a/pcbnew/footprint_libraries_utils.cpp +++ b/pcbnew/footprint_libraries_utils.cpp @@ -612,7 +612,7 @@ bool FOOTPRINT_EDIT_FRAME::DeleteModuleFromLibrary( const LIB_ID& aFPID, bool aC void PCB_EDIT_FRAME::HarvestFootprintsToLibrary( bool aStoreInNewLib, const wxString& aLibName, wxString* aLibPath ) { - if( GetBoard()->GetFirstModule() == NULL ) + if( GetBoard()->GetFirstFootprint() == NULL ) { DisplayInfoMessage( this, _( "No footprints to harvest!" ) ); return; @@ -698,16 +698,16 @@ void PCB_EDIT_FRAME::HarvestFootprintsToLibrary( bool aStoreInNewLib, const wxSt } -bool FOOTPRINT_EDIT_FRAME::SaveFootprint( MODULE* aModule ) +bool FOOTPRINT_EDIT_FRAME::SaveFootprint( MODULE* aFootprint ) { - if( !aModule ) // Happen if no footprint loaded + if( !aFootprint ) // Happen if no footprint loaded return false; - wxString libraryName = aModule->GetFPID().GetLibNickname(); - wxString footprintName = aModule->GetFPID().GetLibItemName(); - bool nameChanged = m_footprintNameWhenLoaded != footprintName; + wxString libraryName = aFootprint->GetFPID().GetLibNickname(); + wxString footprintName = aFootprint->GetFPID().GetLibItemName(); + bool nameChanged = m_footprintNameWhenLoaded != footprintName; - if( aModule->GetLink() != niluuid ) + if( aFootprint->GetLink() != niluuid ) { if( SaveFootprintToBoard( false ) ) { @@ -719,7 +719,7 @@ bool FOOTPRINT_EDIT_FRAME::SaveFootprint( MODULE* aModule ) } else if( libraryName.IsEmpty() || footprintName.IsEmpty() ) { - if( SaveFootprintAs( aModule ) ) + if( SaveFootprintAs( aFootprint ) ) { m_footprintNameWhenLoaded = footprintName; SyncLibraryTree( true ); @@ -747,7 +747,7 @@ bool FOOTPRINT_EDIT_FRAME::SaveFootprint( MODULE* aModule ) DeleteModuleFromLibrary( oldFPID, false ); } - if( !SaveFootprintInLibrary( aModule, libraryName ) ) + if( !SaveFootprintInLibrary( aFootprint, libraryName ) ) return false; if( nameChanged ) @@ -795,7 +795,7 @@ bool FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard( bool aAddNew ) BOARD* mainpcb = pcbframe->GetBoard(); MODULE* source_module = NULL; - MODULE* module_in_edit = GetBoard()->GetFirstModule(); + MODULE* module_in_edit = GetBoard()->GetFirstFootprint(); // Search the old module (source) if exists // Because this source could be deleted when editing the main board... @@ -1018,62 +1018,62 @@ bool FOOTPRINT_EDIT_FRAME::RevertFootprint() } -MODULE* PCB_BASE_FRAME::CreateNewModule( const wxString& aModuleName ) +MODULE* PCB_BASE_FRAME::CreateNewFootprint( const wxString& aFootprintName ) { - wxString moduleName = aModuleName; + wxString footprintName = aFootprintName; // Ask for the new module name - if( moduleName.IsEmpty() ) + if( footprintName.IsEmpty() ) { WX_TEXT_ENTRY_DIALOG dlg( this, _( "Enter footprint name:" ), _( "New Footprint" ), - moduleName ); - dlg.SetTextValidator( MODULE_NAME_CHAR_VALIDATOR( &moduleName ) ); + footprintName ); + dlg.SetTextValidator( MODULE_NAME_CHAR_VALIDATOR( &footprintName ) ); if( dlg.ShowModal() != wxID_OK ) return NULL; //Aborted by user } - moduleName.Trim( true ); - moduleName.Trim( false ); + footprintName.Trim( true ); + footprintName.Trim( false ); - if( moduleName.IsEmpty() ) + if( footprintName.IsEmpty() ) { DisplayInfoMessage( this, _( "No footprint name defined." ) ); return NULL; } - // Creates the new module and add it to the head of the linked list of footprints - MODULE* module = new MODULE( GetBoard() ); + // Creates the new footprint and add it to the head of the linked list of footprints + MODULE* footprint = new MODULE( GetBoard() ); // Update parameters: timestamp ... - module->SetLastEditTime(); + footprint->SetLastEditTime(); // Update its name in lib - module->SetFPID( LIB_ID( wxEmptyString, moduleName ) ); + footprint->SetFPID( LIB_ID( wxEmptyString, footprintName ) ); PCB_LAYER_ID txt_layer; wxPoint default_pos; BOARD_DESIGN_SETTINGS& settings = GetDesignSettings(); - module->Reference().SetText( settings.m_DefaultFPTextItems[0].m_Text ); - module->Reference().SetVisible( settings.m_DefaultFPTextItems[0].m_Visible ); + footprint->Reference().SetText( settings.m_DefaultFPTextItems[0].m_Text ); + footprint->Reference().SetVisible( settings.m_DefaultFPTextItems[0].m_Visible ); txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[0].m_Layer; - module->Reference().SetLayer( txt_layer ); + footprint->Reference().SetLayer( txt_layer ); default_pos.y -= settings.GetTextSize( txt_layer ).y / 2; - module->Reference().SetPosition( default_pos ); + footprint->Reference().SetPosition( default_pos ); default_pos.y += settings.GetTextSize( txt_layer ).y; - module->Value().SetText( settings.m_DefaultFPTextItems[1].m_Text ); - module->Value().SetVisible( settings.m_DefaultFPTextItems[1].m_Visible ); + footprint->Value().SetText( settings.m_DefaultFPTextItems[1].m_Text ); + footprint->Value().SetVisible( settings.m_DefaultFPTextItems[1].m_Visible ); txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[1].m_Layer; - module->Value().SetLayer( txt_layer ); + footprint->Value().SetLayer( txt_layer ); default_pos.y += settings.GetTextSize( txt_layer ).y / 2; - module->Value().SetPosition( default_pos ); + footprint->Value().SetPosition( default_pos ); default_pos.y += settings.GetTextSize( txt_layer ).y; for( size_t i = 2; i < settings.m_DefaultFPTextItems.size(); ++i ) { - FP_TEXT* textItem = new FP_TEXT( module ); + FP_TEXT* textItem = new FP_TEXT( footprint ); textItem->SetText( settings.m_DefaultFPTextItems[i].m_Text ); textItem->SetVisible( settings.m_DefaultFPTextItems[i].m_Visible ); txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[i].m_Layer; @@ -1081,16 +1081,16 @@ MODULE* PCB_BASE_FRAME::CreateNewModule( const wxString& aModuleName ) default_pos.y += settings.GetTextSize( txt_layer ).y / 2; textItem->SetPosition( default_pos ); default_pos.y += settings.GetTextSize( txt_layer ).y; - module->GraphicalItems().push_back( textItem ); + footprint->GraphicalItems().push_back( textItem ); } - if( module->GetReference().IsEmpty() ) - module->SetReference( moduleName ); + if( footprint->GetReference().IsEmpty() ) + footprint->SetReference( footprintName ); - if( module->GetValue().IsEmpty() ) - module->SetValue( moduleName ); + if( footprint->GetValue().IsEmpty() ) + footprint->SetValue( footprintName ); - module->RunOnChildren( + footprint->RunOnChildren( [&] ( BOARD_ITEM* aChild ) { if( aChild->Type() == PCB_FP_TEXT_T ) @@ -1105,8 +1105,8 @@ MODULE* PCB_BASE_FRAME::CreateNewModule( const wxString& aModuleName ) } } ); - SetMsgPanel( module ); - return module; + SetMsgPanel( footprint ); + return footprint; } diff --git a/pcbnew/footprint_viewer_frame.cpp b/pcbnew/footprint_viewer_frame.cpp index 9e377e7da8..d53b0d4fc3 100644 --- a/pcbnew/footprint_viewer_frame.cpp +++ b/pcbnew/footprint_viewer_frame.cpp @@ -719,7 +719,7 @@ void FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB( wxCommandEvent& aEvent ) DismissModal( false ); } } - else if( GetBoard()->GetFirstModule() ) + else if( GetBoard()->GetFirstFootprint() ) { PCB_EDIT_FRAME* pcbframe = (PCB_EDIT_FRAME*) Kiway().Player( FRAME_PCB_EDITOR, false ); @@ -733,7 +733,7 @@ void FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB( wxCommandEvent& aEvent ) BOARD_COMMIT commit( pcbframe ); // Create the "new" footprint - MODULE* newFootprint = (MODULE*) GetBoard()->GetFirstModule()->Duplicate(); + MODULE* newFootprint = (MODULE*) GetBoard()->GetFirstFootprint()->Duplicate(); newFootprint->SetParent( pcbframe->GetBoard() ); newFootprint->SetLink( 0 ); @@ -890,7 +890,7 @@ void FOOTPRINT_VIEWER_FRAME::OnActivate( wxActivateEvent& event ) void FOOTPRINT_VIEWER_FRAME::OnUpdateFootprintButton( wxUpdateUIEvent& aEvent ) { - aEvent.Enable( GetBoard()->GetFirstModule() != nullptr ); + aEvent.Enable( GetBoard()->GetFirstFootprint() != nullptr ); } @@ -1076,6 +1076,6 @@ void FOOTPRINT_VIEWER_FRAME::CloseFootprintViewer( wxCommandEvent& event ) BOARD_ITEM_CONTAINER* FOOTPRINT_VIEWER_FRAME::GetModel() const { - return GetBoard()->GetFirstModule(); + return GetBoard()->GetFirstFootprint(); } diff --git a/pcbnew/footprint_wizard_frame.cpp b/pcbnew/footprint_wizard_frame.cpp index db647e723d..0eaf28a3a0 100644 --- a/pcbnew/footprint_wizard_frame.cpp +++ b/pcbnew/footprint_wizard_frame.cpp @@ -301,7 +301,7 @@ void FOOTPRINT_WIZARD_FRAME::updateView() void FOOTPRINT_WIZARD_FRAME::UpdateMsgPanel() { - BOARD_ITEM* footprint = GetBoard()->GetFirstModule(); + BOARD_ITEM* footprint = GetBoard()->GetFirstFootprint(); if( footprint ) { @@ -631,7 +631,7 @@ void FOOTPRINT_WIZARD_FRAME::ReCreateHToolbar() BOARD_ITEM_CONTAINER* FOOTPRINT_WIZARD_FRAME::GetModel() const { - return GetBoard()->GetFirstModule(); + return GetBoard()->GetFirstFootprint(); } diff --git a/pcbnew/fp_tree_synchronizing_adapter.cpp b/pcbnew/fp_tree_synchronizing_adapter.cpp index 2fd79a70bd..57cb86483d 100644 --- a/pcbnew/fp_tree_synchronizing_adapter.cpp +++ b/pcbnew/fp_tree_synchronizing_adapter.cpp @@ -189,7 +189,7 @@ void FP_TREE_SYNCHRONIZING_ADAPTER::GetValue( wxVariant& aVariant, wxDataViewIte case 1: if( node->m_LibId == m_frame->GetLoadedFPID() && !m_frame->IsCurrentFPFromBoard() ) - node->m_Desc = m_frame->GetBoard()->GetFirstModule()->GetDescription(); + node->m_Desc = m_frame->GetBoard()->GetFirstFootprint()->GetDescription(); aVariant = node->m_Desc; break; diff --git a/pcbnew/import_gfx/dialog_import_gfx.cpp b/pcbnew/import_gfx/dialog_import_gfx.cpp index bfc7c1d05f..ce86254f7e 100644 --- a/pcbnew/import_gfx/dialog_import_gfx.cpp +++ b/pcbnew/import_gfx/dialog_import_gfx.cpp @@ -49,7 +49,7 @@ DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX( PCB_BASE_FRAME* aParent, bool aImportAsFoo m_parent = aParent; if( aImportAsFootprintGraphic ) - m_importer = std::make_unique( m_parent->GetBoard()->GetFirstModule() ); + m_importer = std::make_unique( m_parent->GetBoard()->GetFirstFootprint() ); else m_importer = std::make_unique( m_parent->GetBoard() ); diff --git a/pcbnew/load_select_footprint.cpp b/pcbnew/load_select_footprint.cpp index 851d19ba73..b966916ae9 100644 --- a/pcbnew/load_select_footprint.cpp +++ b/pcbnew/load_select_footprint.cpp @@ -89,7 +89,7 @@ bool FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard( MODULE* aFootprint ) if( aFootprint == NULL ) { - if( !frame->GetBoard() || !frame->GetBoard()->GetFirstModule() ) + if( !frame->GetBoard() || !frame->GetBoard()->GetFirstFootprint() ) return false; aFootprint = SelectFootprintFromBoard( frame->GetBoard() ); diff --git a/pcbnew/microwave/microwave_footprint.cpp b/pcbnew/microwave/microwave_footprint.cpp index b2c1c1d6e9..b314c2e438 100644 --- a/pcbnew/microwave/microwave_footprint.cpp +++ b/pcbnew/microwave/microwave_footprint.cpp @@ -186,14 +186,14 @@ MODULE* MICROWAVE_TOOL::createBaseFootprint( const wxString& aValue, { PCB_EDIT_FRAME& editFrame = *getEditFrame(); - MODULE* module = editFrame.CreateNewModule( aValue ); + MODULE* footprint = editFrame.CreateNewFootprint( aValue ); if( aTextSize > 0 ) { - module->Reference().SetTextSize( wxSize( aTextSize, aTextSize ) ); - module->Reference().SetTextThickness( aTextSize / 5 ); - module->Value().SetTextSize( wxSize( aTextSize, aTextSize ) ); - module->Value().SetTextThickness( aTextSize / 5 ); + footprint->Reference().SetTextSize( wxSize( aTextSize, aTextSize ) ); + footprint->Reference().SetTextThickness( aTextSize / 5 ); + footprint->Value().SetTextSize( wxSize( aTextSize, aTextSize ) ); + footprint->Value().SetTextThickness( aTextSize / 5 ); } // Create 2 pads used in gaps and stubs. The gap is between these 2 pads @@ -203,14 +203,14 @@ MODULE* MICROWAVE_TOOL::createBaseFootprint( const wxString& aValue, while( aPadCount-- ) { - D_PAD* pad = new D_PAD( module ); + D_PAD* pad = new D_PAD( footprint ); - module->Add( pad, ADD_MODE::INSERT ); + footprint->Add( pad, ADD_MODE::INSERT ); int tw = editFrame.GetDesignSettings().GetCurrentTrackWidth(); pad->SetSize( wxSize( tw, tw ) ); - pad->SetPosition( module->GetPosition() ); + pad->SetPosition( footprint->GetPosition() ); pad->SetShape( PAD_SHAPE_RECT ); pad->SetAttribute( PAD_ATTRIB_SMD ); pad->SetLayerSet( F_Cu ); @@ -220,5 +220,5 @@ MODULE* MICROWAVE_TOOL::createBaseFootprint( const wxString& aValue, pad_num++; } - return module; + return footprint; } diff --git a/pcbnew/microwave/microwave_inductor.cpp b/pcbnew/microwave/microwave_inductor.cpp index 4041222937..778f3a90be 100644 --- a/pcbnew/microwave/microwave_inductor.cpp +++ b/pcbnew/microwave/microwave_inductor.cpp @@ -414,52 +414,52 @@ MODULE* MICROWAVE_TOOL::createMicrowaveInductor( MICROWAVE_INDUCTOR_PATTERN& aIn if( ( cmpdlg.ShowModal() != wxID_OK ) || msg.IsEmpty() ) return nullptr; // Aborted by user - MODULE* module = editFrame.CreateNewModule( msg ); + MODULE* footprint = editFrame.CreateNewFootprint( msg ); - module->SetFPID( LIB_ID( wxEmptyString, wxT( "mw_inductor" ) ) ); - module->SetAttributes( MOD_EXCLUDE_FROM_POS_FILES | MOD_EXCLUDE_FROM_BOM ); - module->ClearFlags(); - module->SetPosition( aInductorPattern.m_End ); + footprint->SetFPID( LIB_ID( wxEmptyString, wxT( "mw_inductor" ) ) ); + footprint->SetAttributes( MOD_EXCLUDE_FROM_POS_FILES | MOD_EXCLUDE_FROM_BOM ); + footprint->ClearFlags(); + footprint->SetPosition( aInductorPattern.m_End ); // Generate segments for( unsigned jj = 1; jj < buffer.size(); jj++ ) { FP_SHAPE* seg; - seg = new FP_SHAPE( module ); + seg = new FP_SHAPE( footprint ); seg->SetStart( buffer[jj - 1] ); seg->SetEnd( buffer[jj] ); seg->SetWidth( aInductorPattern.m_Width ); - seg->SetLayer( module->GetLayer() ); + seg->SetLayer( footprint->GetLayer() ); seg->SetShape( S_SEGMENT ); - seg->SetStart0( seg->GetStart() - module->GetPosition() ); - seg->SetEnd0( seg->GetEnd() - module->GetPosition() ); - module->Add( seg ); + seg->SetStart0( seg->GetStart() - footprint->GetPosition() ); + seg->SetEnd0( seg->GetEnd() - footprint->GetPosition() ); + footprint->Add( seg ); } // Place a pad on each end of coil. - pad = new D_PAD( module ); + pad = new D_PAD( footprint ); - module->Add( pad ); + footprint->Add( pad ); pad->SetName( "1" ); pad->SetPosition( aInductorPattern.m_End ); - pad->SetPos0( pad->GetPosition() - module->GetPosition() ); + pad->SetPos0( pad->GetPosition() - footprint->GetPosition() ); pad->SetSize( wxSize( aInductorPattern.m_Width, aInductorPattern.m_Width ) ); - pad->SetLayerSet( LSET( module->GetLayer() ) ); + pad->SetLayerSet( LSET( footprint->GetLayer() ) ); pad->SetAttribute( PAD_ATTRIB_SMD ); pad->SetShape( PAD_SHAPE_CIRCLE ); D_PAD* newpad = new D_PAD( *pad ); const_cast( newpad->m_Uuid ) = KIID(); - module->Add( newpad ); + footprint->Add( newpad ); pad = newpad; pad->SetName( "2" ); pad->SetPosition( aInductorPattern.m_Start ); - pad->SetPos0( pad->GetPosition() - module->GetPosition() ); + pad->SetPos0( pad->GetPosition() - footprint->GetPosition() ); // Modify text positions. wxPoint refPos( ( aInductorPattern.m_Start.x + aInductorPattern.m_End.x ) / 2, @@ -467,11 +467,11 @@ MODULE* MICROWAVE_TOOL::createMicrowaveInductor( MICROWAVE_INDUCTOR_PATTERN& aIn wxPoint valPos = refPos; - refPos.y -= module->Reference().GetTextSize().y; - module->Reference().SetPosition( refPos ); - valPos.y += module->Value().GetTextSize().y; - module->Value().SetPosition( valPos ); + refPos.y -= footprint->Reference().GetTextSize().y; + footprint->Reference().SetPosition( refPos ); + valPos.y += footprint->Value().GetTextSize().y; + footprint->Value().SetPosition( valPos ); - module->CalculateBoundingBox(); - return module; + footprint->CalculateBoundingBox(); + return footprint; } diff --git a/pcbnew/tools/convert_tool.cpp b/pcbnew/tools/convert_tool.cpp index 53d3f2cb65..109753c75c 100644 --- a/pcbnew/tools/convert_tool.cpp +++ b/pcbnew/tools/convert_tool.cpp @@ -477,7 +477,7 @@ int CONVERT_TOOL::PolyToLines( const TOOL_EVENT& aEvent ) MODULE* footprint = nullptr; if( fpEditor ) - footprint = fpEditor->GetBoard()->GetFirstModule(); + footprint = fpEditor->GetBoard()->GetFirstFootprint(); for( EDA_ITEM* item : selection ) { diff --git a/pcbnew/tools/drawing_tool.cpp b/pcbnew/tools/drawing_tool.cpp index e92d1c7868..e6a8d11272 100644 --- a/pcbnew/tools/drawing_tool.cpp +++ b/pcbnew/tools/drawing_tool.cpp @@ -1015,7 +1015,7 @@ int DRAWING_TOOL::PlaceImportedGraphics( const TOOL_EVENT& aEvent ) if( dlg.ShouldGroupItems() ) { if( m_isFootprintEditor ) - grp = new PCB_GROUP( m_frame->GetBoard()->GetFirstModule() ); + grp = new PCB_GROUP( m_frame->GetBoard()->GetFirstFootprint() ); else grp = new PCB_GROUP( m_frame->GetBoard() ); } diff --git a/pcbnew/tools/edit_tool.cpp b/pcbnew/tools/edit_tool.cpp index 8b48525f07..9a3f05abdf 100644 --- a/pcbnew/tools/edit_tool.cpp +++ b/pcbnew/tools/edit_tool.cpp @@ -1565,25 +1565,25 @@ int EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent ) if( m_isFootprintEditor ) { - MODULE* editModule = editFrame->GetBoard()->GetFirstModule(); - dupe_item = editModule->DuplicateItem( orig_item ); + MODULE* parentFootprint = editFrame->GetBoard()->GetFirstFootprint(); + dupe_item = parentFootprint->DuplicateItem( orig_item ); if( increment && item->Type() == PCB_PAD_T - && PAD_NAMING::PadCanHaveName( *static_cast( dupe_item ) ) ) + && PAD_NAMING::PadCanHaveName( *static_cast( dupe_item ) ) ) { PAD_TOOL* padTool = m_toolMgr->GetTool(); wxString padName = padTool->GetLastPadName(); - padName = editModule->GetNextPadName( padName ); + padName = parentFootprint->GetNextPadName( padName ); padTool->SetLastPadName( padName ); static_cast( dupe_item )->SetName( padName ); } } else if( orig_item->GetParent() && orig_item->GetParent()->Type() == PCB_MODULE_T ) { - MODULE* parent = static_cast( orig_item->GetParent() ); + MODULE* parentFootprint = static_cast( orig_item->GetParent() ); - m_commit->Modify( parent ); - dupe_item = parent->DuplicateItem( orig_item, true /* add to parent */ ); + m_commit->Modify( parentFootprint ); + dupe_item = parentFootprint->DuplicateItem( orig_item, true /* add to parent */ ); } else { @@ -1617,10 +1617,11 @@ int EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent ) { if( dupe_item->Type() == PCB_GROUP_T ) { - static_cast( dupe_item )->RunOnDescendants( [&]( BOARD_ITEM* bItem ) - { - m_commit->Add( bItem ); - }); + static_cast( dupe_item )->RunOnDescendants( + [&]( BOARD_ITEM* bItem ) + { + m_commit->Add( bItem ); + }); } // Clear the selection flag here, otherwise the SELECTION_TOOL diff --git a/pcbnew/tools/footprint_editor_tools.cpp b/pcbnew/tools/footprint_editor_tools.cpp index abc97756c0..11867a523d 100644 --- a/pcbnew/tools/footprint_editor_tools.cpp +++ b/pcbnew/tools/footprint_editor_tools.cpp @@ -62,22 +62,30 @@ bool FOOTPRINT_EDITOR_TOOLS::Init() // CONDITIONAL_MENU& ctxMenu = m_menu.GetMenu(); - auto libSelectedCondition = [ this ] ( const SELECTION& aSel ) { - LIB_ID sel = m_frame->GetTreeFPID(); - return !sel.GetLibNickname().empty() && sel.GetLibItemName().empty(); - }; - auto pinnedLibSelectedCondition = [ this ] ( const SELECTION& aSel ) { - LIB_TREE_NODE* current = m_frame->GetCurrentTreeNode(); - return current && current->m_Type == LIB_TREE_NODE::LIB && current->m_Pinned; - }; - auto unpinnedLibSelectedCondition = [ this ] (const SELECTION& aSel ) { - LIB_TREE_NODE* current = m_frame->GetCurrentTreeNode(); - return current && current->m_Type == LIB_TREE_NODE::LIB && !current->m_Pinned; - }; - auto fpSelectedCondition = [ this ] ( const SELECTION& aSel ) { - LIB_ID sel = m_frame->GetTreeFPID(); - return !sel.GetLibNickname().empty() && !sel.GetLibItemName().empty(); - }; + auto libSelectedCondition = + [ this ]( const SELECTION& aSel ) + { + LIB_ID sel = m_frame->GetTreeFPID(); + return !sel.GetLibNickname().empty() && sel.GetLibItemName().empty(); + }; + auto pinnedLibSelectedCondition = + [ this ]( const SELECTION& aSel ) + { + LIB_TREE_NODE* current = m_frame->GetCurrentTreeNode(); + return current && current->m_Type == LIB_TREE_NODE::LIB && current->m_Pinned; + }; + auto unpinnedLibSelectedCondition = + [ this ](const SELECTION& aSel ) + { + LIB_TREE_NODE* current = m_frame->GetCurrentTreeNode(); + return current && current->m_Type == LIB_TREE_NODE::LIB && !current->m_Pinned; + }; + auto fpSelectedCondition = + [ this ]( const SELECTION& aSel ) + { + LIB_ID sel = m_frame->GetTreeFPID(); + return !sel.GetLibNickname().empty() && !sel.GetLibItemName().empty(); + }; ctxMenu.AddItem( ACTIONS::pinLibrary, unpinnedLibSelectedCondition ); ctxMenu.AddItem( ACTIONS::unpinLibrary, pinnedLibSelectedCondition ); @@ -159,9 +167,9 @@ int FOOTPRINT_EDITOR_TOOLS::CutCopyFootprint( const TOOL_EVENT& aEvent ) LIB_ID fpID = m_frame->GetTreeFPID(); if( fpID == m_frame->GetLoadedFPID() ) - m_copiedModule.reset( new MODULE( *m_frame->GetBoard()->GetFirstModule() ) ); + m_copiedFootprint.reset( new MODULE( *m_frame->GetBoard()->GetFirstFootprint() ) ); else - m_copiedModule.reset( m_frame->LoadFootprint( fpID ) ); + m_copiedFootprint.reset( m_frame->LoadFootprint( fpID ) ); if( aEvent.IsAction( &PCB_ACTIONS::cutFootprint ) ) DeleteFootprint(aEvent ); @@ -172,20 +180,19 @@ int FOOTPRINT_EDITOR_TOOLS::CutCopyFootprint( const TOOL_EVENT& aEvent ) int FOOTPRINT_EDITOR_TOOLS::PasteFootprint( const TOOL_EVENT& aEvent ) { - if( m_copiedModule && !m_frame->GetTreeFPID().GetLibNickname().empty() ) + if( m_copiedFootprint && !m_frame->GetTreeFPID().GetLibNickname().empty() ) { wxString newLib = m_frame->GetTreeFPID().GetLibNickname(); - MODULE* newModule( m_copiedModule.get() ); - wxString newName = newModule->GetFPID().GetLibItemName(); + wxString newName = m_copiedFootprint->GetFPID().GetLibItemName(); while( m_frame->Prj().PcbFootprintLibs()->FootprintExists( newLib, newName ) ) newName += _( "_copy" ); - newModule->SetFPID( LIB_ID( newLib, newName ) ); - m_frame->SaveFootprintInLibrary( newModule, newLib ); + m_copiedFootprint->SetFPID( LIB_ID( newLib, newName ) ); + m_frame->SaveFootprintInLibrary( m_copiedFootprint.get(), newLib ); m_frame->SyncLibraryTree( true ); - m_frame->FocusOnLibID( newModule->GetFPID() ); + m_frame->FocusOnLibID( m_copiedFootprint->GetFPID() ); } return 0; @@ -216,8 +223,8 @@ int FOOTPRINT_EDITOR_TOOLS::ImportFootprint( const TOOL_EVENT& aEvent ) getViewControls()->SetCrossHairCursorPosition( VECTOR2D( 0, 0 ), false ); m_frame->Import_Module(); - if( m_frame->GetBoard()->GetFirstModule() ) - m_frame->GetBoard()->GetFirstModule()->ClearFlags(); + if( m_frame->GetBoard()->GetFirstFootprint() ) + m_frame->GetBoard()->GetFirstFootprint()->ClearFlags(); frame()->ClearUndoRedoList(); @@ -233,7 +240,7 @@ int FOOTPRINT_EDITOR_TOOLS::ExportFootprint( const TOOL_EVENT& aEvent ) MODULE* fp; if( !fpID.IsValid() ) - fp = m_frame->GetBoard()->GetFirstModule(); + fp = m_frame->GetBoard()->GetFirstFootprint(); else fp = m_frame->LoadFootprint( fpID ); @@ -286,7 +293,7 @@ int FOOTPRINT_EDITOR_TOOLS::ToggleFootprintTree( const TOOL_EVENT& aEvent ) int FOOTPRINT_EDITOR_TOOLS::Properties( const TOOL_EVENT& aEvent ) { - MODULE* footprint = m_frame->GetBoard()->GetFirstModule(); + MODULE* footprint = m_frame->GetBoard()->GetFirstFootprint(); if( footprint ) { diff --git a/pcbnew/tools/footprint_editor_tools.h b/pcbnew/tools/footprint_editor_tools.h index 12ab1c3b16..18ffe8c68d 100644 --- a/pcbnew/tools/footprint_editor_tools.h +++ b/pcbnew/tools/footprint_editor_tools.h @@ -82,7 +82,7 @@ private: FOOTPRINT_EDIT_FRAME* m_frame; // A private clipboard for cut/copy/past of an entire footprint - std::unique_ptr m_copiedModule; + std::unique_ptr m_copiedFootprint; }; #endif diff --git a/pcbnew/tools/global_edit_tool.cpp b/pcbnew/tools/global_edit_tool.cpp index 581223c981..93d36e68d1 100644 --- a/pcbnew/tools/global_edit_tool.cpp +++ b/pcbnew/tools/global_edit_tool.cpp @@ -50,8 +50,7 @@ void GLOBAL_EDIT_TOOL::Reset( RESET_REASON aReason ) bool GLOBAL_EDIT_TOOL::Init() { // Find the selection tool, so they can cooperate - m_selectionTool = static_cast( m_toolMgr->FindTool( "pcbnew.InteractiveSelection" ) ); - wxASSERT_MSG( m_selectionTool, "pcbnew.InteractiveSelection tool is not available" ); + m_selectionTool = m_toolMgr->GetTool(); return true; } @@ -60,7 +59,7 @@ bool GLOBAL_EDIT_TOOL::Init() int GLOBAL_EDIT_TOOL::ExchangeFootprints( const TOOL_EVENT& aEvent ) { PCBNEW_SELECTION& selection = m_selectionTool->GetSelection(); - MODULE* mod = nullptr; + MODULE* footprint = nullptr; bool updateMode = false; bool currentMode = false; @@ -68,7 +67,7 @@ int GLOBAL_EDIT_TOOL::ExchangeFootprints( const TOOL_EVENT& aEvent ) selection = m_selectionTool->RequestSelection( EDIT_TOOL::FootprintFilter ); if( !selection.Empty() ) - mod = selection.FirstOfKind(); + footprint = selection.FirstOfKind(); if( aEvent.IsAction( &PCB_ACTIONS::updateFootprint ) ) { @@ -100,7 +99,7 @@ int GLOBAL_EDIT_TOOL::ExchangeFootprints( const TOOL_EVENT& aEvent ) // invoke the exchange dialog process { PCB_EDIT_FRAME* editFrame = getEditFrame(); - DIALOG_EXCHANGE_FOOTPRINTS dialog( editFrame, mod, updateMode, currentMode ); + DIALOG_EXCHANGE_FOOTPRINTS dialog( editFrame, footprint, updateMode, currentMode ); dialog.ShowQuasiModal(); } @@ -108,12 +107,12 @@ int GLOBAL_EDIT_TOOL::ExchangeFootprints( const TOOL_EVENT& aEvent ) } -bool GLOBAL_EDIT_TOOL::swapBoardItem( BOARD_ITEM* aItem, PCB_LAYER_ID* new_layer ) +bool GLOBAL_EDIT_TOOL::swapBoardItem( BOARD_ITEM* aItem, PCB_LAYER_ID* aLayerMap ) { - if( new_layer[ aItem->GetLayer() ] != aItem->GetLayer() ) + if( aLayerMap[ aItem->GetLayer() ] != aItem->GetLayer() ) { m_commit->Modify( aItem ); - aItem->SetLayer( new_layer[ aItem->GetLayer() ] ); + aItem->SetLayer( aLayerMap[ aItem->GetLayer() ] ); frame()->GetCanvas()->GetView()->Update( aItem, KIGFX::GEOMETRY ); return true; } @@ -124,9 +123,9 @@ bool GLOBAL_EDIT_TOOL::swapBoardItem( BOARD_ITEM* aItem, PCB_LAYER_ID* new_layer int GLOBAL_EDIT_TOOL::SwapLayers( const TOOL_EVENT& aEvent ) { - PCB_LAYER_ID new_layer[PCB_LAYER_ID_COUNT]; + PCB_LAYER_ID layerMap[PCB_LAYER_ID_COUNT]; - DIALOG_SWAP_LAYERS dlg( frame(), new_layer ); + DIALOG_SWAP_LAYERS dlg( frame(), layerMap ); if( dlg.ShowModal() != wxID_OK ) return 0; @@ -134,7 +133,7 @@ int GLOBAL_EDIT_TOOL::SwapLayers( const TOOL_EVENT& aEvent ) bool hasChanges = false; // Change tracks. - for( auto segm : frame()->GetBoard()->Tracks() ) + for( TRACK* segm : frame()->GetBoard()->Tracks() ) { if( segm->Type() == PCB_VIA_T ) { @@ -146,25 +145,25 @@ int GLOBAL_EDIT_TOOL::SwapLayers( const TOOL_EVENT& aEvent ) via->LayerPair( &top_layer, &bottom_layer ); - if( new_layer[bottom_layer] != bottom_layer || new_layer[top_layer] != top_layer ) + if( layerMap[bottom_layer] != bottom_layer || layerMap[top_layer] != top_layer ) { m_commit->Modify( via ); - via->SetLayerPair( new_layer[top_layer], new_layer[bottom_layer] ); + via->SetLayerPair( layerMap[top_layer], layerMap[bottom_layer] ); frame()->GetCanvas()->GetView()->Update( via, KIGFX::GEOMETRY ); hasChanges = true; } } else { - hasChanges |= swapBoardItem( segm, new_layer ); + hasChanges |= swapBoardItem( segm, layerMap ); } } for( BOARD_ITEM* zone : frame()->GetBoard()->Zones() ) - hasChanges |= swapBoardItem( zone, new_layer ); + hasChanges |= swapBoardItem( zone, layerMap ); for( BOARD_ITEM* drawing : frame()->GetBoard()->Drawings() ) - hasChanges |= swapBoardItem( drawing, new_layer ); + hasChanges |= swapBoardItem( drawing, layerMap ); if( hasChanges ) { diff --git a/pcbnew/tools/global_edit_tool.h b/pcbnew/tools/global_edit_tool.h index 96236d82a4..7813f817ac 100644 --- a/pcbnew/tools/global_edit_tool.h +++ b/pcbnew/tools/global_edit_tool.h @@ -64,7 +64,7 @@ public: int RemoveUnusedPads( const TOOL_EVENT& aEvent ); private: - bool swapBoardItem( BOARD_ITEM* aItem, PCB_LAYER_ID* new_layer ); + bool swapBoardItem( BOARD_ITEM* aItem, PCB_LAYER_ID* aLayerMap ); ///> Sets up handlers for various events. void setTransitions() override; diff --git a/pcbnew/tools/group_tool.cpp b/pcbnew/tools/group_tool.cpp index 65aef4af8e..58ac530e58 100644 --- a/pcbnew/tools/group_tool.cpp +++ b/pcbnew/tools/group_tool.cpp @@ -355,12 +355,12 @@ int GROUP_TOOL::Group( const TOOL_EVENT& aEvent ) if( m_isFootprintEditor ) { - MODULE* module = board->GetFirstModule(); + MODULE* parentFootprint = board->GetFirstFootprint(); - m_frame->SaveCopyInUndoList( module, UNDO_REDO::CHANGED ); + m_frame->SaveCopyInUndoList( parentFootprint, UNDO_REDO::CHANGED ); - group = new PCB_GROUP( module ); - module->Add( group ); + group = new PCB_GROUP( parentFootprint ); + parentFootprint->Add( group ); for( EDA_ITEM* item : selection ) group->AddItem( static_cast( item ) ); @@ -413,12 +413,12 @@ int GROUP_TOOL::Ungroup( const TOOL_EVENT& aEvent ) { if( m_isFootprintEditor ) { - MODULE* module = board->GetFirstModule(); + MODULE* parentFootprint = board->GetFirstFootprint(); - m_frame->SaveCopyInUndoList( module, UNDO_REDO::CHANGED ); + m_frame->SaveCopyInUndoList( parentFootprint, UNDO_REDO::CHANGED ); group->RemoveAll(); - module->Remove( group ); + parentFootprint->Remove( group ); } else { diff --git a/pcbnew/tools/pad_tool.cpp b/pcbnew/tools/pad_tool.cpp index 2088d7287a..573015316c 100644 --- a/pcbnew/tools/pad_tool.cpp +++ b/pcbnew/tools/pad_tool.cpp @@ -252,7 +252,7 @@ int PAD_TOOL::pushPadSettings( const TOOL_EVENT& aEvent ) int PAD_TOOL::EnumeratePads( const TOOL_EVENT& aEvent ) { - if( !board()->GetFirstModule() || board()->GetFirstModule()->Pads().empty() ) + if( !board()->GetFirstFootprint() || board()->GetFirstFootprint()->Pads().empty() ) return 0; DIALOG_ENUM_PADS settingsDlg( frame() ); @@ -437,7 +437,7 @@ int PAD_TOOL::EnumeratePads( const TOOL_EVENT& aEvent ) statusPopup.Move( wxGetMousePosition() + wxPoint( 20, 20 ) ); } - for( auto p : board()->GetFirstModule()->Pads() ) + for( D_PAD* p : board()->GetFirstFootprint()->Pads() ) { p->ClearSelected(); view->Update( p ); @@ -450,7 +450,7 @@ int PAD_TOOL::EnumeratePads( const TOOL_EVENT& aEvent ) int PAD_TOOL::PlacePad( const TOOL_EVENT& aEvent ) { - if( !board()->GetFirstModule() ) + if( !board()->GetFirstFootprint() ) return 0; struct PAD_PLACER : public INTERACTIVE_PLACER_BASE @@ -466,14 +466,14 @@ int PAD_TOOL::PlacePad( const TOOL_EVENT& aEvent ) std::unique_ptr CreateItem() override { - D_PAD* pad = new D_PAD( m_board->GetFirstModule() ); + D_PAD* pad = new D_PAD( m_board->GetFirstFootprint() ); pad->ImportSettingsFrom( m_frame->GetDesignSettings().m_Pad_Master ); if( PAD_NAMING::PadCanHaveName( *pad ) ) { wxString padName = m_padTool->GetLastPadName(); - padName = m_board->GetFirstModule()->GetNextPadName( padName ); + padName = m_board->GetFirstFootprint()->GetNextPadName( padName ); pad->SetName( padName ); m_padTool->SetLastPadName( padName ); } @@ -582,7 +582,7 @@ PCB_LAYER_ID PAD_TOOL::explodePad( D_PAD* aPad ) for( const std::shared_ptr& primitive : aPad->GetPrimitives() ) { - FP_SHAPE* shape = new FP_SHAPE( board()->GetFirstModule() ); + FP_SHAPE* shape = new FP_SHAPE( board()->GetFirstFootprint() ); shape->SetShape( primitive->GetShape() ); shape->SetWidth( primitive->GetWidth() ); @@ -622,7 +622,7 @@ void PAD_TOOL::recombinePad( D_PAD* aPad ) aPad->TransformShapeWithClearanceToPolygon( padPoly, aLayer, 0, maxError, ERROR_INSIDE ); - for( BOARD_ITEM* item : board()->GetFirstModule()->GraphicalItems() ) + for( BOARD_ITEM* item : board()->GetFirstFootprint()->GraphicalItems() ) { PCB_SHAPE* draw = dynamic_cast( item ); diff --git a/pcbnew/tools/pcb_tool_base.h b/pcbnew/tools/pcb_tool_base.h index d97d72e21b..541003f8d6 100644 --- a/pcbnew/tools/pcb_tool_base.h +++ b/pcbnew/tools/pcb_tool_base.h @@ -161,7 +161,7 @@ protected: MODULE* module() const { - return board()->GetFirstModule(); + return board()->GetFirstFootprint(); } const PCB_DISPLAY_OPTIONS& displayOptions() const; diff --git a/pcbnew/tools/pcb_viewer_tools.h b/pcbnew/tools/pcb_viewer_tools.h index 298c32c6ef..60108f89a4 100644 --- a/pcbnew/tools/pcb_viewer_tools.h +++ b/pcbnew/tools/pcb_viewer_tools.h @@ -112,7 +112,7 @@ protected: MODULE* module() const { - return board()->GetFirstModule(); + return board()->GetFirstFootprint(); } }; diff --git a/pcbnew/tools/pcbnew_control.cpp b/pcbnew/tools/pcbnew_control.cpp index 2e3c5ec57a..8aa4f8967a 100644 --- a/pcbnew/tools/pcbnew_control.cpp +++ b/pcbnew/tools/pcbnew_control.cpp @@ -446,7 +446,7 @@ int PCBNEW_CONTROL::GridResetOrigin( const TOOL_EVENT& aEvent ) int PCBNEW_CONTROL::DeleteItemCursor( const TOOL_EVENT& aEvent ) { - if( m_isFootprintEditor && !m_frame->GetBoard()->GetFirstModule() ) + if( m_isFootprintEditor && !m_frame->GetBoard()->GetFirstFootprint() ) return 0; std::string tool = aEvent.GetCommandStr().get(); @@ -539,22 +539,22 @@ int PCBNEW_CONTROL::DeleteItemCursor( const TOOL_EVENT& aEvent ) } -void pasteModuleItemsToModEdit( MODULE* aClipModule, BOARD* aBoard, - std::vector& aPastedItems ) +void pasteFootprintItemsToFootprintEditor( MODULE* aClipFootprint, BOARD* aBoard, + std::vector& aPastedItems ) { - MODULE* editModule = aBoard->GetFirstModule(); + MODULE* editorFootprint = aBoard->GetFirstFootprint(); - aClipModule->SetParent( aBoard ); + aClipFootprint->SetParent( aBoard ); - for( D_PAD* pad : aClipModule->Pads() ) + for( D_PAD* pad : aClipFootprint->Pads() ) { - pad->SetParent( editModule ); + pad->SetParent( editorFootprint ); aPastedItems.push_back( pad ); } - aClipModule->Pads().clear(); + aClipFootprint->Pads().clear(); - for( BOARD_ITEM* item : aClipModule->GraphicalItems() ) + for( BOARD_ITEM* item : aClipFootprint->GraphicalItems() ) { if( item->Type() == PCB_FP_SHAPE_T ) { @@ -571,53 +571,53 @@ void pasteModuleItemsToModEdit( MODULE* aClipModule, BOARD* aBoard, text->SetType( FP_TEXT::TEXT_is_DIVERS ); if( text->GetText() == "${VALUE}" ) - text->SetText( aClipModule->GetValue() ); + text->SetText( aClipFootprint->GetValue() ); else if( text->GetText() == "${REFERENCE}" ) - text->SetText( aClipModule->GetReference() ); + text->SetText( aClipFootprint->GetReference() ); - text->SetTextAngle( aClipModule->GetOrientation() ); + text->SetTextAngle( aClipFootprint->GetOrientation() ); text->SetParent( nullptr ); text->SetLocalCoord(); } - item->SetParent( editModule ); + item->SetParent( editorFootprint ); aPastedItems.push_back( item ); } - aClipModule->GraphicalItems().clear(); + aClipFootprint->GraphicalItems().clear(); - for( PCB_GROUP* group : aClipModule->Groups() ) + for( PCB_GROUP* group : aClipFootprint->Groups() ) { - group->SetParent( editModule ); + group->SetParent( editorFootprint ); aPastedItems.push_back( group ); } - aClipModule->Groups().clear(); + aClipFootprint->Groups().clear(); - if( !aClipModule->GetReference().IsEmpty() ) + if( !aClipFootprint->GetReference().IsEmpty() ) { - FP_TEXT* text = new FP_TEXT( aClipModule->Reference() ); + FP_TEXT* text = new FP_TEXT( aClipFootprint->Reference() ); text->SetType( FP_TEXT::TEXT_is_DIVERS ); - text->SetTextAngle( aClipModule->GetOrientation() ); + text->SetTextAngle( aClipFootprint->GetOrientation() ); text->SetParent( nullptr ); text->SetLocalCoord(); - text->SetParent( editModule ); + text->SetParent( editorFootprint ); aPastedItems.push_back( text ); } - if( !aClipModule->GetValue().IsEmpty() ) + if( !aClipFootprint->GetValue().IsEmpty() ) { - FP_TEXT* text = new FP_TEXT( aClipModule->Value() ); + FP_TEXT* text = new FP_TEXT( aClipFootprint->Value() ); text->SetType( FP_TEXT::TEXT_is_DIVERS ); - text->SetTextAngle( aClipModule->GetOrientation() ); + text->SetTextAngle( aClipFootprint->GetOrientation() ); text->SetParent( nullptr ); text->SetLocalCoord(); - text->SetParent( editModule ); + text->SetParent( editorFootprint ); aPastedItems.push_back( text ); } } @@ -635,23 +635,25 @@ int PCBNEW_CONTROL::Paste( const TOOL_EVENT& aEvent ) if( !frame()->IsType( FRAME_FOOTPRINT_EDITOR ) && !frame()->IsType( FRAME_PCB_EDITOR ) ) return 0; - bool editModules = m_isFootprintEditor || frame()->IsType( FRAME_FOOTPRINT_EDITOR ); + bool isFootprintEditor = m_isFootprintEditor || frame()->IsType( FRAME_FOOTPRINT_EDITOR ); if( clipItem->Type() == PCB_T ) { - if( editModules ) + if( isFootprintEditor ) { for( BOARD_CONNECTED_ITEM* item : static_cast( clipItem )->AllConnectedItems() ) item->SetNet( NETINFO_LIST::OrphanedItem() ); } else + { static_cast( clipItem )->MapNets( m_frame->GetBoard() ); + } } // The clipboard can contain two different things, an entire kicad_pcb // or a single module - if( editModules && ( !board() || !module() ) ) + if( isFootprintEditor && ( !board() || !module() ) ) { return 0; } @@ -662,13 +664,13 @@ int PCBNEW_CONTROL::Paste( const TOOL_EVENT& aEvent ) { BOARD* clipBoard = static_cast( clipItem ); - if( editModules ) + if( isFootprintEditor ) { - MODULE* editModule = board()->GetFirstModule(); + MODULE* editorFootprint = board()->GetFirstFootprint(); std::vector pastedItems; - for( MODULE* clipModule : clipBoard->Modules() ) - pasteModuleItemsToModEdit( clipModule, board(), pastedItems ); + for( MODULE* clipFootprint : clipBoard->Modules() ) + pasteFootprintItemsToFootprintEditor( clipFootprint, board(), pastedItems ); for( BOARD_ITEM* clipDrawItem : clipBoard->Drawings() ) { @@ -677,12 +679,12 @@ int PCBNEW_CONTROL::Paste( const TOOL_EVENT& aEvent ) PCB_SHAPE* clipShape = static_cast( clipDrawItem ); // Convert to PCB_FP_SHAPE_T - FP_SHAPE* pastedShape = new FP_SHAPE( editModule ); + FP_SHAPE* pastedShape = new FP_SHAPE( editorFootprint ); static_cast( pastedShape )->SwapData( clipShape ); pastedShape->SetLocalCoord(); // Replace parent nuked by above call to SwapData() - pastedShape->SetParent( editModule ); + pastedShape->SetParent( editorFootprint ); pastedItems.push_back( pastedShape ); } else if( clipDrawItem->Type() == PCB_TEXT_T ) @@ -690,11 +692,11 @@ int PCBNEW_CONTROL::Paste( const TOOL_EVENT& aEvent ) PCB_TEXT* clipTextItem = static_cast( clipDrawItem ); // Convert to PCB_FP_TEXT_T - FP_TEXT* pastedTextItem = new FP_TEXT( editModule ); + FP_TEXT* pastedTextItem = new FP_TEXT( editorFootprint ); static_cast( pastedTextItem )->SwapText( *clipTextItem ); static_cast( pastedTextItem )->SwapEffects( *clipTextItem ); - pastedTextItem->SetParent( editModule ); + pastedTextItem->SetParent( editorFootprint ); pastedItems.push_back( pastedTextItem ); } } @@ -716,18 +718,18 @@ int PCBNEW_CONTROL::Paste( const TOOL_EVENT& aEvent ) case PCB_MODULE_T: { - MODULE* clipModule = static_cast( clipItem ); + MODULE* clipFootprint = static_cast( clipItem ); std::vector pastedItems; - if( editModules ) + if( isFootprintEditor ) { - pasteModuleItemsToModEdit( clipModule, board(), pastedItems ); - delete clipModule; + pasteFootprintItemsToFootprintEditor( clipFootprint, board(), pastedItems ); + delete clipFootprint; } else { - clipModule->SetParent( board() ); - pastedItems.push_back( clipModule ); + clipFootprint->SetParent( board() ); + pastedItems.push_back( clipFootprint ); } placeBoardItems( pastedItems, true, true );