diff --git a/pcbnew/dialogs/dialog_pns_settings.cpp b/pcbnew/dialogs/dialog_pns_settings.cpp index 2cfa1d60e0..5d79c1a62e 100644 --- a/pcbnew/dialogs/dialog_pns_settings.cpp +++ b/pcbnew/dialogs/dialog_pns_settings.cpp @@ -29,9 +29,6 @@ DIALOG_PNS_SETTINGS::DIALOG_PNS_SETTINGS( wxWindow* aParent, PNS::ROUTING_SETTINGS& aSettings ) : DIALOG_PNS_SETTINGS_BASE( aParent ), m_settings( aSettings ) { - // "Figure out what's best" is not available yet - m_mode->Enable( PNS::RM_Smart, false ); - // Add tool tip to the mode radio box, one by option // (cannot be made with wxFormBuilder for each item ) m_mode->SetItemToolTip( 0, _( "DRC violation: highlight obstacles" ) ); @@ -51,6 +48,10 @@ DIALOG_PNS_SETTINGS::DIALOG_PNS_SETTINGS( wxWindow* aParent, PNS::ROUTING_SETTIN m_freeAngleMode->SetValue( m_settings.GetFreeAngleMode() ); m_dragToolMode->SetSelection ( m_settings.InlineDragEnabled() ? 1 : 0 ); + // Don't show options that are not implemented + m_suggestEnding->Hide(); + m_shoveVias->Hide(); + SetDefaultItem( m_stdButtonsOK ); GetSizer()->Fit( this ); GetSizer()->SetSizeHints( this ); @@ -74,3 +75,15 @@ void DIALOG_PNS_SETTINGS::OnOkClick( wxCommandEvent& aEvent ) aEvent.Skip(); // ends returning wxID_OK (default behavior) } + + +void DIALOG_PNS_SETTINGS::onModeChange( wxCommandEvent& aEvent ) +{ + if( m_mode->GetSelection() == PNS::RM_MarkObstacles ) + m_freeAngleMode->Enable(); + else + { + m_freeAngleMode->SetValue( false ); + m_freeAngleMode->Enable( false ); + } +} diff --git a/pcbnew/dialogs/dialog_pns_settings.h b/pcbnew/dialogs/dialog_pns_settings.h index d9fca5b314..7b686b4a59 100644 --- a/pcbnew/dialogs/dialog_pns_settings.h +++ b/pcbnew/dialogs/dialog_pns_settings.h @@ -41,6 +41,7 @@ class DIALOG_PNS_SETTINGS : public DIALOG_PNS_SETTINGS_BASE private: virtual void OnOkClick( wxCommandEvent& aEvent ) override; + virtual void onModeChange( wxCommandEvent& aEvent ) override; PNS::ROUTING_SETTINGS& m_settings; }; diff --git a/pcbnew/dialogs/dialog_pns_settings_base.cpp b/pcbnew/dialogs/dialog_pns_settings_base.cpp index c350db266e..01e51a6ac1 100644 --- a/pcbnew/dialogs/dialog_pns_settings_base.cpp +++ b/pcbnew/dialogs/dialog_pns_settings_base.cpp @@ -16,7 +16,7 @@ DIALOG_PNS_SETTINGS_BASE::DIALOG_PNS_SETTINGS_BASE( wxWindow* parent, wxWindowID wxBoxSizer* bMainSizer; bMainSizer = new wxBoxSizer( wxVERTICAL ); - wxString m_modeChoices[] = { _("Highlight collisions"), _("Shove"), _("Walk around"), _("Figure out what's best") }; + wxString m_modeChoices[] = { _("Highlight collisions"), _("Shove"), _("Walk around") }; int m_modeNChoices = sizeof( m_modeChoices ) / sizeof( wxString ); m_mode = new wxRadioBox( this, wxID_ANY, _("Mode:"), wxDefaultPosition, wxDefaultSize, m_modeNChoices, m_modeChoices, 1, wxRA_SPECIFY_COLS ); m_mode->SetSelection( 0 ); @@ -149,6 +149,7 @@ DIALOG_PNS_SETTINGS_BASE::DIALOG_PNS_SETTINGS_BASE( wxWindow* parent, wxWindowID bMainSizer->Fit( this ); // Connect Events + m_mode->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PNS_SETTINGS_BASE::onModeChange ), NULL, this ); m_freeAngleMode->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PNS_SETTINGS_BASE::onFreeAngleModeChange ), NULL, this ); m_stdButtonsOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PNS_SETTINGS_BASE::OnOkClick ), NULL, this ); } @@ -156,6 +157,7 @@ DIALOG_PNS_SETTINGS_BASE::DIALOG_PNS_SETTINGS_BASE( wxWindow* parent, wxWindowID DIALOG_PNS_SETTINGS_BASE::~DIALOG_PNS_SETTINGS_BASE() { // Disconnect Events + m_mode->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PNS_SETTINGS_BASE::onModeChange ), NULL, this ); m_freeAngleMode->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PNS_SETTINGS_BASE::onFreeAngleModeChange ), NULL, this ); m_stdButtonsOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PNS_SETTINGS_BASE::OnOkClick ), NULL, this ); diff --git a/pcbnew/dialogs/dialog_pns_settings_base.fbp b/pcbnew/dialogs/dialog_pns_settings_base.fbp index 49f4c43108..1d72be0081 100644 --- a/pcbnew/dialogs/dialog_pns_settings_base.fbp +++ b/pcbnew/dialogs/dialog_pns_settings_base.fbp @@ -112,7 +112,7 @@ 1 0 - "Highlight collisions" "Shove" "Walk around" "Figure out what's best" + "Highlight collisions" "Shove" "Walk around" 1 1 @@ -175,7 +175,7 @@ - + onModeChange diff --git a/pcbnew/dialogs/dialog_pns_settings_base.h b/pcbnew/dialogs/dialog_pns_settings_base.h index cfe9ee1fff..4f05ccadc7 100644 --- a/pcbnew/dialogs/dialog_pns_settings_base.h +++ b/pcbnew/dialogs/dialog_pns_settings_base.h @@ -60,6 +60,7 @@ class DIALOG_PNS_SETTINGS_BASE : public DIALOG_SHIM wxButton* m_stdButtonsCancel; // Virtual event handlers, overide them in your derived class + virtual void onModeChange( wxCommandEvent& event ) { event.Skip(); } virtual void onFreeAngleModeChange( wxCommandEvent& event ) { event.Skip(); } virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }