From 01eb8ad032cb7692e84a31fe3e4527afe8f88812 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Mon, 17 Aug 2020 20:27:03 +0100 Subject: [PATCH] Better handling of excluded layers for Color Preferences. Fixes https://gitlab.com/kicad/code/kicad/issues/5184 --- common/layer_id.cpp | 3 ++ .../dialogs/panel_modedit_color_settings.cpp | 39 +++++++++---------- .../dialogs/panel_pcbnew_color_settings.cpp | 2 + 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/common/layer_id.cpp b/common/layer_id.cpp index 29c9e85a50..7641791d7b 100644 --- a/common/layer_id.cpp +++ b/common/layer_id.cpp @@ -209,6 +209,9 @@ wxString LayerName( int aLayer ) case LAYER_GRID: return _( "Grid" ); + case LAYER_GRID_AXES: + return _( "Grid Axes" ); + case LAYER_PCB_BACKGROUND: return _( "Background" ); diff --git a/pcbnew/dialogs/panel_modedit_color_settings.cpp b/pcbnew/dialogs/panel_modedit_color_settings.cpp index a9e2ef9f66..32e6979759 100644 --- a/pcbnew/dialogs/panel_modedit_color_settings.cpp +++ b/pcbnew/dialogs/panel_modedit_color_settings.cpp @@ -58,13 +58,16 @@ PANEL_MODEDIT_COLOR_SETTINGS::PANEL_MODEDIT_COLOR_SETTINGS( FOOTPRINT_EDIT_FRAME mgr.ReloadColorSettings(); createThemeList( settings->m_ColorTheme ); - for( int id = F_Cu; id < PCB_LAYER_ID_COUNT; id++ ) - m_validLayers.push_back( id ); + m_validLayers.push_back( F_Cu ); + m_validLayers.push_back( In1_Cu ); // "Internal Layers" + m_validLayers.push_back( B_Cu ); for( int id = GAL_LAYER_ID_START; id < GAL_LAYER_ID_END; id++ ) { - if( id == LAYER_VIAS || id == LAYER_GRID_AXES || id == LAYER_PADS_PLATEDHOLES - || id == LAYER_VIAS_HOLES ) + if( id == LAYER_VIAS + || id == LAYER_GRID_AXES + || id == LAYER_PADS_PLATEDHOLES + || id == LAYER_VIAS_HOLES ) { continue; } @@ -115,33 +118,27 @@ bool PANEL_MODEDIT_COLOR_SETTINGS::TransferDataToWindow() void PANEL_MODEDIT_COLOR_SETTINGS::createSwatches() { - std::vector layers; + std::vector galLayers; - for( GAL_LAYER_ID i = GAL_LAYER_ID_START; i < GAL_LAYER_ID_END; ++i ) + // Sort the gal layers by name + for( int i : m_validLayers ) { - if( m_currentSettings->GetColor( i ) != COLOR4D::UNSPECIFIED ) - layers.push_back( i ); + if( i >= GAL_LAYER_ID_START && m_currentSettings->GetColor( i ) != COLOR4D::UNSPECIFIED ) + galLayers.push_back( (GAL_LAYER_ID) i ); } - std::sort( layers.begin(), layers.end(), + std::sort( galLayers.begin(), galLayers.end(), []( int a, int b ) { return LayerName( a ) < LayerName( b ); } ); - // Don't sort board layers by name - for( int i = PCBNEW_LAYER_ID_START; i < PCB_LAYER_ID_COUNT; ++i ) - layers.insert( layers.begin() + i, i ); - BOARD* board = m_frame->GetBoard(); - for( int layer : layers ) - { - wxString name = LayerName( layer ); + createSwatch( F_Cu, board ? board->GetLayerName( F_Cu ) : LayerName( F_Cu ) ); + createSwatch( In1_Cu, _( "Internal Layers" ) ); + createSwatch( B_Cu, board ? board->GetLayerName( B_Cu ) : LayerName( B_Cu ) ); - if( board && layer >= PCBNEW_LAYER_ID_START && layer < PCB_LAYER_ID_COUNT ) - name = board->GetLayerName( static_cast( layer ) ); - - createSwatch( layer, name ); - } + for( GAL_LAYER_ID layer : galLayers ) + createSwatch( layer, LayerName( layer ) ); } diff --git a/pcbnew/dialogs/panel_pcbnew_color_settings.cpp b/pcbnew/dialogs/panel_pcbnew_color_settings.cpp index 5aeb5c1097..248cc5a9cd 100644 --- a/pcbnew/dialogs/panel_pcbnew_color_settings.cpp +++ b/pcbnew/dialogs/panel_pcbnew_color_settings.cpp @@ -360,6 +360,8 @@ std::set g_excludedLayers = LAYER_MOD_VALUES, LAYER_MOD_REFERENCES, LAYER_TRACKS, + LAYER_MOD_TEXT_FR, + LAYER_MOD_TEXT_BK, LAYER_PADS_PLATEDHOLES, LAYER_VIAS_HOLES, LAYER_GP_OVERLAY,