diff --git a/common/widgets/color_swatch.cpp b/common/widgets/color_swatch.cpp index 4a3a4e137f..4e5c7b481b 100644 --- a/common/widgets/color_swatch.cpp +++ b/common/widgets/color_swatch.cpp @@ -172,7 +172,8 @@ void COLOR_SWATCH::SetSwatchColor( COLOR4D aColor, bool sendEvent ) { m_color = aColor; - wxBitmap bm = MakeBitmap( m_color, m_background, m_size ); + wxBitmap bm = MakeBitmap( m_color == COLOR4D::UNSPECIFIED ? m_default : m_color, + m_background, m_size ); m_swatch->SetBitmap( bm ); if( sendEvent ) @@ -180,6 +181,12 @@ void COLOR_SWATCH::SetSwatchColor( COLOR4D aColor, bool sendEvent ) } +void COLOR_SWATCH::SetDefaultColor( COLOR4D aColor ) +{ + m_default = aColor; +} + + void COLOR_SWATCH::SetSwatchBackground( COLOR4D aBackground ) { m_background = aBackground; diff --git a/eeschema/dialogs/dialog_sch_sheet_props.cpp b/eeschema/dialogs/dialog_sch_sheet_props.cpp index 4744f69e97..f043f4dea5 100644 --- a/eeschema/dialogs/dialog_sch_sheet_props.cpp +++ b/eeschema/dialogs/dialog_sch_sheet_props.cpp @@ -789,3 +789,15 @@ void DIALOG_SCH_SHEET_PROPS::OnInitDlg( wxInitDialogEvent& event ) // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); } + + +void DIALOG_SCH_SHEET_PROPS::OnRemoveColors( wxCommandEvent& event ) +{ + COLOR_SETTINGS* colorSettings = m_frame->GetColorSettings(); + + m_borderSwatch->SetDefaultColor( colorSettings->GetColor( LAYER_SHEET ) ); + m_backgroundSwatch->SetDefaultColor( colorSettings->GetColor( LAYER_SHEET_BACKGROUND ) ); + + m_borderSwatch->SetSwatchColor( COLOR4D::UNSPECIFIED, false ); + m_backgroundSwatch->SetSwatchColor( COLOR4D::UNSPECIFIED, false ); +} diff --git a/eeschema/dialogs/dialog_sch_sheet_props.h b/eeschema/dialogs/dialog_sch_sheet_props.h index 5686f7046f..e5931ae909 100644 --- a/eeschema/dialogs/dialog_sch_sheet_props.h +++ b/eeschema/dialogs/dialog_sch_sheet_props.h @@ -71,6 +71,7 @@ private: void OnGridCellChanging( wxGridEvent& event ); void OnUpdateUI( wxUpdateUIEvent& event ) override; void OnInitDlg( wxInitDialogEvent& event ) override; + void OnRemoveColors( wxCommandEvent& event ) override; void AdjustGridColumns( int aWidth ); }; diff --git a/eeschema/dialogs/dialog_sch_sheet_props_base.cpp b/eeschema/dialogs/dialog_sch_sheet_props_base.cpp index 9b7704e8ff..36ebd2c691 100644 --- a/eeschema/dialogs/dialog_sch_sheet_props_base.cpp +++ b/eeschema/dialogs/dialog_sch_sheet_props_base.cpp @@ -78,19 +78,16 @@ DIALOG_SCH_SHEET_PROPS_BASE::DIALOG_SCH_SHEET_PROPS_BASE( wxWindow* parent, wxWi m_bpAdd = new wxBitmapButton( sbFields->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); m_bpAdd->SetToolTip( _("Add field") ); - m_bpAdd->SetMinSize( wxSize( 30,30 ) ); bButtonSize->Add( m_bpAdd, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); m_bpMoveUp = new wxBitmapButton( sbFields->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); m_bpMoveUp->SetToolTip( _("Move up") ); - m_bpMoveUp->SetMinSize( wxSize( 30,30 ) ); bButtonSize->Add( m_bpMoveUp, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); m_bpMoveDown = new wxBitmapButton( sbFields->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); m_bpMoveDown->SetToolTip( _("Move down") ); - m_bpMoveDown->SetMinSize( wxSize( 30,30 ) ); bButtonSize->Add( m_bpMoveDown, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); @@ -99,7 +96,6 @@ DIALOG_SCH_SHEET_PROPS_BASE::DIALOG_SCH_SHEET_PROPS_BASE( wxWindow* parent, wxWi m_bpDelete = new wxBitmapButton( sbFields->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); m_bpDelete->SetToolTip( _("Delete field") ); - m_bpDelete->SetMinSize( wxSize( 30,30 ) ); bButtonSize->Add( m_bpDelete, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); @@ -155,6 +151,14 @@ DIALOG_SCH_SHEET_PROPS_BASE::DIALOG_SCH_SHEET_PROPS_BASE( wxWindow* parent, wxWi sbSizer2->Add( m_backgroundSwatch, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + sbSizer2->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_btnResetColors = new wxButton( sbSizer2->GetStaticBox(), wxID_ANY, _("Remove Colors"), wxDefaultPosition, wxDefaultSize, 0 ); + m_btnResetColors->SetToolTip( _("Remove the specified colors for this sheet (the current color theme will be used instead)") ); + + sbSizer2->Add( m_btnResetColors, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + bSizer5->Add( sbSizer2, 1, wxEXPAND|wxBOTTOM, 5 ); @@ -222,6 +226,7 @@ DIALOG_SCH_SHEET_PROPS_BASE::DIALOG_SCH_SHEET_PROPS_BASE( wxWindow* parent, wxWi m_bpMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_SHEET_PROPS_BASE::OnMoveUp ), NULL, this ); m_bpMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_SHEET_PROPS_BASE::OnMoveDown ), NULL, this ); m_bpDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_SHEET_PROPS_BASE::OnDeleteField ), NULL, this ); + m_btnResetColors->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_SHEET_PROPS_BASE::OnRemoveColors ), NULL, this ); } DIALOG_SCH_SHEET_PROPS_BASE::~DIALOG_SCH_SHEET_PROPS_BASE() @@ -234,5 +239,6 @@ DIALOG_SCH_SHEET_PROPS_BASE::~DIALOG_SCH_SHEET_PROPS_BASE() m_bpMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_SHEET_PROPS_BASE::OnMoveUp ), NULL, this ); m_bpMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_SHEET_PROPS_BASE::OnMoveDown ), NULL, this ); m_bpDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_SHEET_PROPS_BASE::OnDeleteField ), NULL, this ); + m_btnResetColors->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SCH_SHEET_PROPS_BASE::OnRemoveColors ), NULL, this ); } diff --git a/eeschema/dialogs/dialog_sch_sheet_props_base.fbp b/eeschema/dialogs/dialog_sch_sheet_props_base.fbp index 9ed501f8a0..ee9bf87658 100644 --- a/eeschema/dialogs/dialog_sch_sheet_props_base.fbp +++ b/eeschema/dialogs/dialog_sch_sheet_props_base.fbp @@ -14,7 +14,6 @@ dialog_sch_sheet_props_base 1000 none - 1 dialog_sch_sheet_props_base @@ -26,7 +25,6 @@ 1 1 UI - 0 0 0 @@ -194,7 +192,6 @@ - 0 @@ -268,7 +265,6 @@ - 0 @@ -342,7 +338,6 @@ - 0 @@ -426,7 +421,6 @@ - 0 @@ -974,6 +968,89 @@ + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Remove Colors + + 0 + + 0 + + + 0 + + 1 + m_btnResetColors + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Remove the specified colors for this sheet (the current color theme will be used instead) + + wxFILTER_NONE + wxDefaultValidator + + + + + OnRemoveColors + + diff --git a/eeschema/dialogs/dialog_sch_sheet_props_base.h b/eeschema/dialogs/dialog_sch_sheet_props_base.h index 39e995e434..41356067e6 100644 --- a/eeschema/dialogs/dialog_sch_sheet_props_base.h +++ b/eeschema/dialogs/dialog_sch_sheet_props_base.h @@ -56,6 +56,7 @@ class DIALOG_SCH_SHEET_PROPS_BASE : public DIALOG_SHIM COLOR_SWATCH* m_borderSwatch; wxStaticText* m_backgroundColorLabel; COLOR_SWATCH* m_backgroundSwatch; + wxButton* m_btnResetColors; wxStaticText* m_hiearchicalPathLabel; wxTextCtrl* m_heirarchyPath; wxStaticText* m_timestampLabel; @@ -73,6 +74,7 @@ class DIALOG_SCH_SHEET_PROPS_BASE : public DIALOG_SHIM virtual void OnMoveUp( wxCommandEvent& event ) { event.Skip(); } virtual void OnMoveDown( wxCommandEvent& event ) { event.Skip(); } virtual void OnDeleteField( wxCommandEvent& event ) { event.Skip(); } + virtual void OnRemoveColors( wxCommandEvent& event ) { event.Skip(); } public: diff --git a/eeschema/sch_painter.cpp b/eeschema/sch_painter.cpp index 7fecd2d1b7..6e39fc97a6 100644 --- a/eeschema/sch_painter.cpp +++ b/eeschema/sch_painter.cpp @@ -279,19 +279,15 @@ COLOR4D SCH_PAINTER::getRenderColor( const EDA_ITEM* aItem, int aLayer, bool aDr { SCH_SHEET* sheet = (SCH_SHEET*) aItem; - // Lazy fixup of legacy sheets with no color specifications - if( sheet->GetBorderColor() == COLOR4D::UNSPECIFIED ) - sheet->SetBorderColor( m_schSettings.GetLayerColor( LAYER_SHEET ) ); - - if( sheet->GetBackgroundColor() == COLOR4D::UNSPECIFIED ) - sheet->SetBackgroundColor( m_schSettings.GetLayerColor( LAYER_SHEET_BACKGROUND ) ); - if( m_schSettings.m_OverrideItemColors ) color = m_schSettings.GetLayerColor( aLayer ); else if( aLayer == LAYER_SHEET ) color = sheet->GetBorderColor(); else if( aLayer == LAYER_SHEET_BACKGROUND ) color = sheet->GetBackgroundColor(); + + if( color == COLOR4D::UNSPECIFIED ) + color = m_schSettings.GetLayerColor( aLayer ); } if( aItem->IsBrightened() && !aDrawingShadows ) // Selection disambiguation, etc. diff --git a/include/widgets/color_swatch.h b/include/widgets/color_swatch.h index 9bb4b7871a..abd91693c7 100644 --- a/include/widgets/color_swatch.h +++ b/include/widgets/color_swatch.h @@ -60,6 +60,11 @@ public: */ void SetSwatchColor( KIGFX::COLOR4D aColor, bool sendEvent ); + /** + * Sets the color that will be chosen with the "Reset to Default" button in the chooser + */ + void SetDefaultColor( KIGFX::COLOR4D aColor ); + /** * Set the swatch background color. */