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
+
+
+ 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.
*/