Whoops, that wasn't supposed to be committed. This patch has it removed it.
-Ian On Thu, Aug 22, 2019 at 7:00 PM Jon Evans <j...@craftyjon.com> wrote: > Yup, I'm fine with this patch, just trying to answer Ian's question about > whether or not there is V6 work planned here. > > On Thu, Aug 22, 2019 at 11:55 AM Wayne Stambaugh <stambau...@gmail.com> > wrote: > >> Jon, >> >> Ian's patch resets the layer colors back to the hard coded default layer >> colors. I know this isn't a complete solution but it might be handy >> until you finish the full layer color changes. Unless this interferes >> with something you are working on, I'm fine with merging this patch as a >> short term solution. >> >> Ian, >> >> You accidentally committed your Doxygen error log file. I don't think >> we would want to merge that into the KiCad source. If Jon is OK with >> merging this, you please resubmit the patch without your Doxygen error >> log file. >> >> Cheers, >> >> Wayne >> >> On 8/21/19 5:21 PM, Jon Evans wrote: >> > Yes, there is V6 work planned for this, I was planning on doing it, but >> > there are several steps in between (first changing how settings in >> > general are stored, and then a general refresh of the layers/color >> > settings GUI) >> > >> > On Wed, Aug 21, 2019 at 5:06 PM Ian McInerney <ian.s.mciner...@ieee.org >> > <mailto:ian.s.mciner...@ieee.org>> wrote: >> > >> > I noticed today that the layer color selector dialog didn't have a >> > way of resetting the color to the KiCad default (I needed to do this >> > today). This patch adds the ability for that to be done in Pcbnew >> > (for both layers and items). >> > >> > This same thing could be done in Gerbview, but the default colors >> > there are not exposed as nicely as in Pcbnew, so it would be more >> > convoluted. I wasn't sure if there was already v6 work planned on >> > that part, so I have left it alone. If there isn't, then I could go >> > back and tidy it up to implement this same defaults system. >> > >> > -Ian >> > _______________________________________________ >> > Mailing list: https://launchpad.net/~kicad-developers >> > Post to : kicad-developers@lists.launchpad.net >> > <mailto:kicad-developers@lists.launchpad.net> >> > Unsubscribe : https://launchpad.net/~kicad-developers >> > More help : https://help.launchpad.net/ListHelp >> > >> > >> > _______________________________________________ >> > Mailing list: https://launchpad.net/~kicad-developers >> > Post to : kicad-developers@lists.launchpad.net >> > Unsubscribe : https://launchpad.net/~kicad-developers >> > More help : https://help.launchpad.net/ListHelp >> > >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : kicad-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp >> > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp >
From 721d99e4f105f78e289fd1df83fc88978e475a10 Mon Sep 17 00:00:00 2001 From: Ian McInerney <ian.s.mciner...@ieee.org> Date: Wed, 21 Aug 2019 22:57:53 +0200 Subject: [PATCH] pcbnew: Add ability to reset layer/item colors to defaults --- common/colors_design_settings.cpp | 76 +++++++++++++-------- common/dialogs/dialog_color_picker.cpp | 21 +++++- common/dialogs/dialog_color_picker.h | 8 ++- common/dialogs/dialog_color_picker_base.cpp | 7 +- common/dialogs/dialog_color_picker_base.fbp | 73 ++++++++++++++++++++ common/dialogs/dialog_color_picker_base.h | 4 +- common/widgets/color_swatch.cpp | 8 ++- include/colors_design_settings.h | 25 +++++-- include/widgets/color_swatch.h | 6 +- pcbnew/layer_widget.cpp | 4 +- pcbnew/layer_widget.h | 6 +- pcbnew/pcb_layer_widget.cpp | 15 ++-- 12 files changed, 204 insertions(+), 49 deletions(-) diff --git a/common/colors_design_settings.cpp b/common/colors_design_settings.cpp index 67c764890..dae50497c 100644 --- a/common/colors_design_settings.cpp +++ b/common/colors_design_settings.cpp @@ -70,28 +70,35 @@ static const EDA_COLOR_T default_layer_color[] = { // for color order, see enum GAL_LAYER_ID static const EDA_COLOR_T default_items_color[] = { - LIGHTGRAY, // unused - CYAN, // LAYER_VIA_MICROVIA - BROWN, // LAYER_VIA_BBLIND - LIGHTGRAY, // LAYER_VIA_THROUGH - YELLOW, // LAYER_NON_PLATED - LIGHTGRAY, // LAYER_MOD_TEXT_FR - BLUE, // LAYER_MOD_TEXT_BK - DARKGRAY, // LAYER_MOD_TEXT_INVISIBLE - BLUE, // LAYER_ANCHOR - RED, // LAYER_PAD_FR - GREEN, // LAYER_PAD_BK - LIGHTGRAY, // LAYER_RATSNEST - DARKGRAY, // LAYER_GRID - LIGHTRED, // LAYER_GRID_AXES - BLUE, // LAYER_NO_CONNECTS - LIGHTGRAY, LIGHTGRAY, // LAYER_MOD_FR, LAYER_MOD_BK - LIGHTGRAY, LIGHTGRAY, // LAYER_MOD_VALUES, LAYER_MOD_REFERENCES - LIGHTGRAY, // LAYER_TRACKS - YELLOW, // LAYER_PADS - LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, - LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, - LIGHTGRAY, LIGHTGRAY, LIGHTGRAY + LIGHTGRAY, // unused (LAYER_VIAS = GAL_LAYER_ID_START) + CYAN, // LAYER_VIA_MICROVIA + BROWN, // LAYER_VIA_BBLIND + LIGHTGRAY, // LAYER_VIA_THROUGH + YELLOW, // LAYER_NON_PLATED + LIGHTGRAY, // LAYER_MOD_TEXT_FR + BLUE, // LAYER_MOD_TEXT_BK + DARKGRAY, // LAYER_MOD_TEXT_INVISIBLE + BLUE, // LAYER_ANCHOR + RED, // LAYER_PAD_FR + GREEN, // LAYER_PAD_BK + LIGHTGRAY, // LAYER_RATSNEST + DARKGRAY, // LAYER_GRID + LIGHTRED, // LAYER_GRID_AXES + BLUE, // LAYER_NO_CONNECTS + LIGHTGRAY, LIGHTGRAY, // LAYER_MOD_FR, LAYER_MOD_BK + LIGHTGRAY, LIGHTGRAY, // LAYER_MOD_VALUES, LAYER_MOD_REFERENCES + LIGHTGRAY, // LAYER_TRACKS + YELLOW, LIGHTGRAY, // LAYER_PADS, LAYER_PADS_PLATEDHOLES + LIGHTGRAY, // LAYER_VIAS_HOLES + LIGHTGRAY, // LAYER_DRC + DARKRED, // LAYER_WORKSHEET + LIGHTGRAY, // LAYER_GP_OVERLAY + LIGHTGRAY, // LAYER_SELECT_OVERLAY + BLACK, // LAYER_PCB_BACKGROUND + WHITE, // LAYER_CURSOR + WHITE, // LAYER_AUX_ITEMS + LIGHTGRAY, // LAYER_DRAW_BITMAPS + LIGHTGRAY // unused (GAL_LAYER_ID_BITMASK_END) }; @@ -112,16 +119,19 @@ COLORS_DESIGN_SETTINGS::COLORS_DESIGN_SETTINGS( FRAME_T aFrameType ) m_LayersColors[dst] = COLOR4D( default_items_color[src] ); } - m_LayersColors[ LAYER_PCB_BACKGROUND ] = BLACK; - m_LayersColors[ LAYER_CURSOR ] = WHITE; - m_LayersColors[ LAYER_AUX_ITEMS ] = WHITE; - m_LayersColors[ LAYER_WORKSHEET ] = DARKRED; - m_LayersColors[ LAYER_GRID ] = DARKGRAY; - setupConfigParams(); } +COLOR4D COLORS_DESIGN_SETTINGS::GetDefaultLayerColor( LAYER_NUM aLayer ) +{ + if( (unsigned) aLayer < arrayDim( default_layer_color ) ) + return COLOR4D( default_layer_color[aLayer] ); + + return COLOR4D::UNSPECIFIED; +} + + COLOR4D COLORS_DESIGN_SETTINGS::GetLayerColor( LAYER_NUM aLayer ) const { if( (unsigned) aLayer < arrayDim( m_LayersColors ) ) @@ -138,6 +148,16 @@ void COLORS_DESIGN_SETTINGS::SetLayerColor( LAYER_NUM aLayer, COLOR4D aColor ) } +COLOR4D COLORS_DESIGN_SETTINGS::GetDefaultItemColor( int aItemIdx ) +{ + unsigned int idx = (unsigned) aItemIdx - LAYER_VIAS; + if( idx < arrayDim( default_items_color ) ) + return COLOR4D( default_items_color[idx] ); + + return COLOR4D::UNSPECIFIED; +} + + COLOR4D COLORS_DESIGN_SETTINGS::GetItemColor( int aItemIdx ) const { if( (unsigned) aItemIdx < arrayDim( m_LayersColors ) ) diff --git a/common/dialogs/dialog_color_picker.cpp b/common/dialogs/dialog_color_picker.cpp index dfabbfac0..b331e6ea0 100644 --- a/common/dialogs/dialog_color_picker.cpp +++ b/common/dialogs/dialog_color_picker.cpp @@ -24,7 +24,8 @@ #define ALPHA_MAX 100 // the max value returned by the alpha (opacity) slider DIALOG_COLOR_PICKER::DIALOG_COLOR_PICKER( wxWindow* aParent, KIGFX::COLOR4D& aCurrentColor, - bool aAllowOpacityControl, CUSTOM_COLORS_LIST* aUserColors ) + bool aAllowOpacityControl, CUSTOM_COLORS_LIST* aUserColors, + const KIGFX::COLOR4D& aDefaultColor ) : DIALOG_COLOR_PICKER_BASE( aParent ) { m_allowMouseEvents = false; @@ -36,6 +37,7 @@ DIALOG_COLOR_PICKER::DIALOG_COLOR_PICKER( wxWindow* aParent, KIGFX::COLOR4D& aCu m_bitmapRGB = nullptr; m_bitmapHSV = nullptr; m_selectedCursor = nullptr; + m_defaultColor = aDefaultColor; if( !m_allowOpacityCtrl ) { @@ -50,6 +52,10 @@ DIALOG_COLOR_PICKER::DIALOG_COLOR_PICKER( wxWindow* aParent, KIGFX::COLOR4D& aCu // Build the defined colors panel: initDefinedColors( aUserColors ); + // If there is no default color, don't give the option to reset to default + if( aDefaultColor == KIGFX::COLOR4D::UNSPECIFIED ) + m_resetToDefault->Hide(); + m_sdbSizerOK->SetDefault(); } @@ -794,3 +800,16 @@ void DIALOG_COLOR_PICKER::OnChangeBrightness( wxScrollEvent& event ) drawAll(); } + + +void DIALOG_COLOR_PICKER::OnResetButton( wxCommandEvent& aEvent ) +{ + m_newColor4D.r = m_defaultColor.r; + m_newColor4D.g = m_defaultColor.g; + m_newColor4D.b = m_defaultColor.b; + + m_newColor4D.ToHSV( m_hue, m_sat, m_val, true ); + SetEditVals( ALL_CHANGED ); + + drawAll(); +} diff --git a/common/dialogs/dialog_color_picker.h b/common/dialogs/dialog_color_picker.h index 776e4a75f..a647adb0e 100644 --- a/common/dialogs/dialog_color_picker.h +++ b/common/dialogs/dialog_color_picker.h @@ -76,7 +76,8 @@ public: * @param aUserColors: if not null is a list of defined colors replacing the dialog predefined colors */ DIALOG_COLOR_PICKER( wxWindow* aParent, KIGFX::COLOR4D& aCurrentColor, - bool aAllowOpacityControl, CUSTOM_COLORS_LIST* aUserColors = nullptr ); + bool aAllowOpacityControl, CUSTOM_COLORS_LIST* aUserColors = nullptr, + const KIGFX::COLOR4D& aDefaultColor = KIGFX::COLOR4D::UNSPECIFIED ); ~DIALOG_COLOR_PICKER(); KIGFX::COLOR4D GetColor() { return m_newColor4D; }; @@ -95,6 +96,8 @@ private: ///< false to keep alpha channel = 1.0 KIGFX::COLOR4D m_previousColor4D; ///< the inital color4d KIGFX::COLOR4D m_newColor4D; ///< the current color4d + KIGFX::COLOR4D m_defaultColor; ///< The default color4d + /// the list of color4d ordered by button ID, for predefined colors std::vector<KIGFX::COLOR4D> m_Color4DList; int m_cursorsSize; @@ -145,6 +148,9 @@ private: void onHSVMouseClick( wxMouseEvent& event ) override; void onHSVMouseDrag( wxMouseEvent& event ) override; + ///< Event handler for the reset button press + void OnResetButton( wxCommandEvent& aEvent ) override; + /** manage the Hue and Saturation settings when the mouse cursor * is at aMouseCursor. * @param aMouseCursor is the mouse cursor position on the HSV bitmap diff --git a/common/dialogs/dialog_color_picker_base.cpp b/common/dialogs/dialog_color_picker_base.cpp index 38cb085c0..7f9a31dd9 100644 --- a/common/dialogs/dialog_color_picker_base.cpp +++ b/common/dialogs/dialog_color_picker_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Mar 28 2019) +// C++ code generated with wxFormBuilder (version Aug 21 2019) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -206,6 +206,9 @@ DIALOG_COLOR_PICKER_BASE::DIALOG_COLOR_PICKER_BASE( wxWindow* parent, wxWindowID bButtonsSizer->Add( m_NewColorRect, 0, wxALIGN_CENTER_VERTICAL, 5 ); + m_resetToDefault = new wxButton( this, wxID_ANY, _("Reset to Default"), wxDefaultPosition, wxDefaultSize, 0 ); + bButtonsSizer->Add( m_resetToDefault, 0, wxALL, 5 ); + m_sdbSizer = new wxStdDialogButtonSizer(); m_sdbSizerOK = new wxButton( this, wxID_OK ); m_sdbSizer->AddButton( m_sdbSizerOK ); @@ -253,6 +256,7 @@ DIALOG_COLOR_PICKER_BASE::DIALOG_COLOR_PICKER_BASE( wxWindow* parent, wxWindowID m_sliderTransparency->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( DIALOG_COLOR_PICKER_BASE::OnChangeAlpha ), NULL, this ); m_sliderTransparency->Connect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( DIALOG_COLOR_PICKER_BASE::OnChangeAlpha ), NULL, this ); m_sliderTransparency->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( DIALOG_COLOR_PICKER_BASE::OnChangeAlpha ), NULL, this ); + m_resetToDefault->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_COLOR_PICKER_BASE::OnResetButton ), NULL, this ); } DIALOG_COLOR_PICKER_BASE::~DIALOG_COLOR_PICKER_BASE() @@ -285,5 +289,6 @@ DIALOG_COLOR_PICKER_BASE::~DIALOG_COLOR_PICKER_BASE() m_sliderTransparency->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( DIALOG_COLOR_PICKER_BASE::OnChangeAlpha ), NULL, this ); m_sliderTransparency->Disconnect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( DIALOG_COLOR_PICKER_BASE::OnChangeAlpha ), NULL, this ); m_sliderTransparency->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( DIALOG_COLOR_PICKER_BASE::OnChangeAlpha ), NULL, this ); + m_resetToDefault->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_COLOR_PICKER_BASE::OnResetButton ), NULL, this ); } diff --git a/common/dialogs/dialog_color_picker_base.fbp b/common/dialogs/dialog_color_picker_base.fbp index d52726bff..7082a4e56 100644 --- a/common/dialogs/dialog_color_picker_base.fbp +++ b/common/dialogs/dialog_color_picker_base.fbp @@ -1640,6 +1640,79 @@ <property name="window_style"></property> </object> </object> + <object class="sizeritem" expanded="1"> + <property name="border">5</property> + <property name="flag">wxALL</property> + <property name="proportion">0</property> + <object class="wxButton" 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="bitmap"></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="current"></property> + <property name="default">0</property> + <property name="default_pane">0</property> + <property name="disabled"></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="focus"></property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">Reset to Default</property> + <property name="margins"></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_resetToDefault</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="position"></property> + <property name="pressed"></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="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <event name="OnButtonClick">OnResetButton</event> + </object> + </object> <object class="sizeritem" expanded="1"> <property name="border">5</property> <property name="flag">wxALL</property> diff --git a/common/dialogs/dialog_color_picker_base.h b/common/dialogs/dialog_color_picker_base.h index 2ed44d9fc..eb5faad19 100644 --- a/common/dialogs/dialog_color_picker_base.h +++ b/common/dialogs/dialog_color_picker_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Mar 28 2019) +// C++ code generated with wxFormBuilder (version Aug 21 2019) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -68,6 +68,7 @@ class DIALOG_COLOR_PICKER_BASE : public DIALOG_SHIM wxStaticText* m_staticTextOldColor; wxStaticBitmap* m_OldColorRect; wxStaticBitmap* m_NewColorRect; + wxButton* m_resetToDefault; wxStdDialogButtonSizer* m_sdbSizer; wxButton* m_sdbSizerOK; wxButton* m_sdbSizerCancel; @@ -84,6 +85,7 @@ class DIALOG_COLOR_PICKER_BASE : public DIALOG_SHIM virtual void OnChangeEditSat( wxSpinEvent& event ) { event.Skip(); } virtual void OnChangeBrightness( wxScrollEvent& event ) { event.Skip(); } virtual void OnChangeAlpha( wxScrollEvent& event ) { event.Skip(); } + virtual void OnResetButton( wxCommandEvent& event ) { event.Skip(); } public: diff --git a/common/widgets/color_swatch.cpp b/common/widgets/color_swatch.cpp index 4d719a697..72a2829e9 100644 --- a/common/widgets/color_swatch.cpp +++ b/common/widgets/color_swatch.cpp @@ -79,10 +79,12 @@ static std::unique_ptr<wxStaticBitmap> makeColorSwatch( wxWindow* aParent, COLOR } -COLOR_SWATCH::COLOR_SWATCH( wxWindow* aParent, COLOR4D aColor, int aID, COLOR4D aBackground ): +COLOR_SWATCH::COLOR_SWATCH( wxWindow* aParent, COLOR4D aColor, int aID, COLOR4D aBackground, + const COLOR4D aDefault ) : wxPanel( aParent, aID ), m_color( aColor ), - m_background( aBackground ) + m_background( aBackground ), + m_default( aDefault ) { auto sizer = new wxBoxSizer( wxHORIZONTAL ); SetSizer( sizer ); @@ -157,7 +159,7 @@ void COLOR_SWATCH::GetNewSwatchColor() { COLOR4D newColor = COLOR4D::UNSPECIFIED; - DIALOG_COLOR_PICKER dialog( ::wxGetTopLevelParent( this ), m_color, true ); + DIALOG_COLOR_PICKER dialog( ::wxGetTopLevelParent( this ), m_color, true, nullptr, m_default ); if( dialog.ShowModal() == wxID_OK ) newColor = dialog.GetColor(); diff --git a/include/colors_design_settings.h b/include/colors_design_settings.h index 079eacea0..6396bfba3 100644 --- a/include/colors_design_settings.h +++ b/include/colors_design_settings.h @@ -59,29 +59,46 @@ public: virtual void Load( wxConfigBase *aConfig ) override; virtual void Save( wxConfigBase *aConfig ) override; + + /** + * Function GetDefaultLayerColor + * @return the default color for aLayer which is one of the item indices given in + * enum PCB_LAYER_ID + */ + static COLOR4D GetDefaultLayerColor( LAYER_NUM aLayer ); + /** * Function GetLayerColor - * @return the color for aLayer which + * @return the color for aLayer which is one of the item indices given in + * enum PCB_LAYER_ID */ COLOR4D GetLayerColor( LAYER_NUM aLayer ) const; /** * Function SetLayerColor - * sets the color for aLayer + * sets the color for aLayer which is one of the item indices given in + * enum PCB_LAYER_ID */ void SetLayerColor( LAYER_NUM aLayer, COLOR4D aColor ); + /** + * Function GetDefaultItemColor + * @return the default color for the an item which is one of the item + * indices given in enum GAL_LAYER_ID + */ + static COLOR4D GetDefaultItemColor( int aItemIdx ); + /** * Function GetItemColor * @return the color for an item which is one of the item indices given - * in enum PCB_LAYER_ID + * in enum GAL_LAYER_ID */ COLOR4D GetItemColor( int aItemIdx ) const; /** * Function SetItemColor * sets the color for an item which is one of the item indices given - * in enum PCB_LAYER_ID + * in enum GAL_LAYER_ID */ void SetItemColor( int aItemIdx, COLOR4D aColor ); diff --git a/include/widgets/color_swatch.h b/include/widgets/color_swatch.h index b356d642b..f95d2f75c 100644 --- a/include/widgets/color_swatch.h +++ b/include/widgets/color_swatch.h @@ -46,7 +46,8 @@ public: * @param aColor initial swatch color * @param aID id to use when sending swatch events */ - COLOR_SWATCH( wxWindow* aParent, KIGFX::COLOR4D aColor, int aID, KIGFX::COLOR4D aBackground ); + COLOR_SWATCH( wxWindow* aParent, KIGFX::COLOR4D aColor, int aID, KIGFX::COLOR4D aBackground, + const KIGFX::COLOR4D aDefault = KIGFX::COLOR4D::UNSPECIFIED ); /** * Set the current swatch color directly. @@ -85,6 +86,9 @@ private: ///> The background colour to show the swatch over KIGFX::COLOR4D m_background; + ///> The default color for the swatch + KIGFX::COLOR4D m_default; + ///> Handle of the actual swatch shown wxStaticBitmap* m_swatch; }; diff --git a/pcbnew/layer_widget.cpp b/pcbnew/layer_widget.cpp index d9eae839c..9cc50e66d 100644 --- a/pcbnew/layer_widget.cpp +++ b/pcbnew/layer_widget.cpp @@ -328,7 +328,7 @@ void LAYER_WIDGET::insertLayerRow( int aRow, const ROW& aSpec ) col = COLUMN_COLORBM; auto bmb = new COLOR_SWATCH( m_LayerScrolledWindow, aSpec.color, encodeId( col, aSpec.id ), - getBackgroundLayerColor() ); + getBackgroundLayerColor(), aSpec.defaultColor ); bmb->Bind( wxEVT_LEFT_DOWN, &LAYER_WIDGET::OnLeftDownLayers, this ); bmb->Bind( COLOR_SWATCH_CHANGED, &LAYER_WIDGET::OnLayerSwatchChanged, this ); bmb->SetToolTip( _("Left double click or middle click for color change, right click for menu" ) ); @@ -403,7 +403,7 @@ void LAYER_WIDGET::insertRenderRow( int aRow, const ROW& aSpec ) if( aSpec.color != COLOR4D::UNSPECIFIED ) { auto bmb = new COLOR_SWATCH( m_RenderScrolledWindow, aSpec.color, encodeId( col, aSpec.id ), - getBackgroundLayerColor() ); + getBackgroundLayerColor(), aSpec.defaultColor ); bmb->Bind( COLOR_SWATCH_CHANGED, &LAYER_WIDGET::OnRenderSwatchChanged, this ); bmb->SetToolTip( _( "Left double click or middle click for color change" ) ); m_RenderFlexGridSizer->wxSizer::Insert( index+col, bmb, 0, flags ); diff --git a/pcbnew/layer_widget.h b/pcbnew/layer_widget.h index 9d50797b7..8b650e191 100644 --- a/pcbnew/layer_widget.h +++ b/pcbnew/layer_widget.h @@ -93,9 +93,11 @@ public: wxString tooltip; ///< if not empty, use this tooltip on row bool changeable; ///< if true, the state can be changed bool spacer; ///< if true, this row is a spacer + COLOR4D defaultColor; ///< The default color for the row ROW( const wxString& aRowName, int aId, COLOR4D aColor = COLOR4D::UNSPECIFIED, - const wxString& aTooltip = wxEmptyString, bool aState = true, bool aChangeable = true ) + const wxString& aTooltip = wxEmptyString, bool aState = true, + bool aChangeable = true, COLOR4D aDefaultColor = COLOR4D::UNSPECIFIED ) { rowName = aRowName; id = aId; @@ -104,6 +106,7 @@ public: tooltip = aTooltip; changeable = aChangeable; spacer = false; + defaultColor = aDefaultColor; } ROW() @@ -113,6 +116,7 @@ public: state = true; changeable = true; spacer = true; + defaultColor = COLOR4D::UNSPECIFIED; } }; diff --git a/pcbnew/pcb_layer_widget.cpp b/pcbnew/pcb_layer_widget.cpp index 4dd17c90b..d33d1d267 100644 --- a/pcbnew/pcb_layer_widget.cpp +++ b/pcbnew/pcb_layer_widget.cpp @@ -404,6 +404,8 @@ void PCB_LAYER_WIDGET::ReFillRender() // this window frame must have an established BOARD, i.e. after SetBoard() renderRow.color = myframe->Settings().Colors().GetItemColor( static_cast<GAL_LAYER_ID>( renderRow.id ) ); + renderRow.defaultColor = myframe->Settings().Colors().GetDefaultItemColor( + static_cast<GAL_LAYER_ID>( renderRow.id ) ); } if( renderRow.id == LAYER_RATSNEST ) @@ -506,9 +508,9 @@ void PCB_LAYER_WIDGET::ReFill() break; } - AppendLayerRow( LAYER_WIDGET::ROW( - brd->GetLayerName( layer ), layer, myframe->Settings().Colors().GetLayerColor( layer ), - dsc, true ) ); + AppendLayerRow( LAYER_WIDGET::ROW( brd->GetLayerName( layer ), layer, + myframe->Settings().Colors().GetLayerColor( layer ), dsc, true, true, + myframe->Settings().Colors().GetDefaultLayerColor( layer ) ) ); if( m_fp_editor_mode && LSET::ForbiddenFootprintLayers().test( layer ) ) { @@ -554,9 +556,10 @@ void PCB_LAYER_WIDGET::ReFill() if( !enabled[layer] ) continue; - AppendLayerRow( LAYER_WIDGET::ROW( - brd->GetLayerName( layer ), layer, myframe->Settings().Colors().GetLayerColor( layer ), - wxGetTranslation( non_cu_seq[i].tooltip ), true ) ); + AppendLayerRow( LAYER_WIDGET::ROW( brd->GetLayerName( layer ), layer, + myframe->Settings().Colors().GetLayerColor( layer ), + wxGetTranslation( non_cu_seq[i].tooltip ), true, true, + myframe->Settings().Colors().GetDefaultLayerColor( layer ) ) ); if( m_fp_editor_mode && LSET::ForbiddenFootprintLayers().test( layer ) ) { -- 2.21.0
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp