pcbnew/dialogs/dialog_track_via_properties.cpp | 21 +++ .../dialogs/dialog_track_via_properties_base.cpp | 7 + .../dialogs/dialog_track_via_properties_base.fbp | 174 +++++++++++++++++++++ pcbnew/dialogs/dialog_track_via_properties_base.h | 2 + 4 files changed, 204 insertions(+) diff --git a/pcbnew/dialogs/dialog_track_via_properties.cpp b/pcbnew/dialogs/dialog_track_via_properties.cpp index 78ca781..598aad8 100644 --- a/pcbnew/dialogs/dialog_track_via_properties.cpp +++ b/pcbnew/dialogs/dialog_track_via_properties.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,7 @@ DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParen { assert( !m_items.Empty() ); + boost::optional NetCode = -1; boost::optional trackStartX, trackStartY, trackEndX, trackEndY, trackWidth; boost::optional trackLayer; boost::optional viaX, viaY, viaDiameter, viaDrill; @@ -58,6 +60,13 @@ DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParen { const BOARD_ITEM* item = m_items.Item( i ); + if ( BOARD_CONNECTED_ITEM::ClassOf( item ) ) + { + int net = static_cast( item )->GetNetCode(); + if ( NetCode == -1 ) NetCode = net; + else if ( NetCode != net ) NetCode = boost::none; + } + switch( item->Type() ) { case PCB_TRACE_T: @@ -195,6 +204,10 @@ DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParen m_lockedCbox->Set3StateValue( wxCHK_UNCHECKED ); } + + NETINFO_ITEM* net = aParent->GetBoard()->FindNet( *NetCode ); + m_NetNameCtrl->SetValue( net ? net->GetShortNetname() : "<...>" ); + m_StdButtonsOK->SetDefault(); FixOSXCancelButtonIssue(); @@ -212,6 +225,7 @@ bool DIALOG_TRACK_VIA_PROPERTIES::Apply( COMMIT& aCommit ) bool changeLock = m_lockedCbox->Get3StateValue() != wxCHK_UNDETERMINED; bool setLock = m_lockedCbox->Get3StateValue() == wxCHK_CHECKED; + NETINFO_ITEM* net = static_cast( GetParent() )->GetBoard()->FindNet( m_NetNameCtrl->GetValue() ); for( int i = 0; i < m_items.Size(); ++i ) { @@ -268,6 +282,9 @@ bool DIALOG_TRACK_VIA_PROPERTIES::Apply( COMMIT& aCommit ) if( changeLock ) t->SetLocked( setLock ); + if ( net ) + t->SetNet( net ); + break; } @@ -322,6 +339,9 @@ bool DIALOG_TRACK_VIA_PROPERTIES::Apply( COMMIT& aCommit ) if( changeLock ) v->SetLocked( setLock ); + if ( net ) + v->SetNet( net ); + break; } @@ -331,6 +351,7 @@ bool DIALOG_TRACK_VIA_PROPERTIES::Apply( COMMIT& aCommit ) } } + static_cast( GetParent() )->GetBoard()->GetRatsnest()->Recalculate(); return true; } diff --git a/pcbnew/dialogs/dialog_track_via_properties_base.cpp b/pcbnew/dialogs/dialog_track_via_properties_base.cpp index d2f5238..055d9c7 100644 --- a/pcbnew/dialogs/dialog_track_via_properties_base.cpp +++ b/pcbnew/dialogs/dialog_track_via_properties_base.cpp @@ -22,6 +22,13 @@ DIALOG_TRACK_VIA_PROPERTIES_BASE::DIALOG_TRACK_VIA_PROPERTIES_BASE( wxWindow* pa m_lockedCbox = new wxCheckBox( m_sbCommonSizer->GetStaticBox(), wxID_ANY, _("Locked"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE ); m_sbCommonSizer->Add( m_lockedCbox, 0, wxALL, 5 ); + m_NetNameLabel = new wxStaticText( m_sbCommonSizer->GetStaticBox(), wxID_ANY, _("Net Code:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_NetNameLabel->Wrap( -1 ); + m_sbCommonSizer->Add( m_NetNameLabel, 0, wxALL, 5 ); + + m_NetNameCtrl = new wxTextCtrl( m_sbCommonSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_sbCommonSizer->Add( m_NetNameCtrl, 0, wxALL, 5 ); + m_MainSizer->Add( m_sbCommonSizer, 1, wxEXPAND|wxALL, 5 ); diff --git a/pcbnew/dialogs/dialog_track_via_properties_base.fbp b/pcbnew/dialogs/dialog_track_via_properties_base.fbp index 4b16658..d412536 100644 --- a/pcbnew/dialogs/dialog_track_via_properties_base.fbp +++ b/pcbnew/dialogs/dialog_track_via_properties_base.fbp @@ -193,6 +193,180 @@ + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Net Code: + + 0 + + + 0 + + 1 + m_NetNameLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + + 0 + + 1 + m_NetNameCtrl + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pcbnew/dialogs/dialog_track_via_properties_base.h b/pcbnew/dialogs/dialog_track_via_properties_base.h index c27851a..4d1cedc 100644 --- a/pcbnew/dialogs/dialog_track_via_properties_base.h +++ b/pcbnew/dialogs/dialog_track_via_properties_base.h @@ -44,6 +44,8 @@ class DIALOG_TRACK_VIA_PROPERTIES_BASE : public DIALOG_SHIM wxBoxSizer* m_MainSizer; wxStaticBoxSizer* m_sbCommonSizer; wxCheckBox* m_lockedCbox; + wxStaticText* m_NetNameLabel; + wxTextCtrl* m_NetNameCtrl; wxStaticBoxSizer* m_sbTrackSizer; wxStaticText* m_TrackStartXLabel; wxTextCtrl* m_TrackStartXCtrl;