|
|
@ -24,6 +24,7 @@ |
|
|
|
*/ |
|
|
|
|
|
|
|
#include "footprint_editor_tools.h"
|
|
|
|
#include <pad_naming.h>
|
|
|
|
#include "kicad_clipboard.h"
|
|
|
|
#include "selection_tool.h"
|
|
|
|
#include "pcb_actions.h"
|
|
|
@ -69,6 +70,9 @@ MODULE_EDITOR_TOOLS::~MODULE_EDITOR_TOOLS() |
|
|
|
void MODULE_EDITOR_TOOLS::Reset( RESET_REASON aReason ) |
|
|
|
{ |
|
|
|
m_frame = getEditFrame<FOOTPRINT_EDIT_FRAME>(); |
|
|
|
|
|
|
|
if( aReason == MODEL_RELOAD ) |
|
|
|
m_lastPadName = wxT( "1" ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -330,6 +334,11 @@ int MODULE_EDITOR_TOOLS::PlacePad( const TOOL_EVENT& aEvent ) |
|
|
|
|
|
|
|
struct PAD_PLACER : public INTERACTIVE_PLACER_BASE |
|
|
|
{ |
|
|
|
PAD_PLACER( MODULE_EDITOR_TOOLS* aFPEditTools ) |
|
|
|
{ |
|
|
|
m_fpEditTools = aFPEditTools; |
|
|
|
} |
|
|
|
|
|
|
|
virtual ~PAD_PLACER() |
|
|
|
{ |
|
|
|
} |
|
|
@ -337,8 +346,17 @@ int MODULE_EDITOR_TOOLS::PlacePad( const TOOL_EVENT& aEvent ) |
|
|
|
std::unique_ptr<BOARD_ITEM> CreateItem() override |
|
|
|
{ |
|
|
|
D_PAD* pad = new D_PAD( m_board->GetFirstModule() ); |
|
|
|
|
|
|
|
pad->ImportSettingsFrom( m_frame->GetDesignSettings().m_Pad_Master ); |
|
|
|
pad->IncrementPadName( true, true ); |
|
|
|
|
|
|
|
if( PAD_NAMING::PadCanHaveName( *pad ) ) |
|
|
|
{ |
|
|
|
wxString padName = m_fpEditTools->GetLastPadName(); |
|
|
|
padName = m_board->GetFirstModule()->GetNextPadName( padName ); |
|
|
|
pad->SetName( padName ); |
|
|
|
m_fpEditTools->SetLastPadName( padName ); |
|
|
|
} |
|
|
|
|
|
|
|
return std::unique_ptr<BOARD_ITEM>( pad ); |
|
|
|
} |
|
|
|
|
|
|
@ -356,9 +374,11 @@ int MODULE_EDITOR_TOOLS::PlacePad( const TOOL_EVENT& aEvent ) |
|
|
|
|
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
MODULE_EDITOR_TOOLS* m_fpEditTools; |
|
|
|
}; |
|
|
|
|
|
|
|
PAD_PLACER placer; |
|
|
|
PAD_PLACER placer( this ); |
|
|
|
|
|
|
|
doInteractiveItemPlacement( aEvent.GetCommandStr().get(), &placer, _( "Place pad" ), |
|
|
|
IPO_REPEAT | IPO_SINGLE_CLICK | IPO_ROTATE | IPO_FLIP ); |
|
|
@ -513,9 +533,16 @@ int MODULE_EDITOR_TOOLS::CreatePadFromShapes( const TOOL_EVENT& aEvent ) |
|
|
|
pad->SetAttribute( PAD_ATTRIB_SMD ); |
|
|
|
pad->SetLayerSet( D_PAD::SMDMask() ); |
|
|
|
int radius = Millimeter2iu( 0.2 ); |
|
|
|
pad->SetSize ( wxSize( radius, radius ) ); |
|
|
|
pad->IncrementPadName( true, true ); |
|
|
|
pad->SetSize( wxSize( radius, radius ) ); |
|
|
|
pad->SetOrientation( 0 ); |
|
|
|
|
|
|
|
if( PAD_NAMING::PadCanHaveName( *pad ) ) |
|
|
|
{ |
|
|
|
wxString padName = GetLastPadName(); |
|
|
|
padName = board()->GetFirstModule()->GetNextPadName( padName ); |
|
|
|
pad->SetName( padName ); |
|
|
|
SetLastPadName( padName ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
pad->SetShape ( PAD_SHAPE_CUSTOM ); |
|
|
|