ADDED preference for ratsnest thickness.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14708
This commit is contained in:
Jeff Young 2023-05-21 00:06:51 +01:00
parent 80aef37cc4
commit 08a9d4b26f
7 changed files with 166 additions and 7 deletions

View File

@ -74,6 +74,7 @@ void PANEL_EDIT_OPTIONS::loadPCBSettings( PCBNEW_SETTINGS* aCfg )
/* Set display options */ /* Set display options */
m_OptDisplayCurvedRatsnestLines->SetValue( aCfg->m_Display.m_DisplayRatsnestLinesCurved ); m_OptDisplayCurvedRatsnestLines->SetValue( aCfg->m_Display.m_DisplayRatsnestLinesCurved );
m_showSelectedRatsnest->SetValue( aCfg->m_Display.m_ShowModuleRatsnest ); m_showSelectedRatsnest->SetValue( aCfg->m_Display.m_ShowModuleRatsnest );
m_ratsnestThickness->SetValue( aCfg->m_Display.m_RatsnestThickness );
switch( aCfg->m_TrackDragAction ) switch( aCfg->m_TrackDragAction )
{ {
@ -154,6 +155,7 @@ bool PANEL_EDIT_OPTIONS::TransferDataFromWindow()
cfg->m_Display.m_DisplayRatsnestLinesCurved = m_OptDisplayCurvedRatsnestLines->GetValue(); cfg->m_Display.m_DisplayRatsnestLinesCurved = m_OptDisplayCurvedRatsnestLines->GetValue();
cfg->m_Display.m_ShowModuleRatsnest = m_showSelectedRatsnest->GetValue(); cfg->m_Display.m_ShowModuleRatsnest = m_showSelectedRatsnest->GetValue();
cfg->m_Display.m_RatsnestThickness = m_ratsnestThickness->GetValue();
cfg->m_RotationAngle = m_rotationAngle.GetAngleValue(); cfg->m_RotationAngle = m_rotationAngle.GetAngleValue();

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.0-39-g3487c3cb) // C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
@ -344,6 +344,20 @@ PANEL_EDIT_OPTIONS_BASE::PANEL_EDIT_OPTIONS_BASE( wxWindow* parent, wxWindowID i
m_OptDisplayCurvedRatsnestLines = new wxCheckBox( sbSizer3->GetStaticBox(), wxID_ANY, _("Show ratsnest with curved lines"), wxDefaultPosition, wxDefaultSize, 0 ); m_OptDisplayCurvedRatsnestLines = new wxCheckBox( sbSizer3->GetStaticBox(), wxID_ANY, _("Show ratsnest with curved lines"), wxDefaultPosition, wxDefaultSize, 0 );
sbSizer3->Add( m_OptDisplayCurvedRatsnestLines, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); sbSizer3->Add( m_OptDisplayCurvedRatsnestLines, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizer11;
bSizer11 = new wxBoxSizer( wxHORIZONTAL );
m_ratsnestThicknessLabel = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("Ratsnest line thickness:"), wxDefaultPosition, wxDefaultSize, 0 );
m_ratsnestThicknessLabel->Wrap( -1 );
bSizer11->Add( m_ratsnestThicknessLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
m_ratsnestThickness = new wxSpinCtrlDouble( sbSizer3->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0.5, 10, 0.5, 0.5 );
m_ratsnestThickness->SetDigits( 1 );
bSizer11->Add( m_ratsnestThickness, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
sbSizer3->Add( bSizer11, 1, wxEXPAND, 5 );
pcbOptionsSizer->Add( sbSizer3, 0, wxEXPAND|wxTOP, 5 ); pcbOptionsSizer->Add( sbSizer3, 0, wxEXPAND|wxTOP, 5 );

View File

@ -3283,6 +3283,142 @@
<property name="window_style"></property> <property name="window_style"></property>
</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="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer11</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<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="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">Ratsnest line thickness:</property>
<property name="markup">0</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_ratsnestThicknessLabel</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</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"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxSpinCtrlDouble" expanded="1">
<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="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="digits">1</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="inc">0.5</property>
<property name="initial">0.5</property>
<property name="max">10</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min">0.5</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_ratsnestThickness</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</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">wxSP_ARROW_KEYS</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
</object> </object>
</object> </object>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="1">

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.0-39-g3487c3cb) // C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
@ -25,6 +25,7 @@
#include <wx/statbox.h> #include <wx/statbox.h>
#include <wx/radiobox.h> #include <wx/radiobox.h>
#include <wx/panel.h> #include <wx/panel.h>
#include <wx/spinctrl.h>
#include <wx/radiobut.h> #include <wx/radiobut.h>
#include <wx/simplebook.h> #include <wx/simplebook.h>
@ -66,6 +67,8 @@ class PANEL_EDIT_OPTIONS_BASE : public RESETTABLE_PANEL
wxChoice* m_magneticGraphicsChoice; wxChoice* m_magneticGraphicsChoice;
wxCheckBox* m_showSelectedRatsnest; wxCheckBox* m_showSelectedRatsnest;
wxCheckBox* m_OptDisplayCurvedRatsnestLines; wxCheckBox* m_OptDisplayCurvedRatsnestLines;
wxStaticText* m_ratsnestThicknessLabel;
wxSpinCtrlDouble* m_ratsnestThickness;
wxStaticText* m_staticText5; wxStaticText* m_staticText5;
wxRadioButton* m_rbTrackDragMove; wxRadioButton* m_rbTrackDragMove;
wxRadioButton* m_rbTrackDrag45; wxRadioButton* m_rbTrackDrag45;

View File

@ -231,6 +231,9 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM<bool>( "pcb_display.ratsnest_curved", m_params.emplace_back( new PARAM<bool>( "pcb_display.ratsnest_curved",
&m_Display.m_DisplayRatsnestLinesCurved, false ) ); &m_Display.m_DisplayRatsnestLinesCurved, false ) );
m_params.emplace_back( new PARAM<double>( "pcb_display.ratsnest_thickness",
&m_Display.m_RatsnestThickness, 0.5 ) );
m_params.emplace_back( new PARAM<int>( "pcb_display.track_clearance_mode", m_params.emplace_back( new PARAM<int>( "pcb_display.track_clearance_mode",
reinterpret_cast<int*>( &m_Display.m_TrackClearance ), SHOW_WITH_VIA_WHILE_ROUTING ) ); reinterpret_cast<int*>( &m_Display.m_TrackClearance ), SHOW_WITH_VIA_WHILE_ROUTING ) );

View File

@ -322,6 +322,7 @@ public:
bool m_ShowModuleRatsnest; bool m_ShowModuleRatsnest;
bool m_ShowGlobalRatsnest; bool m_ShowGlobalRatsnest;
bool m_DisplayRatsnestLinesCurved; bool m_DisplayRatsnestLinesCurved;
double m_RatsnestThickness;
PCB_DISPLAY_ORIGIN m_DisplayOrigin; PCB_DISPLAY_ORIGIN m_DisplayOrigin;
bool m_DisplayInvertXAxis; bool m_DisplayInvertXAxis;

View File

@ -68,16 +68,16 @@ void RATSNEST_VIEW_ITEM::ViewDraw( int aLayer, KIGFX::VIEW* aView ) const
constexpr int CROSS_SIZE = 200000; constexpr int CROSS_SIZE = 200000;
auto gal = aView->GetGAL(); PCBNEW_SETTINGS* cfg = static_cast<PCBNEW_SETTINGS*>( Kiface().KifaceSettings() );
gal->SetIsStroke( true );
gal->SetIsFill( false );
gal->SetLineWidth( 1.0 );
auto cfg = static_cast<PCBNEW_SETTINGS*>( Kiface().KifaceSettings() );
if( !cfg ) if( !cfg )
return; return;
auto rs = static_cast<KIGFX::PCB_RENDER_SETTINGS*>( aView->GetPainter()->GetSettings() ); auto rs = static_cast<KIGFX::PCB_RENDER_SETTINGS*>( aView->GetPainter()->GetSettings() );
KIGFX::GAL* gal = aView->GetGAL();
gal->SetIsStroke( true );
gal->SetIsFill( false );
gal->SetLineWidth( cfg->m_Display.m_RatsnestThickness / gal->GetWorldScale() );
std::set<int> highlightedNets = rs->GetHighlightNetCodes(); std::set<int> highlightedNets = rs->GetHighlightNetCodes();
const std::set<int>& hiddenNets = rs->GetHiddenNets(); const std::set<int>& hiddenNets = rs->GetHiddenNets();