Allow Update Schematic from PCB to re-link based on refdes.
Fixes https://gitlab.com/kicad/code/kicad/issues/4306
This commit is contained in:
parent
11ef147a36
commit
944c9eac7c
|
@ -178,6 +178,18 @@ int SCH_REFERENCE_LIST::FindRefByPath( const wxString& aPath ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SCH_REFERENCE_LIST::FindRef( const wxString& aRef ) const
|
||||||
|
{
|
||||||
|
for( size_t i = 0; i < flatList.size(); ++i )
|
||||||
|
{
|
||||||
|
if( flatList[i].GetRef() == aRef )
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_REFERENCE_LIST::GetRefsInUse( int aIndex, std::vector< int >& aIdList, int aMinRefId )
|
void SCH_REFERENCE_LIST::GetRefsInUse( int aIndex, std::vector< int >& aIdList, int aMinRefId )
|
||||||
{
|
{
|
||||||
aIdList.clear();
|
aIdList.clear();
|
||||||
|
|
|
@ -42,7 +42,19 @@ DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB( SCH_EDIT_FRAME* aParent )
|
||||||
m_messagePanel->SetLazyUpdate( true );
|
m_messagePanel->SetLazyUpdate( true );
|
||||||
m_messagePanel->GetSizer()->SetSizeHints( this );
|
m_messagePanel->GetSizer()->SetSizeHints( this );
|
||||||
|
|
||||||
m_cbUpdateReferences->SetValue( s_savedDialogState.UpdateReferences );
|
m_cbRelinkFootprints->SetValue( s_savedDialogState.MatchByReference );
|
||||||
|
|
||||||
|
if( m_cbRelinkFootprints->GetValue() )
|
||||||
|
{
|
||||||
|
m_cbUpdateReferences->SetValue( false );
|
||||||
|
m_cbUpdateReferences->Enable( false );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_cbUpdateReferences->SetValue( s_savedDialogState.UpdateReferences );
|
||||||
|
m_cbUpdateReferences->Enable( true );
|
||||||
|
}
|
||||||
|
|
||||||
m_cbUpdateFootprints->SetValue( s_savedDialogState.UpdateFootprints );
|
m_cbUpdateFootprints->SetValue( s_savedDialogState.UpdateFootprints );
|
||||||
m_cbUpdateValues->SetValue( s_savedDialogState.UpdateValues );
|
m_cbUpdateValues->SetValue( s_savedDialogState.UpdateValues );
|
||||||
m_cbUpdateNetNames->SetValue( s_savedDialogState.UpdateNetNames );
|
m_cbUpdateNetNames->SetValue( s_savedDialogState.UpdateNetNames );
|
||||||
|
@ -64,6 +76,7 @@ void DIALOG_UPDATE_FROM_PCB::updateData()
|
||||||
m_messagePanel->Clear();
|
m_messagePanel->Clear();
|
||||||
BACK_ANNOTATE backAnno( this->m_frame,
|
BACK_ANNOTATE backAnno( this->m_frame,
|
||||||
m_messagePanel->Reporter(),
|
m_messagePanel->Reporter(),
|
||||||
|
m_cbRelinkFootprints->GetValue(),
|
||||||
m_cbUpdateFootprints->GetValue(),
|
m_cbUpdateFootprints->GetValue(),
|
||||||
m_cbUpdateValues->GetValue(),
|
m_cbUpdateValues->GetValue(),
|
||||||
m_cbUpdateReferences->GetValue(),
|
m_cbUpdateReferences->GetValue(),
|
||||||
|
@ -91,12 +104,34 @@ DIALOG_UPDATE_FROM_PCB::~DIALOG_UPDATE_FROM_PCB()
|
||||||
|
|
||||||
void DIALOG_UPDATE_FROM_PCB::OnOptionChanged( wxCommandEvent& event )
|
void DIALOG_UPDATE_FROM_PCB::OnOptionChanged( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
|
if( event.GetEventObject() == m_cbRelinkFootprints )
|
||||||
|
{
|
||||||
|
if( m_cbRelinkFootprints->GetValue() )
|
||||||
|
{
|
||||||
|
m_cbUpdateReferences->SetValue( false );
|
||||||
|
m_cbUpdateReferences->Enable( false );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_cbUpdateReferences->SetValue( s_savedDialogState.UpdateReferences );
|
||||||
|
m_cbUpdateReferences->Enable( true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
updateData();
|
updateData();
|
||||||
s_savedDialogState.UpdateReferences = m_cbUpdateReferences->GetValue();
|
|
||||||
s_savedDialogState.UpdateFootprints = m_cbUpdateFootprints->GetValue();
|
if( event.GetEventObject() == m_cbRelinkFootprints )
|
||||||
s_savedDialogState.UpdateValues = m_cbUpdateValues->GetValue();
|
s_savedDialogState.MatchByReference = m_cbRelinkFootprints->GetValue();
|
||||||
s_savedDialogState.UpdateNetNames = m_cbUpdateNetNames->GetValue();
|
else if( event.GetEventObject() == m_cbUpdateReferences )
|
||||||
s_savedDialogState.IgnoreOtherProjectsErrors = m_cbIgnoreOtherProjects->GetValue();
|
s_savedDialogState.UpdateReferences = m_cbUpdateReferences->GetValue();
|
||||||
|
else if( event.GetEventObject() == m_cbUpdateFootprints )
|
||||||
|
s_savedDialogState.UpdateFootprints = m_cbUpdateFootprints->GetValue();
|
||||||
|
else if( event.GetEventObject() == m_cbUpdateValues )
|
||||||
|
s_savedDialogState.UpdateValues = m_cbUpdateValues->GetValue();
|
||||||
|
else if( event.GetEventObject() == m_cbUpdateNetNames )
|
||||||
|
s_savedDialogState.UpdateNetNames = m_cbUpdateNetNames->GetValue();
|
||||||
|
else if( event.GetEventObject() == m_cbIgnoreOtherProjects )
|
||||||
|
s_savedDialogState.IgnoreOtherProjectsErrors = m_cbIgnoreOtherProjects->GetValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DIALOG_UPDATE_FROM_PCB::OnUpdateClick( wxCommandEvent& event )
|
void DIALOG_UPDATE_FROM_PCB::OnUpdateClick( wxCommandEvent& event )
|
||||||
|
@ -105,6 +140,7 @@ void DIALOG_UPDATE_FROM_PCB::OnUpdateClick( wxCommandEvent& event )
|
||||||
m_messagePanel->Clear();
|
m_messagePanel->Clear();
|
||||||
BACK_ANNOTATE backAnno( m_frame,
|
BACK_ANNOTATE backAnno( m_frame,
|
||||||
m_messagePanel->Reporter(),
|
m_messagePanel->Reporter(),
|
||||||
|
m_cbRelinkFootprints->GetValue(),
|
||||||
m_cbUpdateFootprints->GetValue(),
|
m_cbUpdateFootprints->GetValue(),
|
||||||
m_cbUpdateValues->GetValue(),
|
m_cbUpdateValues->GetValue(),
|
||||||
m_cbUpdateReferences->GetValue(),
|
m_cbUpdateReferences->GetValue(),
|
||||||
|
@ -119,6 +155,10 @@ void DIALOG_UPDATE_FROM_PCB::OnUpdateClick( wxCommandEvent& event )
|
||||||
m_frame->SyncView();
|
m_frame->SyncView();
|
||||||
m_frame->OnModify();
|
m_frame->OnModify();
|
||||||
m_frame->GetCanvas()->Refresh();
|
m_frame->GetCanvas()->Refresh();
|
||||||
|
|
||||||
|
if( m_cbRelinkFootprints->GetValue() )
|
||||||
|
backAnno.PushNewLinksToPCB();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_messagePanel->Flush( true );
|
m_messagePanel->Flush( true );
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ class DIALOG_UPDATE_FROM_PCB : public DIALOG_UPDATE_FROM_PCB_BASE
|
||||||
struct DIALOG_UPDATE_FROM_PCB_SAVED_STATE
|
struct DIALOG_UPDATE_FROM_PCB_SAVED_STATE
|
||||||
{
|
{
|
||||||
// Flags to remember last checkboxes state
|
// Flags to remember last checkboxes state
|
||||||
|
bool MatchByReference;
|
||||||
bool UpdateReferences;
|
bool UpdateReferences;
|
||||||
bool UpdateFootprints;
|
bool UpdateFootprints;
|
||||||
bool UpdateValues;
|
bool UpdateValues;
|
||||||
|
|
|
@ -25,53 +25,68 @@ DIALOG_UPDATE_FROM_PCB_BASE::DIALOG_UPDATE_FROM_PCB_BASE( wxWindow* parent, wxWi
|
||||||
sbSizerOptions = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxVERTICAL );
|
sbSizerOptions = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxVERTICAL );
|
||||||
|
|
||||||
wxFlexGridSizer* fgSizer1;
|
wxFlexGridSizer* fgSizer1;
|
||||||
fgSizer1 = new wxFlexGridSizer( 0, 2, 0, 0 );
|
fgSizer1 = new wxFlexGridSizer( 0, 1, 0, 0 );
|
||||||
fgSizer1->SetFlexibleDirection( wxVERTICAL );
|
fgSizer1->SetFlexibleDirection( wxVERTICAL );
|
||||||
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||||
|
|
||||||
m_cbUpdateReferences = new wxCheckBox( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Update reference designators"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_cbRelinkFootprints = new wxCheckBox( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Re-link footprints to schematic symbols based on their reference designators"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
m_cbUpdateReferences->SetValue(true);
|
m_cbRelinkFootprints->SetToolTip( _("Normally footprints are linked to their symbols via their Unique IDs. Select this option only if you want to reset the footprint linkages based on their reference designators.") );
|
||||||
m_cbUpdateReferences->SetToolTip( _("Update references of symbols that have been changed in the PCB editor.") );
|
|
||||||
|
|
||||||
fgSizer1->Add( m_cbUpdateReferences, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
fgSizer1->Add( m_cbRelinkFootprints, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
m_cbIgnoreOtherProjects = new wxCheckBox( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Ignore errors in shared schematic sheets"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_cbIgnoreOtherProjects = new wxCheckBox( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Ignore errors in shared schematic sheets"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
m_cbIgnoreOtherProjects->SetToolTip( _("Shared schematic sheets used in complex hierarchies have constraints. They are not always compatible with back annotation when updating footprints and values . \nIf this option is selected, errors generated by sharing will be disabled.") );
|
m_cbIgnoreOtherProjects->SetToolTip( _("Shared schematic sheets used in complex hierarchies have constraints. They are not always compatible with back annotation when updating footprints and values . \nIf this option is selected, errors generated by sharing will be disabled.") );
|
||||||
|
|
||||||
fgSizer1->Add( m_cbIgnoreOtherProjects, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
fgSizer1->Add( m_cbIgnoreOtherProjects, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
m_cbUpdateValues = new wxCheckBox( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Update values"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
||||||
m_cbUpdateValues->SetToolTip( _("Update symbols values that have been replaced in the PCB editor.") );
|
|
||||||
|
|
||||||
fgSizer1->Add( m_cbUpdateValues, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
sbSizerOptions->Add( fgSizer1, 1, wxEXPAND|wxBOTTOM, 5 );
|
||||||
|
|
||||||
|
|
||||||
fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
m_cbUpdateFootprints = new wxCheckBox( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Update footprint assingments"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
||||||
m_cbUpdateFootprints->SetToolTip( _("Update footprint associations of symbols whose footprints have been replaced with different footprints in PCB.") );
|
|
||||||
|
|
||||||
fgSizer1->Add( m_cbUpdateFootprints, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
m_cbUpdateNetNames = new wxCheckBox( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Update net names"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
||||||
fgSizer1->Add( m_cbUpdateNetNames, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
sbSizerOptions->Add( fgSizer1, 1, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
bUpperSizer->Add( sbSizerOptions, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
bUpperSizer->Add( sbSizerOptions, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
wxStaticBoxSizer* sbSizer2;
|
||||||
|
sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Update") ), wxVERTICAL );
|
||||||
|
|
||||||
|
wxFlexGridSizer* fgSizer2;
|
||||||
|
fgSizer2 = new wxFlexGridSizer( 0, 2, 0, 0 );
|
||||||
|
fgSizer2->AddGrowableCol( 0 );
|
||||||
|
fgSizer2->AddGrowableCol( 1 );
|
||||||
|
fgSizer2->SetFlexibleDirection( wxBOTH );
|
||||||
|
fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||||
|
|
||||||
|
m_cbUpdateReferences = new wxCheckBox( sbSizer2->GetStaticBox(), wxID_ANY, _("Reference designators"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_cbUpdateReferences->SetValue(true);
|
||||||
|
m_cbUpdateReferences->SetToolTip( _("Update references of symbols that have been changed in the PCB editor.") );
|
||||||
|
|
||||||
|
fgSizer2->Add( m_cbUpdateReferences, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
m_cbUpdateFootprints = new wxCheckBox( sbSizer2->GetStaticBox(), wxID_ANY, _("Footprint assignments"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_cbUpdateFootprints->SetToolTip( _("Update footprint associations of symbols whose footprints have been replaced with different footprints in PCB.") );
|
||||||
|
|
||||||
|
fgSizer2->Add( m_cbUpdateFootprints, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
m_cbUpdateValues = new wxCheckBox( sbSizer2->GetStaticBox(), wxID_ANY, _("Values"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_cbUpdateValues->SetToolTip( _("Update symbols values that have been replaced in the PCB editor.") );
|
||||||
|
|
||||||
|
fgSizer2->Add( m_cbUpdateValues, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
m_cbUpdateNetNames = new wxCheckBox( sbSizer2->GetStaticBox(), wxID_ANY, _("Net names"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
fgSizer2->Add( m_cbUpdateNetNames, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
sbSizer2->Add( fgSizer2, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
bUpperSizer->Add( sbSizer2, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
|
||||||
bMainSizer->Add( bUpperSizer, 0, wxALL|wxEXPAND, 5 );
|
bMainSizer->Add( bUpperSizer, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
wxBoxSizer* bLowerSizer;
|
wxBoxSizer* bLowerSizer;
|
||||||
bLowerSizer = new wxBoxSizer( wxVERTICAL );
|
bLowerSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
bLowerSizer->SetMinSize( wxSize( 660,300 ) );
|
bLowerSizer->SetMinSize( wxSize( 600,260 ) );
|
||||||
m_messagePanel = new WX_HTML_REPORT_PANEL( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
m_messagePanel = new WX_HTML_REPORT_PANEL( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||||
bLowerSizer->Add( m_messagePanel, 1, wxEXPAND | wxALL, 5 );
|
bLowerSizer->Add( m_messagePanel, 1, wxEXPAND | wxALL, 5 );
|
||||||
|
|
||||||
|
@ -93,10 +108,11 @@ DIALOG_UPDATE_FROM_PCB_BASE::DIALOG_UPDATE_FROM_PCB_BASE( wxWindow* parent, wxWi
|
||||||
bMainSizer->Fit( this );
|
bMainSizer->Fit( this );
|
||||||
|
|
||||||
// Connect Events
|
// Connect Events
|
||||||
m_cbUpdateReferences->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbRelinkFootprints->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_cbIgnoreOtherProjects->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbIgnoreOtherProjects->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_cbUpdateValues->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbUpdateReferences->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_cbUpdateFootprints->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbUpdateFootprints->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
|
m_cbUpdateValues->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_cbUpdateNetNames->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbUpdateNetNames->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnUpdateClick ), NULL, this );
|
m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnUpdateClick ), NULL, this );
|
||||||
}
|
}
|
||||||
|
@ -104,10 +120,11 @@ DIALOG_UPDATE_FROM_PCB_BASE::DIALOG_UPDATE_FROM_PCB_BASE( wxWindow* parent, wxWi
|
||||||
DIALOG_UPDATE_FROM_PCB_BASE::~DIALOG_UPDATE_FROM_PCB_BASE()
|
DIALOG_UPDATE_FROM_PCB_BASE::~DIALOG_UPDATE_FROM_PCB_BASE()
|
||||||
{
|
{
|
||||||
// Disconnect Events
|
// Disconnect Events
|
||||||
m_cbUpdateReferences->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbRelinkFootprints->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_cbIgnoreOtherProjects->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbIgnoreOtherProjects->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_cbUpdateValues->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbUpdateReferences->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_cbUpdateFootprints->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbUpdateFootprints->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
|
m_cbUpdateValues->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_cbUpdateNetNames->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
m_cbUpdateNetNames->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnOptionChanged ), NULL, this );
|
||||||
m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnUpdateClick ), NULL, this );
|
m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_FROM_PCB_BASE::OnUpdateClick ), NULL, this );
|
||||||
|
|
||||||
|
|
|
@ -81,10 +81,10 @@
|
||||||
<property name="permission">none</property>
|
<property name="permission">none</property>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxEXPAND</property>
|
<property name="flag">wxEXPAND|wxBOTTOM</property>
|
||||||
<property name="proportion">1</property>
|
<property name="proportion">1</property>
|
||||||
<object class="wxFlexGridSizer" expanded="1">
|
<object class="wxFlexGridSizer" expanded="1">
|
||||||
<property name="cols">2</property>
|
<property name="cols">1</property>
|
||||||
<property name="flexible_direction">wxVERTICAL</property>
|
<property name="flexible_direction">wxVERTICAL</property>
|
||||||
<property name="growablecols"></property>
|
<property name="growablecols"></property>
|
||||||
<property name="growablerows"></property>
|
<property name="growablerows"></property>
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
|
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
|
||||||
<property name="proportion">0</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxCheckBox" expanded="0">
|
<object class="wxCheckBox" expanded="1">
|
||||||
<property name="BottomDockable">1</property>
|
<property name="BottomDockable">1</property>
|
||||||
<property name="LeftDockable">1</property>
|
<property name="LeftDockable">1</property>
|
||||||
<property name="RightDockable">1</property>
|
<property name="RightDockable">1</property>
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
<property name="caption"></property>
|
<property name="caption"></property>
|
||||||
<property name="caption_visible">1</property>
|
<property name="caption_visible">1</property>
|
||||||
<property name="center_pane">0</property>
|
<property name="center_pane">0</property>
|
||||||
<property name="checked">1</property>
|
<property name="checked">0</property>
|
||||||
<property name="close_button">1</property>
|
<property name="close_button">1</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
<property name="context_menu">1</property>
|
<property name="context_menu">1</property>
|
||||||
|
@ -128,7 +128,7 @@
|
||||||
<property name="gripper">0</property>
|
<property name="gripper">0</property>
|
||||||
<property name="hidden">0</property>
|
<property name="hidden">0</property>
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
<property name="label">Update reference designators</property>
|
<property name="label">Re-link footprints to schematic symbols based on their reference designators</property>
|
||||||
<property name="max_size"></property>
|
<property name="max_size"></property>
|
||||||
<property name="maximize_button">0</property>
|
<property name="maximize_button">0</property>
|
||||||
<property name="maximum_size"></property>
|
<property name="maximum_size"></property>
|
||||||
|
@ -136,7 +136,7 @@
|
||||||
<property name="minimize_button">0</property>
|
<property name="minimize_button">0</property>
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
<property name="moveable">1</property>
|
<property name="moveable">1</property>
|
||||||
<property name="name">m_cbUpdateReferences</property>
|
<property name="name">m_cbRelinkFootprints</property>
|
||||||
<property name="pane_border">1</property>
|
<property name="pane_border">1</property>
|
||||||
<property name="pane_position"></property>
|
<property name="pane_position"></property>
|
||||||
<property name="pane_size"></property>
|
<property name="pane_size"></property>
|
||||||
|
@ -149,7 +149,7 @@
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass">; ; forward_declare</property>
|
<property name="subclass">; ; forward_declare</property>
|
||||||
<property name="toolbar_pane">0</property>
|
<property name="toolbar_pane">0</property>
|
||||||
<property name="tooltip">Update references of symbols that have been changed in the PCB editor.</property>
|
<property name="tooltip">Normally footprints are linked to their symbols via their Unique IDs. Select this option only if you want to reset the footprint linkages based on their reference designators.</property>
|
||||||
<property name="validator_data_type"></property>
|
<property name="validator_data_type"></property>
|
||||||
<property name="validator_style">wxFILTER_NONE</property>
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
<property name="validator_type">wxDefaultValidator</property>
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
@ -225,6 +225,38 @@
|
||||||
<event name="OnCheckBox">OnOptionChanged</event>
|
<event name="OnCheckBox">OnOptionChanged</event>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxStaticBoxSizer" expanded="1">
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Update</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">sbSizer2</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="parent">1</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxFlexGridSizer" expanded="1">
|
||||||
|
<property name="cols">2</property>
|
||||||
|
<property name="flexible_direction">wxBOTH</property>
|
||||||
|
<property name="growablecols">0,1</property>
|
||||||
|
<property name="growablerows"></property>
|
||||||
|
<property name="hgap">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">fgSizer2</property>
|
||||||
|
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<property name="rows">0</property>
|
||||||
|
<property name="vgap">0</property>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
|
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
|
||||||
|
@ -243,7 +275,7 @@
|
||||||
<property name="caption"></property>
|
<property name="caption"></property>
|
||||||
<property name="caption_visible">1</property>
|
<property name="caption_visible">1</property>
|
||||||
<property name="center_pane">0</property>
|
<property name="center_pane">0</property>
|
||||||
<property name="checked">0</property>
|
<property name="checked">1</property>
|
||||||
<property name="close_button">1</property>
|
<property name="close_button">1</property>
|
||||||
<property name="context_help"></property>
|
<property name="context_help"></property>
|
||||||
<property name="context_menu">1</property>
|
<property name="context_menu">1</property>
|
||||||
|
@ -258,7 +290,7 @@
|
||||||
<property name="gripper">0</property>
|
<property name="gripper">0</property>
|
||||||
<property name="hidden">0</property>
|
<property name="hidden">0</property>
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
<property name="label">Update values</property>
|
<property name="label">Reference designators</property>
|
||||||
<property name="max_size"></property>
|
<property name="max_size"></property>
|
||||||
<property name="maximize_button">0</property>
|
<property name="maximize_button">0</property>
|
||||||
<property name="maximum_size"></property>
|
<property name="maximum_size"></property>
|
||||||
|
@ -266,7 +298,7 @@
|
||||||
<property name="minimize_button">0</property>
|
<property name="minimize_button">0</property>
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
<property name="moveable">1</property>
|
<property name="moveable">1</property>
|
||||||
<property name="name">m_cbUpdateValues</property>
|
<property name="name">m_cbUpdateReferences</property>
|
||||||
<property name="pane_border">1</property>
|
<property name="pane_border">1</property>
|
||||||
<property name="pane_position"></property>
|
<property name="pane_position"></property>
|
||||||
<property name="pane_size"></property>
|
<property name="pane_size"></property>
|
||||||
|
@ -277,9 +309,9 @@
|
||||||
<property name="show">1</property>
|
<property name="show">1</property>
|
||||||
<property name="size"></property>
|
<property name="size"></property>
|
||||||
<property name="style"></property>
|
<property name="style"></property>
|
||||||
<property name="subclass">; forward_declare</property>
|
<property name="subclass">; ; forward_declare</property>
|
||||||
<property name="toolbar_pane">0</property>
|
<property name="toolbar_pane">0</property>
|
||||||
<property name="tooltip">Update symbols values that have been replaced in the PCB editor.</property>
|
<property name="tooltip">Update references of symbols that have been changed in the PCB editor.</property>
|
||||||
<property name="validator_data_type"></property>
|
<property name="validator_data_type"></property>
|
||||||
<property name="validator_style">wxFILTER_NONE</property>
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
<property name="validator_type">wxDefaultValidator</property>
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
@ -290,16 +322,6 @@
|
||||||
<event name="OnCheckBox">OnOptionChanged</event>
|
<event name="OnCheckBox">OnOptionChanged</event>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxEXPAND</property>
|
|
||||||
<property name="proportion">1</property>
|
|
||||||
<object class="spacer" expanded="1">
|
|
||||||
<property name="height">0</property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="width">0</property>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
|
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
|
||||||
|
@ -333,7 +355,7 @@
|
||||||
<property name="gripper">0</property>
|
<property name="gripper">0</property>
|
||||||
<property name="hidden">0</property>
|
<property name="hidden">0</property>
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
<property name="label">Update footprint assingments</property>
|
<property name="label">Footprint assignments</property>
|
||||||
<property name="max_size"></property>
|
<property name="max_size"></property>
|
||||||
<property name="maximize_button">0</property>
|
<property name="maximize_button">0</property>
|
||||||
<property name="maximum_size"></property>
|
<property name="maximum_size"></property>
|
||||||
|
@ -367,12 +389,67 @@
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxEXPAND</property>
|
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
|
||||||
<property name="proportion">1</property>
|
<property name="proportion">0</property>
|
||||||
<object class="spacer" expanded="1">
|
<object class="wxCheckBox" expanded="0">
|
||||||
<property name="height">0</property>
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="checked">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Values</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_cbUpdateValues</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
<property name="permission">protected</property>
|
<property name="permission">protected</property>
|
||||||
<property name="width">0</property>
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass">; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip">Update symbols values that have been replaced in the PCB editor.</property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnCheckBox">OnOptionChanged</event>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
|
@ -408,7 +485,7 @@
|
||||||
<property name="gripper">0</property>
|
<property name="gripper">0</property>
|
||||||
<property name="hidden">0</property>
|
<property name="hidden">0</property>
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_ANY</property>
|
||||||
<property name="label">Update net names</property>
|
<property name="label">Net names</property>
|
||||||
<property name="max_size"></property>
|
<property name="max_size"></property>
|
||||||
<property name="maximize_button">0</property>
|
<property name="maximize_button">0</property>
|
||||||
<property name="maximum_size"></property>
|
<property name="maximum_size"></property>
|
||||||
|
@ -451,7 +528,7 @@
|
||||||
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
|
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
|
||||||
<property name="proportion">1</property>
|
<property name="proportion">1</property>
|
||||||
<object class="wxBoxSizer" expanded="1">
|
<object class="wxBoxSizer" expanded="1">
|
||||||
<property name="minimum_size">660,300</property>
|
<property name="minimum_size">600,260</property>
|
||||||
<property name="name">bLowerSizer</property>
|
<property name="name">bLowerSizer</property>
|
||||||
<property name="orient">wxVERTICAL</property>
|
<property name="orient">wxVERTICAL</property>
|
||||||
<property name="permission">none</property>
|
<property name="permission">none</property>
|
||||||
|
|
|
@ -35,10 +35,11 @@ class DIALOG_UPDATE_FROM_PCB_BASE : public DIALOG_SHIM
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxCheckBox* m_cbUpdateReferences;
|
wxCheckBox* m_cbRelinkFootprints;
|
||||||
wxCheckBox* m_cbIgnoreOtherProjects;
|
wxCheckBox* m_cbIgnoreOtherProjects;
|
||||||
wxCheckBox* m_cbUpdateValues;
|
wxCheckBox* m_cbUpdateReferences;
|
||||||
wxCheckBox* m_cbUpdateFootprints;
|
wxCheckBox* m_cbUpdateFootprints;
|
||||||
|
wxCheckBox* m_cbUpdateValues;
|
||||||
wxCheckBox* m_cbUpdateNetNames;
|
wxCheckBox* m_cbUpdateNetNames;
|
||||||
WX_HTML_REPORT_PANEL* m_messagePanel;
|
WX_HTML_REPORT_PANEL* m_messagePanel;
|
||||||
wxStdDialogButtonSizer* m_sdbSizer;
|
wxStdDialogButtonSizer* m_sdbSizer;
|
||||||
|
|
|
@ -422,6 +422,13 @@ public:
|
||||||
sort( flatList.begin(), flatList.end(), sortByReferenceOnly );
|
sort( flatList.begin(), flatList.end(), sortByReferenceOnly );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* searches the list for a component with a given reference.
|
||||||
|
* @param aPath
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int FindRef( const wxString& aPath ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* searches the sorted list of components for a another component with the same
|
* searches the sorted list of components for a another component with the same
|
||||||
* reference and a given part unit. Use this method to manage components with
|
* reference and a given part unit. Use this method to manage components with
|
||||||
|
@ -433,7 +440,7 @@ public:
|
||||||
int FindUnit( size_t aIndex, int aUnit );
|
int FindUnit( size_t aIndex, int aUnit );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Searches unit with designated path
|
* searches the list for a component with the given KIID path
|
||||||
* @param aPath path to search
|
* @param aPath path to search
|
||||||
* @return index in aComponentsList if found or -1 if not found
|
* @return index in aComponentsList if found or -1 if not found
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -35,11 +35,12 @@
|
||||||
#include <kiface_i.h>
|
#include <kiface_i.h>
|
||||||
#include <wildcards_and_files_ext.h>
|
#include <wildcards_and_files_ext.h>
|
||||||
|
|
||||||
BACK_ANNOTATE::BACK_ANNOTATE( SCH_EDIT_FRAME* aFrame, REPORTER& aReporter,
|
BACK_ANNOTATE::BACK_ANNOTATE( SCH_EDIT_FRAME* aFrame, REPORTER& aReporter, bool aRelinkFootprints,
|
||||||
bool aProcessFootprints, bool aProcessValues,
|
bool aProcessFootprints, bool aProcessValues,
|
||||||
bool aProcessReferences, bool aProcessNetNames,
|
bool aProcessReferences, bool aProcessNetNames,
|
||||||
bool aIgnoreOtherProjects, bool aDryRun ) :
|
bool aIgnoreOtherProjects, bool aDryRun ) :
|
||||||
m_reporter( aReporter ),
|
m_reporter( aReporter ),
|
||||||
|
m_matchByReference( aRelinkFootprints ),
|
||||||
m_processFootprints( aProcessFootprints ),
|
m_processFootprints( aProcessFootprints ),
|
||||||
m_processValues( aProcessValues ),
|
m_processValues( aProcessValues ),
|
||||||
m_processReferences( aProcessReferences ),
|
m_processReferences( aProcessReferences ),
|
||||||
|
@ -113,6 +114,14 @@ bool BACK_ANNOTATE::FetchNetlistFromPCB( std::string& aNetlist )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void BACK_ANNOTATE::PushNewLinksToPCB()
|
||||||
|
{
|
||||||
|
std::string nullPayload;
|
||||||
|
|
||||||
|
m_frame->Kiway().ExpressMail( FRAME_PCB_EDITOR, MAIL_PCB_UPDATE_LINKS, nullPayload );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void BACK_ANNOTATE::getPcbModulesFromString( const std::string& aPayload )
|
void BACK_ANNOTATE::getPcbModulesFromString( const std::string& aPayload )
|
||||||
{
|
{
|
||||||
auto getStr = []( const PTREE& pt ) -> wxString
|
auto getStr = []( const PTREE& pt ) -> wxString
|
||||||
|
@ -142,7 +151,10 @@ void BACK_ANNOTATE::getPcbModulesFromString( const std::string& aPayload )
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
path = getStr( item.second.get_child( "timestamp" ) );
|
if( m_matchByReference )
|
||||||
|
path = ref;
|
||||||
|
else
|
||||||
|
path = getStr( item.second.get_child( "timestamp" ) );
|
||||||
|
|
||||||
if( path == "" )
|
if( path == "" )
|
||||||
{
|
{
|
||||||
|
@ -198,15 +210,20 @@ void BACK_ANNOTATE::getChangeList()
|
||||||
{
|
{
|
||||||
const wxString& pcbPath = module.first;
|
const wxString& pcbPath = module.first;
|
||||||
auto& pcbData = module.second;
|
auto& pcbData = module.second;
|
||||||
|
int refIndex;
|
||||||
bool foundInMultiunit = false;
|
bool foundInMultiunit = false;
|
||||||
|
|
||||||
for( auto& item : m_multiUnitsRefs )
|
for( std::pair<const wxString, SCH_REFERENCE_LIST>& item : m_multiUnitsRefs )
|
||||||
{
|
{
|
||||||
SCH_REFERENCE_LIST& refList = item.second;
|
SCH_REFERENCE_LIST& refList = item.second;
|
||||||
|
|
||||||
if( refList.FindRefByPath( pcbPath ) >= 0 )
|
if( m_matchByReference )
|
||||||
{
|
refIndex = refList.FindRef( pcbPath );
|
||||||
|
else
|
||||||
|
refIndex = refList.FindRefByPath( pcbPath );
|
||||||
|
|
||||||
|
if( refIndex >= 0 )
|
||||||
|
{
|
||||||
// If module linked to multi unit symbol, we add all symbol's units to
|
// If module linked to multi unit symbol, we add all symbol's units to
|
||||||
// the change list
|
// the change list
|
||||||
foundInMultiunit = true;
|
foundInMultiunit = true;
|
||||||
|
@ -224,7 +241,10 @@ void BACK_ANNOTATE::getChangeList()
|
||||||
if( foundInMultiunit )
|
if( foundInMultiunit )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int refIndex = m_refs.FindRefByPath( pcbPath );
|
if( m_matchByReference )
|
||||||
|
refIndex = m_refs.FindRef( pcbPath );
|
||||||
|
else
|
||||||
|
refIndex = m_refs.FindRefByPath( pcbPath );
|
||||||
|
|
||||||
if( refIndex >= 0 )
|
if( refIndex >= 0 )
|
||||||
{
|
{
|
||||||
|
@ -266,6 +286,12 @@ void BACK_ANNOTATE::checkForUnusedSymbols()
|
||||||
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( m_matchByReference && !m_frame->ReadyToNetlist() )
|
||||||
|
{
|
||||||
|
m_reporter.ReportTail( _( "Cannot relink footprints because schematic is not fully annotated" ),
|
||||||
|
RPT_SEVERITY_ERROR );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -79,9 +79,9 @@ public:
|
||||||
|
|
||||||
using CHANGELIST_ITEM = std::pair<SCH_REFERENCE, std::shared_ptr<PCB_MODULE_DATA>>;
|
using CHANGELIST_ITEM = std::pair<SCH_REFERENCE, std::shared_ptr<PCB_MODULE_DATA>>;
|
||||||
|
|
||||||
BACK_ANNOTATE( SCH_EDIT_FRAME* aFrame, REPORTER& aReporter, bool aProcessFootprints,
|
BACK_ANNOTATE( SCH_EDIT_FRAME* aFrame, REPORTER& aReporter, bool aRelinkFootprints,
|
||||||
bool aProcessValues, bool aProcessReferences, bool aProcessNetNames,
|
bool aProcessFootprints, bool aProcessValues, bool aProcessReferences,
|
||||||
bool aIgnoreOtherProjects, bool aDryRun );
|
bool aProcessNetNames, bool aIgnoreOtherProjects, bool aDryRun );
|
||||||
~BACK_ANNOTATE();
|
~BACK_ANNOTATE();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -91,6 +91,8 @@ public:
|
||||||
*/
|
*/
|
||||||
bool FetchNetlistFromPCB( std::string& aNetlist );
|
bool FetchNetlistFromPCB( std::string& aNetlist );
|
||||||
|
|
||||||
|
void PushNewLinksToPCB();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Run back annotation algorithm. If any errors, back annotation doesn't run.
|
* @brief Run back annotation algorithm. If any errors, back annotation doesn't run.
|
||||||
* only report
|
* only report
|
||||||
|
@ -102,6 +104,7 @@ public:
|
||||||
private:
|
private:
|
||||||
REPORTER& m_reporter;
|
REPORTER& m_reporter;
|
||||||
|
|
||||||
|
bool m_matchByReference;
|
||||||
bool m_processFootprints;
|
bool m_processFootprints;
|
||||||
bool m_processValues;
|
bool m_processValues;
|
||||||
bool m_processReferences;
|
bool m_processReferences;
|
||||||
|
|
|
@ -45,6 +45,7 @@ enum MAIL_T
|
||||||
MAIL_IMPORT_FILE, // Import a different format file
|
MAIL_IMPORT_FILE, // Import a different format file
|
||||||
MAIL_SCH_GET_NETLIST, // Fetch a netlist from schematics
|
MAIL_SCH_GET_NETLIST, // Fetch a netlist from schematics
|
||||||
MAIL_PCB_GET_NETLIST, // Fetch a netlist from PCB layout
|
MAIL_PCB_GET_NETLIST, // Fetch a netlist from PCB layout
|
||||||
|
MAIL_PCB_UPDATE_LINKS, // Update the schematic symbol paths in the PCB's footprints
|
||||||
MAIL_SCH_REFRESH, // Tell the schematic editor to refresh the display.
|
MAIL_SCH_REFRESH, // Tell the schematic editor to refresh the display.
|
||||||
|
|
||||||
MAIL_SCH_CLEAN_NETCLASSES, // Tell the schematic editor to clean stale nets out of
|
MAIL_SCH_CLEAN_NETCLASSES, // Tell the schematic editor to clean stale nets out of
|
||||||
|
|
|
@ -41,11 +41,13 @@
|
||||||
#include <kiway_express.h>
|
#include <kiway_express.h>
|
||||||
#include <macros.h>
|
#include <macros.h>
|
||||||
#include <netlist_reader/pcb_netlist.h>
|
#include <netlist_reader/pcb_netlist.h>
|
||||||
|
#include <netlist_reader/board_netlist_updater.h>
|
||||||
#include <pcb_edit_frame.h>
|
#include <pcb_edit_frame.h>
|
||||||
#include <pcbnew_settings.h>
|
#include <pcbnew_settings.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
#include <tools/pcb_actions.h>
|
#include <tools/pcb_actions.h>
|
||||||
#include <tools/selection_tool.h>
|
#include <tools/selection_tool.h>
|
||||||
|
#include <netlist_reader/netlist_reader.h>
|
||||||
|
|
||||||
/* Execute a remote command send by Eeschema via a socket,
|
/* Execute a remote command send by Eeschema via a socket,
|
||||||
* port KICAD_PCB_PORT_SERVICE_NUMBER
|
* port KICAD_PCB_PORT_SERVICE_NUMBER
|
||||||
|
@ -416,8 +418,33 @@ void PCB_EDIT_FRAME::KiwayMailIn( KIWAY_EXPRESS& mail )
|
||||||
|
|
||||||
netlist.Format( "pcb_netlist", &sf, 0, CTL_OMIT_FILTERS );
|
netlist.Format( "pcb_netlist", &sf, 0, CTL_OMIT_FILTERS );
|
||||||
payload = sf.GetString();
|
payload = sf.GetString();
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MAIL_PCB_UPDATE_LINKS:
|
||||||
|
try
|
||||||
|
{
|
||||||
|
NETLIST netlist;
|
||||||
|
FetchNetlistFromSchematic( netlist, NO_ANNOTATION );
|
||||||
|
|
||||||
|
BOARD_NETLIST_UPDATER updater( this, GetBoard() );
|
||||||
|
updater.SetLookupByTimestamp( false );
|
||||||
|
updater.SetDeleteUnusedComponents ( false );
|
||||||
|
updater.SetReplaceFootprints( false );
|
||||||
|
updater.SetDeleteSinglePadNets( false );
|
||||||
|
updater.SetWarnPadNoNetInNetlist( false );
|
||||||
|
updater.UpdateNetlist( netlist );
|
||||||
|
|
||||||
|
bool dummy;
|
||||||
|
OnNetlistChanged( updater, &dummy );
|
||||||
|
}
|
||||||
|
catch( const IO_ERROR& )
|
||||||
|
{
|
||||||
|
assert( false ); // should never happen
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case MAIL_CROSS_PROBE:
|
case MAIL_CROSS_PROBE:
|
||||||
ExecuteRemoteCommand( payload.c_str() );
|
ExecuteRemoteCommand( payload.c_str() );
|
||||||
break;
|
break;
|
||||||
|
@ -448,9 +475,8 @@ void PCB_EDIT_FRAME::KiwayMailIn( KIWAY_EXPRESS& mail )
|
||||||
|
|
||||||
if( importFormat >= 0 )
|
if( importFormat >= 0 )
|
||||||
importFile( path, importFormat );
|
importFile( path, importFormat );
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// many many others.
|
// many many others.
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue