Browse Source

Old-skool THT colors

Simple option for plain-jane THT pad stacks to color them like the via
holes.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21531
master
Seth Hillbrand 2 months ago
parent
commit
eb753b8a1b
  1. 2
      pcbnew/dialogs/panel_display_options.cpp
  2. 98
      pcbnew/dialogs/panel_display_options_base.cpp
  3. 1010
      pcbnew/dialogs/panel_display_options_base.fbp
  4. 23
      pcbnew/dialogs/panel_display_options_base.h
  5. 23
      pcbnew/pcb_painter.cpp
  6. 3
      pcbnew/pcbnew_settings.cpp
  7. 1
      pcbnew/pcbnew_settings.h

2
pcbnew/dialogs/panel_display_options.cpp

@ -213,6 +213,7 @@ void PANEL_DISPLAY_OPTIONS::loadPCBSettings( PCBNEW_SETTINGS* aCfg )
m_OptDisplayTracksClearance->SetSelection( i );
m_OptDisplayPadClearence->SetValue( aCfg->m_Display.m_PadClearance );
m_OptUseViaColorForNormalTHPadstacks->SetValue( aCfg->m_Display.m_UseViaColorForNormalTHPadstacks );
m_OptDisplayPadNumber->SetValue( aCfg->m_ViewersDisplay.m_DisplayPadNumbers );
m_ShowNetNamesOption->SetSelection( aCfg->m_Display.m_NetNames );
m_checkForceShowFieldsWhenFPSelected->SetValue( aCfg->m_Display.m_ForceShowFieldsWhenFPSelected );
@ -343,6 +344,7 @@ bool PANEL_DISPLAY_OPTIONS::TransferDataFromWindow()
cfg->m_Display.m_TrackClearance = UTIL::GetValFromConfig( clearanceModeMap, i );
cfg->m_Display.m_PadClearance = m_OptDisplayPadClearence->GetValue();
cfg->m_Display.m_UseViaColorForNormalTHPadstacks = m_OptUseViaColorForNormalTHPadstacks->GetValue();
cfg->m_ViewersDisplay.m_DisplayPadNumbers = m_OptDisplayPadNumber->GetValue();
cfg->m_Display.m_NetNames = m_ShowNetNamesOption->GetSelection();
cfg->m_Display.m_ForceShowFieldsWhenFPSelected = m_checkForceShowFieldsWhenFPSelected->GetValue();

