Infer pin properties from last pin and default pin pitch.

Fixes: lp:1822183
* https://bugs.launchpad.net/kicad/+bug/1822183
This commit is contained in:
Jeff Young 2019-04-01 02:09:06 +01:00
parent 87f303319c
commit d928aa9780
2 changed files with 27 additions and 3 deletions

View File

@ -34,6 +34,7 @@
#include <kiface_i.h> #include <kiface_i.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <confirm.h> #include <confirm.h>
#include <lib_edit_frame.h>
#define PinTableShownColumnsKey wxT( "PinTableShownColumns" ) #define PinTableShownColumnsKey wxT( "PinTableShownColumns" )
@ -360,8 +361,9 @@ public:
}; };
DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE( wxWindow* parent, LIB_PART* aPart ) : DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE( LIB_EDIT_FRAME* parent, LIB_PART* aPart ) :
DIALOG_LIB_EDIT_PIN_TABLE_BASE( parent ), DIALOG_LIB_EDIT_PIN_TABLE_BASE( parent ),
m_editFrame( parent ),
m_part( aPart ) m_part( aPart )
{ {
m_config = Kiface().KifaceSettings(); m_config = Kiface().KifaceSettings();
@ -528,7 +530,27 @@ void DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow( wxCommandEvent& event )
if( !m_grid->CommitPendingChanges() ) if( !m_grid->CommitPendingChanges() )
return; return;
m_pins.push_back( new LIB_PIN( nullptr ) ); LIB_PIN* newPin = new LIB_PIN( nullptr );
if( m_pins.size() > 0 )
{
LIB_PIN* last = m_pins.back();
newPin->SetOrientation( last->GetOrientation() );
newPin->SetType( last->GetType() );
newPin->SetShape( last->GetShape() );
wxPoint pos = last->GetPosition();
if( last->GetOrientation() == PIN_LEFT || last->GetOrientation() == PIN_RIGHT )
pos.y -= m_editFrame->GetRepeatPinStep();
else
pos.x += m_editFrame->GetRepeatPinStep();
newPin->SetPosition( pos );
}
m_pins.push_back( newPin );
m_dataModel->AppendRow( m_pins[ m_pins.size() - 1 ] ); m_dataModel->AppendRow( m_pins[ m_pins.size() - 1 ] );

View File

@ -43,12 +43,13 @@ enum COL_ORDER
class PIN_TABLE_DATA_MODEL; class PIN_TABLE_DATA_MODEL;
class LIB_EDIT_FRAME;
class DIALOG_LIB_EDIT_PIN_TABLE : public DIALOG_LIB_EDIT_PIN_TABLE_BASE class DIALOG_LIB_EDIT_PIN_TABLE : public DIALOG_LIB_EDIT_PIN_TABLE_BASE
{ {
public: public:
DIALOG_LIB_EDIT_PIN_TABLE( wxWindow* parent, LIB_PART* aPart ); DIALOG_LIB_EDIT_PIN_TABLE( LIB_EDIT_FRAME* parent, LIB_PART* aPart );
~DIALOG_LIB_EDIT_PIN_TABLE() override; ~DIALOG_LIB_EDIT_PIN_TABLE() override;
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
@ -69,6 +70,7 @@ protected:
void updateSummary(); void updateSummary();
void adjustGridColumns( int aWidth ); void adjustGridColumns( int aWidth );
LIB_EDIT_FRAME* m_editFrame;
wxConfigBase* m_config; wxConfigBase* m_config;
bool m_initialized = false; bool m_initialized = false;
int m_originalColWidths[ COL_COUNT ]; int m_originalColWidths[ COL_COUNT ];