[Libreoffice-commits] .: 2 commits - cui/source cui/uiconfig cui/UI_cui.mk cui/util sw/uiconfig vcl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Jan 29 13:48:54 PST 2013


 cui/UI_cui.mk                           |    2 
 cui/source/inc/cuires.hrc               |    1 
 cui/source/inc/helpid.hrc               |    2 
 cui/source/options/optcolor.cxx         | 1016 ++++++---------
 cui/source/options/optcolor.hrc         |  214 ---
 cui/source/options/optcolor.hxx         |   14 
 cui/source/options/optcolor.src         |  496 -------
 cui/uiconfig/ui/colorconfigwin.ui       | 2033 ++++++++++++++++++++++++++++++++
 cui/uiconfig/ui/optcolorpage.ui         |  235 +++
 cui/util/hidother.src                   |    1 
 sw/uiconfig/swriter/ui/libappearance.ui |  213 ---
 vcl/source/window/builder.cxx           |    5 
 12 files changed, 2691 insertions(+), 1541 deletions(-)

New commits:
commit aa4ef13a517d4eee4db9d36283eca3240bdd873f
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Jan 27 20:32:18 2013 +0000

    move color scheme options .ui to right place and adapt code
    
    a side effect of this painfully tricky rework is that we recover an apparently
    long lost initial "ON" column in tools->options->appearance
    
    Change-Id: I262feae14e9f8a21f46103e35256687e66a13c7c