98
pcbnew/dialogs/panel_display_options_base.cpp

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6a-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -20,10 +20,66 @@ PANEL_DISPLAY_OPTIONS_BASE::PANEL_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWind
wxBoxSizer* bupperSizer;
bupperSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizer11;
bSizer11 = new wxBoxSizer( wxVERTICAL );
m_galOptionsSizer = new wxBoxSizer( wxVERTICAL );
bupperSizer->Add( m_galOptionsSizer, 0, wxEXPAND|wxRIGHT, 10 );
bSizer11->Add( m_galOptionsSizer, 0, wxEXPAND|wxRIGHT, 10 );
wxBoxSizer* bSizerPads;
bSizerPads = new wxBoxSizer( wxVERTICAL );
m_padsLabel = new wxStaticText( this, wxID_ANY, _("Pads"), wxDefaultPosition, wxDefaultSize, 0 );
m_padsLabel->Wrap( -1 );
bSizerPads->Add( m_padsLabel, 0, wxTOP|wxRIGHT|wxLEFT, 13 );
m_staticlinePads = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerPads->Add( m_staticlinePads, 0, wxEXPAND|wxTOP|wxBOTTOM, 2 );
m_OptUseViaColorForNormalTHPadstacks = new wxCheckBox( this, wxID_ANY, _("Use via color for normal through hole padstacks"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerPads->Add( m_OptUseViaColorForNormalTHPadstacks, 0, wxALL, 5 );
bSizerPads->Add( 0, 0, 0, wxEXPAND, 5 );
m_clearanceLabel = new wxStaticText( this, wxID_ANY, _("Clearance Outlines"), wxDefaultPosition, wxDefaultSize, 0 );
m_clearanceLabel->Wrap( -1 );
bSizerPads->Add( m_clearanceLabel, 0, wxTOP|wxRIGHT|wxLEFT|wxEXPAND, 13 );
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerPads->Add( m_staticline2, 0, wxEXPAND|wxTOP|wxBOTTOM, 2 );
wxGridBagSizer* gbSizer2;
gbSizer2 = new wxGridBagSizer( 2, 0 );
gbSizer2->SetFlexibleDirection( wxBOTH );
gbSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_trackClearancesLabel = new wxStaticText( this, wxID_ANY, _("Tracks:"), wxDefaultPosition, wxDefaultSize, 0 );
m_trackClearancesLabel->Wrap( -1 );
gbSizer2->Add( m_trackClearancesLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
wxString m_OptDisplayTracksClearanceChoices[] = { _("Do not show clearances"), _("Show when routing"), _("Show when routing w/ via clearance at end"), _("Show when routing and editing"), _("Show always") };
int m_OptDisplayTracksClearanceNChoices = sizeof( m_OptDisplayTracksClearanceChoices ) / sizeof( wxString );
m_OptDisplayTracksClearance = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_OptDisplayTracksClearanceNChoices, m_OptDisplayTracksClearanceChoices, 0 );
m_OptDisplayTracksClearance->SetSelection( 0 );
gbSizer2->Add( m_OptDisplayTracksClearance, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 );
m_OptDisplayPadClearence = new wxCheckBox( this, wxID_ANY, _("Show pad clearance"), wxDefaultPosition, wxDefaultSize, 0 );
gbSizer2->Add( m_OptDisplayPadClearence, wxGBPosition( 1, 0 ), wxGBSpan( 1, 2 ), wxALL, 5 );
bSizerPads->Add( gbSizer2, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerPads->Add( 0, 0, 1, wxEXPAND, 5 );
bSizer11->Add( bSizerPads, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bupperSizer->Add( bSizer11, 1, wxEXPAND, 5 );
bupperSizer->Add( 15, 0, 0, 0, 5 );
@ -131,38 +187,7 @@ PANEL_DISPLAY_OPTIONS_BASE::PANEL_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWind
bMargins->Add( gbSizer1, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bMargins->Add( 0, 10, 0, wxEXPAND, 5 );
m_clearanceLabel = new wxStaticText( pcbPage, wxID_ANY, _("Clearance Outlines"), wxDefaultPosition, wxDefaultSize, 0 );
m_clearanceLabel->Wrap( -1 );
bMargins->Add( m_clearanceLabel, 0, wxTOP|wxRIGHT|wxLEFT|wxEXPAND, 13 );
m_staticline2 = new wxStaticLine( pcbPage, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bMargins->Add( m_staticline2, 0, wxEXPAND|wxTOP|wxBOTTOM, 2 );
wxGridBagSizer* gbSizer2;
gbSizer2 = new wxGridBagSizer( 2, 0 );
gbSizer2->SetFlexibleDirection( wxBOTH );
gbSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_trackClearancesLabel = new wxStaticText( pcbPage, wxID_ANY, _("Tracks:"), wxDefaultPosition, wxDefaultSize, 0 );
m_trackClearancesLabel->Wrap( -1 );
gbSizer2->Add( m_trackClearancesLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
wxString m_OptDisplayTracksClearanceChoices[] = { _("Do not show clearances"), _("Show when routing"), _("Show when routing w/ via clearance at end"), _("Show when routing and editing"), _("Show always") };
int m_OptDisplayTracksClearanceNChoices = sizeof( m_OptDisplayTracksClearanceChoices ) / sizeof( wxString );
m_OptDisplayTracksClearance = new wxChoice( pcbPage, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_OptDisplayTracksClearanceNChoices, m_OptDisplayTracksClearanceChoices, 0 );
m_OptDisplayTracksClearance->SetSelection( 0 );
gbSizer2->Add( m_OptDisplayTracksClearance, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 );
m_OptDisplayPadClearence = new wxCheckBox( pcbPage, wxID_ANY, _("Show pad clearance"), wxDefaultPosition, wxDefaultSize, 0 );
gbSizer2->Add( m_OptDisplayPadClearence, wxGBPosition( 1, 0 ), wxGBSpan( 1, 2 ), wxALL, 5 );
bMargins->Add( gbSizer2, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bMargins->Add( 0, 10, 0, wxEXPAND, 5 );
bMargins->Add( 0, 0, 0, wxEXPAND, 5 );
m_staticText4 = new wxStaticText( pcbPage, wxID_ANY, _("Selection && Highlighting"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText4->Wrap( -1 );
@ -182,7 +207,7 @@ PANEL_DISPLAY_OPTIONS_BASE::PANEL_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWind
bMargins->Add( bSizer9, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bMargins->Add( 0, 10, 0, wxEXPAND, 5 );
bMargins->Add( 0, 0, 0, wxEXPAND, 5 );
m_crossProbingLabel = new wxStaticText( pcbPage, wxID_ANY, _("Cross-probing"), wxDefaultPosition, wxDefaultSize, 0 );
m_crossProbingLabel->Wrap( -1 );
@ -225,6 +250,9 @@ PANEL_DISPLAY_OPTIONS_BASE::PANEL_DISPLAY_OPTIONS_BASE( wxWindow* parent, wxWind
bMargins->Add( bSizer8, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bMargins->Add( 0, 0, 1, wxEXPAND, 5 );
pcbOptionsSizer->Add( bMargins, 1, wxEXPAND, 5 );

1010
pcbnew/dialogs/panel_display_options_base.fbp
File diff suppressed because it is too large
View File

23
pcbnew/dialogs/panel_display_options_base.h

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6a-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -21,6 +21,10 @@ class WX_GRID;
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/statline.h>
#include <wx/checkbox.h>
#include <wx/choice.h>
#include <wx/gbsizer.h>
#include <wx/grid.h>
#include <wx/bmpbuttn.h>
#include <wx/bitmap.h>
@ -28,10 +32,6 @@ class WX_GRID;
#include <wx/icon.h>
#include <wx/button.h>
#include <wx/panel.h>
#include <wx/statline.h>
#include <wx/choice.h>
#include <wx/checkbox.h>
#include <wx/gbsizer.h>
#include <wx/simplebook.h>
///////////////////////////////////////////////////////////////////////////
@ -45,6 +45,14 @@ class PANEL_DISPLAY_OPTIONS_BASE : public RESETTABLE_PANEL
protected:
wxBoxSizer* m_galOptionsSizer;
wxStaticText* m_padsLabel;
wxStaticLine* m_staticlinePads;
wxCheckBox* m_OptUseViaColorForNormalTHPadstacks;
wxStaticText* m_clearanceLabel;
wxStaticLine* m_staticline2;
wxStaticText* m_trackClearancesLabel;
wxChoice* m_OptDisplayTracksClearance;
wxCheckBox* m_OptDisplayPadClearence;
wxSimplebook* m_optionsBook;
wxStaticText* m_layerNamesLabel;
WX_GRID* m_layerNameitemsGrid;
@ -55,11 +63,6 @@ class PANEL_DISPLAY_OPTIONS_BASE : public RESETTABLE_PANEL
wxStaticText* m_netNamesLabel;
wxChoice* m_ShowNetNamesOption;
wxCheckBox* m_OptDisplayPadNumber;
wxStaticText* m_clearanceLabel;
wxStaticLine* m_staticline2;
wxStaticText* m_trackClearancesLabel;
wxChoice* m_OptDisplayTracksClearance;
wxCheckBox* m_OptDisplayPadClearence;
wxStaticText* m_staticText4;
wxStaticLine* m_staticline4;
wxCheckBox* m_checkForceShowFieldsWhenFPSelected;

23
pcbnew/pcb_painter.cpp

@ -249,7 +249,28 @@ COLOR4D PCB_RENDER_SETTINGS::GetColor( const BOARD_ITEM* aItem, int aLayer ) con
// Pad and via copper and clearance outlines take their color from the copper layer
if( IsPadCopperLayer( aLayer ) )
aLayer = aLayer - LAYER_PAD_COPPER_START;
{
if( pcbconfig() && aItem && aItem->Type() == PCB_PAD_T )
{
const PAD* pad = static_cast<const PAD*>( aItem );
// Old-skool display for people who struggle with change
if( pcbconfig()->m_Display.m_UseViaColorForNormalTHPadstacks
&& pad->GetAttribute() == PAD_ATTRIB::PTH
&& pad->Padstack().Mode() == PADSTACK::MODE::NORMAL )
{
aLayer = LAYER_VIA_HOLES;
}
else
{
aLayer = aLayer - LAYER_PAD_COPPER_START;
}
}
else
{
aLayer = aLayer - LAYER_PAD_COPPER_START;
}
}
else if( IsViaCopperLayer( aLayer ) )
aLayer = aLayer - LAYER_VIA_COPPER_START;
else if( IsClearanceLayer( aLayer ) )

3
pcbnew/pcbnew_settings.cpp

@ -236,6 +236,9 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM<bool>( "pcb_display.pad_clearance",
&m_Display.m_PadClearance, true ) );
m_params.emplace_back( new PARAM<bool>( "pcb_display.pad_use_via_color_for_normal_th_padstacks",
&m_Display.m_UseViaColorForNormalTHPadstacks, false ) );
m_params.emplace_back( new PARAM<bool>( "pcb_display.pad_fill",
&m_ViewersDisplay.m_DisplayPadFill, true ) );

1
pcbnew/pcbnew_settings.h

@ -195,6 +195,7 @@ public:
TRACK_CLEARANCE_MODE m_TrackClearance;
bool m_PadClearance;
bool m_UseViaColorForNormalTHPadstacks;
int m_NetNames;

Loading…
Cancel
Save