From 00986484e0ee8cf8ed4de91ba5f3d22e943cfb74 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Mon, 22 May 2023 14:48:31 +0100 Subject: [PATCH] Attempt to fix teardrop radio buttons on GTK. --- .../dialogs/dialog_global_edit_teardrops.cpp | 18 ++- .../dialog_global_edit_teardrops_base.cpp | 14 +- .../dialog_global_edit_teardrops_base.fbp | 132 +++++++++++++++++- .../dialog_global_edit_teardrops_base.h | 2 + 4 files changed, 161 insertions(+), 5 deletions(-) diff --git a/pcbnew/dialogs/dialog_global_edit_teardrops.cpp b/pcbnew/dialogs/dialog_global_edit_teardrops.cpp index 1a633d572c..97f4bc6e5b 100644 --- a/pcbnew/dialogs/dialog_global_edit_teardrops.cpp +++ b/pcbnew/dialogs/dialog_global_edit_teardrops.cpp @@ -80,10 +80,12 @@ protected: if( !m_rbStraightLines->GetValue() ) { m_rbStraightLines->SetValue( true ); + m_rbAntiCurved->SetValue( true ); m_rbCurved->SetValue( false ); } else { + m_rbAntiStraight->SetValue( true ); m_rbStraightLines->SetValue( false ); } } @@ -92,14 +94,19 @@ protected: if( !m_rbCurved->GetValue() ) { m_rbCurved->SetValue( true ); + m_rbAntiStraight->SetValue( true ); m_rbStraightLines->SetValue( false ); } else { + m_rbAntiCurved->SetValue( true ); m_rbCurved->SetValue( false ); } } + // Track-to-track teardrops always follow the document-wide settings (there are no teardrop + // properties on individual track segments as they're too ephemeral). Therefore we disable + // Set-to-specified-values when track-to-track is selected. void onTrackToTrack( wxCommandEvent& event ) override { if( event.IsChecked() && m_specifiedValues->GetValue() ) @@ -109,6 +116,7 @@ protected: } } + // These just improve usability so that you don't have to click twice to enable a filter. void OnNetclassFilterSelect( wxCommandEvent& event ) override { m_netclassFilterOpt->SetValue( true ); @@ -121,12 +129,20 @@ protected: { m_netFilterOpt->SetValue( true ); } + + // Remove "add" terminology when updating only existing teardrops. void OnExistingFilterSelect( wxCommandEvent& event ) override { if( event.IsChecked() ) - m_specifiedValues->SetLabel( _( "Update teardrops to specified values:" ) ); + { + m_addTeardrops->SetLabel( _( "Set teardrops to default values for shape" ) ); + m_specifiedValues->SetLabel( _( "Set teardrops to specified values:" ) ); + } else + { + m_addTeardrops->SetLabel( _( "Add teardrops with default values for shape" ) ); m_specifiedValues->SetLabel( _( "Add teardrops with specified values:" ) ); + } } void setSpecifiedParams( TEARDROP_PARAMETERS* targetParams ); diff --git a/pcbnew/dialogs/dialog_global_edit_teardrops_base.cpp b/pcbnew/dialogs/dialog_global_edit_teardrops_base.cpp index 2449f07463..7d6701d967 100644 --- a/pcbnew/dialogs/dialog_global_edit_teardrops_base.cpp +++ b/pcbnew/dialogs/dialog_global_edit_teardrops_base.cpp @@ -205,10 +205,20 @@ DIALOG_GLOBAL_EDIT_TEARDROPS_BASE::DIALOG_GLOBAL_EDIT_TEARDROPS_BASE( wxWindow* m_staticText15->Wrap( -1 ); bSizer41->Add( m_staticText15, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 ); - m_rbStraightLines = new wxRadioButton( sbAction->GetStaticBox(), wxID_ANY, _("Straight lines"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); + m_rbAntiStraight = new wxRadioButton( sbAction->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); + m_rbAntiStraight->Hide(); + + bSizer41->Add( m_rbAntiStraight, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_rbStraightLines = new wxRadioButton( sbAction->GetStaticBox(), wxID_ANY, _("Straight lines"), wxDefaultPosition, wxDefaultSize, 0 ); bSizer41->Add( m_rbStraightLines, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 ); - m_rbCurved = new wxRadioButton( sbAction->GetStaticBox(), wxID_ANY, _("Curved"), wxDefaultPosition, wxDefaultSize, wxRB_SINGLE ); + m_rbAntiCurved = new wxRadioButton( sbAction->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); + m_rbAntiCurved->Hide(); + + bSizer41->Add( m_rbAntiCurved, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_rbCurved = new wxRadioButton( sbAction->GetStaticBox(), wxID_ANY, _("Curved"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); bSizer41->Add( m_rbCurved, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 ); diff --git a/pcbnew/dialogs/dialog_global_edit_teardrops_base.fbp b/pcbnew/dialogs/dialog_global_edit_teardrops_base.fbp index 691afccdd4..633ef40433 100644 --- a/pcbnew/dialogs/dialog_global_edit_teardrops_base.fbp +++ b/pcbnew/dialogs/dialog_global_edit_teardrops_base.fbp @@ -1893,6 +1893,70 @@ onSpecifiedValuesUpdateUi + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 1 + wxID_ANY + + + 0 + + + 0 + + 1 + m_rbAntiStraight + 1 + + + protected + 1 + + Resizable + 1 + + wxRB_GROUP + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + + 5 wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT @@ -1943,7 +2007,7 @@ Resizable 1 - wxRB_GROUP + ; ; forward_declare 0 @@ -1959,6 +2023,70 @@ onSpecifiedValuesUpdateUi + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 1 + wxID_ANY + + + 0 + + + 0 + + 1 + m_rbAntiCurved + 1 + + + protected + 1 + + Resizable + 1 + + wxRB_GROUP + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + + 5 wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT @@ -2009,7 +2137,7 @@ Resizable 1 - wxRB_SINGLE + wxRB_GROUP ; ; forward_declare 0 diff --git a/pcbnew/dialogs/dialog_global_edit_teardrops_base.h b/pcbnew/dialogs/dialog_global_edit_teardrops_base.h index 5c7b445ea2..1bc925c520 100644 --- a/pcbnew/dialogs/dialog_global_edit_teardrops_base.h +++ b/pcbnew/dialogs/dialog_global_edit_teardrops_base.h @@ -73,7 +73,9 @@ class DIALOG_GLOBAL_EDIT_TEARDROPS_BASE : public DIALOG_SHIM wxStaticText* m_minTrackWidthHint; wxStaticBitmap* m_bitmapTeardrop; wxStaticText* m_staticText15; + wxRadioButton* m_rbAntiStraight; wxRadioButton* m_rbStraightLines; + wxRadioButton* m_rbAntiCurved; wxRadioButton* m_rbCurved; wxStaticText* m_stLenPercentLabel; wxTextCtrl* m_tcLenPercent;