diff --git a/cui/UI_cui.mk b/cui/UI_cui.mk
index fe4bec7..91e0448 100644
--- a/cui/UI_cui.mk
+++ b/cui/UI_cui.mk
@@ -13,6 +13,7 @@ $(eval $(call gb_UI_add_uifiles,cui,\
 	cui/uiconfig/ui/backgroundpage \
 	cui/uiconfig/ui/borderpage \
 	cui/uiconfig/ui/charnamepage \
+	cui/uiconfig/ui/colorconfigwin \
 	cui/uiconfig/ui/effectspage \
 	cui/uiconfig/ui/hyphenate \
 	cui/uiconfig/ui/insertfloatingframe \
@@ -29,6 +30,7 @@ $(eval $(call gb_UI_add_uifiles,cui,\
 	cui/uiconfig/ui/objectnamedialog \
 	cui/uiconfig/ui/objecttitledescdialog \
 	cui/uiconfig/ui/optaccessibilitypage \
+	cui/uiconfig/ui/optcolorpage \
 	cui/uiconfig/ui/personalization_tab \
 	cui/uiconfig/ui/pickbulletpage \
 	cui/uiconfig/ui/pickgraphicpage \
diff --git a/cui/source/inc/cuires.hrc b/cui/source/inc/cuires.hrc
index 828f8b9..8d71493 100644
--- a/cui/source/inc/cuires.hrc
+++ b/cui/source/inc/cuires.hrc
@@ -421,7 +421,6 @@
 #define RID_SVXSTR_ROW                                      (RID_SVX_START + 1201)
 #define RID_SVXSTR_COL                                      (RID_SVX_START + 1202)
 #define RID_SVXSTR_AUTO_ENTRY                               (RID_SVX_START + 1203)
-
 #define RID_SVXDLG_CERTPATH                                 (RID_SVX_START + 1204)
 
 #endif
diff --git a/cui/source/inc/helpid.hrc b/cui/source/inc/helpid.hrc
index 9dc68df..78b84df 100644
--- a/cui/source/inc/helpid.hrc
+++ b/cui/source/inc/helpid.hrc
@@ -41,9 +41,7 @@
 #define HID_CLB_LINGU_OPTIONS "CUI_HID_CLB_LINGU_OPTIONS"
 #define HID_EDIT_MODULES "CUI_HID_EDIT_MODULES"
 #define HID_LNGDLG_NUM_PREBREAK "CUI_HID_LNGDLG_NUM_PREBREAK"
-#define HID_OPTIONS_COLORCONFIG "CUI_HID_OPTIONS_COLORCONFIG"
 #define HID_OPTIONS_COLORCONFIG_SAVE_SCHEME "CUI_HID_OPTIONS_COLORCONFIG_SAVE_SCHEME"
-#define HID_OPTIONS_COLORCONFIG_COLORLIST_WIN "CUI_HID_OPTIONS_COLORCONFIG_COLORLIST_WIN"
 #define HID_OPTIONS_COLORCONFIG_NAME_SCHEME "CUI_HID_OPTIONS_COLORCONFIG_NAME_SCHEME"
 #define HID_OPTIONS_PATHS_SELECTFOLDER "CUI_HID_OPTIONS_PATHS_SELECTFOLDER"
 #define HID_OPTIONS_JAVA "CUI_HID_OPTIONS_JAVA"
diff --git a/cui/source/options/optcolor.cxx b/cui/source/options/optcolor.cxx
index 632ac9e..67d2fa8 100644
--- a/cui/source/options/optcolor.cxx
+++ b/cui/source/options/optcolor.cxx
@@ -32,7 +32,6 @@
 #include <dialmgr.hxx>
 #include "optcolor.hxx"
 #include <cuires.hrc>
-#include "optcolor.hrc"
 #include <svx/dlgutil.hxx>
 
 using namespace ::com::sun::star;
@@ -58,21 +57,16 @@ enum Group
 };
 
 // group data
-struct
-{
-    // resource id for the title text
-    int nTextResId;
-}
-const vGroupInfo[] =
+const char* vGroupNames[]
 {
     // the groups are in the same order as in enum Group above
-    { FT_GENERAL },
-    { FT_WRITER },
-    { FT_HTML },
-    { FT_CALC },
-    { FT_DRAW },
-    { FT_BASIC },
-    { FT_SQL_COMMAND }, // FIXME
+    "general",
+    "writer",
+    "html",
+    "calc",
+    "draw",
+    "basic",
+    "sql"
 };
 
 // color config entry data (see ColorConfigWindow_Impl::Entry below)
@@ -80,180 +74,123 @@ struct
 {
     // group
     Group eGroup;
-
-    // help id for ...
-    //     color listbox
-    char const* sColorListHid;
-    //     checkbox
-    char const* sCheckBoxHid;
-
-    // resource id for ...
-    //     checkbox (or simple text)
-    int nTextResId;
-    //     color listbox
-    int nColorListResId;
-    //     preview box
-    int nPreviewResId;
-
+    //checkbox (or simple text)
+    const char *pText;
+    //color listbox
+    const char *pColor;
+    //preview box
+    const char *pPreview;
     // has checkbox?
     bool bCheckBox;
 }
 const vEntryInfo[] =
 {
-    // These macros simplify the list of constants.
-    // There is a unique name that is the same in the ids of the same entry
-    // (except one).
-    // Entries with and without checkboxes need different macros:
     #define IDS(Name) \
-        HID_COLORPAGE_##Name##_LB, HID_COLORPAGE_##Name##_CB, \
-        FT_##Name, LB_##Name, WN_##Name, false
-    #define IDS_CB(Name) \
-        HID_COLORPAGE_##Name##_LB, HID_COLORPAGE_##Name##_CB, \
-        CB_##Name, LB_##Name, WN_##Name, true
+        SAL_STRINGIFY(Name), SAL_STRINGIFY(Name##_lb), SAL_STRINGIFY(Name##_wn), false
 
-    // resolve different names
-    #define CB_DOCBOUNDARIES CB_DOCBOUND
-    #define LB_DOCBOUNDARIES LB_DOCBOUND
-    #define WN_DOCBOUNDARIES WN_DOCBOUND
-    #define FT_CALCPAGEBREAKAUTOMATIC FT_CALCPAGEBREAKAUTO
-    #define LB_CALCPAGEBREAKAUTOMATIC LB_CALCPAGEBREAKAUTO
-    #define WN_CALCPAGEBREAKAUTOMATIC WN_CALCPAGEBREAKAUTO
+    #define IDS_CB(Name) \
+        SAL_STRINGIFY(Name), SAL_STRINGIFY(Name##_lb), SAL_STRINGIFY(Name##_wn), true
 
     // The list of these entries (enum ColorConfigEntry) are in colorcfg.hxx.
 
-    { Group_General, IDS(DOCCOLOR) },
-    { Group_General, IDS_CB(DOCBOUNDARIES) },
-    { Group_General, IDS(APPBACKGROUND) },
-    { Group_General, IDS_CB(OBJECTBOUNDARIES) },
-    { Group_General, IDS_CB(TABLEBOUNDARIES) },
-    { Group_General, IDS(FONTCOLOR) },
-    { Group_General, IDS_CB(LINKS) },
-    { Group_General, IDS_CB(LINKSVISITED) },
-    { Group_General, IDS(SPELL) },
-    { Group_General, IDS(SMARTTAGS) },
-    { Group_General, IDS_CB(SHADOWCOLOR) },
-    { Group_Writer,  IDS(WRITERTEXTGRID) },
-    { Group_Writer,  IDS_CB(WRITERFIELDSHADINGS) },
-    { Group_Writer,  IDS_CB(WRITERIDXSHADINGS) },
-    { Group_Writer,  IDS(WRITERDIRECTCURSOR) },
-    { Group_Writer,  IDS(WRITERSCRIPTINDICATOR) },
-    { Group_Writer,  IDS_CB(WRITERSECTIONBOUNDARIES) },
-    { Group_Writer,  IDS(WRITERHEADERFOOTERMARK) },
-    { Group_Writer,  IDS(WRITERPAGEBREAKS) },
-    { Group_Html,    IDS(HTMLSGML) },
-    { Group_Html,    IDS(HTMLCOMMENT) },
-    { Group_Html,    IDS(HTMLKEYWORD) },
-    { Group_Html,    IDS(HTMLUNKNOWN) },
-    { Group_Calc,    IDS(CALCGRID) },
-    { Group_Calc,    IDS(CALCPAGEBREAK) },
-    { Group_Calc,    IDS(CALCPAGEBREAKMANUAL) },
-    { Group_Calc,    IDS(CALCPAGEBREAKAUTOMATIC) },
-    { Group_Calc,    IDS(CALCDETECTIVE) },
-    { Group_Calc,    IDS(CALCDETECTIVEERROR) },
-    { Group_Calc,    IDS(CALCREFERENCE) },
-    { Group_Calc,    IDS(CALCNOTESBACKGROUND) },
-    { Group_Draw,    IDS(DRAWGRID) },
-    { Group_Basic,   IDS(BASICIDENTIFIER) },
-    { Group_Basic,   IDS(BASICCOMMENT) },
-    { Group_Basic,   IDS(BASICNUMBER) },
-    { Group_Basic,   IDS(BASICSTRING) },
-    { Group_Basic,   IDS(BASICOPERATOR) },
-    { Group_Basic,   IDS(BASICKEYWORD) },
-    { Group_Basic,   IDS(BASICERROR) },
-    { Group_Sql,     IDS(SQLIDENTIFIER) },
-    { Group_Sql,     IDS(SQLNUMBER) },
-    { Group_Sql,     IDS(SQLSTRING) },
-    { Group_Sql,     IDS(SQLOPERATOR) },
-    { Group_Sql,     IDS(SQLKEYWORD) },
-    { Group_Sql,     IDS(SQLPARAMETER) },
-    { Group_Sql,     IDS(SQLCOMMENT) },
-
-    #undef IDS_CB
+    { Group_General, IDS(doccolor) },
+    { Group_General, IDS_CB(docboundaries) },
+    { Group_General, IDS(appback) },
+    { Group_General, IDS_CB(objboundaries) },
+    { Group_General, IDS_CB(tblboundaries) },
+    { Group_General, IDS(font) },
+    { Group_General, IDS_CB(unvisitedlinks) },
+    { Group_General, IDS_CB(visitedlinks) },
+    { Group_General, IDS(autospellcheck) },
+    { Group_General, IDS(smarttags) },
+    { Group_General, IDS_CB(shadows) },
+
+    { Group_Writer,  IDS(writergrid) },
+    { Group_Writer,  IDS_CB(field) },
+    { Group_Writer,  IDS_CB(index) },
+    { Group_Writer,  IDS(direct) },
+    { Group_Writer,  IDS(script) },
+    { Group_Writer,  IDS_CB(section) },
+    { Group_Writer,  IDS(hdft) },
+    { Group_Writer,  IDS(pagebreak) },
+
+    { Group_Html,    IDS(sgml) },
+    { Group_Html,    IDS(htmlcomment) },
+    { Group_Html,    IDS(htmlkeyword) },
+    { Group_Html,    IDS(unknown) },
+
+    { Group_Calc,    IDS(calcgrid) },
+    { Group_Calc,    IDS(brk) },
+    { Group_Calc,    IDS(brkmanual) },
+    { Group_Calc,    IDS(brkauto) },
+    { Group_Calc,    IDS(det) },
+    { Group_Calc,    IDS(deterror) },
+    { Group_Calc,    IDS(ref) },
+    { Group_Calc,    IDS(notes) },
+
+    { Group_Draw,    IDS(drawgrid) },
+
+    { Group_Basic,   IDS(basicid) },
+    { Group_Basic,   IDS(basiccomment) },
+    { Group_Basic,   IDS(basicnumber) },
+    { Group_Basic,   IDS(basicstring) },
+    { Group_Basic,   IDS(basicop) },
+    { Group_Basic,   IDS(basickeyword) },
+    { Group_Basic,   IDS(error) },
+
+    { Group_Sql,     IDS(sqlid) },
+    { Group_Sql,     IDS(sqlnumber) },
+    { Group_Sql,     IDS(sqlstring) },
+    { Group_Sql,     IDS(sqlop) },
+    { Group_Sql,     IDS(sqlkeyword) },
+    { Group_Sql,     IDS(sqlparam) },
+    { Group_Sql,     IDS(sqlcomment) }
+
     #undef IDS
 };
 
 } // namespace
 
-
-//
-// SvxExtFixedText_Impl
-//
-
-class SvxExtFixedText_Impl : public FixedText
-{
-private:
-    long m_nGroupHeight;
-
-protected:
-    virtual void DataChanged (DataChangedEvent const& rDCEvt);
-
-public:
-    SvxExtFixedText_Impl (Window* pParent, ResId const& rResId) :
-        FixedText(pParent, rResId), m_nGroupHeight(0)
-    { }
-
-    long GetGroupHeight () const { return m_nGroupHeight; }
-    void SetGroupHeight (long nHeight) { m_nGroupHeight = nHeight; }
-};
-
-void SvxExtFixedText_Impl::DataChanged (DataChangedEvent const& rDCEvt)
-{
-    FixedText::DataChanged(rDCEvt);
-    if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
-         (rDCEvt.GetFlags() & SETTINGS_STYLE) )
-    {
-        Font aFont = GetFont();
-        aFont.SetWeight(WEIGHT_BOLD);
-        SetFont(aFont);
-        SetBackground(Wallpaper(Color(COL_TRANSPARENT)));
-    }
-}
-
-
 //
 // ColorConfigWindow_Impl
 //
 
-class ColorConfigWindow_Impl : public Window
+class ColorConfigWindow_Impl
+    : public VclContainer
+    , public VclBuilderContainer
 {
 public:
-    ColorConfigWindow_Impl (Window* pParent, ResId const& rResId);
-    ~ColorConfigWindow_Impl ();
+    ColorConfigWindow_Impl(Window* pParent);
+    ~ColorConfigWindow_Impl();
 
 public:
     void SetLinks (Link const&, Link const&, Link const&);
     unsigned GetEntryHeight () const { return vEntries[0]->GetHeight(); }
     void Update (EditableColorConfig const*, EditableExtendedColorConfig const*);
-    void ScrollHdl (long& nScrollPos, ScrollBar const&);
+    void ScrollHdl(const ScrollBar&);
     void ClickHdl (EditableColorConfig*, CheckBox*);
     void ColorHdl (EditableColorConfig*, EditableExtendedColorConfig*, ColorListBox*);
-    void SetHeaderBar (HeaderBar&, ScrollBar const&, ResMgr&);
-    void SetScrollBar (ScrollBar&);
-
+    void Init(ScrollBar *pVScroll, HeaderBar *m_pHeaderHB);
+    void AdjustScrollBar();
+    void AdjustHeaderBar();
 
 private:
     // Chapter -- horizontal group separator stripe with text
     class Chapter
     {
-        // parent window
-        ColorConfigWindow_Impl& rParent;
-        // gray (?) stripe
-        Window aBackground;
         // text
-        SvxExtFixedText_Impl aText;
-
+        bool m_bOwnsWidget;
+        FixedText *m_pText;
     public:
-        Chapter (ColorConfigWindow_Impl& rParent, Group, ResMgr&);
-        Chapter (ColorConfigWindow_Impl& rParent, ResMgr&, unsigned nYPos, rtl::OUString const& sDisplayName);
+        Chapter(FixedText *pText);
+        Chapter(Window *pGrid, unsigned nYPos, const rtl::OUString& sDisplayName);
+        ~Chapter();
     public:
-        void Show (Wallpaper const& rBackWall);
-        void Hide ();
-        void MoveVertically (long nOffset);
-        void SetBackground (Wallpaper const& W) { aBackground.SetBackground(W); }
-        long GetHeight () const { return aText.GetGroupHeight(); }
-        void SetHeight (long nHeight) { aText.SetGroupHeight(nHeight); }
-        long GetLeft () const { return aText.GetPosPixel().X(); }
-        long GetTop () const { return aText.GetPosPixel().Y(); }
+        void SetBackground(const Wallpaper& W) { m_pText->SetBackground(W); }
+        long GetHeight() const { return m_pText->GetSizePixel().Height(); }
+        long GetLeft() const { return m_pText->GetPosPixel().X(); }
+        void Show(const Wallpaper& rBackWall);
+        void Hide();
     };
 
     // Entry -- a color config entry:
@@ -261,40 +198,39 @@ private:
     class Entry
     {
     public:
-        Entry (Window& rParent, unsigned iEntry, ResMgr&);
-        Entry (Window& rParent, ResMgr&, unsigned nYPos, ExtendedColorConfigValue const& aColorEntry);
+        Entry(ColorConfigWindow_Impl& rParent, unsigned iEntry, long nCheckBoxLabelOffset);
+        Entry(Window* pGrid, unsigned nYPos, const ExtendedColorConfigValue& aColorEntry,
+            long nCheckBoxLabelOffset);
+        ~Entry();
     public:
-        void MoveVertically (long nOffset);
-        bool MoveAndShow (long nOffset, long nMaxVisible, bool bShow);
         void Show ();
         void Hide ();
-        void SetAppearance (unsigned iEntry, Wallpaper const& aTextWall, ColorListBox const& aSampleList);
-        void SetTextColor (Color C) { pText->SetTextColor(C); }
+        void SetAppearance(Wallpaper const& aTextWall, ColorListBox const& aSampleList);
+        void SetTextColor (Color C) { m_pText->SetTextColor(C); }
     public:
         void SetLinks (Link const&, Link const&, Link const&);
-        void SetHeader (ColorConfigWindow_Impl const& rParent, HeaderBar&, ResMgr&) const;
         void Update (ColorConfigEntry, ColorConfigValue const&);
         void Update (ExtendedColorConfigValue const&);
         void ColorChanged (ColorConfigEntry, ColorConfigValue&);
         void ColorChanged (ExtendedColorConfigValue&);
     public:
-        long GetTop () const { return aPreview.GetPosPixel().Y(); }
-        long GetBottom () const { return GetTop() + aPreview.GetSizePixel().Height(); }
-        unsigned GetHeight () const { return aColorList.GetSizePixel().Height(); }
+        long GetTop () const { return m_pPreview->GetPosPixel().Y(); }
+        long GetBottom () const { return GetTop() + m_pPreview->GetSizePixel().Height(); }
+        unsigned GetHeight () const { return m_pColorList->GetSizePixel().Height(); }
     public:
-        bool Is (CheckBox* pBox) const { return pText.get() == pBox; }
-        bool Is (ColorListBox* pBox) const { return &aColorList == pBox; }
+        bool Is (CheckBox* pBox) const { return m_pText == pBox; }
+        bool Is (ColorListBox* pBox) const { return m_pColorList == pBox; }
 
     private:
+        bool m_bOwnsWidgets;
         // checkbox (CheckBox) or simple text (FixedText)
-        boost::shared_ptr<Control> pText;
+        Control* m_pText;
         // color list box
-        ColorListBox aColorList;
+        ColorListBox* m_pColorList;
         // color preview box
-        Window aPreview;
+        Window* m_pPreview;
         // default color
-        Color aDefaultColor;
-
+        Color m_aDefaultColor;
     private:
         void SetColor (Color);
     };
@@ -309,16 +245,21 @@ private:
 
 
 private:
+    VclGrid *m_pGrid;
+    ScrollBar *m_pVScroll;
+    HeaderBar *m_pHeaderHB;
+
     // initialization
-    void CreateEntries (ResMgr&);
-    void SetAppearance ();
+    void CreateEntries();
+    void SetAppearance();
 
 private:
-    long GetDeltaAbove (Group) const;
-
     virtual void Command (CommandEvent const& rCEvt);
     virtual void DataChanged (DataChangedEvent const& rDCEvt);
 
+    virtual Size calculateRequisition() const;
+    virtual void setAllocation(const Size &rAllocation);
+
     unsigned GetPosBehindLastChapter () const;
 
     bool IsGroupVisible (Group) const;
@@ -335,31 +276,6 @@ Group GetGroup (unsigned nEntry)
     return vEntryInfo[nEntry].eGroup;
 }
 
-// moves a window vertically
-void MoveVertically (Window& rWin, long nOffset)
-{
-    if (nOffset)
-    {
-        Point aPos = rWin.GetPosPixel();
-        aPos.Y() += nOffset;
-        rWin.SetPosPixel(aPos);
-    }
-}
-
-// moves a window vertically and optionally shows it
-bool MoveAndShow (Window& rWin, long nOffset, long nMaxVisible, bool bShow)
-{
-    // moves
-    Point aPos = rWin.GetPosPixel();
-    aPos.Y() += nOffset;
-    rWin.SetPosPixel(aPos);
-    // shows only if it is really visible
-    if (bShow)
-        bShow = aPos.Y() <= nMaxVisible && aPos.Y() + rWin.GetSizePixel().Height() >= 0;
-    rWin.Show(bShow);
-    return bShow;
-}
-
 } // namespace
 
 
@@ -372,225 +288,145 @@ bool MoveAndShow (Window& rWin, long nOffset, long nMaxVisible, bool bShow)
 // rParent: parent window (ColorConfigWindow_Impl)
 // eGroup: which group is this?
 // rResMgr: resource manager
-ColorConfigWindow_Impl::Chapter::Chapter (
-    ColorConfigWindow_Impl& Parent, Group eGroup, ResMgr& rResMgr
-) :
-    rParent(Parent),
-    aBackground(&rParent),
-    aText(&rParent, ResId(vGroupInfo[eGroup].nTextResId, rResMgr))
-{ }
+ColorConfigWindow_Impl::Chapter::Chapter(FixedText* pText)
+    : m_bOwnsWidget(false)
+    , m_pText(pText)
+{
+}
 
 // ctor for extended groups
-ColorConfigWindow_Impl::Chapter::Chapter (
-    ColorConfigWindow_Impl& Parent, ResMgr& rResMgr,
-    unsigned nYPos, rtl::OUString const& sDisplayName
-) :
-    rParent(Parent),
-    aBackground(&rParent),
-    aText(&rParent, ResId(FT_SQL_COMMAND, rResMgr))
+ColorConfigWindow_Impl::Chapter::Chapter(Window *pGrid,
+    unsigned nYPos, const OUString& rDisplayName)
+    : m_bOwnsWidget(true)
 {
-    Point const aTextPos = rParent.LogicToPixel(Point(FT_XPOS, nYPos), MAP_APPFONT);
-    Size const aTextSize = rParent.LogicToPixel(Size(FT_WIDTH, SEP_HEIGHT), MAP_APPFONT);
-    aText.SetPosSizePixel(aTextPos, aTextSize);
-    aText.SetText(sDisplayName);
+    m_pText = new FixedText(pGrid, WB_LEFT|WB_VCENTER|WB_3DLOOK);
+    m_pText->set_font_attribute("weight", "bold");
+    m_pText->set_grid_width(3);
+    m_pText->set_grid_left_attach(0);
+    m_pText->set_grid_top_attach(nYPos);
+    m_pText->SetText(rDisplayName);
 }
 
-
-void ColorConfigWindow_Impl::Chapter::Show (Wallpaper const& rBackWall)
+ColorConfigWindow_Impl::Chapter::~Chapter()
 {
-    { // background
-        Point const aBgPos(
-            rParent.LogicToPixel(Point(0, 0), MAP_APPFONT).X(),
-            aText.GetPosPixel().Y()
-        );
-        Size const aBgSize(
-            rParent.GetSizePixel().Width(),
-            rParent.LogicToPixel(Size(0, SEP_HEIGHT), MAP_APPFONT).Height()
-        );
-        aBackground.SetPosSizePixel(aBgPos, aBgSize);
-        aBackground.SetBackground(rBackWall);
-        aBackground.Show();
-    }
-
-    { // text
-        Font aFont = aText.GetFont();
-        aFont.SetWeight(WEIGHT_BOLD);
-        aText.SetFont(aFont);
-        aText.SetBackground(rBackWall);
-        aText.Show();
-        aText.SetZOrder(0, WINDOW_ZORDER_FIRST);
-    }
+    if (m_bOwnsWidget)
+        delete m_pText;
 }
 
-void ColorConfigWindow_Impl::Chapter::Hide ()
+void ColorConfigWindow_Impl::Chapter::Show(Wallpaper const& rBackWall)
 {
-    aBackground.Hide();
-    aText.Hide();
+    // background
+    m_pText->SetBackground(rBackWall);
+    m_pText->Show();
 }
 
-// moves the chapter title vertically by nOffset pixels
-void ColorConfigWindow_Impl::Chapter::MoveVertically (long nOffset)
+void ColorConfigWindow_Impl::Chapter::Hide ()
 {
-    ::MoveVertically(aBackground, nOffset);
-    ::MoveVertically(aText, nOffset);
+    m_pText->Hide();
 }
 
-
 //
 // ColorConfigWindow_Impl::Entry
 //
 
-// ctor for default entries
-// pParent: parent window (ColorConfigWindow_Impl)
-// iEntry: which entry is this? (in the vEntryInfo[] array above)
-// rResMgr: resource manager
-ColorConfigWindow_Impl::Entry::Entry (
-    Window& rParent, unsigned iEntry, ResMgr& rResMgr
-) :
-    aColorList(&rParent, ResId(vEntryInfo[iEntry].nColorListResId, rResMgr)),
-    aPreview(&rParent, ResId(vEntryInfo[iEntry].nPreviewResId, rResMgr)),
-    aDefaultColor(ColorConfig::GetDefaultColor(static_cast<ColorConfigEntry>(iEntry)))
+ColorConfigWindow_Impl::Entry::Entry(ColorConfigWindow_Impl& rParent, unsigned iEntry,
+    long nCheckBoxLabelOffset)
+    : m_bOwnsWidgets(false)
+    , m_aDefaultColor(ColorConfig::GetDefaultColor(static_cast<ColorConfigEntry>(iEntry)))
 {
-    // has checkbox?
-    if (vEntryInfo[iEntry].bCheckBox)
+    rParent.get(m_pText, vEntryInfo[iEntry].pText);
+    if (!vEntryInfo[iEntry].bCheckBox)
     {
-        pText = boost::shared_ptr<CheckBox>( new CheckBox (
-            &rParent, ResId(vEntryInfo[iEntry].nTextResId, rResMgr)
-        ) );
-    }
-    else
-    {
-        pText = boost::shared_ptr<FixedText>( new FixedText (
-            &rParent, ResId(vEntryInfo[iEntry].nTextResId, rResMgr)
-        ) );
+        m_pText->set_margin_left(m_pText->get_margin_left() +
+            nCheckBoxLabelOffset);
     }
+    rParent.get(m_pColorList, vEntryInfo[iEntry].pColor);
+    rParent.get(m_pPreview, vEntryInfo[iEntry].pPreview);
 }
 
 // ctor for extended entries
-ColorConfigWindow_Impl::Entry::Entry (
-    Window& rParent, ResMgr& rResMgr,
-    unsigned nYPos, ExtendedColorConfigValue const& aColorEntry
-) :
-    pText(boost::shared_ptr<FixedText>(new FixedText (&rParent, ResId(FT_BASICERROR, rResMgr)))),
-    aColorList(&rParent, ResId(LB_BASICERROR, rResMgr)),
-    aPreview(&rParent, ResId(WN_BASICERROR, rResMgr)),
-    aDefaultColor(aColorEntry.getDefaultColor())
-{
-    { // text (no checkbox)
-        FixedText* const pFixedText = static_cast<FixedText*>(pText.get());
-        Point const aTextPos = rParent.LogicToPixel(Point(FT_XPOS, nYPos), MAP_APPFONT);
-        Size const aTextSize = rParent.LogicToPixel(Size(FT_WIDTH, FT_HEIGHT), MAP_APPFONT);
-        pFixedText->SetPosSizePixel(aTextPos, aTextSize);
-        pFixedText->SetText(aColorEntry.getDisplayName());
-    }
-    { // color listbox
-        Point const aListPos = rParent.LogicToPixel(Point(LB_XPOS, nYPos), MAP_APPFONT);
-        Size const aListSize = rParent.LogicToPixel(Size(LB_WIDTH, LB_HEIGHT), MAP_APPFONT);
-        aColorList.SetPosSizePixel(aListPos, aListSize);
-    }
-    { // preview box
-        Point const aPreviewPos = rParent.LogicToPixel(Point(WN_XPOS, nYPos), MAP_APPFONT);
-        Size const aPreviewSize = rParent.LogicToPixel(Size(WN_WIDTH, WN_HEIGHT), MAP_APPFONT);
-        aPreview.SetPosSizePixel(aPreviewPos, aPreviewSize);
-    }
-}
-
-// moves entry vertically by nOffset pixels
-void ColorConfigWindow_Impl::Entry::MoveVertically (long nOffset)
+ColorConfigWindow_Impl::Entry::Entry( Window *pGrid, unsigned nYPos,
+    ExtendedColorConfigValue const& rColorEntry, long nCheckBoxLabelOffset)
+    : m_bOwnsWidgets(true)
+    , m_aDefaultColor(rColorEntry.getDefaultColor())
 {
-    // moving all components
-    ::MoveVertically(*pText, nOffset);
-    ::MoveVertically(aColorList, nOffset);
-    ::MoveVertically(aPreview, nOffset);
+    m_pText = new FixedText(pGrid, WB_LEFT|WB_VCENTER|WB_3DLOOK);
+    m_pText->set_grid_width(3);
+    m_pText->set_grid_left_attach(0);
+    m_pText->set_grid_top_attach(nYPos);
+    m_pText->set_margin_left(6 + nCheckBoxLabelOffset);
+    m_pText->SetText(rColorEntry.getDisplayName());
+    m_pText->Show();
+
+    WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP|WB_DROPDOWN;
+    m_pColorList = new ColorListBox(pGrid, nWinBits);
+    m_pColorList->EnableAutoSize(true);
+    m_pColorList->set_grid_left_attach(1);
+    m_pColorList->set_grid_top_attach(nYPos);
+    m_pColorList->Show();
+
+    m_pPreview = new Window(pGrid, WB_BORDER);
+    m_pPreview->set_grid_left_attach(2);
+    m_pPreview->set_grid_top_attach(nYPos);
+    m_pPreview->set_margin_right(6);
+    m_pPreview->Show();
 }
 
-// moves and shows
-bool ColorConfigWindow_Impl::Entry::MoveAndShow (long nOffset, long nMaxVisible, bool bShow)
+ColorConfigWindow_Impl::Entry::~Entry()
 {
-    // if any of the items on the current line is visible, the
-    // whole line should be visible
-    bool bRes = false;
-    bRes = ::MoveAndShow(*pText,     nOffset, nMaxVisible, bShow) || bRes;
-    bRes = ::MoveAndShow(aColorList, nOffset, nMaxVisible, bShow) || bRes;
-    bRes = ::MoveAndShow(aPreview,   nOffset, nMaxVisible, bShow) || bRes;
-    return bRes;
+    if (m_bOwnsWidgets)
+    {
+        delete m_pText;
+        delete m_pColorList;
+        delete m_pPreview;
+    }
 }
 
 void ColorConfigWindow_Impl::Entry::Show ()
 {
-    pText->Show();
-    aColorList.Show();
-    aPreview.Show();
+    m_pText->Show();
+    m_pColorList->Show();
+    m_pPreview->Show();
 }
 
 void ColorConfigWindow_Impl::Entry::Hide ()
 {
-    pText->Hide();
-    aColorList.Hide();
-    aPreview.Hide();
+    m_pText->Hide();
+    m_pColorList->Hide();
+    m_pPreview->Hide();
 }
 
 // SetAppearance()
 // iEntry: which entry is this?
 // aTextWall: background of the text (transparent)
 // aSampleList: sample color listbox (to copy from)
-void ColorConfigWindow_Impl::Entry::SetAppearance (
-    unsigned iEntry, Wallpaper const& aTextWall,
-    ColorListBox const& aSampleList
-) {
+void ColorConfigWindow_Impl::Entry::SetAppearance(
+    Wallpaper const& aTextWall,
+    ColorListBox const& aSampleList)
+{
     // text (and optionally checkbox)
-    pText->SetBackground(aTextWall);
-    if (CheckBox* pCheckBox = dynamic_cast<CheckBox*>(pText.get()))
-        pCheckBox->SetHelpId(vEntryInfo[iEntry].sCheckBoxHid);
+    m_pText->SetBackground(aTextWall);
     // preview
-    aPreview.SetBorderStyle(WINDOW_BORDER_MONO);
+    m_pPreview->SetBorderStyle(WINDOW_BORDER_MONO);
     // color list
-    aColorList.CopyEntries(aSampleList);
-    aColorList.InsertAutomaticEntryColor(aDefaultColor);
-    if (iEntry < ColorConfigEntryCount)
-        aColorList.SetHelpId(vEntryInfo[iEntry].sColorListHid);
+    m_pColorList->CopyEntries(aSampleList);
+    m_pColorList->InsertAutomaticEntryColor(m_aDefaultColor);
 }
 
 // SetLinks()
-void ColorConfigWindow_Impl::Entry::SetLinks (
-    Link const& aCheckLink, Link const& aColorLink, Link const& aGetFocusLink
-) {
-    aColorList.SetSelectHdl(aColorLink);
-    aColorList.SetGetFocusHdl(aGetFocusLink);
-    if (CheckBox* pCheckBox = dynamic_cast<CheckBox*>(pText.get()))
+void ColorConfigWindow_Impl::Entry::SetLinks(
+    Link const& aCheckLink, Link const& aColorLink,
+    Link const& aGetFocusLink)
+{
+    m_pColorList->SetSelectHdl(aColorLink);
+    m_pColorList->SetGetFocusHdl(aGetFocusLink);
+    if (CheckBox* pCheckBox = dynamic_cast<CheckBox*>(m_pText))
     {
         pCheckBox->SetClickHdl(aCheckLink);
         pCheckBox->SetGetFocusHdl(aGetFocusLink);
     }
 }
 
-// fills the header bar
-void ColorConfigWindow_Impl::Entry::SetHeader (
-    ColorConfigWindow_Impl const& rParent,
-    HeaderBar& rHeader, ResMgr& rResMgr
-) const {
-    // title strings
-    String const sTitle[] =
-    {
-        ResId(ST_ON, rResMgr),
-        ResId(ST_UIELEM, rResMgr),
-        ResId(ST_COLSET, rResMgr),
-        ResId(ST_PREVIEW, rResMgr),
-    };
-    // horizontal positions
-    unsigned const nX0 = 0;
-    unsigned const nX1 = rParent.vChapters.front()->GetLeft();
-    unsigned const nX2 = aColorList.GetPosPixel().X();
-    unsigned const nX3 = aPreview.GetPosPixel().X();
-    unsigned const nX4 = rHeader.GetSizePixel().Width();
-    // filling
-    WinBits const nHeadBits = HIB_VCENTER | HIB_FIXED | HIB_FIXEDPOS;
-    rHeader.InsertItem(1, sTitle[0], nX1 - nX0, nHeadBits | HIB_CENTER);
-    rHeader.InsertItem(2, sTitle[1], nX2 - nX1, nHeadBits | HIB_LEFT);
-    rHeader.InsertItem(3, sTitle[2], nX3 - nX2, nHeadBits | HIB_LEFT);
-    rHeader.InsertItem(4, sTitle[3], nX4 - nX3, nHeadBits | HIB_LEFT);
-}
-
 // updates a default color config entry
 void ColorConfigWindow_Impl::Entry::Update (
     ColorConfigEntry aColorEntry, ColorConfigValue const& rValue
@@ -599,15 +435,15 @@ void ColorConfigWindow_Impl::Entry::Update (
     if ((unsigned)rValue.nColor == COL_AUTO)
     {
         aColor = ColorConfig::GetDefaultColor(aColorEntry);
-        aColorList.SelectEntryPos(0);
+        m_pColorList->SelectEntryPos(0);
     }
     else
     {
         aColor = Color(rValue.nColor);
-        aColorList.SelectEntry(aColor);
+        m_pColorList->SelectEntry(aColor);
     }
-    aPreview.SetBackground(Wallpaper(aColor));
-    if (CheckBox* pCheckBox = dynamic_cast<CheckBox*>(pText.get()))
+    m_pPreview->SetBackground(Wallpaper(aColor));
+    if (CheckBox* pCheckBox = dynamic_cast<CheckBox*>(m_pText))
         pCheckBox->Check(rValue.bIsVisible);
 }
 
@@ -617,9 +453,9 @@ void ColorConfigWindow_Impl::Entry::Update (
 ) {
     Color aColor(rValue.getColor());
     if (rValue.getColor() == rValue.getDefaultColor())
-        aColorList.SelectEntryPos(0);
+        m_pColorList->SelectEntryPos(0);
     else
-        aColorList.SelectEntry(aColor);
+        m_pColorList->SelectEntry(aColor);
     SetColor(aColor);
 }
 
@@ -629,14 +465,14 @@ void ColorConfigWindow_Impl::Entry::ColorChanged (
     ColorConfigValue& rValue
 ) {
     Color aColor;
-    if (aColorList.IsAutomaticSelected())
+    if (m_pColorList->IsAutomaticSelected())
     {
         aColor = ColorConfig::GetDefaultColor(aColorEntry);
         rValue.nColor = COL_AUTO;
     }
     else
     {
-        aColor = aColorList.GetSelectEntryColor();
+        aColor = m_pColorList->GetSelectEntryColor();
         rValue.nColor = aColor.GetColor();
     }
     SetColor(aColor);
@@ -646,10 +482,10 @@ void ColorConfigWindow_Impl::Entry::ColorChanged (
 void ColorConfigWindow_Impl::Entry::ColorChanged (
     ExtendedColorConfigValue& rValue
 ) {
-    Color aColor = aColorList.GetSelectEntryColor();
+    Color aColor = m_pColorList->GetSelectEntryColor();
     rValue.setColor(aColor.GetColor());
     // automatic?
-    if (aColorList.GetSelectEntryPos() == 0)
+    if (m_pColorList->GetSelectEntryPos() == 0)
     {
         rValue.setColor(rValue.getDefaultColor());
         aColor.SetColor(rValue.getColor());
@@ -659,8 +495,8 @@ void ColorConfigWindow_Impl::Entry::ColorChanged (
 
 void ColorConfigWindow_Impl::Entry::SetColor (Color aColor)
 {
-    aPreview.SetBackground(Wallpaper(aColor));
-    aPreview.Invalidate();
+    m_pPreview->SetBackground(Wallpaper(aColor));
+    m_pPreview->Invalidate();
 }
 
 
@@ -668,51 +504,74 @@ void ColorConfigWindow_Impl::Entry::SetColor (Color aColor)
 // ColorConfigWindow_Impl
 //
 
-ColorConfigWindow_Impl::ColorConfigWindow_Impl (Window* pParent, ResId const& rResId) :
-    Window(pParent, rResId)
+ColorConfigWindow_Impl::ColorConfigWindow_Impl(Window* pParent)
+    : VclContainer(pParent)
 {
-    CreateEntries(*rResId.GetResMgr());
-    Resource::FreeResource();
+    m_pUIBuilder = new VclBuilder(this, getUIRootDir(), "cui/ui/colorconfigwin.ui");
+    get(m_pGrid, "ColorConfigWindow");
+    CreateEntries();
     SetAppearance();
 }
 
-void ColorConfigWindow_Impl::CreateEntries (ResMgr& rResMgr)
+Size ColorConfigWindow_Impl::calculateRequisition() const
+{
+    return getLayoutRequisition(*m_pGrid);
+}
+
+void ColorConfigWindow_Impl::setAllocation(const Size &rAllocation)
+{
+    Point aChildPos(0, 0);
+    Size aChildSize(getLayoutRequisition(*m_pGrid));
+    aChildSize.Width() = rAllocation.Width();
+    setLayoutPosSize(*m_pGrid, aChildPos, aChildSize);
+    AdjustScrollBar();
+    AdjustHeaderBar();
+    ScrollHdl(*m_pVScroll);
+}
+
+void ColorConfigWindow_Impl::CreateEntries()
 {
     // creating group headers
     vChapters.reserve(nGroupCount);
     for (unsigned i = 0; i != nGroupCount; ++i)
     {
-        vChapters.push_back(boost::shared_ptr<Chapter> (
-            new Chapter( *this, static_cast<Group>(i), rResMgr ) ) );
+        vChapters.push_back(boost::shared_ptr<Chapter>(
+            new Chapter(get<FixedText>(vGroupNames[i]))));
     }
 
-    // creating entries
-    vEntries.reserve(ColorConfigEntryCount);
-    for (unsigned i = 0; i != ColorConfigEntryCount; ++i)
-        vEntries.push_back( boost::shared_ptr<Entry>(new Entry (*this, i, rResMgr) ) );
-
-    // calculate heights of groups which can be hidden
+    //Here we want to get the amount to add to the position
+    //of a FixedText to get it to align its contents
+    //with that of a CheckBox
+    //We should have something like a Control::getTextOrigin
+    //Ideally we could use something like GetCharacterBounds,
+    //but I think that only works on truly visible controls
+    long nCheckBoxLabelOffset = 0;
     {
-        unsigned nNextY = GetPosBehindLastChapter(); // next Y coordinate
-        for (int i = nGroupCount - 1; i >= 0; --i)
-        {
-            unsigned nY = vChapters[i]->GetTop();
-            vChapters[i]->SetHeight(nNextY - nY);
-            nNextY = nY;
-        }
+        OUString sSampleText("X");
+        CheckBox aCheckBox(this);
+        FixedText aFixedText(this);
+        aCheckBox.SetText(sSampleText);
+        aFixedText.SetText(sSampleText);
+        Size aCheckSize(aCheckBox.CalcMinimumSize(0x7fffffff));
+        Size aFixedSize(aFixedText.CalcMinimumSize(0x7fffffff));
+        nCheckBoxLabelOffset = aCheckSize.Width() - aFixedSize.Width();
     }
 
+    // creating entries
+    vEntries.reserve(ColorConfigEntryCount);
+    for (unsigned i = 0; i < SAL_N_ELEMENTS(vEntryInfo); ++i)
+        vEntries.push_back(boost::shared_ptr<Entry>(new Entry(*this, i, nCheckBoxLabelOffset)));
+
     // extended entries
     ExtendedColorConfig aExtConfig;
     if (unsigned const nExtGroupCount = aExtConfig.GetComponentCount())
     {
-        unsigned nLineNum = ( GetPosBehindLastChapter() /
-            LogicToPixel(Size(0, LINE_HEIGHT), MAP_APPFONT).Height() ) + 1;
+        size_t nLineNum = vChapters.size() + vEntries.size() + 1;
         for (unsigned j = 0; j != nExtGroupCount; ++j)
         {
             rtl::OUString const sComponentName = aExtConfig.GetComponentName(j);
-            vChapters.push_back(boost::shared_ptr<Chapter>(new Chapter (
-                *this, rResMgr, nLineNum * LINE_HEIGHT,
+            vChapters.push_back(boost::shared_ptr<Chapter>(new Chapter(
+                m_pGrid, nLineNum,
                 aExtConfig.GetComponentDisplayName(sComponentName)
             )));
             ++nLineNum;
@@ -722,7 +581,7 @@ void ColorConfigWindow_Impl::CreateEntries (ResMgr& rResMgr)
                 ExtendedColorConfigValue const aColorEntry =
                     aExtConfig.GetComponentColorConfigValue(sComponentName, i);
                 vEntries.push_back(boost::shared_ptr<Entry>( new Entry (
-                    *this, rResMgr, nLineNum * LINE_HEIGHT, aColorEntry
+                    m_pGrid, nLineNum, aColorEntry, nCheckBoxLabelOffset
                 )));
                 ++nLineNum;
             }
@@ -738,15 +597,9 @@ void ColorConfigWindow_Impl::SetAppearance ()
     Color const aBackColor = rStyleSettings.GetHighContrastMode() ?
         rStyleSettings.GetShadowColor() : Color(COL_LIGHTGRAY);
     Wallpaper const aBackWall(aBackColor);
-    for (unsigned i = 0; i != vChapters.size(); ++i)
-    {
-        if (IsGroupVisible(static_cast<Group>(i)))
-            vChapters[i]->Show(aBackWall);
-        else
-            vChapters[i]->Hide();
-    }
+    for (size_t i = 0; i != vChapters.size(); ++i)
+        vChapters[i]->Show(aBackWall);
     SetBackground(Wallpaper(rStyleSettings.GetFieldColor()));
-    SetHelpId(HID_OPTIONS_COLORCONFIG_COLORLIST_WIN);
 
     // #104195# when the window color is the same as the text color it has to be changed
     Color aWinCol = rStyleSettings.GetWindowColor();
@@ -758,7 +611,7 @@ void ColorConfigWindow_Impl::SetAppearance ()
         if (aRCheckCol == aWinCol)
             aRCheckCol = Color(COL_BLACK);
         // setting new text color for each entry
-        for (unsigned i = 0; i != vEntries.size(); ++i)
+        for (size_t i = 0; i != vEntries.size(); ++i)
             vEntries[i]->SetTextColor(aRCheckCol);
     }
 
@@ -775,77 +628,47 @@ void ColorConfigWindow_Impl::SetAppearance ()
         }
     }
 
-    // positioning and appearance
-    Group eGroup = Group_Unknown;
-    for (unsigned i = 0; i != vEntries.size(); ++i)
+    // appearance
+    for (size_t i = 0; i != vEntries.size(); ++i)
     {
-        Group const eNewGroup = GetGroup(i);
-        bool const bShow = IsGroupVisible(eNewGroup);
-        long const nDelta = bShow ? -GetDeltaAbove(eNewGroup) : 0;
-
-        // new group?
-        if (eNewGroup > eGroup)
-        {
-            eGroup = eNewGroup;
-            if (bShow)
-                vChapters[eGroup]->MoveVertically(nDelta);
-        }
-        // positioning
-        if (bShow)
-            vEntries[i]->MoveVertically(nDelta);
-        else
-            vEntries[i]->Hide();
         // appearance
-        vEntries[i]->SetAppearance(i, aTransparentWall, aSampleColorList);
+        vEntries[i]->SetAppearance(aTransparentWall, aSampleColorList);
     }
 }
 
-
 ColorConfigWindow_Impl::~ColorConfigWindow_Impl ()
 { }
 
-void ColorConfigWindow_Impl::SetHeaderBar (
-    HeaderBar& rHeaderBar, ScrollBar const& rVScroll, ResMgr& rResMgr
-) {
-    rHeaderBar.SetPosSizePixel(
-        Point(0, 0),
-        Size(GetParent()->GetOutputSizePixel().Width(), rVScroll.GetPosPixel().Y())
-    );
-    vEntries.front()->SetHeader(*this, rHeaderBar, rResMgr);
-    rHeaderBar.Show();
+void ColorConfigWindow_Impl::AdjustHeaderBar()
+{
+    // horizontal positions
+    unsigned const nX0 = 0;
+    unsigned const nX1 = get<Window>("doccolor")->GetPosPixel().X();
+    unsigned const nX2 = get<Window>("doccolor_lb")->GetPosPixel().X();
+    unsigned const nX3 = get<Window>("doccolor_wn")->GetPosPixel().X();
+    unsigned const nX4 = m_pHeaderHB->GetSizePixel().Width();
+    m_pHeaderHB->SetItemSize(1, nX1 - nX0);
+    m_pHeaderHB->SetItemSize(2, nX2 - nX1);
+    m_pHeaderHB->SetItemSize(3, nX3 - nX2);
+    m_pHeaderHB->SetItemSize(4, nX4 - nX3);
 }
 
-void ColorConfigWindow_Impl::SetScrollBar (ScrollBar& rVScroll)
+void ColorConfigWindow_Impl::AdjustScrollBar()
 {
-    rVScroll.EnableDrag();
-    rVScroll.Show();
-    rVScroll.SetRangeMin(0);
     unsigned const nScrollOffset =
         vEntries[1]->GetTop() - vEntries[0]->GetTop();
     unsigned const nVisibleEntries = GetSizePixel().Height() / nScrollOffset;
+    m_pVScroll->SetPageSize(nVisibleEntries - 1);
+    m_pVScroll->SetVisibleSize(nVisibleEntries);
+}
 
-    rVScroll.SetRangeMax(vEntries.size() + vChapters.size());
-    { // dynamic: calculate the hidden lines
-        unsigned nInvisibleLines = 0;
-        Group eGroup = Group_Unknown;
-        for (unsigned i = 0; i != vEntries.size(); ++i)
-        {
-            Group const eNewGroup = GetGroup(i);
-            bool const bVisible = IsGroupVisible(eNewGroup);
-            if (!bVisible)
-                nInvisibleLines++;
-            if (eNewGroup > eGroup)
-            {
-                eGroup = eNewGroup;
-                if (!bVisible)
-                    nInvisibleLines++;
-            }
-        }
-        rVScroll.SetRangeMax(rVScroll.GetRangeMax() - nInvisibleLines);
-    }
-
-    rVScroll.SetPageSize(nVisibleEntries - 1);
-    rVScroll.SetVisibleSize(nVisibleEntries);
+void ColorConfigWindow_Impl::Init(ScrollBar *pVScroll, HeaderBar *pHeaderHB)
+{
+    m_pHeaderHB = pHeaderHB;
+    m_pVScroll = pVScroll;
+    m_pVScroll->EnableDrag();
+    m_pVScroll->SetRangeMin(0);
+    m_pVScroll->SetRangeMax(vEntries.size() + vChapters.size());
 }
 
 // SetLinks()
@@ -859,8 +682,8 @@ void ColorConfigWindow_Impl::SetLinks (
 // Update()
 void ColorConfigWindow_Impl::Update (
     EditableColorConfig const* pConfig,
-    EditableExtendedColorConfig const* pExtConfig
-) {
+    EditableExtendedColorConfig const* pExtConfig)
+{
     // updating default entries
     for (unsigned i = 0; i != ColorConfigEntryCount; ++i)
     {
@@ -885,45 +708,12 @@ void ColorConfigWindow_Impl::Update (
 }
 
 // ScrollHdl()
-void ColorConfigWindow_Impl::ScrollHdl (long& nScrollPos, ScrollBar const& rVScroll)
+void ColorConfigWindow_Impl::ScrollHdl(const ScrollBar& rVScroll)
 {
     SetUpdateMode(true);
-    long const nOffset =
-        (vEntries[1]->GetTop() - vEntries[0]->GetTop()) *
-        (nScrollPos - rVScroll.GetThumbPos());
-    nScrollPos = rVScroll.GetThumbPos();
-    long const nWindowHeight = GetSizePixel().Height();
-    int nFirstVisible = -1, nLastVisible = -1;
-    for (unsigned i = 0; i != vEntries.size(); ++i)
-    {
-        //controls outside of the view need to be hidden to speed up accessibility tools
-        bool const bShowCtrl = IsGroupVisible(GetGroup(i));
-        if (vEntries[i]->MoveAndShow(nOffset, nWindowHeight, bShowCtrl))
-        {
-            if (nFirstVisible == -1)
-                nFirstVisible = i;
-            else
-                nLastVisible = i;
-        }
-    }
-
-    // show the one prior to the first visible and the first after the last visble control
-    // to enable KEY_TAB travelling
-    if(nFirstVisible > 0)
-    {
-        --nFirstVisible;
-        if (IsGroupVisible(GetGroup(nFirstVisible)))
-            vEntries[nFirstVisible]->Show();
-    }
-    if (nLastVisible != -1 && (unsigned)nLastVisible < vEntries.size() - 1)
-    {
-        ++nLastVisible;
-        if (IsGroupVisible(GetGroup(nLastVisible)))
-            vEntries[nLastVisible]->Show();
-    }
-
-    for (unsigned i = 0; i != vChapters.size(); ++i)
-        vChapters[i]->MoveVertically(nOffset);
+    const long nRowHeight = (vEntries[1]->GetTop() - vEntries[0]->GetTop());
+    Point aPos(0, 0 - rVScroll.GetThumbPos() * nRowHeight);
+    m_pGrid->SetPosPixel(aPos);
     SetUpdateMode(true);
 }
 
@@ -993,18 +783,14 @@ bool ColorConfigWindow_Impl::IsGroupVisible (Group eGroup) const
         case Group_Writer:
         case Group_Html:
             return aModuleOptions.IsModuleInstalled(SvtModuleOptions::E_SWRITER);
-
         case Group_Calc:
             return aModuleOptions.IsModuleInstalled(SvtModuleOptions::E_SCALC);
-
         case Group_Draw:
             return
                 aModuleOptions.IsModuleInstalled(SvtModuleOptions::E_SDRAW) ||
                 aModuleOptions.IsModuleInstalled(SvtModuleOptions::E_SIMPRESS);
-
         case Group_Sql:
             return aModuleOptions.IsModuleInstalled(SvtModuleOptions::E_SDATABASE);
-
         default:
             return true;
     }
@@ -1018,16 +804,6 @@ unsigned ColorConfigWindow_Impl::GetPosBehindLastChapter () const
     return nLastY;
 }
 
-// calculates the overall height of the invisible groups above eGroup
-long ColorConfigWindow_Impl::GetDeltaAbove (Group eGroup) const
-{
-    long nDelta = 0;
-    for (int i = 0; i != eGroup; ++i)
-        if (!IsGroupVisible(static_cast<Group>(i)))
-            nDelta += vChapters[i]->GetHeight();
-    return nDelta;
-}
-
 void ColorConfigWindow_Impl::DataChanged (DataChangedEvent const& rDCEvt)
 {
     Window::DataChanged( rDCEvt );
@@ -1049,22 +825,16 @@ void ColorConfigWindow_Impl::Command( const CommandEvent& rCEvt )
     GetParent()->Command(rCEvt);
 }
 
-//
-// ColorConfigCtrl_Impl
-//
-
-class ColorConfigCtrl_Impl : public Control
+class ColorConfigCtrl_Impl : public VclVBox
 {
-    HeaderBar               aHeaderHB;
-    ScrollBar               aVScroll;
-
-    ColorConfigWindow_Impl  aScrollWindow;
+    HeaderBar*              m_pHeaderHB;
+    VclHBox*                m_pBody;
+    ColorConfigWindow_Impl* m_pScrollWindow;
+    ScrollBar*              m_pVScroll;
 
     EditableColorConfig*            pColorConfig;
     EditableExtendedColorConfig*    pExtColorConfig;
 
-    long nScrollPos;
-
     DECL_LINK(ScrollHdl, ScrollBar*);
     DECL_LINK(ClickHdl, CheckBox*);
     DECL_LINK(ColorHdl, ColorListBox*);
@@ -1074,61 +844,96 @@ class ColorConfigCtrl_Impl : public Control
     virtual void Command (CommandEvent const& rCEvt);
     virtual void DataChanged (DataChangedEvent const& rDCEvt);
 public:
-    ColorConfigCtrl_Impl (Window* pParent, ResId const& rResId);
-    ~ColorConfigCtrl_Impl ();
+    ColorConfigCtrl_Impl(Window* pParent);
+    ~ColorConfigCtrl_Impl();
 
+    void InitHeaderBar(const OUString &rOn, const OUString &rUIElems,
+        const OUString &rColorSetting, const OUString &rPreview);
     void SetConfig (EditableColorConfig& rConfig) { pColorConfig = &rConfig; }
     void SetExtendedConfig (EditableExtendedColorConfig& rConfig) { pExtColorConfig = &rConfig; }
     void Update ();
-    long GetScrollPosition () { return aVScroll.GetThumbPos(); }
+    long GetScrollPosition ()
+    {
+        return m_pVScroll->GetThumbPos();
+    }
     void SetScrollPosition (long nSet)
     {
-        aVScroll.SetThumbPos(nSet);
-        ScrollHdl(&aVScroll);
+        m_pVScroll->SetThumbPos(nSet);
+        ScrollHdl(m_pVScroll);
     }
 };
 
-ColorConfigCtrl_Impl::ColorConfigCtrl_Impl (
-    Window* pParent, ResId const& rResId
-) :
-    Control(pParent, rResId),
+ColorConfigCtrl_Impl::ColorConfigCtrl_Impl(Window* pParent)
+    : VclVBox(pParent)
+    , pColorConfig(0)
+    , pExtColorConfig(0)
+{
+    m_pHeaderHB = new HeaderBar(this, WB_BUTTONSTYLE | WB_BOTTOMBORDER);
 
-    aHeaderHB(this, WB_BUTTONSTYLE | WB_BOTTOMBORDER),
-    aVScroll(this,      ResId(VB_VSCROLL, *rResId.GetResMgr())),
-    aScrollWindow(this, ResId(WN_SCROLL,  *rResId.GetResMgr())),
+    m_pBody = new VclHBox(this);
+    m_pScrollWindow = new ColorConfigWindow_Impl(m_pBody);
+    m_pVScroll = new ScrollBar(m_pBody, WB_VERT);
+    m_pScrollWindow->Init(m_pVScroll, m_pHeaderHB);
 
-    pColorConfig(0),
-    pExtColorConfig(0),
-    nScrollPos(0)
-{
-    aScrollWindow.SetHeaderBar(aHeaderHB, aVScroll, *rResId.GetResMgr());
-    aScrollWindow.SetScrollBar(aVScroll);
+    m_pBody->set_hexpand(true);
+    m_pBody->set_vexpand(true);
+    m_pBody->set_expand(true);
+    m_pBody->set_fill(true);
 
-    Resource::FreeResource();
+    m_pScrollWindow->set_hexpand(true);
+    m_pScrollWindow->set_vexpand(true);
+    m_pScrollWindow->set_expand(true);
+    m_pScrollWindow->set_fill(true);
 
     Link aScrollLink = LINK(this, ColorConfigCtrl_Impl, ScrollHdl);
-    aVScroll.SetScrollHdl(aScrollLink);
-    aVScroll.SetEndScrollHdl(aScrollLink);
+    m_pVScroll->SetScrollHdl(aScrollLink);
+    m_pVScroll->SetEndScrollHdl(aScrollLink);
 
     Link aCheckLink = LINK(this, ColorConfigCtrl_Impl, ClickHdl);
     Link aColorLink = LINK(this, ColorConfigCtrl_Impl, ColorHdl);
     Link aGetFocusLink = LINK(this, ColorConfigCtrl_Impl, ControlFocusHdl);
-    aScrollWindow.SetLinks(aCheckLink, aColorLink, aGetFocusLink);
+    m_pScrollWindow->SetLinks(aCheckLink, aColorLink, aGetFocusLink);
+
+    m_pHeaderHB->Show();
+    m_pVScroll->Show();
+    m_pBody->Show();
+    m_pScrollWindow->Show();
+}
+
+void ColorConfigCtrl_Impl::InitHeaderBar(const OUString &rOn, const OUString &rUIElems,
+    const OUString &rColorSetting, const OUString &rPreview)
+{
+    // filling
+    const WinBits nHeadBits = HIB_VCENTER | HIB_FIXED | HIB_FIXEDPOS;
+    m_pHeaderHB->InsertItem(1, rOn, 0, nHeadBits | HIB_CENTER);
+    m_pHeaderHB->InsertItem(2, rUIElems, 0, nHeadBits | HIB_LEFT);
+    m_pHeaderHB->InsertItem(3, rColorSetting, 0, nHeadBits | HIB_LEFT);
+    m_pHeaderHB->InsertItem(4, rPreview, 0, nHeadBits | HIB_LEFT);
+    m_pHeaderHB->set_height_request(GetTextHeight() + 6);
 }
 
 ColorConfigCtrl_Impl::~ColorConfigCtrl_Impl()
 {
+    delete m_pVScroll;
+    delete m_pScrollWindow;
+    delete m_pBody;
+    delete m_pHeaderHB;
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeColorConfigCtrl(Window *pParent, VclBuilder::stringmap &)
+{
+    return new ColorConfigCtrl_Impl(pParent);
 }
 
 void ColorConfigCtrl_Impl::Update ()
 {
     DBG_ASSERT(pColorConfig, "Configuration not set");
-    aScrollWindow.Update(pColorConfig, pExtColorConfig);
+    m_pScrollWindow->Update(pColorConfig, pExtColorConfig);
 }
 
 IMPL_LINK(ColorConfigCtrl_Impl, ScrollHdl, ScrollBar*, pScrollBar)
 {
-    aScrollWindow.ScrollHdl(nScrollPos, *pScrollBar);
+    m_pScrollWindow->ScrollHdl(*pScrollBar);
     return 0;
 }
 
@@ -1144,7 +949,7 @@ long ColorConfigCtrl_Impl::PreNotify( NotifyEvent& rNEvt )
             return 1;
         }
     }
-    return Control::PreNotify(rNEvt);
+    return VclVBox::PreNotify(rNEvt);
 }
 
 void ColorConfigCtrl_Impl::Command( const CommandEvent& rCEvt )
@@ -1159,12 +964,12 @@ void ColorConfigCtrl_Impl::Command( const CommandEvent& rCEvt )
             const CommandWheelData* pWheelData = rCEvt.GetWheelData();
             if(pWheelData && !pWheelData->IsHorz() && COMMAND_WHEEL_ZOOM != pWheelData->GetMode())
             {
-                HandleScrollCommand( rCEvt, 0, &aVScroll );
+                HandleScrollCommand(rCEvt, 0, m_pVScroll);
             }
         }
         break;
         default:
-            Control::Command(rCEvt);
+            VclVBox::Command(rCEvt);
     }
 }
 
@@ -1182,7 +987,7 @@ void ColorConfigCtrl_Impl::DataChanged( const DataChangedEvent& rDCEvt )
 IMPL_LINK(ColorConfigCtrl_Impl, ClickHdl, CheckBox*, pBox)
 {
     DBG_ASSERT(pColorConfig, "Configuration not set");
-    aScrollWindow.ClickHdl(pColorConfig, pBox);
+    m_pScrollWindow->ClickHdl(pColorConfig, pBox);
     return 0;
 }
 
@@ -1191,7 +996,7 @@ IMPL_LINK(ColorConfigCtrl_Impl, ColorHdl, ColorListBox*, pBox)
 {
     DBG_ASSERT(pColorConfig, "Configuration not set" );
     if (pBox)
-        aScrollWindow.ColorHdl(pColorConfig, pExtColorConfig, pBox);
+        m_pScrollWindow->ColorHdl(pColorConfig, pExtColorConfig, pBox);
     return 0;
 }
 IMPL_LINK(ColorConfigCtrl_Impl, ControlFocusHdl, Control*, pCtrl)
@@ -1199,12 +1004,12 @@ IMPL_LINK(ColorConfigCtrl_Impl, ControlFocusHdl, Control*, pCtrl)
     // determine whether a control is completely visible
     // and make it visible
     long aCtrlPosY = pCtrl->GetPosPixel().Y();
-    unsigned const nWinHeight = aScrollWindow.GetSizePixel().Height();
-    unsigned const nEntryHeight = aScrollWindow.GetEntryHeight();
+    unsigned const nWinHeight = m_pScrollWindow->GetSizePixel().Height();
+    unsigned const nEntryHeight = m_pScrollWindow->GetEntryHeight();
     if (0 != (GETFOCUS_TAB & pCtrl->GetGetFocusFlags()) &&
         (aCtrlPosY < 0 || nWinHeight < aCtrlPosY + nEntryHeight)
     ) {
-        long nThumbPos = aVScroll.GetThumbPos();
+        long nThumbPos = m_pVScroll->GetThumbPos();
         if (nWinHeight < aCtrlPosY + nEntryHeight)
         {
             //scroll down
@@ -1217,8 +1022,8 @@ IMPL_LINK(ColorConfigCtrl_Impl, ControlFocusHdl, Control*, pCtrl)
             if(nThumbPos < 0)
                 nThumbPos = 0;
         }
-        aVScroll.SetThumbPos(nThumbPos);
-        ScrollHdl(&aVScroll);
+        m_pVScroll->SetThumbPos(nThumbPos);
+        ScrollHdl(m_pVScroll);
     }
     return 0;
 };
@@ -1229,40 +1034,43 @@ IMPL_LINK(ColorConfigCtrl_Impl, ControlFocusHdl, Control*, pCtrl)
 //
 
 SvxColorOptionsTabPage::SvxColorOptionsTabPage(
-    Window* pParent, const SfxItemSet& rCoreSet) :
-    SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_COLORCONFIG ), rCoreSet ),
-       aColorSchemeFL(  this, CUI_RES( FL_COLORSCHEME ) ),
-       aColorSchemeFT(  this, CUI_RES( FT_COLORSCHEME ) ),
-       aColorSchemeLB(  this, CUI_RES( LB_COLORSCHEME ) ),
-       aSaveSchemePB(   this, CUI_RES( PB_SAVESCHEME) ),
-       aDeleteSchemePB( this, CUI_RES( PB_DELETESCHEME ) ),
-       aCustomColorsFL( this, CUI_RES( FL_CUSTOMCOLORS ) ),
-       bFillItemSetCalled(sal_False),
-       pColorConfig(0),
-       pExtColorConfig(0),
-       pColorConfigCT(  new ColorConfigCtrl_Impl(this, CUI_RES( CT_COLORCONFIG ) ))
+    Window* pParent, const SfxItemSet& rCoreSet)
+    : SfxTabPage(pParent, "OptColorPage", "cui/ui/optcolorpage.ui", rCoreSet)
+    , bFillItemSetCalled(false)
+    , pColorConfig(0)
+    , pExtColorConfig(0)
 {
-    FreeResource();
-    aColorSchemeLB.SetSelectHdl(LINK(this, SvxColorOptionsTabPage, SchemeChangedHdl_Impl));
+    get(m_pColorSchemeLB, "colorschemelb");
+    m_pColorSchemeLB->SetStyle(m_pColorSchemeLB->GetStyle() | WB_SORT);
+    get(m_pSaveSchemePB, "save");
+    get(m_pDeleteSchemePB, "delete");
+    get(m_pColorConfigCT, "colorconfig");
+
+    m_pColorConfigCT->InitHeaderBar(
+        get<Window>("on")->GetText(),
+        get<Window>("uielements")->GetText(),
+        get<Window>("colorsetting")->GetText(),
+        get<Window>("preview")->GetText());
+
+    m_pColorSchemeLB->SetSelectHdl(LINK(this, SvxColorOptionsTabPage, SchemeChangedHdl_Impl));
     Link aLk = LINK(this, SvxColorOptionsTabPage, SaveDeleteHdl_Impl );
-    aSaveSchemePB.SetClickHdl(aLk);
-    aDeleteSchemePB.SetClickHdl(aLk);
+    m_pSaveSchemePB->SetClickHdl(aLk);
+    m_pDeleteSchemePB->SetClickHdl(aLk);
 }
 
 SvxColorOptionsTabPage::~SvxColorOptionsTabPage()
 {
     //when the dialog is cancelled but the color scheme ListBox has been changed these
     //changes need to be undone
-    if(!bFillItemSetCalled && aColorSchemeLB.GetSavedValue() != aColorSchemeLB.GetSelectEntryPos())
+    if(!bFillItemSetCalled && m_pColorSchemeLB->GetSavedValue() != m_pColorSchemeLB->GetSelectEntryPos())
     {
-        rtl::OUString sOldScheme =  aColorSchemeLB.GetEntry(aColorSchemeLB.GetSavedValue());
+        rtl::OUString sOldScheme =  m_pColorSchemeLB->GetEntry(m_pColorSchemeLB->GetSavedValue());
         if(!sOldScheme.isEmpty())
         {
             pColorConfig->SetCurrentSchemeName(sOldScheme);
             pExtColorConfig->SetCurrentSchemeName(sOldScheme);
         }
     }
-    delete pColorConfigCT;
     pColorConfig->ClearModified();
     pColorConfig->EnableBroadcast();
     delete pColorConfig;
@@ -1279,7 +1087,7 @@ SfxTabPage* SvxColorOptionsTabPage::Create( Window* pParent, const SfxItemSet& r
 sal_Bool SvxColorOptionsTabPage::FillItemSet( SfxItemSet&  )
 {
     bFillItemSetCalled = sal_True;
-    if(aColorSchemeLB.GetSavedValue() != aColorSchemeLB.GetSelectEntryPos())
+    if(m_pColorSchemeLB->GetSavedValue() != m_pColorSchemeLB->GetSelectEntryPos())
     {
         pColorConfig->SetModified();
         pExtColorConfig->SetModified();
@@ -1300,7 +1108,7 @@ void SvxColorOptionsTabPage::Reset( const SfxItemSet& )
         delete pColorConfig;
     }
     pColorConfig = new EditableColorConfig;
-    pColorConfigCT->SetConfig(*pColorConfig);
+    m_pColorConfigCT->SetConfig(*pColorConfig);
 
     if(pExtColorConfig)
     {
@@ -1309,19 +1117,19 @@ void SvxColorOptionsTabPage::Reset( const SfxItemSet& )
         delete pExtColorConfig;
     }
     pExtColorConfig = new EditableExtendedColorConfig;
-    pColorConfigCT->SetExtendedConfig(*pExtColorConfig);
+    m_pColorConfigCT->SetExtendedConfig(*pExtColorConfig);
 
     String sUser = GetUserData();
     //has to be called always to speed up accessibility tools
-    pColorConfigCT->SetScrollPosition(sUser.ToInt32());
-    aColorSchemeLB.Clear();
+    m_pColorConfigCT->SetScrollPosition(sUser.ToInt32());
+    m_pColorSchemeLB->Clear();
     uno::Sequence< ::rtl::OUString >  aSchemes = pColorConfig->GetSchemeNames();
     const rtl::OUString* pSchemes = aSchemes.getConstArray();
     for(sal_Int32 i = 0; i < aSchemes.getLength(); i++)
-        aColorSchemeLB.InsertEntry(pSchemes[i]);
-    aColorSchemeLB.SelectEntry(pColorConfig->GetCurrentSchemeName());
-    aColorSchemeLB.SaveValue();
-    aDeleteSchemePB.Enable( aSchemes.getLength() > 1 );
+        m_pColorSchemeLB->InsertEntry(pSchemes[i]);
+    m_pColorSchemeLB->SelectEntry(pColorConfig->GetCurrentSchemeName());
+    m_pColorSchemeLB->SaveValue();
+    m_pDeleteSchemePB->Enable( aSchemes.getLength() > 1 );
     UpdateColorConfig();
 }
 
@@ -1335,7 +1143,7 @@ int SvxColorOptionsTabPage::DeactivatePage( SfxItemSet* pSet_ )
 void SvxColorOptionsTabPage::UpdateColorConfig()
 {
     //update the color config control
-    pColorConfigCT->Update();
+    m_pColorConfigCT->Update();
 }
 
 IMPL_LINK(SvxColorOptionsTabPage, SchemeChangedHdl_Impl, ListBox*, pBox)
@@ -1348,7 +1156,7 @@ IMPL_LINK(SvxColorOptionsTabPage, SchemeChangedHdl_Impl, ListBox*, pBox)
 
 IMPL_LINK(SvxColorOptionsTabPage, SaveDeleteHdl_Impl, PushButton*, pButton )
 {
-    if(&aSaveSchemePB == pButton)
+    if (m_pSaveSchemePB == pButton)
     {
         String sName;
 
@@ -1367,29 +1175,29 @@ IMPL_LINK(SvxColorOptionsTabPage, SaveDeleteHdl_Impl, PushButton*, pButton )
             aNameDlg->GetName(sName);
             pColorConfig->AddScheme(sName);
             pExtColorConfig->AddScheme(sName);
-            aColorSchemeLB.InsertEntry(sName);
-            aColorSchemeLB.SelectEntry(sName);
-            aColorSchemeLB.GetSelectHdl().Call(&aColorSchemeLB);
+            m_pColorSchemeLB->InsertEntry(sName);
+            m_pColorSchemeLB->SelectEntry(sName);
+            m_pColorSchemeLB->GetSelectHdl().Call(m_pColorSchemeLB);
         }
         delete aNameDlg;
     }
     else
     {
-        DBG_ASSERT(aColorSchemeLB.GetEntryCount() > 1, "don't delete the last scheme");
+        DBG_ASSERT(m_pColorSchemeLB->GetEntryCount() > 1, "don't delete the last scheme");
         QueryBox aQuery(pButton, CUI_RES(RID_SVXQB_DELETE_COLOR_CONFIG));
         aQuery.SetText(String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_DELETE)));
         if(RET_YES == aQuery.Execute())
         {
-            rtl::OUString sDeleteScheme(aColorSchemeLB.GetSelectEntry());
-            aColorSchemeLB.RemoveEntry(aColorSchemeLB.GetSelectEntryPos());
-            aColorSchemeLB.SelectEntryPos(0);
-            aColorSchemeLB.GetSelectHdl().Call(&aColorSchemeLB);
+            rtl::OUString sDeleteScheme(m_pColorSchemeLB->GetSelectEntry());
+            m_pColorSchemeLB->RemoveEntry(m_pColorSchemeLB->GetSelectEntryPos());
+            m_pColorSchemeLB->SelectEntryPos(0);
+            m_pColorSchemeLB->GetSelectHdl().Call(m_pColorSchemeLB);
             //first select the new scheme and then delete the old one
             pColorConfig->DeleteScheme(sDeleteScheme);
             pExtColorConfig->DeleteScheme(sDeleteScheme);
         }
     }
-    aDeleteSchemePB.Enable( aColorSchemeLB.GetEntryCount() > 1 );
+    m_pDeleteSchemePB->Enable( m_pColorSchemeLB->GetEntryCount() > 1 );
     return 0;
 }
 
@@ -1397,12 +1205,12 @@ IMPL_LINK(SvxColorOptionsTabPage, CheckNameHdl_Impl, AbstractSvxNameDialog*, pDi
 {
     String sName;
     pDialog->GetName(sName);
-    return sName.Len() && LISTBOX_ENTRY_NOTFOUND == aColorSchemeLB.GetEntryPos( sName );
+    return sName.Len() && LISTBOX_ENTRY_NOTFOUND == m_pColorSchemeLB->GetEntryPos( sName );
 }
 
 void SvxColorOptionsTabPage::FillUserData()
 {
-    SetUserData(OUString::number(pColorConfigCT->GetScrollPosition()));
+    SetUserData(OUString::number(m_pColorConfigCT->GetScrollPosition()));
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/options/optcolor.hrc b/cui/source/options/optcolor.hrc
deleted file mode 100644
index 8d5efc7..0000000
--- a/cui/source/options/optcolor.hrc
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#ifndef SVX_OPTCOLOR_HRC // Note: _SVX_OPTCOLOR_HRC would be undefined behaviour
-#define SVX_OPTCOLOR_HRC
-
-//Color config page
-#define FL_COLORSCHEME      1
-#define FT_COLORSCHEME      2
-#define LB_COLORSCHEME      3
-#define PB_SAVESCHEME       4
-#define PB_DELETESCHEME     5
-#define FL_CUSTOMCOLORS     6
-#define CT_COLORCONFIG      7
-
-#define HB_HEADER           10
-#define VB_VSCROLL          11
-#define WN_SCROLL           12
-#define ST_ON               17
-#define ST_UIELEM           18
-#define ST_COLSET           19
-#define ST_PREVIEW          20
-
-#define FT_GENERAL                  30
-#define FT_DOCCOLOR                 31
-#define LB_DOCCOLOR                 32
-#define WN_DOCCOLOR                 33
-#define CB_DOCBOUND                 34
-#define LB_DOCBOUND                 35
-#define WN_DOCBOUND                 36
-#define FT_APPBACKGROUND            37
-#define LB_APPBACKGROUND            38
-#define WN_APPBACKGROUND            39
-#define CB_OBJECTBOUNDARIES         40
-#define LB_OBJECTBOUNDARIES         41
-#define WN_OBJECTBOUNDARIES         42
-#define CB_TABLEBOUNDARIES          43
-#define LB_TABLEBOUNDARIES          44
-#define WN_TABLEBOUNDARIES          45
-#define FT_FONTCOLOR                46
-#define LB_FONTCOLOR                47
-#define WN_FONTCOLOR                48
-#define CB_LINKS                    49
-#define LB_LINKS                    50
-#define WN_LINKS                    51
-#define CB_LINKSVISITED             52
-#define LB_LINKSVISITED             53
-#define WN_LINKSVISITED             54
-
-#define FT_SPELL                    58
-#define LB_SPELL                    59
-#define WN_SPELL                    60
-
-#define FT_WRITER                   61
-#define FT_WRITERTEXTGRID           62
-#define LB_WRITERTEXTGRID           63
-#define WN_WRITERTEXTGRID           64
-#define CB_WRITERFIELDSHADINGS      65
-#define LB_WRITERFIELDSHADINGS      66
-#define WN_WRITERFIELDSHADINGS      67
-#define CB_WRITERIDXSHADINGS        68
-#define LB_WRITERIDXSHADINGS        69
-#define WN_WRITERIDXSHADINGS        70
-#define LB_WRITERDIRECTCURSOR       71
-#define FT_WRITERDIRECTCURSOR       72
-#define WN_WRITERDIRECTCURSOR       73
-#define LB_WRITERSCRIPTINDICATOR    77
-#define FT_WRITERSCRIPTINDICATOR    78
-#define WN_WRITERSCRIPTINDICATOR    79
-#define LB_WRITERSECTIONBOUNDARIES  80
-#define CB_WRITERSECTIONBOUNDARIES  81
-#define WN_WRITERSECTIONBOUNDARIES  82
-#define LB_WRITERPAGEBREAKS         83
-#define FT_WRITERPAGEBREAKS         84
-#define WN_WRITERPAGEBREAKS         85
-#define LB_WRITERHEADERFOOTERMARK   86
-#define FT_WRITERHEADERFOOTERMARK   87
-#define WN_WRITERHEADERFOOTERMARK   88
-
-#define FT_HTML                     89
-#define FT_HTMLSGML                 90
-#define LB_HTMLSGML                 91
-#define WN_HTMLSGML                 92
-#define FT_HTMLCOMMENT              93
-#define LB_HTMLCOMMENT              94
-#define WN_HTMLCOMMENT              95
-#define FT_HTMLKEYWORD              96
-#define LB_HTMLKEYWORD              97
-#define WN_HTMLKEYWORD              98
-#define FT_HTMLUNKNOWN              99
-#define LB_HTMLUNKNOWN             100
-#define WN_HTMLUNKNOWN             101
-
-#define FT_CALC                    103
-#define FT_CALCGRID                104
-#define LB_CALCGRID                105
-#define WN_CALCGRID                106
-#define FT_CALCPAGEBREAK           107
-#define LB_CALCPAGEBREAK           108
-#define WN_CALCPAGEBREAK           109
-#define FT_CALCPAGEBREAKMANUAL     100
-#define LB_CALCPAGEBREAKMANUAL     101
-#define WN_CALCPAGEBREAKMANUAL     112
-#define FT_CALCPAGEBREAKAUTO       113
-#define LB_CALCPAGEBREAKAUTO       114
-#define WN_CALCPAGEBREAKAUTO       115
-#define FT_CALCDETECTIVE           116
-#define LB_CALCDETECTIVE           117
-#define WN_CALCDETECTIVE           118
-#define FT_CALCDETECTIVEERROR      119
-#define LB_CALCDETECTIVEERROR      120
-#define WN_CALCDETECTIVEERROR      121
-#define FT_CALCREFERENCE           122
-#define LB_CALCREFERENCE           123
-#define WN_CALCREFERENCE           124
-#define FT_CALCNOTESBACKGROUND     125
-#define LB_CALCNOTESBACKGROUND     126
-#define WN_CALCNOTESBACKGROUND     127
-#define FT_DRAW                    128
-#define FT_DRAWGRID                132
-#define LB_DRAWGRID                133
-#define WN_DRAWGRID                134
-#define FT_BASICIDENTIFIER         141
-#define LB_BASICIDENTIFIER         142
-#define WN_BASICIDENTIFIER         143
-#define FT_BASICCOMMENT            144
-#define LB_BASICCOMMENT            145
-#define WN_BASICCOMMENT            146
-#define FT_BASICNUMBER             147
-#define LB_BASICNUMBER             148
-#define WN_BASICNUMBER             142
-#define FT_BASICSTRING             153
-#define LB_BASICSTRING             154
-#define WN_BASICSTRING             155
-#define FT_BASICOPERATOR           156
-#define LB_BASICOPERATOR           157
-#define WN_BASICOPERATOR           158
-#define FT_BASICKEYWORD            159
-#define LB_BASICKEYWORD            160
-#define WN_BASICKEYWORD            161
-#define FT_BASIC                   162
-#define FT_BASICERROR              163
-#define LB_BASICERROR              164
-#define WN_BASICERROR              165
-
-#define FT_SQL_COMMAND           173
-#define FT_SQLIDENTIFIER         174
-#define LB_SQLIDENTIFIER         175
-#define WN_SQLIDENTIFIER         176
-#define FT_SQLNUMBER             177
-#define LB_SQLNUMBER             178
-#define WN_SQLNUMBER             179
-#define FT_SQLSTRING             180
-#define LB_SQLSTRING             181
-#define WN_SQLSTRING             182
-#define FT_SQLOPERATOR           183
-#define LB_SQLOPERATOR           184
-#define WN_SQLOPERATOR           185
-#define FT_SQLKEYWORD            186
-#define LB_SQLKEYWORD            187
-#define WN_SQLKEYWORD            188
-#define FT_SQLPARAMETER          189
-#define LB_SQLPARAMETER          190
-#define WN_SQLPARAMETER          191
-#define FT_SQLCOMMENT            192
-#define LB_SQLCOMMENT            193
-#define WN_SQLCOMMENT            194
-
-#define CB_SHADOWCOLOR          196
-#define LB_SHADOWCOLOR          197
-#define WN_SHADOWCOLOR          198
-
-#define ST_EXTENSION                166
-
-
-
-// Note: _FT_WIDTH etc. would be undefined behaviour
-#define FT_WIDTH                120
-#define LINE_HEIGHT             15
-#define FT_HEIGHT               10
-#define CB_WIDTH                130
-#define FT_XPOS                 14
-#define CB_XPOS                 5
-#define LB_XPOS                 139
-#define LB_WIDTH                50
-#define LB_HEIGHT               50
-#define WN_WIDTH                30
-#define WN_HEIGHT               12
-#define WN_XPOS                 195
-#define SEP_HEIGHT              8
-
-#define FT_SMARTTAGS                    168
-#define LB_SMARTTAGS                    169
-#define WN_SMARTTAGS                    170
-
-#define ST_SPELL_CHECK_HIGHLIGHTING     171
-#define ST_GRAMMAR_CHECK_HIGHLIGHTING   172
-
-
-#endif
diff --git a/cui/source/options/optcolor.hxx b/cui/source/options/optcolor.hxx
index 98a5f45..345983a 100644
--- a/cui/source/options/optcolor.hxx
+++ b/cui/source/options/optcolor.hxx
@@ -31,19 +31,15 @@ class SvxColorOptionsTabPage : public SfxTabPage
 {
     using SfxTabPage::DeactivatePage;
 
-    FixedLine               aColorSchemeFL;
-    FixedText               aColorSchemeFT;
-    ListBox                 aColorSchemeLB;
-    PushButton              aSaveSchemePB;
-    PushButton              aDeleteSchemePB;
+    ListBox* m_pColorSchemeLB;
+    PushButton* m_pSaveSchemePB;
+    PushButton* m_pDeleteSchemePB;
+    ColorConfigCtrl_Impl* m_pColorConfigCT;
 
-    FixedLine               aCustomColorsFL;
-
-    sal_Bool                    bFillItemSetCalled;
+    sal_Bool bFillItemSetCalled;
 
     svtools::EditableColorConfig* pColorConfig;
     svtools::EditableExtendedColorConfig* pExtColorConfig;
-    ColorConfigCtrl_Impl*   pColorConfigCT;
 
     DECL_LINK(SchemeChangedHdl_Impl, ListBox*);
     DECL_LINK(SaveDeleteHdl_Impl, PushButton*);
diff --git a/cui/source/options/optcolor.src b/cui/source/options/optcolor.src
index 914115c..5c5fb74 100644
--- a/cui/source/options/optcolor.src
+++ b/cui/source/options/optcolor.src
@@ -19,503 +19,7 @@
 #include <sfx2/sfx.hrc>
 #include "helpid.hrc"
 #include <cuires.hrc>
-#include "optcolor.hrc"
 
-TabPage RID_SVXPAGE_COLORCONFIG
-{
-    HelpId = HID_OPTIONS_COLORCONFIG ;
-    OutputSize = TRUE ;
-    SVLook = TRUE ;
-    Hide = TRUE ;
-    Size = MAP_APPFONT ( TP_WIDTH , TP_HEIGHT ) ;
-    FixedLine FL_COLORSCHEME
-    {
-        Pos = MAP_APPFONT ( 6 , 3 ) ;
-        Size = MAP_APPFONT ( 248 , 8 ) ;
-        Text [ en-US ] = "Color scheme";
-    };
-    FixedText FT_COLORSCHEME
-    {
-        Pos = MAP_APPFONT ( 12 , 16 ) ;
-        Size = MAP_APPFONT ( 50 , 8 ) ;
-        Text [ en-US ] = "Scheme";
-    };
-    ListBox LB_COLORSCHEME
-    {
-        HelpID = "cui:ListBox:RID_SVXPAGE_COLORCONFIG:LB_COLORSCHEME";
-        Pos = MAP_APPFONT ( 65 , 14 ) ;
-        Size = MAP_APPFONT ( 77 , 58 ) ;
-        Border = TRUE;
-        Sort = TRUE;
-        DropDown = TRUE;
-    };
-    PushButton PB_SAVESCHEME
-    {
-        HelpID = "cui:PushButton:RID_SVXPAGE_COLORCONFIG:PB_SAVESCHEME";
-        Pos = MAP_APPFONT ( 145, 13 ) ;
-        Size = MAP_APPFONT ( 50 , 14 ) ;
-        Text [ en-US ] = "Save...";
-    };
-    PushButton PB_DELETESCHEME
-    {
-        HelpID = "cui:PushButton:RID_SVXPAGE_COLORCONFIG:PB_DELETESCHEME";
-        Pos = MAP_APPFONT ( 198 , 13 ) ;
-        Size = MAP_APPFONT ( 50 , 14 ) ;
-        Text [ en-US ] = "Delete";
-    };
-    FixedLine FL_CUSTOMCOLORS
-    {
-        Pos = MAP_APPFONT ( 6 , 34 ) ;
-        Size = MAP_APPFONT ( 248 , 8 ) ;
-
-        Text [ en-US ] = "Custom colors";
-    };
-    Control CT_COLORCONFIG
-    {
-        Pos = MAP_APPFONT ( 12 , 45 ) ;
-        Size = MAP_APPFONT ( 236 , 134 ) ;
-        Border = TRUE;
-        DialogControl = TRUE;
-        OutputSize = TRUE ;
-        ScrollBar VB_VSCROLL
-        {
-            Pos = MAP_APPFONT ( 228 , 10 ) ;
-            Size = MAP_APPFONT ( 8 , 124 ) ;
-            VScroll = TRUE;
-        };
-        String ST_ON
-        {
-            Text [ en-US ] = "On";
-        };
-        String ST_UIELEM
-        {
-            Text [ en-US ] = "User interface elements";
-        };
-        String ST_COLSET
-        {
-            Text [ en-US ] = "Color setting";
-        };
-        String ST_PREVIEW
-        {
-            Text [ en-US ] = "Preview";
-        };
-        Window WN_SCROLL
-        {
-
-// misc defines to shorten defining of standard elements
-// standard sizes
-#define FT_SEP_SIZE                     Size = MAP_APPFONT ( FT_WIDTH , SEP_HEIGHT )
-#define FT_SIZE                         Size = MAP_APPFONT ( FT_WIDTH , FT_HEIGHT )
-#define LB_SIZE                         Size = MAP_APPFONT ( LB_WIDTH , LB_HEIGHT )
-#define WN_SIZE                         Size = MAP_APPFONT ( WN_WIDTH , WN_HEIGHT )
-#define CB_SIZE                         Size = MAP_APPFONT ( CB_WIDTH , FT_HEIGHT )
-
-// combination of position and size
-#define POS_SIZE( POSX, LINENUM, CONTRL_SIZE )  Pos = MAP_APPFONT ( POSX , LINENUM * LINE_HEIGHT ) ; CONTRL_SIZE
-
-// ... for special types
-#define FT_SEP_POS_SIZE( LINENUM )      POS_SIZE( FT_XPOS, LINENUM, FT_SEP_SIZE )
-#define FT_POS_SIZE( LINENUM )          POS_SIZE( FT_XPOS, LINENUM, FT_SIZE )
-#define LB_POS_SIZE( LINENUM )          POS_SIZE( LB_XPOS, LINENUM, LB_SIZE )
-#define WN_POS_SIZE( LINENUM )          POS_SIZE( WN_XPOS, LINENUM, WN_SIZE )
-#define CB_POS_SIZE( LINENUM )          POS_SIZE( CB_XPOS, LINENUM, CB_SIZE )
-
-// combination of a listbox (color chooser) and window (color preview)
-#define LB_WN( ID_POST, LINENUM )       ListBox LB_#ID_POST{LB_POS_SIZE(LINENUM);DropDown=TRUE;};Window WN_#ID_POST{WN_POS_SIZE(LINENUM);Border=TRUE;};
-
-            OutputSize = TRUE ;
-            Pos = MAP_APPFONT ( 0 , 10 ) ;
-            Size = MAP_APPFONT ( 228 , 124 ) ;
-            DialogControl = TRUE;
-
-            FixedText FT_GENERAL
-            {
-                FT_SEP_POS_SIZE( 0 );
-                Text [ en-US ] = "General";
-            };
-
-            FixedText FT_DOCCOLOR
-            {
-                FT_POS_SIZE( 1 );
-                Text [ en-US ] = "Document background";
-            };
-            LB_WN( DOCCOLOR, 1 )
-
-            CheckBox CB_DOCBOUND
-            {
-                HelpID = "cui:CheckBox:RID_SVXPAGE_COLORCONFIG:CB_DOCBOUND";
-                CB_POS_SIZE( 2 );
-                Text [ en-US ] = "Text boundaries";
-            };
-            LB_WN( DOCBOUND, 2 )
-
-            FixedText FT_APPBACKGROUND
-            {
-                FT_POS_SIZE( 3 );
-                Text [ en-US ] = "Application background";
-            };
-            LB_WN( APPBACKGROUND, 3 )
-
-            CheckBox CB_OBJECTBOUNDARIES
-            {
-                HelpID = "cui:CheckBox:RID_SVXPAGE_COLORCONFIG:CB_OBJECTBOUNDARIES";
-                CB_POS_SIZE( 4 );
-                Text [ en-US ] = "Object boundaries";
-            };
-            LB_WN( OBJECTBOUNDARIES, 4 )
-
-            CheckBox CB_TABLEBOUNDARIES
-            {
-                HelpID = "cui:CheckBox:RID_SVXPAGE_COLORCONFIG:CB_TABLEBOUNDARIES";
-                CB_POS_SIZE( 5 );
-                Text [ en-US ] = "Table boundaries";
-            };
-            LB_WN( TABLEBOUNDARIES, 5 )
-
-            FixedText FT_FONTCOLOR
-            {
-                FT_POS_SIZE( 6 );
-                Text [ en-US ] = "Font color";
-            };
-            LB_WN( FONTCOLOR, 6 )
-
-            CheckBox CB_LINKS
-            {
-                HelpID = "cui:CheckBox:RID_SVXPAGE_COLORCONFIG:CB_LINKS";
-                CB_POS_SIZE( 7 );
-                Text [ en-US ] = "Unvisited links";
-            };
-            LB_WN( LINKS, 7 )
-
-            CheckBox CB_LINKSVISITED
-            {
-                HelpID = "cui:CheckBox:RID_SVXPAGE_COLORCONFIG:CB_LINKSVISITED";
-                CB_POS_SIZE( 8 );
-                Text [ en-US ] = "Visited links";
-            };
-            LB_WN( LINKSVISITED, 8 )
-
-            FixedText FT_SPELL
-            {
-                FT_POS_SIZE( 9 );
-                Text [ en-US ] = "AutoSpellcheck";
-            };
-            LB_WN( SPELL, 9 )
-
-            FixedText FT_SMARTTAGS
-            {
-                FT_POS_SIZE( 10 );
-                Text [ en-US ] = "Smart Tags";
-            };
-            LB_WN( SMARTTAGS, 10 )
-
-            Checkbox CB_SHADOWCOLOR
-            {
-                CB_POS_SIZE( 11 );
-                Text [ en-US ] = "Shadows";
-            };
-            LB_WN( SHADOWCOLOR, 11 )
-
-            FixedText FT_WRITER
-            {
-                FT_SEP_POS_SIZE( 12 );
-                Text [ en-US ] = "Text Document";
-            };
-
-            FixedText FT_WRITERTEXTGRID
-            {
-                FT_POS_SIZE( 13 );
-                Text [ en-US ] = "Grid";
-            };
-            LB_WN( WRITERTEXTGRID, 13 )
-
-            CheckBox CB_WRITERFIELDSHADINGS
-            {
-                HelpID = "cui:CheckBox:RID_SVXPAGE_COLORCONFIG:CB_WRITERFIELDSHADINGS";
-                CB_POS_SIZE( 14 );
-                Text [ en-US ] = "Field shadings";
-            };
-            LB_WN( WRITERFIELDSHADINGS, 14 )
-
-            CheckBox CB_WRITERIDXSHADINGS
-            {
-                HelpID = "cui:CheckBox:RID_SVXPAGE_COLORCONFIG:CB_WRITERIDXSHADINGS";
-                CB_POS_SIZE( 15 );
-                Text [ en-US ] = "Index and table shadings";
-            };
-            LB_WN( WRITERIDXSHADINGS, 15 )
-
-
-            FixedText FT_WRITERSCRIPTINDICATOR
-            {
-                FT_POS_SIZE( 16 );
-                Text [ en-US ] = "Script indicator";
-            };
-            LB_WN( WRITERSCRIPTINDICATOR, 16 )
-
-            CheckBox CB_WRITERSECTIONBOUNDARIES
-            {
-                HelpID = "cui:CheckBox:RID_SVXPAGE_COLORCONFIG:CB_WRITERSECTIONBOUNDARIES";
-                CB_POS_SIZE( 17 );
-                Text [ en-US ] = "Section boundaries";
-            };
-            LB_WN( WRITERSECTIONBOUNDARIES, 17 )
-
-            FixedText FT_WRITERHEADERFOOTERMARK
-            {
-                FT_POS_SIZE( 18 );
-                Text [ en-US ] = "Headers and Footer delimiter";
-            };
-            LB_WN( WRITERHEADERFOOTERMARK, 18 )
-
-            FixedText FT_WRITERPAGEBREAKS
-            {
-                FT_POS_SIZE( 19 );
-                Text [ en-US ] = "Page and column breaks";
-            };
-            LB_WN( WRITERPAGEBREAKS, 19 )
-
-            FixedText FT_WRITERDIRECTCURSOR
-            {
-                FT_POS_SIZE( 20 );
-                Text [ en-US ] = "Direct cursor";
-            };
-            LB_WN( WRITERDIRECTCURSOR, 20 )
-
-            FixedText FT_HTML
-            {
-                FT_SEP_POS_SIZE( 21 );
-                Text [ en-US ] = "HTML Document";
-            };
-
-            FixedText FT_HTMLSGML
-            {
-                FT_POS_SIZE( 22 );
-                Text [ en-US ] = "SGML syntax highlighting";
-            };
-            LB_WN( HTMLSGML, 22 )
-
-            FixedText FT_HTMLCOMMENT
-            {
-                FT_POS_SIZE( 23 );
-                Text [ en-US ] = "Comment highlighting";
-            };
-            LB_WN( HTMLCOMMENT, 23 )
-
-            FixedText FT_HTMLKEYWORD
-            {
-                FT_POS_SIZE( 24 );
-                Text [ en-US ] = "Keyword highlighting";
-            };
-            LB_WN( HTMLKEYWORD, 24 )
-
-            FixedText FT_HTMLUNKNOWN
-            {
-                FT_POS_SIZE( 25 );
-                Text [ en-US ] = "Text";
-            };
-            LB_WN( HTMLUNKNOWN, 25 )
-
-            FixedText FT_CALC
-            {
-                FT_SEP_POS_SIZE( 26 );
-                Text [ en-US ] = "Spreadsheet";
-            };
-
-            FixedText FT_CALCGRID
-            {
-                FT_POS_SIZE( 27 );
-                Text [ en-US ] = "Grid lines";
-            };
-            LB_WN( CALCGRID, 27 )
-
-            FixedText FT_CALCPAGEBREAK
-            {
-                FT_POS_SIZE( 28 );
-                Text [ en-US ] = "Page breaks";
-            };
-            LB_WN( CALCPAGEBREAK, 28 )
-
-            FixedText FT_CALCPAGEBREAKMANUAL
-            {
-                FT_POS_SIZE( 29 );
-                Text [ en-US ] = "Manual page breaks";
-            };
-            LB_WN( CALCPAGEBREAKMANUAL, 29 )
-
-            FixedText FT_CALCPAGEBREAKAUTO
-            {
-                FT_POS_SIZE( 30 );
-                Text [ en-US ] = "Automatic page breaks";
-            };
-            LB_WN( CALCPAGEBREAKAUTO, 30)
-
-            FixedText FT_CALCDETECTIVE
-            {
-                FT_POS_SIZE( 31 );
-                Text [ en-US ] = "Detective";
-            };
-            LB_WN( CALCDETECTIVE, 31 )
-
-            FixedText FT_CALCDETECTIVEERROR
-            {
-                FT_POS_SIZE( 32 );
-                Text [ en-US ] = "Detective error";
-            };
-            LB_WN( CALCDETECTIVEERROR, 32 )
-
-            FixedText FT_CALCREFERENCE
-            {
-                FT_POS_SIZE( 33 );
-                Text [ en-US ] = "References";
-            };
-            LB_WN( CALCREFERENCE, 33 )
-
-            FixedText FT_CALCNOTESBACKGROUND
-            {
-                FT_POS_SIZE( 34 );
-                Text [ en-US ] = "Notes background";
-            };
-            LB_WN( CALCNOTESBACKGROUND, 34 )
-
-            FixedText FT_DRAW
-            {
-                FT_SEP_POS_SIZE( 35 );
-                Text [ en-US ] = "Drawing / Presentation";
-            };
-
-            FixedText FT_DRAWGRID
-            {
-                FT_POS_SIZE( 36 );
-                Text [ en-US ] = "Grid";
-            };
-            LB_WN( DRAWGRID, 36 )
-
-            FixedText FT_BASIC
-            {
-                FT_SEP_POS_SIZE( 37 );
-                Text [ en-US ] = "Basic Syntax Highlighting";
-            };
-
-            FixedText FT_BASICIDENTIFIER
-            {
-                FT_POS_SIZE( 38 );
-                Text [ en-US ] = "Identifier";
-            };
-            LB_WN( BASICIDENTIFIER, 38 )
-
-            FixedText FT_BASICCOMMENT
-            {
-                FT_POS_SIZE( 39 );
-                Text [ en-US ] = "Comment";
-            };
-            LB_WN( BASICCOMMENT, 39 )
-
-            FixedText FT_BASICNUMBER
-            {
-                FT_POS_SIZE( 40 );
-                Text [ en-US ] = "Number";
-            };
-            LB_WN( BASICNUMBER, 40)
-
-            FixedText FT_BASICSTRING
-            {
-                FT_POS_SIZE( 41 );
-                Text [ en-US ] = "String";
-            };
-            LB_WN( BASICSTRING, 41 )
-
-            FixedText FT_BASICOPERATOR
-            {
-                FT_POS_SIZE( 42 );
-                Text [ en-US ] = "Operator";
-            };
-            LB_WN( BASICOPERATOR, 42 )
-
-            FixedText FT_BASICKEYWORD
-            {
-                FT_POS_SIZE( 43 );
-                Text [ en-US ] = "Reserved expression";
-            };
-            LB_WN( BASICKEYWORD, 43 )
-
-            FixedText FT_BASICERROR
-            {
-                FT_POS_SIZE( 44 );
-                Text [ en-US ] = "Error";
-            };
-            LB_WN( BASICERROR, 44 )
-
-            FixedText FT_SQL_COMMAND
-            {
-                FT_SEP_POS_SIZE( 45 );
-                Text [ en-US ] = "SQL Syntax Highlighting";
-            };
-
-            FixedText FT_SQLIDENTIFIER
-            {
-                FT_POS_SIZE( 46 );
-                Text [ en-US ] = "Identifier";
-            };
-            LB_WN( SQLIDENTIFIER, 46 )
-
-            FixedText FT_SQLNUMBER
-            {
-                FT_POS_SIZE( 47 );
-                Text [ en-US ] = "Number";
-            };
-            LB_WN( SQLNUMBER, 47 )
-
-            FixedText FT_SQLSTRING
-            {
-                FT_POS_SIZE( 48 );
-                Text [ en-US ] = "String";
-            };
-            LB_WN( SQLSTRING, 48 )
-
-            FixedText FT_SQLOPERATOR
-            {
-                FT_POS_SIZE( 49 );
-                Text [ en-US ] = "Operator";
-            };
-            LB_WN( SQLOPERATOR, 49 )
-
-            FixedText FT_SQLKEYWORD
-            {
-                FT_POS_SIZE( 50 );
-                Text [ en-US ] = "Keyword";
-            };
-            LB_WN( SQLKEYWORD, 50 )
-
-            FixedText FT_SQLPARAMETER
-            {
-                FT_POS_SIZE( 51 );
-                Text [ en-US ] = "Parameter";
-            };
-            LB_WN( SQLPARAMETER, 51 )
-
-            FixedText FT_SQLCOMMENT
-            {
-                FT_POS_SIZE( 52 );
-                Text [ en-US ] = "Comment";
-            };
-            LB_WN( SQLCOMMENT, 52 )
-
-            String ST_EXTENSION
-            {
-                Text [ en-US ] = "Colorsettings of the Extensions";
-            };
-            String ST_SPELL_CHECK_HIGHLIGHTING
-            {
-                Text [ en-US ] = "Spell check highlighting";
-            };
-            String ST_GRAMMAR_CHECK_HIGHLIGHTING
-            {
-                Text [ en-US ] = "Grammar check highlighting";
-            };
-        };
-    };
-};
 QueryBox RID_SVXQB_DELETE_COLOR_CONFIG
 {
     Buttons = WB_YES_NO ;
diff --git a/cui/uiconfig/ui/colorconfigwin.ui b/cui/uiconfig/ui/colorconfigwin.ui
new file mode 100644
index 0000000..53fa33b
--- /dev/null
+++ b/cui/uiconfig/ui/colorconfigwin.ui
@@ -0,0 +1,2033 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkGrid" id="ColorConfigWindow">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="row_spacing">12</property>
+    <property name="column_spacing">12</property>
+    <property name="row_homogeneous">True</property>
+    <child>
+      <object class="GtkCheckButton" id="docboundaries">
+        <property name="label" translatable="yes">Text boundaries</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="xalign">0</property>
+        <property name="draw_indicator">True</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">2</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="doccolor">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">Document background</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">1</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="svtlo:ColorListBox" id="doccolor_lb">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">1</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="doccolor_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">1</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="docboundaries_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">2</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="svtlo:ColorListBox" id="docboundaries_lb">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">2</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="general">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">General</property>
+        <attributes>
+          <attribute name="weight" value="bold"/>
+        </attributes>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">0</property>
+        <property name="width">3</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="svtlo:ColorListBox" id="appback_lb">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">3</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="appback_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">3</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="appback">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">Application background</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">3</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkCheckButton" id="objboundaries">
+        <property name="label" translatable="yes">Object boundaries</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="xalign">0</property>
+        <property name="draw_indicator">True</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">4</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="svtlo:ColorListBox" id="objboundaries_lb">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">4</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="objboundaries_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">4</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkCheckButton" id="tblboundaries">
+        <property name="label" translatable="yes">Table boundaries</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="xalign">0</property>
+        <property name="draw_indicator">True</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">5</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="svtlo:ColorListBox" id="tblboundaries_lb">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">5</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="tblboundaries_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">5</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="font">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">Font color</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">6</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="svtlo:ColorListBox" id="font_lb">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">6</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="font_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">6</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkCheckButton" id="unvisitedlinks">
+        <property name="label" translatable="yes">Unvisited links</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="xalign">0</property>
+        <property name="draw_indicator">True</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">7</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="svtlo:ColorListBox" id="unvisitedlinks_lb">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">7</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="unvisitedlinks_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">7</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkCheckButton" id="visitedlinks">
+        <property name="label" translatable="yes">Visited links</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="xalign">0</property>
+        <property name="draw_indicator">True</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">8</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="svtlo:ColorListBox" id="visitedlinks_lb">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">8</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="visitedlinks_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">8</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="autospellcheck">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">AutoSpellcheck</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">9</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="smarttags">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">Smart Tags</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">10</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="shadows">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">Shadows</property>
+        <property name="margin_left">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">11</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkDrawingArea" id="autospellcheck_wn:border">
+        <property name="hexpand">True</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_right">6</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list