← Back to team overview

kicad-developers team mailing list archive

[PATCH] Pull eeschema colors into preferences dialog

 

Hi,

The next installment of my preferences work is simple, I pulled the 
color configuration dialog into the eeschema preferences dialog. I 
deleted the original color dialog, removing it from libedit as well 
(it's just redundant there, it edits the same settings that are shared 
across both).

Unlike with the hotkeys I didn't have to reimplement anything, in fact 
git recognizes this as a rename of dialogs/dialog_color_config to 
widgets/widget_eeschema_color_config :)

Comments welcome.

-- 
Chris
diff --git a/eeschema/CMakeLists.txt b/eeschema/CMakeLists.txt
index c8d9a46..fd13769 100644
--- a/eeschema/CMakeLists.txt
+++ b/eeschema/CMakeLists.txt
@@ -25,8 +25,6 @@ set( EESCHEMA_DLGS
     dialogs/dialog_bom.cpp
     dialogs/dialog_bom_base.cpp
     dialogs/dialog_bom_cfg_keywords.cpp
-    dialogs/dialog_color_config.cpp
-    dialogs/dialog_color_config_base.cpp
     dialogs/dialog_choose_component.cpp
     dialogs/dialog_choose_component_base.cpp
     dialogs/dialog_lib_edit_text.cpp
@@ -72,6 +70,11 @@ set( EESCHEMA_DLGS
     dialogs/dialog_schematic_find_base.cpp
     )
 
+set( EESCHEMA_WIDGETS
+    widgets/widget_eeschema_color_config.cpp
+    )
+
+
 set( EESCHEMA_SRCS
     autoplace_fields.cpp
     annotate.cpp
@@ -90,6 +93,7 @@ set( EESCHEMA_SRCS
     controle.cpp
     cross-probing.cpp
     ${EESCHEMA_DLGS}
+    ${EESCHEMA_WIDGETS}
     edit_component_in_schematic.cpp
     edit_bitmap.cpp
     edit_label.cpp
diff --git a/eeschema/dialogs/dialog_color_config.cpp b/eeschema/dialogs/dialog_color_config.cpp
deleted file mode 100644
index c59b067..0000000
--- a/eeschema/dialogs/dialog_color_config.cpp
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * This program source code file is part of KiCad, a free EDA CAD application.
- *
- * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
- * Copyright (C) 2015 KiCad Developers, see CHANGELOG.TXT for contributors.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, you may find one here:
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- * or you may search the http://www.gnu.org website for the version 2 license,
- * or you may write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
- */
-
-/* Set up color Layers for Eeschema
- */
-
-#include <fctsys.h>
-#include <draw_frame.h>
-#include <class_drawpanel.h>
-
-#include <general.h>
-
-#include <dialog_color_config.h>
-
-
-#define ID_COLOR_SETUP  1800
-
-// Specify the width and height of every (color-displaying / bitmap) button
-const int BUTT_SIZE_X = 16;
-const int BUTT_SIZE_Y = 16;
-
-
-/********************/
-/* Layer menu list. */
-/********************/
-
-struct COLORBUTTON
-{
-    wxString        m_Name;
-    int             m_Layer;
-};
-
-struct BUTTONINDEX
-{
-    wxString        m_Name;
-    COLORBUTTON*    m_Buttons;
-};
-
-static COLORBUTTON generalColorButtons[] = {
-    { _( "Wire" ),              LAYER_WIRE },
-    { _( "Bus" ),               LAYER_BUS },
-    { _( "Junction" ),          LAYER_JUNCTION },
-    { _( "Label" ),             LAYER_LOCLABEL },
-    { _( "Global label" ),      LAYER_GLOBLABEL },
-    { _( "Net name" ),          LAYER_NETNAM },
-    { _( "Notes" ),             LAYER_NOTES },
-    { _( "No connect symbol" ), LAYER_NOCONNECT },
-    { wxT( "" ), -1 }                           // Sentinel marking end of list.
-};
-
-static COLORBUTTON componentColorButtons[] = {
-    { _( "Body" ),              LAYER_DEVICE },
-    { _( "Body background" ),   LAYER_DEVICE_BACKGROUND },
-    { _( "Pin" ),               LAYER_PIN },
-    { _( "Pin number" ),        LAYER_PINNUM },
-    { _( "Pin name" ),          LAYER_PINNAM },
-    { _( "Reference" ),         LAYER_REFERENCEPART },
-    { _( "Value" ),             LAYER_VALUEPART },
-    { _( "Fields" ),            LAYER_FIELDS },
-    { wxT( "" ), -1 }                           // Sentinel marking end of list.
-};
-
-static COLORBUTTON sheetColorButtons[] = {
-    { _( "Sheet" ),             LAYER_SHEET },
-    { _( "Sheet file name" ),   LAYER_SHEETFILENAME },
-    { _( "Sheet name" ),        LAYER_SHEETNAME },
-    { _( "Sheet label" ),       LAYER_SHEETLABEL },
-    { _( "Hierarchical label" ),LAYER_HIERLABEL },
-    { wxT( "" ), -1 }                           // Sentinel marking end of list.
-};
-
-static COLORBUTTON miscColorButtons[] = {
-    { _( "ERC warning" ),       LAYER_ERC_WARN },
-    { _( "ERC error" ),         LAYER_ERC_ERR },
-    { _( "Grid" ),              LAYER_GRID },
-    { wxT( "" ), -1 }                           // Sentinel marking end of list.
-};
-
-
-static BUTTONINDEX buttonGroups[] = {
-    { _( "General" ),           generalColorButtons },
-    { _( "Component" ),         componentColorButtons },
-    { _( "Sheet" ),             sheetColorButtons },
-    { _( "Miscellaneous" ),     miscColorButtons },
-    { wxT( "" ), NULL }
-};
-
-
-static EDA_COLOR_T currentColors[ LAYERSCH_ID_COUNT ];
-
-
-DIALOG_COLOR_CONFIG::DIALOG_COLOR_CONFIG( EDA_DRAW_FRAME* aParent ) :
-    DIALOG_COLOR_CONFIG_BASE( aParent )
-{
-    m_parent = aParent;
-    CreateControls();
-
-    GetSizer()->SetSizeHints( this );
-}
-
-
-void DIALOG_COLOR_CONFIG::CreateControls()
-{
-    wxStaticText*   label;
-    int             buttonId = 1800;
-
-    BUTTONINDEX* groups = buttonGroups;
-    wxBoxSizer* columnBoxSizer = NULL;
-
-    while( groups->m_Buttons != NULL )
-    {
-        COLORBUTTON* buttons = groups->m_Buttons;
-
-        columnBoxSizer = new wxBoxSizer( wxVERTICAL );
-        m_mainBoxSizer->Add( columnBoxSizer, 1, wxALIGN_TOP | wxLEFT | wxTOP, 5 );
-        wxBoxSizer* rowBoxSizer = new wxBoxSizer( wxHORIZONTAL );
-        columnBoxSizer->Add( rowBoxSizer, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 );
-
-        // Add a text string to identify the column of color select buttons.
-        label = new wxStaticText( this, wxID_ANY, groups->m_Name );
-
-        // Make the column label font bold.
-        wxFont font( label->GetFont() );
-        font.SetWeight( wxFONTWEIGHT_BOLD );
-        label->SetFont( font );
-
-        rowBoxSizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
-
-        while( buttons->m_Layer >= 0 )
-        {
-            rowBoxSizer = new wxBoxSizer( wxHORIZONTAL );
-            columnBoxSizer->Add( rowBoxSizer, 0, wxGROW | wxALL, 0 );
-
-            wxMemoryDC iconDC;
-            wxBitmap   bitmap( BUTT_SIZE_X, BUTT_SIZE_Y );
-
-            iconDC.SelectObject( bitmap );
-
-            EDA_COLOR_T color = GetLayerColor( LAYERSCH_ID( buttons->m_Layer ) );
-            currentColors[ buttons->m_Layer ] = color;
-
-            iconDC.SetPen( *wxBLACK_PEN );
-
-            wxBrush brush;
-            ColorSetBrush( &brush, color );
-            brush.SetStyle( wxBRUSHSTYLE_SOLID );
-            iconDC.SetBrush( brush );
-            iconDC.DrawRectangle( 0, 0, BUTT_SIZE_X, BUTT_SIZE_Y );
-
-            wxBitmapButton* bitmapButton = new wxBitmapButton(
-                                    this, buttonId, bitmap, wxDefaultPosition,
-                                    wxSize( BUTT_SIZE_X+8, BUTT_SIZE_Y+6 ) );
-            bitmapButton->SetClientData( (void*) buttons );
-
-            rowBoxSizer->Add( bitmapButton, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxBOTTOM, 5 );
-
-            label = new wxStaticText( this, wxID_ANY, wxGetTranslation( buttons->m_Name ) );
-            rowBoxSizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxBOTTOM, 5 );
-            buttonId += 1;
-            buttons++;
-        }
-
-        groups++;
-    }
-
-    Connect( 1800, buttonId - 1, wxEVT_COMMAND_BUTTON_CLICKED,
-             wxCommandEventHandler( DIALOG_COLOR_CONFIG::SetColor ) );
-
-    wxArrayString selBgColorStrings;
-    selBgColorStrings.Add( _( "White" ) );
-    selBgColorStrings.Add( _( "Black" ) );
-    m_SelBgColor = new wxRadioBox( this, wxID_ANY, _( "Background Color" ),
-                                   wxDefaultPosition, wxDefaultSize,
-                                   selBgColorStrings, 1, wxRA_SPECIFY_COLS );
-    m_SelBgColor->SetSelection( ( m_parent->GetDrawBgColor() == BLACK ) ? 1 : 0 );
-
-    if( columnBoxSizer )
-    {
-        // Add a spacer to improve appearance.
-        columnBoxSizer->AddSpacer( 5 );
-        columnBoxSizer->Add( m_SelBgColor, 1, wxGROW | wxRIGHT | wxTOP | wxBOTTOM, 5 );
-    }
-
-    currentColors[ LAYER_BACKGROUND ] =  m_parent->GetDrawBgColor();
-
-    // Dialog now needs to be resized, but the associated command is found elsewhere.
-}
-
-
-void DIALOG_COLOR_CONFIG::SetColor( wxCommandEvent& event )
-{
-    wxBitmapButton* button = (wxBitmapButton*) event.GetEventObject();
-
-    wxCHECK_RET( button != NULL, wxT( "Color button event object is NULL." ) );
-
-    COLORBUTTON* colorButton = (COLORBUTTON*) button->GetClientData();
-
-    wxCHECK_RET( colorButton != NULL, wxT( "Client data not set for color button." ) );
-
-    EDA_COLOR_T color = DisplayColorFrame( this, colorButton->m_Layer );
-
-    if( color < 0 || currentColors[ colorButton->m_Layer ] == color )
-        return;
-
-    currentColors[ colorButton->m_Layer ] = color;
-
-    wxMemoryDC iconDC;
-
-    wxBitmap bitmap = button->GetBitmapLabel();
-    iconDC.SelectObject( bitmap );
-    iconDC.SetPen( *wxBLACK_PEN );
-
-    wxBrush  brush;
-
-    ColorSetBrush( &brush, color);
-
-    brush.SetStyle( wxBRUSHSTYLE_SOLID );
-
-    iconDC.SetBrush( brush );
-    iconDC.DrawRectangle( 0, 0, BUTT_SIZE_X, BUTT_SIZE_Y );
-    button->SetBitmapLabel( bitmap );
-    button->Refresh();
-
-    Refresh( false );
-}
-
-
-bool DIALOG_COLOR_CONFIG::TransferDataFromWindow()
-{
-    bool warning = false;
-
-    // Check for color conflicts with background color to give user a chance to bail
-    // out before making changes.
-
-    EDA_COLOR_T bgcolor = WHITE;
-
-    if( m_SelBgColor->GetSelection() > 0 )
-        bgcolor =  BLACK;
-
-    for( LAYERSCH_ID clyr = LAYER_WIRE; clyr < LAYERSCH_ID_COUNT; ++clyr )
-    {
-        if( bgcolor == currentColors[ clyr ] && clyr != LAYER_BACKGROUND )
-        {
-            warning = true;
-            break;
-        }
-    }
-
-    // Prompt the user if an item has the same color as the background
-    // because this item cannot be seen:
-    if( warning )
-    {
-        if( wxMessageBox( _( "Some items have the same color as the background\n"
-                             "and they will not be seen on the screen.  Are you\n"
-                             "sure you want to use these colors?" ),
-                          _( "Warning" ),
-                          wxYES_NO | wxICON_QUESTION, this ) == wxNO )
-            return false;
-    }
-
-    // Update color of background
-    m_parent->SetDrawBgColor( bgcolor );
-    currentColors[ LAYER_BACKGROUND ] = bgcolor;
-
-
-    for( LAYERSCH_ID clyr = LAYER_WIRE; clyr < LAYERSCH_ID_COUNT; ++clyr )
-    {
-        SetLayerColor( currentColors[ clyr ], clyr );
-    }
-
-    m_parent->SetGridColor( GetLayerColor( LAYER_GRID ) );
-    m_parent->GetCanvas()->Refresh();
-
-    return true;
-}
diff --git a/eeschema/dialogs/dialog_color_config.h b/eeschema/dialogs/dialog_color_config.h
deleted file mode 100644
index 0f07367..0000000
--- a/eeschema/dialogs/dialog_color_config.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * This program source code file is part of KiCad, a free EDA CAD application.
- *
- * Copyright (C) 2007 G. Harland
- * Copyright (C) 1992-2015 KiCad Developers, see CHANGELOG.TXT for contributors.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, you may find one here:
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- * or you may search the http://www.gnu.org website for the version 2 license,
- * or you may write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
- */
-
-#ifndef DIALOG_COLOR_CONFIG_H_
-#define DIALOG_COLOR_CONFIG_H_
-
-#include <dialog_color_config_base.h>
-
-
-class wxBoxSizer;
-class wxStaticLine;
-class wxStdDialogButtonSizer;
-
-
-/***********************************************/
-/* Derived class for the frame color settings. */
-/***********************************************/
-
-class DIALOG_COLOR_CONFIG : public DIALOG_COLOR_CONFIG_BASE
-{
-private:
-    EDA_DRAW_FRAME*         m_parent;
-    wxRadioBox*             m_SelBgColor;
-
-    // Creates the controls and sizers
-    void CreateControls();
-
-    void    SetColor( wxCommandEvent& aEvent );
-
-public:
-    // Constructors and destructor
-    DIALOG_COLOR_CONFIG( EDA_DRAW_FRAME* aParent );
-
-    bool TransferDataFromWindow();
-};
-
-#endif    // DIALOG_COLOR_CONFIG_H_
diff --git a/eeschema/dialogs/dialog_color_config_base.cpp b/eeschema/dialogs/dialog_color_config_base.cpp
deleted file mode 100644
index 8991523..0000000
--- a/eeschema/dialogs/dialog_color_config_base.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Jun  5 2014)
-// http://www.wxformbuilder.org/
-//
-// PLEASE DO "NOT" EDIT THIS FILE!
-///////////////////////////////////////////////////////////////////////////
-
-#include "dialog_color_config_base.h"
-
-///////////////////////////////////////////////////////////////////////////
-
-DIALOG_COLOR_CONFIG_BASE::DIALOG_COLOR_CONFIG_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
-{
-	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
-	
-	wxBoxSizer* bmainSizer;
-	bmainSizer = new wxBoxSizer( wxVERTICAL );
-	
-	m_mainBoxSizer = new wxBoxSizer( wxHORIZONTAL );
-	
-	
-	bmainSizer->Add( m_mainBoxSizer, 1, wxEXPAND, 5 );
-	
-	m_staticline = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
-	bmainSizer->Add( m_staticline, 0, wxEXPAND | wxALL, 5 );
-	
-	m_sdbSizer = new wxStdDialogButtonSizer();
-	m_sdbSizerOK = new wxButton( this, wxID_OK );
-	m_sdbSizer->AddButton( m_sdbSizerOK );
-	m_sdbSizerApply = new wxButton( this, wxID_APPLY );
-	m_sdbSizer->AddButton( m_sdbSizerApply );
-	m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
-	m_sdbSizer->AddButton( m_sdbSizerCancel );
-	m_sdbSizer->Realize();
-	
-	bmainSizer->Add( m_sdbSizer, 0, wxALIGN_RIGHT|wxALL, 5 );
-	
-	
-	this->SetSizer( bmainSizer );
-	this->Layout();
-	bmainSizer->Fit( this );
-	
-	this->Centre( wxBOTH );
-}
-
-DIALOG_COLOR_CONFIG_BASE::~DIALOG_COLOR_CONFIG_BASE()
-{
-}
diff --git a/eeschema/dialogs/dialog_color_config_base.fbp b/eeschema/dialogs/dialog_color_config_base.fbp
deleted file mode 100644
index d739b57..0000000
--- a/eeschema/dialogs/dialog_color_config_base.fbp
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<wxFormBuilder_Project>
-    <FileVersion major="1" minor="13" />
-    <object class="Project" expanded="1">
-        <property name="class_decoration"></property>
-        <property name="code_generation">C++</property>
-        <property name="disconnect_events">1</property>
-        <property name="disconnect_mode">source_name</property>
-        <property name="disconnect_php_events">0</property>
-        <property name="disconnect_python_events">0</property>
-        <property name="embedded_files_path">res</property>
-        <property name="encoding">UTF-8</property>
-        <property name="event_generation">connect</property>
-        <property name="file">dialog_color_config_base</property>
-        <property name="first_id">1000</property>
-        <property name="help_provider">none</property>
-        <property name="internationalize">1</property>
-        <property name="name">dialog_color_config_base</property>
-        <property name="namespace"></property>
-        <property name="path">.</property>
-        <property name="precompiled_header"></property>
-        <property name="relative_path">1</property>
-        <property name="skip_lua_events">1</property>
-        <property name="skip_php_events">1</property>
-        <property name="skip_python_events">1</property>
-        <property name="ui_table">UI</property>
-        <property name="use_enum">0</property>
-        <property name="use_microsoft_bom">0</property>
-        <object class="Dialog" expanded="1">
-            <property name="aui_managed">0</property>
-            <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
-            <property name="bg"></property>
-            <property name="center">wxBOTH</property>
-            <property name="context_help"></property>
-            <property name="context_menu">1</property>
-            <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
-            <property name="extra_style"></property>
-            <property name="fg"></property>
-            <property name="font"></property>
-            <property name="hidden">0</property>
-            <property name="id">wxID_ANY</property>
-            <property name="maximum_size"></property>
-            <property name="minimum_size"></property>
-            <property name="name">DIALOG_COLOR_CONFIG_BASE</property>
-            <property name="pos"></property>
-            <property name="size">-1,-1</property>
-            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
-            <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
-            <property name="title">EESchema Colors</property>
-            <property name="tooltip"></property>
-            <property name="window_extra_style"></property>
-            <property name="window_name"></property>
-            <property name="window_style"></property>
-            <event name="OnActivate"></event>
-            <event name="OnActivateApp"></event>
-            <event name="OnAuiFindManager"></event>
-            <event name="OnAuiPaneButton"></event>
-            <event name="OnAuiPaneClose"></event>
-            <event name="OnAuiPaneMaximize"></event>
-            <event name="OnAuiPaneRestore"></event>
-            <event name="OnAuiRender"></event>
-            <event name="OnChar"></event>
-            <event name="OnClose"></event>
-            <event name="OnEnterWindow"></event>
-            <event name="OnEraseBackground"></event>
-            <event name="OnHibernate"></event>
-            <event name="OnIconize"></event>
-            <event name="OnIdle"></event>
-            <event name="OnInitDialog"></event>
-            <event name="OnKeyDown"></event>
-            <event name="OnKeyUp"></event>
-            <event name="OnKillFocus"></event>
-            <event name="OnLeaveWindow"></event>
-            <event name="OnLeftDClick"></event>
-            <event name="OnLeftDown"></event>
-            <event name="OnLeftUp"></event>
-            <event name="OnMiddleDClick"></event>
-            <event name="OnMiddleDown"></event>
-            <event name="OnMiddleUp"></event>
-            <event name="OnMotion"></event>
-            <event name="OnMouseEvents"></event>
-            <event name="OnMouseWheel"></event>
-            <event name="OnPaint"></event>
-            <event name="OnRightDClick"></event>
-            <event name="OnRightDown"></event>
-            <event name="OnRightUp"></event>
-            <event name="OnSetFocus"></event>
-            <event name="OnSize"></event>
-            <event name="OnUpdateUI"></event>
-            <object class="wxBoxSizer" expanded="1">
-                <property name="minimum_size"></property>
-                <property name="name">bmainSizer</property>
-                <property name="orient">wxVERTICAL</property>
-                <property name="permission">none</property>
-                <object class="sizeritem" expanded="1">
-                    <property name="border">5</property>
-                    <property name="flag">wxEXPAND</property>
-                    <property name="proportion">1</property>
-                    <object class="wxBoxSizer" expanded="1">
-                        <property name="minimum_size"></property>
-                        <property name="name">m_mainBoxSizer</property>
-                        <property name="orient">wxHORIZONTAL</property>
-                        <property name="permission">protected</property>
-                    </object>
-                </object>
-                <object class="sizeritem" expanded="1">
-                    <property name="border">5</property>
-                    <property name="flag">wxEXPAND | wxALL</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStaticLine" 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="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="default_pane">0</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="font"></property>
-                        <property name="gripper">0</property>
-                        <property name="hidden">0</property>
-                        <property name="id">wxID_ANY</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_staticline</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="resize">Resizable</property>
-                        <property name="show">1</property>
-                        <property name="size"></property>
-                        <property name="style">wxLI_HORIZONTAL</property>
-                        <property name="subclass"></property>
-                        <property name="toolbar_pane">0</property>
-                        <property name="tooltip"></property>
-                        <property name="window_extra_style"></property>
-                        <property name="window_name"></property>
-                        <property name="window_style"></property>
-                        <event name="OnChar"></event>
-                        <event name="OnEnterWindow"></event>
-                        <event name="OnEraseBackground"></event>
-                        <event name="OnKeyDown"></event>
-                        <event name="OnKeyUp"></event>
-                        <event name="OnKillFocus"></event>
-                        <event name="OnLeaveWindow"></event>
-                        <event name="OnLeftDClick"></event>
-                        <event name="OnLeftDown"></event>
-                        <event name="OnLeftUp"></event>
-                        <event name="OnMiddleDClick"></event>
-                        <event name="OnMiddleDown"></event>
-                        <event name="OnMiddleUp"></event>
-                        <event name="OnMotion"></event>
-                        <event name="OnMouseEvents"></event>
-                        <event name="OnMouseWheel"></event>
-                        <event name="OnPaint"></event>
-                        <event name="OnRightDClick"></event>
-                        <event name="OnRightDown"></event>
-                        <event name="OnRightUp"></event>
-                        <event name="OnSetFocus"></event>
-                        <event name="OnSize"></event>
-                        <event name="OnUpdateUI"></event>
-                    </object>
-                </object>
-                <object class="sizeritem" expanded="1">
-                    <property name="border">5</property>
-                    <property name="flag">wxALIGN_RIGHT|wxALL</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStdDialogButtonSizer" expanded="1">
-                        <property name="Apply">1</property>
-                        <property name="Cancel">1</property>
-                        <property name="ContextHelp">0</property>
-                        <property name="Help">0</property>
-                        <property name="No">0</property>
-                        <property name="OK">1</property>
-                        <property name="Save">0</property>
-                        <property name="Yes">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="name">m_sdbSizer</property>
-                        <property name="permission">protected</property>
-                        <event name="OnApplyButtonClick"></event>
-                        <event name="OnCancelButtonClick"></event>
-                        <event name="OnContextHelpButtonClick"></event>
-                        <event name="OnHelpButtonClick"></event>
-                        <event name="OnNoButtonClick"></event>
-                        <event name="OnOKButtonClick"></event>
-                        <event name="OnSaveButtonClick"></event>
-                        <event name="OnYesButtonClick"></event>
-                    </object>
-                </object>
-            </object>
-        </object>
-    </object>
-</wxFormBuilder_Project>
diff --git a/eeschema/dialogs/dialog_color_config_base.h b/eeschema/dialogs/dialog_color_config_base.h
deleted file mode 100644
index 83697b1..0000000
--- a/eeschema/dialogs/dialog_color_config_base.h
+++ /dev/null
@@ -1,52 +0,0 @@
-///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Jun  5 2014)
-// http://www.wxformbuilder.org/
-//
-// PLEASE DO "NOT" EDIT THIS FILE!
-///////////////////////////////////////////////////////////////////////////
-
-#ifndef __DIALOG_COLOR_CONFIG_BASE_H__
-#define __DIALOG_COLOR_CONFIG_BASE_H__
-
-#include <wx/artprov.h>
-#include <wx/xrc/xmlres.h>
-#include <wx/intl.h>
-class DIALOG_SHIM;
-
-#include "dialog_shim.h"
-#include <wx/sizer.h>
-#include <wx/gdicmn.h>
-#include <wx/statline.h>
-#include <wx/font.h>
-#include <wx/colour.h>
-#include <wx/settings.h>
-#include <wx/string.h>
-#include <wx/button.h>
-#include <wx/dialog.h>
-
-///////////////////////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////////////////////////
-/// Class DIALOG_COLOR_CONFIG_BASE
-///////////////////////////////////////////////////////////////////////////////
-class DIALOG_COLOR_CONFIG_BASE : public DIALOG_SHIM
-{
-	private:
-	
-	protected:
-		wxBoxSizer* m_mainBoxSizer;
-		wxStaticLine* m_staticline;
-		wxStdDialogButtonSizer* m_sdbSizer;
-		wxButton* m_sdbSizerOK;
-		wxButton* m_sdbSizerApply;
-		wxButton* m_sdbSizerCancel;
-	
-	public:
-		
-		DIALOG_COLOR_CONFIG_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("EESchema Colors"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); 
-		~DIALOG_COLOR_CONFIG_BASE();
-	
-};
-
-#endif //__DIALOG_COLOR_CONFIG_BASE_H__
diff --git a/eeschema/dialogs/dialog_eeschema_options.cpp b/eeschema/dialogs/dialog_eeschema_options.cpp
index 5ce1477..4c32b14 100644
--- a/eeschema/dialogs/dialog_eeschema_options.cpp
+++ b/eeschema/dialogs/dialog_eeschema_options.cpp
@@ -31,6 +31,7 @@
 
 #include <dialog_eeschema_options.h>
 #include <widgets/widget_hotkey_list.h>
+#include "../widgets/widget_eeschema_color_config.h"
 #include <schframe.h>
 #include <hotkeys.h>
 
@@ -59,6 +60,10 @@ DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS( SCH_EDIT_FRAME* parent ) :
     m_hotkeyListCtrl = new WIDGET_HOTKEY_LIST( m_panelHotkeys, sections );
     m_hotkeyListCtrl->InstallOnPanel( m_panelHotkeys );
 
+    // Embed the color configurator
+    m_colorConfigCtrl = new WIDGET_EESCHEMA_COLOR_CONFIG( m_panelColors, GetParent() );
+    m_colorConfigCtrl->InstallOnPanel( m_panelColors );
+
     // Make sure we select the first tab of the options tab page
     m_notebook->SetSelection( 0 );
 
@@ -288,6 +293,9 @@ bool DIALOG_EESCHEMA_OPTIONS::TransferDataFromWindow()
     if( !m_hotkeyListCtrl->TransferDataFromControl() )
         return false;
 
+    if( !m_colorConfigCtrl->TransferDataFromControl() )
+        return false;
+
     // Refresh hotkeys
     GetParent()->ReCreateMenuBar();
     GetParent()->Refresh();
diff --git a/eeschema/dialogs/dialog_eeschema_options.h b/eeschema/dialogs/dialog_eeschema_options.h
index d5daca2..8f18d05 100644
--- a/eeschema/dialogs/dialog_eeschema_options.h
+++ b/eeschema/dialogs/dialog_eeschema_options.h
@@ -34,13 +34,15 @@
 #include <dialog_eeschema_options_base.h>
 #include <template_fieldnames.h>
 
+class WIDGET_EESCHEMA_COLOR_CONFIG;
 class WIDGET_HOTKEY_LIST;
 class SCH_EDIT_FRAME;
 
 class DIALOG_EESCHEMA_OPTIONS : public DIALOG_EESCHEMA_OPTIONS_BASE
 {
 protected:
-    WIDGET_HOTKEY_LIST* m_hotkeyListCtrl;
+    WIDGET_HOTKEY_LIST*             m_hotkeyListCtrl;
+    WIDGET_EESCHEMA_COLOR_CONFIG*   m_colorConfigCtrl;
 
     /** @brief The template fieldnames for this dialog */
     TEMPLATE_FIELDNAMES templateFields;
diff --git a/eeschema/dialogs/dialog_eeschema_options_base.cpp b/eeschema/dialogs/dialog_eeschema_options_base.cpp
index 9c85f9d..31f17cd 100644
--- a/eeschema/dialogs/dialog_eeschema_options_base.cpp
+++ b/eeschema/dialogs/dialog_eeschema_options_base.cpp
@@ -117,7 +117,7 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
 	m_panel5->SetSizer( bSizer82 );
 	m_panel5->Layout();
 	bSizer82->Fit( m_panel5 );
-	m_notebook->AddPage( m_panel5, _("Display"), true );
+	m_notebook->AddPage( m_panel5, _("Display"), false );
 	m_panel3 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
 	wxBoxSizer* bSizer8;
 	bSizer8 = new wxBoxSizer( wxVERTICAL );
@@ -233,7 +233,7 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
 	m_panel3->Layout();
 	bSizer8->Fit( m_panel3 );
 	m_notebook->AddPage( m_panel3, _("Editing"), false );
-	m_controlsPanel = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+	m_tabControls = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
 	wxBoxSizer* bSizer81;
 	bSizer81 = new wxBoxSizer( wxVERTICAL );
 	
@@ -253,46 +253,58 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
 	wxBoxSizer* bSizer13;
 	bSizer13 = new wxBoxSizer( wxHORIZONTAL );
 	
-	m_staticText20 = new wxStaticText( m_controlsPanel, wxID_ANY, _("Hotkeys:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_staticText20 = new wxStaticText( m_tabControls, wxID_ANY, _("Hotkeys:"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_staticText20->Wrap( -1 );
 	bSizer13->Add( m_staticText20, 1, wxALL, 5 );
 	
-	m_staticText21 = new wxStaticText( m_controlsPanel, wxID_ANY, _("Double-click to edit"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_staticText21 = new wxStaticText( m_tabControls, wxID_ANY, _("Double-click to edit"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_staticText21->Wrap( -1 );
 	bSizer13->Add( m_staticText21, 0, wxALL, 5 );
 	
 	
 	m_controlsSizer->Add( bSizer13, 0, wxEXPAND, 5 );
 	
-	m_panelHotkeys = new wxPanel( m_controlsPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+	m_panelHotkeys = new wxPanel( m_tabControls, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
 	m_controlsSizer->Add( m_panelHotkeys, 1, wxEXPAND | wxALL, 5 );
 	
-	m_checkEnableZoomCenter = new wxCheckBox( m_controlsPanel, wxID_ANY, _("Cen&ter and warp cursor on zoom"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_checkEnableZoomCenter = new wxCheckBox( m_tabControls, wxID_ANY, _("Cen&ter and warp cursor on zoom"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_checkEnableZoomCenter->SetToolTip( _("Keep the cursor at its current location when zooming") );
 	
 	m_controlsSizer->Add( m_checkEnableZoomCenter, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
 	
-	m_checkEnableMiddleButtonPan = new wxCheckBox( m_controlsPanel, xwID_ANY, _("&Use middle mouse button to pan"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_checkEnableMiddleButtonPan = new wxCheckBox( m_tabControls, xwID_ANY, _("&Use middle mouse button to pan"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_checkEnableMiddleButtonPan->SetToolTip( _("Use middle mouse button dragging to pan") );
 	
 	m_controlsSizer->Add( m_checkEnableMiddleButtonPan, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
 	
-	m_checkMiddleButtonPanLimited = new wxCheckBox( m_controlsPanel, wxID_ANY, _("&Limit panning to scroll size"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_checkMiddleButtonPanLimited = new wxCheckBox( m_tabControls, wxID_ANY, _("&Limit panning to scroll size"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_checkMiddleButtonPanLimited->SetToolTip( _("Middle mouse button panning limited by current scrollbar size") );
 	
 	m_controlsSizer->Add( m_checkMiddleButtonPanLimited, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
 	
-	m_checkAutoPan = new wxCheckBox( m_controlsPanel, wxID_ANY, _("&Pan while moving object"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_checkAutoPan = new wxCheckBox( m_tabControls, wxID_ANY, _("&Pan while moving object"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_controlsSizer->Add( m_checkAutoPan, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
 	
 	
 	bSizer81->Add( m_controlsSizer, 1, wxALL|wxEXPAND, 5 );
 	
 	
-	m_controlsPanel->SetSizer( bSizer81 );
-	m_controlsPanel->Layout();
-	bSizer81->Fit( m_controlsPanel );
-	m_notebook->AddPage( m_controlsPanel, _("Controls"), false );
+	m_tabControls->SetSizer( bSizer81 );
+	m_tabControls->Layout();
+	bSizer81->Fit( m_tabControls );
+	m_notebook->AddPage( m_tabControls, _("Controls"), false );
+	m_tabColors = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+	wxBoxSizer* bSizer14;
+	bSizer14 = new wxBoxSizer( wxVERTICAL );
+	
+	m_panelColors = new wxPanel( m_tabColors, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+	bSizer14->Add( m_panelColors, 1, wxEXPAND | wxALL, 5 );
+	
+	
+	m_tabColors->SetSizer( bSizer14 );
+	m_tabColors->Layout();
+	bSizer14->Fit( m_tabColors );
+	m_notebook->AddPage( m_tabColors, _("Colors"), true );
 	m_panel2 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
 	m_panel2->SetToolTip( _("User defined field names for schematic components. ") );
 	
diff --git a/eeschema/dialogs/dialog_eeschema_options_base.fbp b/eeschema/dialogs/dialog_eeschema_options_base.fbp
index 668ac9f..9e4a0e6 100644
--- a/eeschema/dialogs/dialog_eeschema_options_base.fbp
+++ b/eeschema/dialogs/dialog_eeschema_options_base.fbp
@@ -187,7 +187,7 @@
                                 <object class="notebookpage" expanded="0">
                                     <property name="bitmap"></property>
                                     <property name="label">Display</property>
-                                    <property name="select">1</property>
+                                    <property name="select">0</property>
                                     <object class="wxPanel" expanded="0">
                                         <property name="BottomDockable">1</property>
                                         <property name="LeftDockable">1</property>
@@ -3806,7 +3806,7 @@
                                         <property name="minimize_button">0</property>
                                         <property name="minimum_size"></property>
                                         <property name="moveable">1</property>
-                                        <property name="name">m_controlsPanel</property>
+                                        <property name="name">m_tabControls</property>
                                         <property name="pane_border">1</property>
                                         <property name="pane_position"></property>
                                         <property name="pane_size"></property>
@@ -3845,7 +3845,7 @@
                                         <event name="OnSetFocus"></event>
                                         <event name="OnSize"></event>
                                         <event name="OnUpdateUI"></event>
-                                        <object class="wxBoxSizer" expanded="1">
+                                        <object class="wxBoxSizer" expanded="0">
                                             <property name="minimum_size"></property>
                                             <property name="name">bSizer81</property>
                                             <property name="orient">wxVERTICAL</property>
@@ -3868,20 +3868,20 @@
                                                     <property name="vgap">0</property>
                                                 </object>
                                             </object>
-                                            <object class="sizeritem" expanded="1">
+                                            <object class="sizeritem" expanded="0">
                                                 <property name="border">5</property>
                                                 <property name="flag">wxALL|wxEXPAND</property>
                                                 <property name="proportion">1</property>
-                                                <object class="wxBoxSizer" expanded="1">
+                                                <object class="wxBoxSizer" expanded="0">
                                                     <property name="minimum_size"></property>
                                                     <property name="name">m_controlsSizer</property>
                                                     <property name="orient">wxVERTICAL</property>
                                                     <property name="permission">protected</property>
-                                                    <object class="sizeritem" expanded="1">
+                                                    <object class="sizeritem" expanded="0">
                                                         <property name="border">5</property>
                                                         <property name="flag">wxEXPAND</property>
                                                         <property name="proportion">0</property>
-                                                        <object class="wxBoxSizer" expanded="1">
+                                                        <object class="wxBoxSizer" expanded="0">
                                                             <property name="minimum_size"></property>
                                                             <property name="name">bSizer13</property>
                                                             <property name="orient">wxHORIZONTAL</property>
@@ -4054,11 +4054,11 @@
                                                             </object>
                                                         </object>
                                                     </object>
-                                                    <object class="sizeritem" expanded="1">
+                                                    <object class="sizeritem" expanded="0">
                                                         <property name="border">5</property>
                                                         <property name="flag">wxEXPAND | wxALL</property>
                                                         <property name="proportion">1</property>
-                                                        <object class="wxPanel" expanded="1">
+                                                        <object class="wxPanel" expanded="0">
                                                             <property name="BottomDockable">1</property>
                                                             <property name="LeftDockable">1</property>
                                                             <property name="RightDockable">1</property>
@@ -4491,6 +4491,172 @@
                                         </object>
                                     </object>
                                 </object>
+                                <object class="notebookpage" expanded="1">
+                                    <property name="bitmap"></property>
+                                    <property name="label">Colors</property>
+                                    <property name="select">1</property>
+                                    <object class="wxPanel" 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="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="default_pane">0</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="font"></property>
+                                        <property name="gripper">0</property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</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_tabColors</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="resize">Resizable</property>
+                                        <property name="show">1</property>
+                                        <property name="size"></property>
+                                        <property name="subclass"></property>
+                                        <property name="toolbar_pane">0</property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style">wxTAB_TRAVERSAL</property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                        <object class="wxBoxSizer" expanded="1">
+                                            <property name="minimum_size"></property>
+                                            <property name="name">bSizer14</property>
+                                            <property name="orient">wxVERTICAL</property>
+                                            <property name="permission">none</property>
+                                            <object class="sizeritem" expanded="1">
+                                                <property name="border">5</property>
+                                                <property name="flag">wxEXPAND | wxALL</property>
+                                                <property name="proportion">1</property>
+                                                <object class="wxPanel" 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="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="default_pane">0</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="font"></property>
+                                                    <property name="gripper">0</property>
+                                                    <property name="hidden">0</property>
+                                                    <property name="id">wxID_ANY</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_panelColors</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="resize">Resizable</property>
+                                                    <property name="show">1</property>
+                                                    <property name="size"></property>
+                                                    <property name="subclass"></property>
+                                                    <property name="toolbar_pane">0</property>
+                                                    <property name="tooltip"></property>
+                                                    <property name="window_extra_style"></property>
+                                                    <property name="window_name"></property>
+                                                    <property name="window_style">wxTAB_TRAVERSAL</property>
+                                                    <event name="OnChar"></event>
+                                                    <event name="OnEnterWindow"></event>
+                                                    <event name="OnEraseBackground"></event>
+                                                    <event name="OnKeyDown"></event>
+                                                    <event name="OnKeyUp"></event>
+                                                    <event name="OnKillFocus"></event>
+                                                    <event name="OnLeaveWindow"></event>
+                                                    <event name="OnLeftDClick"></event>
+                                                    <event name="OnLeftDown"></event>
+                                                    <event name="OnLeftUp"></event>
+                                                    <event name="OnMiddleDClick"></event>
+                                                    <event name="OnMiddleDown"></event>
+                                                    <event name="OnMiddleUp"></event>
+                                                    <event name="OnMotion"></event>
+                                                    <event name="OnMouseEvents"></event>
+                                                    <event name="OnMouseWheel"></event>
+                                                    <event name="OnPaint"></event>
+                                                    <event name="OnRightDClick"></event>
+                                                    <event name="OnRightDown"></event>
+                                                    <event name="OnRightUp"></event>
+                                                    <event name="OnSetFocus"></event>
+                                                    <event name="OnSize"></event>
+                                                    <event name="OnUpdateUI"></event>
+                                                </object>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
                                 <object class="notebookpage" expanded="0">
                                     <property name="bitmap"></property>
                                     <property name="label">Default Fields</property>
diff --git a/eeschema/dialogs/dialog_eeschema_options_base.h b/eeschema/dialogs/dialog_eeschema_options_base.h
index 5b20e1c..eca809b 100644
--- a/eeschema/dialogs/dialog_eeschema_options_base.h
+++ b/eeschema/dialogs/dialog_eeschema_options_base.h
@@ -103,7 +103,7 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
 		wxCheckBox* m_checkAutoplaceFields;
 		wxCheckBox* m_checkAutoplaceJustify;
 		wxCheckBox* m_checkAutoplaceAlign;
-		wxPanel* m_controlsPanel;
+		wxPanel* m_tabControls;
 		wxBoxSizer* m_controlsSizer;
 		wxStaticText* m_staticText20;
 		wxStaticText* m_staticText21;
@@ -112,6 +112,8 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
 		wxCheckBox* m_checkEnableMiddleButtonPan;
 		wxCheckBox* m_checkMiddleButtonPanLimited;
 		wxCheckBox* m_checkAutoPan;
+		wxPanel* m_tabColors;
+		wxPanel* m_panelColors;
 		wxPanel* m_panel2;
 		wxGrid* m_fieldGrid;
 		wxButton* addFieldButton;
diff --git a/eeschema/eeschema.cpp b/eeschema/eeschema.cpp
index cfc062a..1c77039 100644
--- a/eeschema/eeschema.cpp
+++ b/eeschema/eeschema.cpp
@@ -42,7 +42,6 @@
 #include <general.h>
 #include <class_libentry.h>
 #include <hotkeys.h>
-#include <dialogs/dialog_color_config.h>
 #include <transform.h>
 #include <wildcards_and_files_ext.h>
 
diff --git a/eeschema/eeschema_config.cpp b/eeschema/eeschema_config.cpp
index 804045e..f2028ea 100644
--- a/eeschema/eeschema_config.cpp
+++ b/eeschema/eeschema_config.cpp
@@ -47,7 +47,6 @@
 
 #include <dialog_hotkeys_editor.h>
 
-#include <dialogs/dialog_color_config.h>
 #include <dialogs/dialog_eeschema_options.h>
 #include <dialogs/dialog_libedit_options.h>
 #include <dialogs/dialog_schematic_find.h>
@@ -157,14 +156,6 @@ void LIB_EDIT_FRAME::InstallConfigFrame( wxCommandEvent& event )
 }
 
 
-void LIB_EDIT_FRAME::OnColorConfig( wxCommandEvent& aEvent )
-{
-    DIALOG_COLOR_CONFIG dlg( this );
-
-    dlg.ShowModal();
-}
-
-
 void LIB_EDIT_FRAME::Process_Config( wxCommandEvent& event )
 {
     int        id = event.GetId();
@@ -195,14 +186,6 @@ void LIB_EDIT_FRAME::Process_Config( wxCommandEvent& event )
 }
 
 
-void SCH_EDIT_FRAME::OnColorConfig( wxCommandEvent& aEvent )
-{
-    DIALOG_COLOR_CONFIG dlg( this );
-
-    dlg.ShowModal();
-}
-
-
 void SCH_EDIT_FRAME::InstallConfigFrame( wxCommandEvent& event )
 {
     // Identical to LIB_EDIT_FRAME::InstallConfigFrame()
diff --git a/eeschema/libeditframe.cpp b/eeschema/libeditframe.cpp
index bd489a0..6663cf6 100644
--- a/eeschema/libeditframe.cpp
+++ b/eeschema/libeditframe.cpp
@@ -130,10 +130,8 @@ BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
     EVT_MENU( wxID_INDEX, EDA_DRAW_FRAME::GetKicadHelp )
     EVT_MENU( wxID_ABOUT, EDA_BASE_FRAME::GetKicadAbout )
 
-    EVT_MENU( ID_COLORS_SETUP, LIB_EDIT_FRAME::OnColorConfig )
     EVT_MENU( wxID_PREFERENCES, LIB_EDIT_FRAME::OnPreferencesOptions )
     EVT_MENU( ID_CONFIG_REQ, LIB_EDIT_FRAME::InstallConfigFrame )
-    EVT_MENU( ID_COLORS_SETUP, LIB_EDIT_FRAME::Process_Config )
 
     // Multiple item selection context menu commands.
     EVT_MENU_RANGE( ID_SELECT_ITEM_START, ID_SELECT_ITEM_END, LIB_EDIT_FRAME::OnSelectItem )
diff --git a/eeschema/libeditframe.h b/eeschema/libeditframe.h
index 6ae14ce..7b9cad0 100644
--- a/eeschema/libeditframe.h
+++ b/eeschema/libeditframe.h
@@ -193,7 +193,6 @@ public:
     static void EnsureActiveLibExists();
 
     void InstallConfigFrame( wxCommandEvent& event );
-    void OnColorConfig( wxCommandEvent& aEvent );
     void OnPreferencesOptions( wxCommandEvent& event );
     void Process_Config( wxCommandEvent& event );
 
diff --git a/eeschema/menubar.cpp b/eeschema/menubar.cpp
index 2e8047d..5ce4edf 100644
--- a/eeschema/menubar.cpp
+++ b/eeschema/menubar.cpp
@@ -375,13 +375,6 @@ void SCH_EDIT_FRAME::ReCreateMenuBar()
                  _( "Configure component libraries and paths" ),
                  KiBitmap( library_xpm ) );
 
-    // Colors
-    AddMenuItem( preferencesMenu,
-                 ID_COLORS_SETUP,
-                 _( "Set &Colors Scheme" ),
-                 _( "Set color preferences" ),
-                 KiBitmap( palette_xpm ) );
-
     // Options (Preferences on WXMAC)
 
 #ifdef __WXMAC__
diff --git a/eeschema/menubar_libedit.cpp b/eeschema/menubar_libedit.cpp
index f2c9599..ed3abe6 100644
--- a/eeschema/menubar_libedit.cpp
+++ b/eeschema/menubar_libedit.cpp
@@ -238,13 +238,6 @@ void LIB_EDIT_FRAME::ReCreateMenuBar()
                  _( "Set Component Editor default values and options" ),
                  KiBitmap( preference_xpm ) );
 
-    // Colors
-    AddMenuItem( preferencesMenu,
-                 ID_COLORS_SETUP,
-                 _( "Set &Colors Scheme" ),
-                 _( "Set color preferences" ),
-                 KiBitmap( palette_xpm ) );
-
     // Language submenu
     Pgm().AddMenuLanguageList( preferencesMenu );
 
diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp
index a9c7a07..ea6d2f2 100644
--- a/eeschema/schframe.cpp
+++ b/eeschema/schframe.cpp
@@ -237,7 +237,6 @@ BEGIN_EVENT_TABLE( SCH_EDIT_FRAME, EDA_DRAW_FRAME )
     EVT_MENU_RANGE( ID_PREFERENCES_HOTKEY_START, ID_PREFERENCES_HOTKEY_END,
                     SCH_EDIT_FRAME::Process_Config )
 
-    EVT_MENU( ID_COLORS_SETUP, SCH_EDIT_FRAME::OnColorConfig )
     EVT_TOOL( wxID_PREFERENCES, SCH_EDIT_FRAME::OnPreferencesOptions )
 
     EVT_TOOL( ID_RUN_LIBRARY, SCH_EDIT_FRAME::OnOpenLibraryEditor )
diff --git a/eeschema/schframe.h b/eeschema/schframe.h
index f7309bc..45b820f 100644
--- a/eeschema/schframe.h
+++ b/eeschema/schframe.h
@@ -266,7 +266,6 @@ public:
     void SetPlotDirectoryName( const wxString& aDirName ) { m_plotDirectoryName = aDirName; }
 
     void Process_Special_Functions( wxCommandEvent& event );
-    void OnColorConfig( wxCommandEvent& aEvent );
     void Process_Config( wxCommandEvent& event );
     void OnSelectTool( wxCommandEvent& aEvent );
 
diff --git a/eeschema/widgets/widget_eeschema_color_config.cpp b/eeschema/widgets/widget_eeschema_color_config.cpp
new file mode 100644
index 0000000..f23c2e9
--- /dev/null
+++ b/eeschema/widgets/widget_eeschema_color_config.cpp
@@ -0,0 +1,302 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
+ * Copyright (C) 2016 KiCad Developers, see CHANGELOG.TXT for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+/* Set up color Layers for Eeschema
+ */
+
+#include <fctsys.h>
+#include <draw_frame.h>
+#include <class_drawpanel.h>
+
+#include <general.h>
+
+#include "widget_eeschema_color_config.h"
+
+// Specify the width and height of every (color-displaying / bitmap) button
+const int BUTT_SIZE_X = 16;
+const int BUTT_SIZE_Y = 16;
+
+
+/********************/
+/* Layer menu list. */
+/********************/
+
+struct COLORBUTTON
+{
+    wxString        m_Name;
+    int             m_Layer;
+};
+
+struct BUTTONINDEX
+{
+    wxString        m_Name;
+    COLORBUTTON*    m_Buttons;
+};
+
+static COLORBUTTON generalColorButtons[] = {
+    { _( "Wire" ),              LAYER_WIRE },
+    { _( "Bus" ),               LAYER_BUS },
+    { _( "Junction" ),          LAYER_JUNCTION },
+    { _( "Label" ),             LAYER_LOCLABEL },
+    { _( "Global label" ),      LAYER_GLOBLABEL },
+    { _( "Net name" ),          LAYER_NETNAM },
+    { _( "Notes" ),             LAYER_NOTES },
+    { _( "No connect symbol" ), LAYER_NOCONNECT },
+    { wxT( "" ), -1 }                           // Sentinel marking end of list.
+};
+
+static COLORBUTTON componentColorButtons[] = {
+    { _( "Body" ),              LAYER_DEVICE },
+    { _( "Body background" ),   LAYER_DEVICE_BACKGROUND },
+    { _( "Pin" ),               LAYER_PIN },
+    { _( "Pin number" ),        LAYER_PINNUM },
+    { _( "Pin name" ),          LAYER_PINNAM },
+    { _( "Reference" ),         LAYER_REFERENCEPART },
+    { _( "Value" ),             LAYER_VALUEPART },
+    { _( "Fields" ),            LAYER_FIELDS },
+    { wxT( "" ), -1 }                           // Sentinel marking end of list.
+};
+
+static COLORBUTTON sheetColorButtons[] = {
+    { _( "Sheet" ),             LAYER_SHEET },
+    { _( "Sheet file name" ),   LAYER_SHEETFILENAME },
+    { _( "Sheet name" ),        LAYER_SHEETNAME },
+    { _( "Sheet label" ),       LAYER_SHEETLABEL },
+    { _( "Hierarchical label" ),LAYER_HIERLABEL },
+    { wxT( "" ), -1 }                           // Sentinel marking end of list.
+};
+
+static COLORBUTTON miscColorButtons[] = {
+    { _( "ERC warning" ),       LAYER_ERC_WARN },
+    { _( "ERC error" ),         LAYER_ERC_ERR },
+    { _( "Grid" ),              LAYER_GRID },
+    { wxT( "" ), -1 }                           // Sentinel marking end of list.
+};
+
+
+static BUTTONINDEX buttonGroups[] = {
+    { _( "General" ),           generalColorButtons },
+    { _( "Component" ),         componentColorButtons },
+    { _( "Sheet" ),             sheetColorButtons },
+    { _( "Miscellaneous" ),     miscColorButtons },
+    { wxT( "" ), NULL }
+};
+
+
+static EDA_COLOR_T currentColors[ LAYERSCH_ID_COUNT ];
+
+
+WIDGET_EESCHEMA_COLOR_CONFIG::WIDGET_EESCHEMA_COLOR_CONFIG( wxWindow* aParent, EDA_DRAW_FRAME* aDrawFrame ) :
+    wxPanel( aParent ), m_drawFrame( aDrawFrame )
+{
+    CreateControls();
+}
+
+
+void WIDGET_EESCHEMA_COLOR_CONFIG::CreateControls()
+{
+    wxStaticText*   label;
+    int             buttonId = 1800;
+
+    m_mainBoxSizer = new wxBoxSizer( wxHORIZONTAL );
+    SetSizer( m_mainBoxSizer );
+
+    BUTTONINDEX* groups = buttonGroups;
+    wxBoxSizer* columnBoxSizer = NULL;
+
+    while( groups->m_Buttons != NULL )
+    {
+        COLORBUTTON* buttons = groups->m_Buttons;
+
+        columnBoxSizer = new wxBoxSizer( wxVERTICAL );
+        m_mainBoxSizer->Add( columnBoxSizer, 1, wxALIGN_TOP | wxLEFT | wxTOP, 5 );
+        wxBoxSizer* rowBoxSizer = new wxBoxSizer( wxHORIZONTAL );
+        columnBoxSizer->Add( rowBoxSizer, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 );
+
+        // Add a text string to identify the column of color select buttons.
+        label = new wxStaticText( this, wxID_ANY, groups->m_Name );
+
+        // Make the column label font bold.
+        wxFont font( label->GetFont() );
+        font.SetWeight( wxFONTWEIGHT_BOLD );
+        label->SetFont( font );
+
+        rowBoxSizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
+
+        while( buttons->m_Layer >= 0 )
+        {
+            rowBoxSizer = new wxBoxSizer( wxHORIZONTAL );
+            columnBoxSizer->Add( rowBoxSizer, 0, wxGROW | wxALL, 0 );
+
+            wxMemoryDC iconDC;
+            wxBitmap   bitmap( BUTT_SIZE_X, BUTT_SIZE_Y );
+
+            iconDC.SelectObject( bitmap );
+
+            EDA_COLOR_T color = GetLayerColor( LAYERSCH_ID( buttons->m_Layer ) );
+            currentColors[ buttons->m_Layer ] = color;
+
+            iconDC.SetPen( *wxBLACK_PEN );
+
+            wxBrush brush;
+            ColorSetBrush( &brush, color );
+            brush.SetStyle( wxBRUSHSTYLE_SOLID );
+            iconDC.SetBrush( brush );
+            iconDC.DrawRectangle( 0, 0, BUTT_SIZE_X, BUTT_SIZE_Y );
+
+            wxBitmapButton* bitmapButton = new wxBitmapButton(
+                                    this, buttonId, bitmap, wxDefaultPosition,
+                                    wxSize( BUTT_SIZE_X+8, BUTT_SIZE_Y+6 ) );
+            bitmapButton->SetClientData( (void*) buttons );
+
+            rowBoxSizer->Add( bitmapButton, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxBOTTOM, 5 );
+
+            label = new wxStaticText( this, wxID_ANY, wxGetTranslation( buttons->m_Name ) );
+            rowBoxSizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxBOTTOM, 5 );
+            buttonId += 1;
+            buttons++;
+        }
+
+        groups++;
+    }
+
+    Connect( 1800, buttonId - 1, wxEVT_COMMAND_BUTTON_CLICKED,
+             wxCommandEventHandler( WIDGET_EESCHEMA_COLOR_CONFIG::SetColor ) );
+
+    wxArrayString selBgColorStrings;
+    selBgColorStrings.Add( _( "White" ) );
+    selBgColorStrings.Add( _( "Black" ) );
+    m_SelBgColor = new wxRadioBox( this, wxID_ANY, _( "Background Color" ),
+                                   wxDefaultPosition, wxDefaultSize,
+                                   selBgColorStrings, 1, wxRA_SPECIFY_COLS );
+    m_SelBgColor->SetSelection( ( GetDrawFrame()->GetDrawBgColor() == BLACK ) ? 1 : 0 );
+
+    if( columnBoxSizer )
+    {
+        // Add a spacer to improve appearance.
+        columnBoxSizer->AddSpacer( 5 );
+        columnBoxSizer->Add( m_SelBgColor, 1, wxGROW | wxRIGHT | wxTOP | wxBOTTOM, 5 );
+    }
+
+    currentColors[ LAYER_BACKGROUND ] =  GetDrawFrame()->GetDrawBgColor();
+
+    // Dialog now needs to be resized, but the associated command is found elsewhere.
+}
+
+
+void WIDGET_EESCHEMA_COLOR_CONFIG::SetColor( wxCommandEvent& event )
+{
+    wxBitmapButton* button = (wxBitmapButton*) event.GetEventObject();
+
+    wxCHECK_RET( button != NULL, wxT( "Color button event object is NULL." ) );
+
+    COLORBUTTON* colorButton = (COLORBUTTON*) button->GetClientData();
+
+    wxCHECK_RET( colorButton != NULL, wxT( "Client data not set for color button." ) );
+
+    EDA_COLOR_T color = DisplayColorFrame( this, colorButton->m_Layer );
+
+    if( color < 0 || currentColors[ colorButton->m_Layer ] == color )
+        return;
+
+    currentColors[ colorButton->m_Layer ] = color;
+
+    wxMemoryDC iconDC;
+
+    wxBitmap bitmap = button->GetBitmapLabel();
+    iconDC.SelectObject( bitmap );
+    iconDC.SetPen( *wxBLACK_PEN );
+
+    wxBrush  brush;
+
+    ColorSetBrush( &brush, color);
+
+    brush.SetStyle( wxBRUSHSTYLE_SOLID );
+
+    iconDC.SetBrush( brush );
+    iconDC.DrawRectangle( 0, 0, BUTT_SIZE_X, BUTT_SIZE_Y );
+    button->SetBitmapLabel( bitmap );
+    button->Refresh();
+
+    Refresh( false );
+}
+
+
+bool WIDGET_EESCHEMA_COLOR_CONFIG::TransferDataFromControl()
+{
+    bool warning = false;
+
+    // Check for color conflicts with background color to give user a chance to bail
+    // out before making changes.
+
+    EDA_COLOR_T bgcolor = WHITE;
+
+    if( m_SelBgColor->GetSelection() > 0 )
+        bgcolor =  BLACK;
+
+    for( LAYERSCH_ID clyr = LAYER_WIRE; clyr < LAYERSCH_ID_COUNT; ++clyr )
+    {
+        if( bgcolor == currentColors[ clyr ] && clyr != LAYER_BACKGROUND )
+        {
+            warning = true;
+            break;
+        }
+    }
+
+    // Prompt the user if an item has the same color as the background
+    // because this item cannot be seen:
+    if( warning )
+    {
+        if( wxMessageBox( _( "Some items have the same color as the background\n"
+                             "and they will not be seen on the screen.  Are you\n"
+                             "sure you want to use these colors?" ),
+                          _( "Warning" ),
+                          wxYES_NO | wxICON_QUESTION, this ) == wxNO )
+            return false;
+    }
+
+    // Update color of background
+    GetDrawFrame()->SetDrawBgColor( bgcolor );
+    currentColors[ LAYER_BACKGROUND ] = bgcolor;
+
+
+    for( LAYERSCH_ID clyr = LAYER_WIRE; clyr < LAYERSCH_ID_COUNT; ++clyr )
+    {
+        SetLayerColor( currentColors[ clyr ], clyr );
+    }
+
+    GetDrawFrame()->SetGridColor( GetLayerColor( LAYER_GRID ) );
+    GetDrawFrame()->GetCanvas()->Refresh();
+
+    return true;
+}
+
+
+void WIDGET_EESCHEMA_COLOR_CONFIG::InstallOnPanel( wxPanel* aPanel )
+{
+    wxBoxSizer* sizer = new wxBoxSizer( wxVERTICAL );
+
+    sizer->Add( this, 1, wxALL | wxEXPAND, 0 );
+    aPanel->SetSizer( sizer );
+}
diff --git a/eeschema/widgets/widget_eeschema_color_config.h b/eeschema/widgets/widget_eeschema_color_config.h
new file mode 100644
index 0000000..1f99a31
--- /dev/null
+++ b/eeschema/widgets/widget_eeschema_color_config.h
@@ -0,0 +1,69 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2007 G. Harland
+ * Copyright (C) 1992-2016 KiCad Developers, see CHANGELOG.TXT for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+#ifndef WIDGET_EESCHEMA_COLOR_CONFIG_H_
+#define WIDGET_EESCHEMA_COLOR_CONFIG_H_
+
+#include <wx/panel.h>
+#include <wx/sizer.h>
+
+class wxBoxSizer;
+class wxStaticLine;
+class wxStdDialogButtonSizer;
+
+
+/***********************************************/
+/* Derived class for the frame color settings. */
+/***********************************************/
+
+class WIDGET_EESCHEMA_COLOR_CONFIG : public wxPanel
+{
+private:
+    EDA_DRAW_FRAME*         m_drawFrame;
+    wxRadioBox*             m_SelBgColor;
+    wxBoxSizer*             m_mainBoxSizer;
+
+    // Creates the controls and sizers
+    void CreateControls();
+
+    void    SetColor( wxCommandEvent& aEvent );
+
+    virtual EDA_DRAW_FRAME* GetDrawFrame() { return m_drawFrame; }
+
+public:
+    // Constructors and destructor
+    WIDGET_EESCHEMA_COLOR_CONFIG( wxWindow* aParent, EDA_DRAW_FRAME* aDrawFrame );
+
+    bool TransferDataFromControl();
+
+    /**
+     * Method InstallOnPanel
+     * Install this WIDGET_EESCHEMA_COLOR_CONFIG onto an empty panel. This is useful
+     * when combining with wxFormBuilder, as an empty panel can be left as a
+     * placeholder in the layout.
+     */
+    void InstallOnPanel( wxPanel* aPanel );
+};
+
+#endif    // WIDGET_EESCHEMA_COLOR_CONFIG_H_
diff --git a/include/id.h b/include/id.h
index c864171..a50a950 100644
--- a/include/id.h
+++ b/include/id.h
@@ -124,8 +124,6 @@ enum main_id
     ID_NO_TOOL_SELECTED,
     ID_SEL_BG_COLOR,
 
-    ID_COLORS_SETUP,
-
     ID_REPEAT_BUTT,
 
     ID_LANGUAGE_CHOICE,

Follow ups