[Libreoffice-commits] core.git: extras/source include/svx include/vcl svx/source sw/source sw/uiconfig vcl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Jul 26 07:42:12 UTC 2018


 extras/source/glade/libreoffice-catalog.xml.in |    3 
 include/svx/colorbox.hxx                       |   13 
 include/svx/colorwindow.hxx                    |    1 
 include/vcl/svapp.hxx                          |    1 
 include/vcl/weld.hxx                           |   12 
 svx/source/tbxctrls/tbcontrl.cxx               |   10 
 sw/source/ui/misc/pggrid.cxx                   |  434 +++++++++++--------------
 sw/source/uibase/frmdlg/colex.cxx              |  173 +++++++++
 sw/source/uibase/inc/colex.hxx                 |   22 +
 sw/source/uibase/inc/pggrid.hxx                |   77 +---
 sw/uiconfig/swriter/ui/textgridpage.ui         |   53 ++-
 vcl/source/app/salvtables.cxx                  |    7 
 12 files changed, 479 insertions(+), 327 deletions(-)

New commits:
commit b032d746a48b8887ccc2330b2fdbf63d701a213f
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Jun 22 16:41:24 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Jul 26 09:41:46 2018 +0200

    weld SwTextGridPage
    
    Change-Id: I4f8e5f643126bea5deef7636b6d20f8080cb6662
    Reviewed-on: https://gerrit.libreoffice.org/56309
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index 8f2fa93b9b9a..994bdd39273f 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -362,9 +362,6 @@
     <glade-widget-class title="Paragraph Preview" name="svxlo-SvxParaPrevWindow"
                         generic-name="Paragraph Preview Window" parent="GtkDrawingArea"
                         icon-name="widget-gtk-drawingarea"/>
-    <glade-widget-class title="Page Preview" name="swlo-SwPageGridExample"
-                        generic-name="Grid Page Preview Window" parent="GtkDrawingArea"
-                        icon-name="widget-gtk-drawingarea"/>
     <glade-widget-class title="Page Preview" name="swlo-SwColExample"
                         generic-name="Page Preview Window" parent="GtkDrawingArea"
                         icon-name="widget-gtk-drawingarea"/>
diff --git a/include/svx/colorbox.hxx b/include/svx/colorbox.hxx
index cedcbfff48a8..a4aa9de32133 100644
--- a/include/svx/colorbox.hxx
+++ b/include/svx/colorbox.hxx
@@ -96,9 +96,12 @@ private:
     std::unique_ptr<ColorWindow> m_xColorWindow;
     std::unique_ptr<weld::MenuButton> m_xButton;
     weld::Window* m_pTopLevel;
+    Link<ColorListBox&, void> m_aSelectedLink;
     ListBoxColorWrapper m_aColorWrapper;
     Color m_aAutoDisplayColor;
+    Color m_aSaveColor;
     NamedColor m_aSelectedColor;
+    bool m_bInterimBuilder;
     std::shared_ptr<PaletteManager> m_xPaletteManager;
     BorderColorStatus m_aBorderColorStatus;
 
@@ -107,9 +110,14 @@ private:
     void LockWidthRequest();
     ColorWindow* getColorWindow() const;
 public:
-    ColorListBox(weld::MenuButton* pControl, weld::Window* pWindow);
+    ColorListBox(weld::MenuButton* pControl, weld::Window* pWindow, bool bInterimBuilder = false);
     ~ColorListBox();
 
+    void SetSelectHdl(const Link<ColorListBox&, void>& rLink)
+    {
+        m_aSelectedLink = rLink;
+    }
+
     Color const & GetSelectEntryColor() const { return m_aSelectedColor.first; }
 
     void SelectEntry(const Color& rColor);
@@ -118,6 +126,9 @@ public:
 
     void ShowPreview(const NamedColor &rColor);
     void EnsurePaletteManager();
+
+    void SaveValue() { m_aSaveColor = GetSelectEntryColor(); }
+    bool IsValueChangedFromSaved() const { return m_aSaveColor != GetSelectEntryColor(); }
 };
 
 /** A wrapper for SvxColorListBox. */
diff --git a/include/svx/colorwindow.hxx b/include/svx/colorwindow.hxx
index 1e92a543a2f8..8c061ec0d895 100644
--- a/include/svx/colorwindow.hxx
+++ b/include/svx/colorwindow.hxx
@@ -147,6 +147,7 @@ public:
                 sal_uInt16 nSlotId,
                 const css::uno::Reference< css::frame::XFrame >& rFrame,
                 weld::Window* pParentWindow, weld::MenuButton* pMenuButton,
+                bool bInterimBuilder,
                 ColorSelectFunction const& rColorSelectFunction);
     weld::Container* GetWidget() { return mxTopLevel.get(); }
     virtual ~ColorWindow() override;
diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx
index 201276634765..92a422cb7072 100644
--- a/include/vcl/svapp.hxx
+++ b/include/vcl/svapp.hxx
@@ -1397,6 +1397,7 @@ public:
 
     static weld::Builder* CreateBuilder(weld::Widget* pParent, const OUString &rUIFile);
     static weld::Builder* CreateInterimBuilder(vcl::Window* pParent, const OUString &rUIFile); //for the duration of same SfxTabPages in mixed parent types
+    static weld::Builder* CreateInterimBuilder(weld::Widget* pParent, const OUString &rUIFile); //for the duration of same SfxTabPages in mixed parent types
 
     static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
                                                     VclButtonsType eButtonType, const OUString& rPrimaryMessage);
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index fe391c8e26d4..443b916b5142 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -543,6 +543,18 @@ public:
         get_range(min, dummy);
         set_range(min, max);
     }
+    int get_min() const
+    {
+        int min, dummy;
+        get_range(min, dummy);
+        return min;
+    }
+    int get_max() const
+    {
+        int dummy, max;
+        get_range(dummy, max);
+        return max;
+    }
     virtual void set_increments(int step, int page) = 0;
     virtual void get_increments(int& step, int& page) const = 0;
     virtual void set_digits(unsigned int digits) = 0;
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index e2db0bfbd3a6..7a40126fdd1e 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1370,9 +1370,11 @@ ColorWindow::ColorWindow(std::shared_ptr<PaletteManager> const & rPaletteManager
                          const Reference< XFrame >& rFrame,
                          weld::Window*              pParentWindow,
                          weld::MenuButton*          pMenuButton,
+                         bool                       bInterimBuilder,
                          std::function<void(const OUString&, const NamedColor&)> const & aFunction)
     : ToolbarPopupBase(rFrame)
-    , m_xBuilder(Application::CreateBuilder(pMenuButton, "svx/ui/colorwindow.ui"))
+    , m_xBuilder(bInterimBuilder ? Application::CreateInterimBuilder(pMenuButton, "svx/ui/colorwindow.ui")
+                                 : Application::CreateBuilder(pMenuButton, "svx/ui/colorwindow.ui"))
     , theSlotId(nSlotId)
     , mpParentWindow(pParentWindow)
     , mpMenuButton(pMenuButton)
@@ -3740,11 +3742,12 @@ void SvxColorListBox::SelectEntry(const Color& rColor)
     ShowPreview(m_aSelectedColor);
 }
 
-ColorListBox::ColorListBox(weld::MenuButton* pControl, weld::Window* pTopLevel)
+ColorListBox::ColorListBox(weld::MenuButton* pControl, weld::Window* pTopLevel, bool bInterimBuilder)
     : m_xButton(pControl)
     , m_pTopLevel(pTopLevel)
     , m_aColorWrapper(this)
     , m_aAutoDisplayColor(Application::GetSettings().GetStyleSettings().GetDialogColor())
+    , m_bInterimBuilder(bInterimBuilder)
 {
     m_aSelectedColor = GetAutoColor(0);
     LockWidthRequest();
@@ -3777,6 +3780,7 @@ void ColorListBox::createColorWindow()
                             xFrame,
                             m_pTopLevel,
                             m_xButton.get(),
+                            m_bInterimBuilder,
                             m_aColorWrapper));
 
     SetNoSelection();
@@ -3796,6 +3800,8 @@ void ColorListBox::Selected(const NamedColor& rColor)
 {
     ShowPreview(rColor);
     m_aSelectedColor = rColor;
+    if (m_aSelectedLink.IsSet())
+        m_aSelectedLink.Call(*this);
 }
 
 //to avoid the box resizing every time the color is changed to
diff --git a/sw/source/ui/misc/pggrid.cxx b/sw/source/ui/misc/pggrid.cxx
index d143f35d123f..d12fc4de6ffb 100644
--- a/sw/source/ui/misc/pggrid.cxx
+++ b/sw/source/ui/misc/pggrid.cxx
@@ -41,73 +41,56 @@
 #include <swmodule.hxx>
 #include <view.hxx>
 
-SwTextGridPage::SwTextGridPage(vcl::Window *pParent, const SfxItemSet &rSet) :
-    SfxTabPage(pParent, "TextGridPage", "modules/swriter/ui/textgridpage.ui", &rSet),
-    m_nRubyUserValue(0),
-    m_bRubyUserValue(false),
-    m_aPageSize(MM50, MM50),
-    m_bVertical(false),
-    m_bSquaredMode(false),
-    m_bHRulerChanged( false ),
-    m_bVRulerChanged( false )
+SwTextGridPage::SwTextGridPage(TabPageParent pParent, const SfxItemSet &rSet)
+    : SfxTabPage(pParent, "modules/swriter/ui/textgridpage.ui", "TextGridPage", &rSet)
+    , m_nRubyUserValue(0)
+    , m_bRubyUserValue(false)
+    , m_aPageSize(MM50, MM50)
+    , m_bVertical(false)
+    , m_bSquaredMode(false)
+    , m_bHRulerChanged(false)
+    , m_bVRulerChanged(false)
+    , m_xNoGridRB(m_xBuilder->weld_radio_button("radioRB_NOGRID"))
+    , m_xLinesGridRB(m_xBuilder->weld_radio_button("radioRB_LINESGRID"))
+    , m_xCharsGridRB(m_xBuilder->weld_radio_button("radioRB_CHARSGRID"))
+    , m_xSnapToCharsCB(m_xBuilder->weld_check_button("checkCB_SNAPTOCHARS"))
+    , m_xExampleWN(new weld::CustomWeld(*m_xBuilder, "drawingareaWN_EXAMPLE", m_aExampleWN))
+    , m_xLayoutFL(m_xBuilder->weld_widget("frameFL_LAYOUT"))
+    , m_xLinesPerPageNF(m_xBuilder->weld_spin_button("spinNF_LINESPERPAGE"))
+    , m_xLinesRangeFT(m_xBuilder->weld_label("labelFT_LINERANGE"))
+    , m_xTextSizeMF(m_xBuilder->weld_metric_spin_button("spinMF_TEXTSIZE", FUNIT_POINT))
+    , m_xCharsPerLineFT(m_xBuilder->weld_label("labelFT_CHARSPERLINE"))
+    , m_xCharsPerLineNF(m_xBuilder->weld_spin_button("spinNF_CHARSPERLINE"))
+    , m_xCharsRangeFT(m_xBuilder->weld_label("labelFT_CHARRANGE"))
+    , m_xCharWidthFT(m_xBuilder->weld_label("labelFT_CHARWIDTH"))
+    , m_xCharWidthMF(m_xBuilder->weld_metric_spin_button("spinMF_CHARWIDTH", FUNIT_POINT))
+    , m_xRubySizeFT(m_xBuilder->weld_label("labelFT_RUBYSIZE"))
+    , m_xRubySizeMF(m_xBuilder->weld_metric_spin_button("spinMF_RUBYSIZE", FUNIT_POINT))
+    , m_xRubyBelowCB(m_xBuilder->weld_check_button("checkCB_RUBYBELOW"))
+    , m_xDisplayFL(m_xBuilder->weld_widget("frameFL_DISPLAY"))
+    , m_xDisplayCB(m_xBuilder->weld_check_button("checkCB_DISPLAY"))
+    , m_xPrintCB(m_xBuilder->weld_check_button("checkCB_PRINT"))
+    , m_xColorLB(new ColorListBox(m_xBuilder->weld_menu_button("listLB_COLOR"), GetFrameWeld(), true))
 {
-    get(m_pNoGridRB,"radioRB_NOGRID");
-    get(m_pLinesGridRB,"radioRB_LINESGRID");
-    get(m_pCharsGridRB,"radioRB_CHARSGRID");
-    get(m_pSnapToCharsCB,"checkCB_SNAPTOCHARS");
-
-    get(m_pExampleWN,"drawingareaWN_EXAMPLE");
-    get(m_pLayoutFL,"frameFL_LAYOUT");
-
-    get(m_pLinesPerPageNF,"spinNF_LINESPERPAGE");
-    get(m_pLinesRangeFT,"labelFT_LINERANGE");
-
-    get(m_pTextSizeMF,"spinMF_TEXTSIZE");
-    get(m_pCharsPerLineFT,"labelFT_CHARSPERLINE");
-    get(m_pCharsPerLineNF,"spinNF_CHARSPERLINE");
-    get(m_pCharsRangeFT,"labelFT_CHARRANGE");
-    get(m_pCharWidthFT,"labelFT_CHARWIDTH");
-    get(m_pCharWidthMF,"spinMF_CHARWIDTH");
-    get(m_pRubySizeFT,"labelFT_RUBYSIZE");
-    get(m_pRubySizeMF,"spinMF_RUBYSIZE");
-    get(m_pRubyBelowCB,"checkCB_RUBYBELOW");
-
-    get(m_pDisplayFL,"frameFL_DISPLAY");
-    get(m_pDisplayCB,"checkCB_DISPLAY");
-    get(m_pPrintCB,"checkCB_PRINT");
-    get(m_pColorLB,"listLB_COLOR");
-
-    Link<SpinField&,void> aLink = LINK(this, SwTextGridPage, CharorLineChangedHdl);
-    Link<Control&,void> aLink2 = LINK(this, SwTextGridPage, CharorLineLoseFocusdHdl);
-    m_pCharsPerLineNF->SetUpHdl(aLink);
-    m_pCharsPerLineNF->SetDownHdl(aLink);
-    m_pCharsPerLineNF->SetLoseFocusHdl(aLink2);
-    m_pLinesPerPageNF->SetUpHdl(aLink);
-    m_pLinesPerPageNF->SetDownHdl(aLink);
-    m_pLinesPerPageNF->SetLoseFocusHdl(aLink2);
-
-    Link<SpinField&,void> aSizeLink = LINK(this, SwTextGridPage, TextSizeChangedHdl);
-    Link<Control&,void> aSizeLink2 = LINK(this, SwTextGridPage, TextSizeLoseFocusHdl);
-    m_pTextSizeMF->SetUpHdl(aSizeLink);
-    m_pTextSizeMF->SetDownHdl(aSizeLink);
-    m_pTextSizeMF->SetLoseFocusHdl(aSizeLink2);
-    m_pRubySizeMF->SetUpHdl(aSizeLink);
-    m_pRubySizeMF->SetDownHdl(aSizeLink);
-    m_pRubySizeMF->SetLoseFocusHdl(aSizeLink2);
-    m_pCharWidthMF->SetUpHdl(aSizeLink);
-    m_pCharWidthMF->SetDownHdl(aSizeLink);
-    m_pCharWidthMF->SetLoseFocusHdl(aSizeLink2);
-
-    Link<Button*,void> aGridTypeHdl = LINK(this, SwTextGridPage, GridTypeHdl);
-    m_pNoGridRB->SetClickHdl(aGridTypeHdl);
-    m_pLinesGridRB->SetClickHdl(aGridTypeHdl);
-    m_pCharsGridRB->SetClickHdl(aGridTypeHdl);
-
-    m_pColorLB->SetSelectHdl(LINK(this, SwTextGridPage, ColorModifyHdl));
-    m_pPrintCB->SetClickHdl(LINK(this, SwTextGridPage, GridModifyClickHdl));
-    m_pRubyBelowCB->SetClickHdl(LINK(this, SwTextGridPage, GridModifyClickHdl));
-
-    m_pDisplayCB->SetClickHdl(LINK(this, SwTextGridPage, DisplayGridHdl));
+    Link<weld::SpinButton&,void> aLink = LINK(this, SwTextGridPage, CharorLineChangedHdl);
+    m_xCharsPerLineNF->connect_value_changed(aLink);
+    m_xLinesPerPageNF->connect_value_changed(aLink);
+
+    Link<weld::MetricSpinButton&,void> aSizeLink = LINK(this, SwTextGridPage, TextSizeChangedHdl);
+    m_xTextSizeMF->connect_value_changed(aSizeLink);
+    m_xRubySizeMF->connect_value_changed(aSizeLink);
+    m_xCharWidthMF->connect_value_changed(aSizeLink);
+
+    Link<weld::ToggleButton&,void> aGridTypeHdl = LINK(this, SwTextGridPage, GridTypeHdl);
+    m_xNoGridRB->connect_toggled(aGridTypeHdl);
+    m_xLinesGridRB->connect_toggled(aGridTypeHdl);
+    m_xCharsGridRB->connect_toggled(aGridTypeHdl);
+
+    m_xColorLB->SetSelectHdl(LINK(this, SwTextGridPage, ColorModifyHdl));
+    m_xPrintCB->connect_toggled(LINK(this, SwTextGridPage, GridModifyClickHdl));
+    m_xRubyBelowCB->connect_toggled(LINK(this, SwTextGridPage, GridModifyClickHdl));
+
+    m_xDisplayCB->connect_toggled(LINK(this, SwTextGridPage, DisplayGridHdl));
 
     //Get the default paper mode
     SwView *pView   = ::GetActiveView();
@@ -122,21 +105,21 @@ SwTextGridPage::SwTextGridPage(vcl::Window *pParent, const SfxItemSet &rSet) :
     if( m_bSquaredMode )
     {
 
-        m_pRubySizeFT->Show();
-        m_pRubySizeMF->Show();
-        m_pRubyBelowCB->Show();
-        m_pSnapToCharsCB->Hide();
-        m_pCharWidthFT->Hide();
-        m_pCharWidthMF->Hide();
+        m_xRubySizeFT->show();
+        m_xRubySizeMF->show();
+        m_xRubyBelowCB->show();
+        m_xSnapToCharsCB->hide();
+        m_xCharWidthFT->hide();
+        m_xCharWidthMF->hide();
     }
     else
     {
-        m_pRubySizeFT->Hide();
-        m_pRubySizeMF->Hide();
-        m_pRubyBelowCB->Hide();
-        m_pSnapToCharsCB->Show();
-        m_pCharWidthFT->Show();
-        m_pCharWidthMF->Show();
+        m_xRubySizeFT->hide();
+        m_xRubySizeMF->hide();
+        m_xRubyBelowCB->hide();
+        m_xSnapToCharsCB->show();
+        m_xCharWidthFT->show();
+        m_xCharWidthMF->show();
     }
 }
 
@@ -147,50 +130,30 @@ SwTextGridPage::~SwTextGridPage()
 
 void SwTextGridPage::dispose()
 {
-    m_pNoGridRB.clear();
-    m_pLinesGridRB.clear();
-    m_pCharsGridRB.clear();
-    m_pSnapToCharsCB.clear();
-    m_pExampleWN.clear();
-    m_pLayoutFL.clear();
-    m_pLinesPerPageNF.clear();
-    m_pLinesRangeFT.clear();
-    m_pTextSizeMF.clear();
-    m_pCharsPerLineFT.clear();
-    m_pCharsPerLineNF.clear();
-    m_pCharsRangeFT.clear();
-    m_pCharWidthFT.clear();
-    m_pCharWidthMF.clear();
-    m_pRubySizeFT.clear();
-    m_pRubySizeMF.clear();
-    m_pRubyBelowCB.clear();
-    m_pDisplayFL.clear();
-    m_pDisplayCB.clear();
-    m_pPrintCB.clear();
-    m_pColorLB.clear();
+    m_xColorLB.reset();
     SfxTabPage::dispose();
 }
 
 VclPtr<SfxTabPage> SwTextGridPage::Create(TabPageParent pParent, const SfxItemSet *rSet)
 {
-    return VclPtr<SwTextGridPage>::Create(pParent.pParent, *rSet);
+    return VclPtr<SwTextGridPage>::Create(pParent, *rSet);
 }
 
 bool SwTextGridPage::FillItemSet(SfxItemSet *rSet)
 {
     bool bRet = false;
-    if(m_pNoGridRB->IsValueChangedFromSaved() ||
-        m_pLinesGridRB->IsValueChangedFromSaved() ||
-        m_pLinesPerPageNF->IsValueChangedFromSaved() ||
-        m_pTextSizeMF->IsValueChangedFromSaved() ||
-        m_pCharsPerLineNF->IsValueChangedFromSaved() ||
-        m_pSnapToCharsCB->IsValueChangedFromSaved() ||
-        m_pRubySizeMF->IsValueChangedFromSaved() ||
-        m_pCharWidthMF->IsValueChangedFromSaved() ||
-        m_pRubyBelowCB->IsValueChangedFromSaved() ||
-        m_pDisplayCB->IsValueChangedFromSaved() ||
-        m_pPrintCB->IsValueChangedFromSaved() ||
-        m_pColorLB->IsValueChangedFromSaved())
+    if (m_xNoGridRB->get_state_changed_from_saved() ||
+        m_xLinesGridRB->get_state_changed_from_saved() ||
+        m_xLinesPerPageNF->get_value_changed_from_saved() ||
+        m_xTextSizeMF->get_value_changed_from_saved() ||
+        m_xCharsPerLineNF->get_value_changed_from_saved() ||
+        m_xSnapToCharsCB->get_state_changed_from_saved() ||
+        m_xRubySizeMF->get_value_changed_from_saved() ||
+        m_xCharWidthMF->get_value_changed_from_saved() ||
+        m_xRubyBelowCB->get_state_changed_from_saved() ||
+        m_xDisplayCB->get_state_changed_from_saved() ||
+        m_xPrintCB->get_state_changed_from_saved() ||
+        m_xColorLB->IsValueChangedFromSaved())
     {
         PutGridItem(*rSet);
         bRet = true;
@@ -210,51 +173,51 @@ void    SwTextGridPage::Reset(const SfxItemSet *rSet)
     if(SfxItemState::DEFAULT <= rSet->GetItemState(RES_TEXTGRID))
     {
         const SwTextGridItem& rGridItem = rSet->Get(RES_TEXTGRID);
-        RadioButton* pButton = nullptr;
+        weld::RadioButton* pButton = nullptr;
         switch(rGridItem.GetGridType())
         {
-            case GRID_NONE :        pButton = m_pNoGridRB;    break;
-            case GRID_LINES_ONLY  : pButton = m_pLinesGridRB; break;
-            default:                pButton = m_pCharsGridRB;
+            case GRID_NONE :        pButton = m_xNoGridRB.get();    break;
+            case GRID_LINES_ONLY  : pButton = m_xLinesGridRB.get(); break;
+            default:                pButton = m_xCharsGridRB.get();
         }
-        pButton->Check();
-        m_pDisplayCB->Check(rGridItem.IsDisplayGrid());
-        GridTypeHdl(pButton);
-        m_pSnapToCharsCB->Check(rGridItem.IsSnapToChars());
-        m_pLinesPerPageNF->SetValue(rGridItem.GetLines());
-        SetLinesOrCharsRanges( *m_pLinesRangeFT , m_pLinesPerPageNF->GetMax() );
+        pButton->set_active(true);
+        m_xDisplayCB->set_active(rGridItem.IsDisplayGrid());
+        GridTypeHdl(*pButton);
+        m_xSnapToCharsCB->set_active(rGridItem.IsSnapToChars());
+        m_xLinesPerPageNF->set_value(rGridItem.GetLines());
+        SetLinesOrCharsRanges(*m_xLinesRangeFT , m_xLinesPerPageNF->get_max());
         m_nRubyUserValue = rGridItem.GetBaseHeight();
         m_bRubyUserValue = true;
-        m_pTextSizeMF->SetValue(m_pTextSizeMF->Normalize(m_nRubyUserValue), FUNIT_TWIP);
-        m_pRubySizeMF->SetValue(m_pRubySizeMF->Normalize(rGridItem.GetRubyHeight()), FUNIT_TWIP);
-        m_pCharWidthMF->SetValue(m_pCharWidthMF->Normalize(rGridItem.GetBaseWidth()), FUNIT_TWIP);
-        m_pRubyBelowCB->Check(rGridItem.IsRubyTextBelow());
-        m_pPrintCB->Check(rGridItem.IsPrintGrid());
-        m_pColorLB->SelectEntry(rGridItem.GetColor());
+        m_xTextSizeMF->set_value(m_xTextSizeMF->normalize(m_nRubyUserValue), FUNIT_TWIP);
+        m_xRubySizeMF->set_value(m_xRubySizeMF->normalize(rGridItem.GetRubyHeight()), FUNIT_TWIP);
+        m_xCharWidthMF->set_value(m_xCharWidthMF->normalize(rGridItem.GetBaseWidth()), FUNIT_TWIP);
+        m_xRubyBelowCB->set_active(rGridItem.IsRubyTextBelow());
+        m_xPrintCB->set_active(rGridItem.IsPrintGrid());
+        m_xColorLB->SelectEntry(rGridItem.GetColor());
     }
     UpdatePageSize(*rSet);
 
-    m_pNoGridRB->SaveValue();
-    m_pLinesGridRB->SaveValue();
-    m_pSnapToCharsCB->SaveValue();
-    m_pLinesPerPageNF->SaveValue();
-    m_pTextSizeMF->SaveValue();
-    m_pCharsPerLineNF->SaveValue();
-    m_pRubySizeMF->SaveValue();
-    m_pCharWidthMF->SaveValue();
-    m_pRubyBelowCB->SaveValue();
-    m_pDisplayCB->SaveValue();
-    m_pPrintCB->SaveValue();
-    m_pColorLB->SaveValue();
+    m_xNoGridRB->save_state();
+    m_xLinesGridRB->save_state();
+    m_xSnapToCharsCB->save_state();
+    m_xLinesPerPageNF->save_value();
+    m_xTextSizeMF->save_value();
+    m_xCharsPerLineNF->save_value();
+    m_xRubySizeMF->save_value();
+    m_xCharWidthMF->save_value();
+    m_xRubyBelowCB->save_state();
+    m_xDisplayCB->save_state();
+    m_xPrintCB->save_state();
+    m_xColorLB->SaveValue();
 }
 
 void    SwTextGridPage::ActivatePage( const SfxItemSet& rSet )
 {
-    m_pExampleWN->Hide();
-    m_pExampleWN->UpdateExample( rSet );
+    m_aExampleWN.Hide();
+    m_aExampleWN.UpdateExample(rSet);
     UpdatePageSize(rSet);
-    m_pExampleWN->Show();
-    m_pExampleWN->Invalidate();
+    m_aExampleWN.Show();
+    m_aExampleWN.Invalidate();
 }
 
 DeactivateRC SwTextGridPage::DeactivatePage( SfxItemSet* )
@@ -265,20 +228,20 @@ DeactivateRC SwTextGridPage::DeactivatePage( SfxItemSet* )
 void SwTextGridPage::PutGridItem(SfxItemSet& rSet)
 {
         SwTextGridItem aGridItem;
-        aGridItem.SetGridType(m_pNoGridRB->IsChecked() ? GRID_NONE :
-            m_pLinesGridRB->IsChecked() ? GRID_LINES_ONLY : GRID_LINES_CHARS );
-        aGridItem.SetSnapToChars(m_pSnapToCharsCB->IsChecked());
-        aGridItem.SetLines( static_cast< sal_uInt16 >(m_pLinesPerPageNF->GetValue()) );
+        aGridItem.SetGridType(m_xNoGridRB->get_active() ? GRID_NONE :
+            m_xLinesGridRB->get_active() ? GRID_LINES_ONLY : GRID_LINES_CHARS );
+        aGridItem.SetSnapToChars(m_xSnapToCharsCB->get_active());
+        aGridItem.SetLines( static_cast< sal_uInt16 >(m_xLinesPerPageNF->get_value()) );
         aGridItem.SetBaseHeight( static_cast< sal_uInt16 >(
             m_bRubyUserValue ? m_nRubyUserValue :
-                m_pTextSizeMF->Denormalize(m_pTextSizeMF->GetValue(FUNIT_TWIP))) );
-        aGridItem.SetRubyHeight( static_cast< sal_uInt16 >(m_pRubySizeMF->Denormalize(m_pRubySizeMF->GetValue(FUNIT_TWIP))) );
-        aGridItem.SetBaseWidth( static_cast< sal_uInt16 >(m_pCharWidthMF->Denormalize(m_pCharWidthMF->GetValue(FUNIT_TWIP))) );
-        aGridItem.SetRubyTextBelow(m_pRubyBelowCB->IsChecked());
+                m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FUNIT_TWIP))) );
+        aGridItem.SetRubyHeight( static_cast< sal_uInt16 >(m_xRubySizeMF->denormalize(m_xRubySizeMF->get_value(FUNIT_TWIP))) );
+        aGridItem.SetBaseWidth( static_cast< sal_uInt16 >(m_xCharWidthMF->denormalize(m_xCharWidthMF->get_value(FUNIT_TWIP))) );
+        aGridItem.SetRubyTextBelow(m_xRubyBelowCB->get_active());
         aGridItem.SetSquaredMode(m_bSquaredMode);
-        aGridItem.SetDisplayGrid(m_pDisplayCB->IsChecked());
-        aGridItem.SetPrintGrid(m_pPrintCB->IsChecked());
-        aGridItem.SetColor(m_pColorLB->GetSelectEntryColor());
+        aGridItem.SetDisplayGrid(m_xDisplayCB->get_active());
+        aGridItem.SetPrintGrid(m_xPrintCB->get_active());
+        aGridItem.SetColor(m_xColorLB->GetSelectEntryColor());
         rSet.Put(aGridItem);
 
         SwView * pView = ::GetActiveView();
@@ -289,8 +252,8 @@ void SwTextGridPage::PutGridItem(SfxItemSet& rSet)
                 m_bHRulerChanged = true;
             }
             m_bVRulerChanged = true;
-            pView->GetHRuler().SetCharWidth(static_cast<long>(m_pCharWidthMF->GetValue(FUNIT_TWIP)/56.7));
-            pView->GetVRuler().SetLineHeight(static_cast<long>(m_pTextSizeMF->GetValue(FUNIT_TWIP)/56.7));
+            pView->GetHRuler().SetCharWidth(static_cast<long>(m_xCharWidthMF->get_value(FUNIT_TWIP)/56.7));
+            pView->GetVRuler().SetLineHeight(static_cast<long>(m_xTextSizeMF->get_value(FUNIT_TWIP)/56.7));
         }
 }
 
@@ -333,38 +296,37 @@ void SwTextGridPage::UpdatePageSize(const SfxItemSet& rSet)
 
     sal_Int32 nTextSize = static_cast< sal_Int32 >(m_bRubyUserValue ?
                 m_nRubyUserValue :
-                    m_pTextSizeMF->Denormalize(m_pTextSizeMF->GetValue(FUNIT_TWIP)));
+                    m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FUNIT_TWIP)));
 
     if ( m_bSquaredMode )
     {
-        m_pCharsPerLineNF->SetValue(m_aPageSize.Width() / nTextSize);
-    m_pCharsPerLineNF->SetMax( m_pCharsPerLineNF->GetValue() );
-        m_pLinesPerPageNF->SetMax( m_aPageSize.Height() /
-    (   m_pTextSizeMF->Denormalize(m_pTextSizeMF->GetValue(FUNIT_TWIP)) +
-                m_pRubySizeMF->Denormalize(m_pRubySizeMF->GetValue(FUNIT_TWIP))));
-        SetLinesOrCharsRanges( *m_pCharsRangeFT , m_pCharsPerLineNF->GetMax() );
-        SetLinesOrCharsRanges( *m_pLinesRangeFT , m_pLinesPerPageNF->GetMax() );
+        m_xCharsPerLineNF->set_value(m_aPageSize.Width() / nTextSize);
+        m_xCharsPerLineNF->set_max(m_xCharsPerLineNF->get_value());
+        m_xLinesPerPageNF->set_max(m_aPageSize.Height() /
+        (   m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FUNIT_TWIP)) +
+                    m_xRubySizeMF->denormalize(m_xRubySizeMF->get_value(FUNIT_TWIP))));
+        SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() );
+        SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() );
     }
     else
     {
-        sal_Int32 nTextWidth = static_cast< sal_Int32 >(m_pCharWidthMF->Denormalize(m_pCharWidthMF->GetValue(FUNIT_TWIP)));
-        m_pLinesPerPageNF->SetValue(m_aPageSize.Height() / nTextSize);
+        sal_Int32 nTextWidth = static_cast< sal_Int32 >(m_xCharWidthMF->denormalize(m_xCharWidthMF->get_value(FUNIT_TWIP)));
+        m_xLinesPerPageNF->set_value(m_aPageSize.Height() / nTextSize);
         if (nTextWidth)
-            m_pCharsPerLineNF->SetValue(m_aPageSize.Width() / nTextWidth);
+            m_xCharsPerLineNF->set_value(m_aPageSize.Width() / nTextWidth);
         else
-            m_pCharsPerLineNF->SetValue( 45 );
-    SetLinesOrCharsRanges( *m_pCharsRangeFT , m_pCharsPerLineNF->GetMax() );
-    SetLinesOrCharsRanges( *m_pLinesRangeFT , m_pLinesPerPageNF->GetMax() );
+            m_xCharsPerLineNF->set_value(45);
+        SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() );
+        SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() );
     }
-
 }
 
-void SwTextGridPage::SetLinesOrCharsRanges(FixedText & rField, const sal_Int32 nValue )
+void SwTextGridPage::SetLinesOrCharsRanges(weld::Label& rField, const sal_Int32 nValue )
 {
     OUString aFieldStr("( 1 -");
     aFieldStr += OUString::number(nValue);
     aFieldStr += " )";
-    rField.SetText( aFieldStr );
+    rField.set_label(aFieldStr);
 }
 
 const sal_uInt16* SwTextGridPage::GetRanges()
@@ -375,21 +337,17 @@ const sal_uInt16* SwTextGridPage::GetRanges()
     return aPageRg;
 }
 
-IMPL_LINK(SwTextGridPage, CharorLineLoseFocusdHdl, Control&, rControl, void)
-{
-    CharorLineChangedHdl(static_cast<SpinField&>(rControl));
-}
-IMPL_LINK(SwTextGridPage, CharorLineChangedHdl, SpinField&, rField, void)
+IMPL_LINK(SwTextGridPage, CharorLineChangedHdl, weld::SpinButton&, rField, void)
 {
     //if in squared mode
     if ( m_bSquaredMode )
     {
-        if(m_pCharsPerLineNF == &rField)
+        if (m_xCharsPerLineNF.get() == &rField)
         {
-            auto nValue = m_pCharsPerLineNF->GetValue();
+            auto nValue = m_xCharsPerLineNF->get_value();
             assert(nValue && "div-by-zero");
             auto nWidth = m_aPageSize.Width() / nValue;
-            m_pTextSizeMF->SetValue(m_pTextSizeMF->Normalize(nWidth), FUNIT_TWIP);
+            m_xTextSizeMF->set_value(m_xTextSizeMF->normalize(nWidth), FUNIT_TWIP);
             //prevent rounding errors in the MetricField by saving the used value
             m_nRubyUserValue = nWidth;
             m_bRubyUserValue = true;
@@ -398,133 +356,129 @@ IMPL_LINK(SwTextGridPage, CharorLineChangedHdl, SpinField&, rField, void)
         //set maximum line per page
         {
             sal_Int32 nMaxLines = static_cast< sal_Int32 >(m_aPageSize.Height() /
-                (   m_pTextSizeMF->Denormalize(m_pTextSizeMF->GetValue(FUNIT_TWIP)) +
-                    m_pRubySizeMF->Denormalize(m_pRubySizeMF->GetValue(FUNIT_TWIP))));
-            m_pLinesPerPageNF->SetMax(nMaxLines);
+                (   m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FUNIT_TWIP)) +
+                    m_xRubySizeMF->denormalize(m_xRubySizeMF->get_value(FUNIT_TWIP))));
+            m_xLinesPerPageNF->set_max(nMaxLines);
         }
-        SetLinesOrCharsRanges( *m_pLinesRangeFT , m_pLinesPerPageNF->GetMax() );
-        SetLinesOrCharsRanges( *m_pCharsRangeFT , m_pCharsPerLineNF->GetMax() );
+        SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() );
+        SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() );
     }
     else//in normal mode
     {
-        if (m_pLinesPerPageNF == &rField)
+        if (m_xLinesPerPageNF.get() == &rField)
         {
-            auto nValue = m_pLinesPerPageNF->GetValue();
+            auto nValue = m_xLinesPerPageNF->get_value();
             assert(nValue && "div-by-zero");
             auto nHeight = m_aPageSize.Height() / nValue;
-            m_pTextSizeMF->SetValue(m_pTextSizeMF->Normalize(nHeight), FUNIT_TWIP);
-            m_pRubySizeMF->SetValue(0, FUNIT_TWIP);
-            SetLinesOrCharsRanges( *m_pLinesRangeFT , m_pLinesPerPageNF->GetMax() );
+            m_xTextSizeMF->set_value(m_xTextSizeMF->normalize(nHeight), FUNIT_TWIP);
+            m_xRubySizeMF->set_value(0, FUNIT_TWIP);
+            SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() );
 
             m_nRubyUserValue = nHeight;
             m_bRubyUserValue = true;
         }
-        else if (m_pCharsPerLineNF == &rField)
+        else if (m_xCharsPerLineNF.get() == &rField)
         {
-            auto nValue = m_pCharsPerLineNF->GetValue();
+            auto nValue = m_xCharsPerLineNF->get_value();
             assert(nValue && "div-by-zero");
             auto nWidth = m_aPageSize.Width() / nValue;
-            m_pCharWidthMF->SetValue(m_pCharWidthMF->Normalize(nWidth), FUNIT_TWIP);
-            SetLinesOrCharsRanges( *m_pCharsRangeFT , m_pCharsPerLineNF->GetMax() );
+            m_xCharWidthMF->set_value(m_xCharWidthMF->normalize(nWidth), FUNIT_TWIP);
+            SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() );
         }
     }
     GridModifyHdl();
 }
 
-IMPL_LINK(SwTextGridPage, TextSizeLoseFocusHdl, Control&, rControl, void)
-{
-    TextSizeChangedHdl(static_cast<SpinField&>(rControl));
-}
-IMPL_LINK(SwTextGridPage, TextSizeChangedHdl, SpinField&, rField, void)
+IMPL_LINK(SwTextGridPage, TextSizeChangedHdl, weld::MetricSpinButton&, rField, void)
 {
     //if in squared mode
     if( m_bSquaredMode )
     {
-        if (m_pTextSizeMF == &rField)
+        if (m_xTextSizeMF.get() == &rField)
         {
             m_bRubyUserValue = false;
 
             // fdo#50941: set maximum characters per line
-            sal_Int32 nTextSize = static_cast< sal_Int32 >(m_pTextSizeMF->Denormalize(m_pTextSizeMF->GetValue(FUNIT_TWIP)));
+            sal_Int32 nTextSize = static_cast< sal_Int32 >(m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FUNIT_TWIP)));
             if (nTextSize > 0)
             {
                 sal_Int32 nMaxChars = m_aPageSize.Width() / nTextSize;
-                m_pCharsPerLineNF->SetValue(nMaxChars);
-                m_pCharsPerLineNF->SetMax(nMaxChars);
-                SetLinesOrCharsRanges( *m_pCharsRangeFT , m_pCharsPerLineNF->GetMax() );
+                m_xCharsPerLineNF->set_value(nMaxChars);
+                m_xCharsPerLineNF->set_max(nMaxChars);
+                SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() );
             }
         }
         //set maximum line per page
         {
             sal_Int32 nMaxLines = static_cast< sal_Int32 >(m_aPageSize.Height() /
-                (   m_pTextSizeMF->Denormalize(m_pTextSizeMF->GetValue(FUNIT_TWIP)) +
-                    m_pRubySizeMF->Denormalize(m_pRubySizeMF->GetValue(FUNIT_TWIP))));
-            m_pLinesPerPageNF->SetMax(nMaxLines);
-            SetLinesOrCharsRanges( *m_pLinesRangeFT , m_pLinesPerPageNF->GetMax() );
+                (   m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FUNIT_TWIP)) +
+                    m_xRubySizeMF->denormalize(m_xRubySizeMF->get_value(FUNIT_TWIP))));
+            m_xLinesPerPageNF->set_max(nMaxLines);
+            SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() );
         }
     }
     else
     {
-        if (m_pTextSizeMF == &rField)
+        if (m_xTextSizeMF.get() == &rField)
         {
-            sal_Int32 nTextSize = static_cast< sal_Int32 >(m_pTextSizeMF->Denormalize(m_pTextSizeMF->GetValue(FUNIT_TWIP)));
-            m_pLinesPerPageNF->SetValue(m_aPageSize.Height() / nTextSize);
+            sal_Int32 nTextSize = static_cast< sal_Int32 >(m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FUNIT_TWIP)));
+            m_xLinesPerPageNF->set_value(m_aPageSize.Height() / nTextSize);
             m_bRubyUserValue = false;
-            SetLinesOrCharsRanges( *m_pLinesRangeFT , m_pLinesPerPageNF->GetMax() );
+            SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() );
         }
-        else if (m_pCharWidthMF == &rField)
+        else if (m_xCharWidthMF.get() == &rField)
         {
-            sal_Int32 nTextWidth = static_cast< sal_Int32 >(m_pCharWidthMF->Denormalize(m_pCharWidthMF->GetValue(FUNIT_TWIP)));
+            sal_Int32 nTextWidth = static_cast< sal_Int32 >(m_xCharWidthMF->denormalize(m_xCharWidthMF->get_value(FUNIT_TWIP)));
             sal_Int32 nMaxChar = 45 ;
             if (nTextWidth)
                 nMaxChar = m_aPageSize.Width() / nTextWidth;
-            m_pCharsPerLineNF->SetValue( nMaxChar );
-            SetLinesOrCharsRanges( *m_pCharsRangeFT , m_pCharsPerLineNF->GetMax() );
+            m_xCharsPerLineNF->set_value( nMaxChar );
+            SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() );
         }
         //rubySize is disabled
     }
     GridModifyHdl();
 }
 
-IMPL_LINK(SwTextGridPage, GridTypeHdl, Button*, pButton, void)
+IMPL_LINK(SwTextGridPage, GridTypeHdl, weld::ToggleButton&, rButton, void)
 {
-    bool bEnable = m_pNoGridRB.get() != pButton;
-    m_pLayoutFL->Enable(bEnable);
-    m_pDisplayFL->Enable(bEnable);
+    bool bEnable = m_xNoGridRB.get() != &rButton;
+    m_xLayoutFL->set_sensitive(bEnable);
+    m_xDisplayFL->set_sensitive(bEnable);
 
     //one special case
-    if(bEnable)
-        DisplayGridHdl(m_pDisplayCB);
+    if (bEnable)
+        DisplayGridHdl(*m_xDisplayCB);
 
-    bEnable = m_pCharsGridRB == pButton;
-    m_pSnapToCharsCB->Enable(bEnable);
+    bEnable = m_xCharsGridRB.get() == &rButton;
+    m_xSnapToCharsCB->set_sensitive(bEnable);
 
-    bEnable = m_pLinesGridRB == pButton;
-    if(bEnable && !m_bSquaredMode )
+    bEnable = m_xLinesGridRB.get() == &rButton;
+    if (bEnable && !m_bSquaredMode)
     {
-        m_pCharsPerLineFT->Enable(false);
-        m_pCharsPerLineNF->Enable(false);
-        m_pCharsRangeFT->Enable(false);
-        m_pCharWidthFT->Enable(false);
-        m_pCharWidthMF->Enable(false);
+        m_xCharsPerLineFT->set_sensitive(false);
+        m_xCharsPerLineNF->set_sensitive(false);
+        m_xCharsRangeFT->set_sensitive(false);
+        m_xCharWidthFT->set_sensitive(false);
+        m_xCharWidthMF->set_sensitive(false);
     }
 
     GridModifyHdl();
 }
 
-IMPL_LINK_NOARG(SwTextGridPage, DisplayGridHdl, Button*, void)
+IMPL_LINK_NOARG(SwTextGridPage, DisplayGridHdl, weld::ToggleButton&, void)
 {
-    bool bChecked = m_pDisplayCB->IsChecked();
-    m_pPrintCB->Enable(bChecked);
-    m_pPrintCB->Check(bChecked);
+    bool bChecked = m_xDisplayCB->get_active();
+    m_xPrintCB->set_sensitive(bChecked);
+    m_xPrintCB->set_active(bChecked);
 }
 
-IMPL_LINK_NOARG(SwTextGridPage, GridModifyClickHdl, Button*, void)
+IMPL_LINK_NOARG(SwTextGridPage, GridModifyClickHdl, weld::ToggleButton&, void)
 {
     GridModifyHdl();
 }
 
-IMPL_LINK_NOARG(SwTextGridPage, ColorModifyHdl, SvxColorListBox&, void)
+IMPL_LINK_NOARG(SwTextGridPage, ColorModifyHdl, ColorListBox&, void)
 {
     GridModifyHdl();
 }
@@ -537,7 +491,7 @@ void SwTextGridPage::GridModifyHdl()
     if(pExSet)
         aSet.Put(*pExSet);
     PutGridItem(aSet);
-    m_pExampleWN->UpdateExample(aSet);
+    m_aExampleWN.UpdateExample(aSet);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/frmdlg/colex.cxx b/sw/source/uibase/frmdlg/colex.cxx
index 493d96cc3090..02957501f4b8 100644
--- a/sw/source/uibase/frmdlg/colex.cxx
+++ b/sw/source/uibase/frmdlg/colex.cxx
@@ -194,6 +194,159 @@ void SwPageExample::UpdateExample( const SfxItemSet& rSet )
     Invalidate();
 }
 
+void PageExample::UpdateExample( const SfxItemSet& rSet )
+{
+    if (SfxItemState::DEFAULT <= rSet.GetItemState(RES_FRAMEDIR))
+    {
+        const SvxFrameDirectionItem& rDirItem = rSet.Get(RES_FRAMEDIR);
+        m_bVertical = rDirItem.GetValue() == SvxFrameDirection::Vertical_RL_TB||
+                    rDirItem.GetValue() == SvxFrameDirection::Vertical_LR_TB;
+    }
+
+    SfxItemPool* pPool = rSet.GetPool();
+    sal_uInt16 nWhich = pPool->GetWhich( SID_ATTR_PAGE );
+    if ( rSet.GetItemState( nWhich, false ) == SfxItemState::SET )
+    {
+        // alignment
+        const SvxPageItem* pPage = static_cast<const SvxPageItem*>(&rSet.Get( nWhich ));
+
+        if ( pPage )
+            SetUsage( pPage->GetPageUsage() );
+    }
+
+    nWhich = pPool->GetWhich( SID_ATTR_PAGE_SIZE );
+
+    if ( rSet.GetItemState( nWhich, false ) == SfxItemState::SET )
+    {
+        // orientation and size from PageItem
+        const SvxSizeItem& rSize = static_cast<const SvxSizeItem&>(rSet.Get( nWhich ));
+        SetSize( rSize.GetSize() );
+    }
+    nWhich = RES_LR_SPACE;
+    if ( rSet.GetItemState( nWhich, false ) == SfxItemState::SET )
+    {
+        // set left and right border
+        const SvxLRSpaceItem& rLRSpace = static_cast<const SvxLRSpaceItem&>(rSet.Get( nWhich ));
+
+        SetLeft( rLRSpace.GetLeft() );
+        SetRight( rLRSpace.GetRight() );
+    }
+    else
+    {
+        SetLeft( 0 );
+        SetRight( 0 );
+    }
+
+    nWhich = RES_UL_SPACE;
+
+    if ( rSet.GetItemState( nWhich, false ) == SfxItemState::SET )
+    {
+        // set upper and lower border
+        const SvxULSpaceItem& rULSpace = static_cast<const SvxULSpaceItem&>(rSet.Get( nWhich ));
+
+        SetTop( rULSpace.GetUpper() );
+        SetBottom( rULSpace.GetLower() );
+    }
+    else
+    {
+        SetTop( 0 );
+        SetBottom( 0 );
+    }
+
+    // evaluate header-attributes
+    const SfxPoolItem* pItem;
+    if( SfxItemState::SET == rSet.GetItemState( pPool->GetWhich( SID_ATTR_PAGE_HEADERSET),
+            false, &pItem ) )
+    {
+        const SfxItemSet& rHeaderSet = static_cast<const SvxSetItem*>(pItem)->GetItemSet();
+        const SfxBoolItem& rHeaderOn =
+            static_cast<const SfxBoolItem&>(rHeaderSet.Get( pPool->GetWhich( SID_ATTR_PAGE_ON ) ) );
+
+        if ( rHeaderOn.GetValue() )
+        {
+            const SvxSizeItem& rSize =
+                static_cast<const SvxSizeItem&>(rHeaderSet.Get(pPool->GetWhich(SID_ATTR_PAGE_SIZE)));
+
+            const SvxULSpaceItem& rUL = static_cast<const SvxULSpaceItem&>(rHeaderSet.Get(
+                                        pPool->GetWhich(SID_ATTR_ULSPACE)));
+            const SvxLRSpaceItem& rLR = static_cast<const SvxLRSpaceItem&>(rHeaderSet.Get(
+                                        pPool->GetWhich(SID_ATTR_LRSPACE)));
+
+            SetHdHeight( rSize.GetSize().Height() - rUL.GetLower());
+            SetHdDist( rUL.GetLower() );
+            SetHdLeft( rLR.GetLeft() );
+            SetHdRight( rLR.GetRight() );
+            SetHeader( true );
+
+            if(SfxItemState::SET == rHeaderSet.GetItemState(RES_BACKGROUND))
+            {
+                // create FillAttributes from SvxBrushItem //SetHdColor(rItem.GetColor());
+                const SvxBrushItem& rItem = rHeaderSet.Get(RES_BACKGROUND);
+                SfxItemSet aTempSet(*rHeaderSet.GetPool(), svl::Items<XATTR_FILL_FIRST, XATTR_FILL_LAST>{});
+
+                setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet);
+                setHeaderFillAttributes(
+                    std::make_shared<drawinglayer::attribute::SdrAllFillAttributesHelper>(
+                            aTempSet));
+            }
+        }
+        else
+            SetHeader( false );
+    }
+
+    if( SfxItemState::SET == rSet.GetItemState( pPool->GetWhich( SID_ATTR_PAGE_FOOTERSET),
+            false, &pItem ) )
+    {
+        const SfxItemSet& rFooterSet = static_cast<const SvxSetItem*>(pItem)->GetItemSet();
+        const SfxBoolItem& rFooterOn = rFooterSet.Get( SID_ATTR_PAGE_ON );
+
+        if ( rFooterOn.GetValue() )
+        {
+            const SvxSizeItem& rSize =
+                static_cast<const SvxSizeItem&>(rFooterSet.Get( pPool->GetWhich( SID_ATTR_PAGE_SIZE ) ));
+
+            const SvxULSpaceItem& rUL = static_cast<const SvxULSpaceItem&>(rFooterSet.Get(
+                                        pPool->GetWhich( SID_ATTR_ULSPACE ) ));
+            const SvxLRSpaceItem& rLR = static_cast<const SvxLRSpaceItem&>(rFooterSet.Get(
+                                        pPool->GetWhich( SID_ATTR_LRSPACE ) ));
+
+            SetFtHeight( rSize.GetSize().Height() - rUL.GetUpper());
+            SetFtDist( rUL.GetUpper() );
+            SetFtLeft( rLR.GetLeft() );
+            SetFtRight( rLR.GetRight() );
+            SetFooter( true );
+
+            if( rFooterSet.GetItemState( RES_BACKGROUND ) == SfxItemState::SET )
+            {
+                // create FillAttributes from SvxBrushItem //SetFtColor(rItem.GetColor());
+                const SvxBrushItem& rItem = rFooterSet.Get(RES_BACKGROUND);
+                SfxItemSet aTempSet(*rFooterSet.GetPool(), svl::Items<XATTR_FILL_FIRST, XATTR_FILL_LAST>{});
+
+                setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet);
+                setFooterFillAttributes(
+                    std::make_shared<drawinglayer::attribute::SdrAllFillAttributesHelper>(
+                            aTempSet));
+            }
+        }
+        else
+            SetFooter( false );
+    }
+
+    if(SfxItemState::SET == rSet.GetItemState(RES_BACKGROUND, false, &pItem))
+    {
+        // create FillAttributes from SvxBrushItem
+        const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(*pItem);
+        SfxItemSet aTempSet(*rSet.GetPool(), svl::Items<XATTR_FILL_FIRST, XATTR_FILL_LAST>{});
+
+        setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet);
+        setPageFillAttributes(
+            std::make_shared<drawinglayer::attribute::SdrAllFillAttributesHelper>(
+                    aTempSet));
+    }
+
+    Invalidate();
+}
+
 void SwColExample::DrawPage(vcl::RenderContext& rRenderContext, const Point& rOrg,
                             const bool bSecond, const bool bEnabled)
 {
@@ -496,25 +649,15 @@ Size SwColumnOnlyExample::GetOptimalSize() const
     return LogicToPixel(Size(75, 46), MapMode(MapUnit::MapAppFont));
 }
 
-SwPageGridExample::SwPageGridExample(vcl::Window* pPar)
-    : SwPageExample(pPar)
-{}
-
-SwPageGridExample::~SwPageGridExample()
+SwPageGridExample::SwPageGridExample()
+    : pGridItem(nullptr)
 {
-    disposeOnce();
-}
-
-void SwPageGridExample::dispose()
-{
-    pGridItem.reset();
-    SwPageExample::dispose();
 }
 
 void SwPageGridExample::DrawPage(vcl::RenderContext& rRenderContext, const Point& rOrg,
                                  const bool bSecond, const bool bEnabled)
 {
-    SwPageExample::DrawPage(rRenderContext, rOrg, bSecond, bEnabled);
+    PageExample::DrawPage(rRenderContext, rOrg, bSecond, bEnabled);
 
     if (!pGridItem || !pGridItem->GetGridType())
         return;
@@ -617,9 +760,7 @@ void SwPageGridExample::UpdateExample( const SfxItemSet& rSet )
     //get the grid information
     if(SfxItemState::DEFAULT <= rSet.GetItemState(RES_TEXTGRID))
         pGridItem.reset(static_cast<SwTextGridItem*>(rSet.Get(RES_TEXTGRID).Clone()));
-    SwPageExample::UpdateExample(rSet);
+    PageExample::UpdateExample(rSet);
 }
 
-VCL_BUILDER_FACTORY(SwPageGridExample)
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/inc/colex.hxx b/sw/source/uibase/inc/colex.hxx
index 4aa5d2ec3487..38f534a1e573 100644
--- a/sw/source/uibase/inc/colex.hxx
+++ b/sw/source/uibase/inc/colex.hxx
@@ -43,9 +43,23 @@ public:
     void UpdateExample( const SfxItemSet& rSet );
 };
 
+class SW_DLLPUBLIC PageExample : public PageWindow
+{
+protected:
+    bool            m_bVertical;
+public:
+    PageExample()
+        : m_bVertical(false)
+    {
+        SetSize(SvxPaperInfo::GetPaperSize(PAPER_A4));
+    }
+
+    void UpdateExample( const SfxItemSet& rSet );
+};
+
 class SwTextGridItem;
 
-class SW_DLLPUBLIC SwPageGridExample : public SwPageExample
+class SW_DLLPUBLIC SwPageGridExample : public PageExample
 {
     std::unique_ptr<SwTextGridItem> pGridItem;
 protected:
@@ -54,12 +68,12 @@ protected:
                           const bool bSecond,
                           const bool bEnabled) override;
 public:
-    SwPageGridExample(vcl::Window* pPar);
-    virtual ~SwPageGridExample() override;
-    virtual void dispose() override;
+    SwPageGridExample();
+
     void UpdateExample( const SfxItemSet& rSet );
 };
 
+
 class SW_DLLPUBLIC SwColExample : public SwPageExample
 {
     SwColMgr*   pColMgr;
diff --git a/sw/source/uibase/inc/pggrid.hxx b/sw/source/uibase/inc/pggrid.hxx
index 379538525ece..9da77f57239f 100644
--- a/sw/source/uibase/inc/pggrid.hxx
+++ b/sw/source/uibase/inc/pggrid.hxx
@@ -21,45 +21,13 @@
 
 #include <sfx2/tabdlg.hxx>
 #include "colex.hxx"
-#include <vcl/field.hxx>
-#include <vcl/fixed.hxx>
-#include <svtools/ctrlbox.hxx>
+#include <vcl/customweld.hxx>
+#include <vcl/weld.hxx>
 #include <svx/colorbox.hxx>
 
 // TabPage Format/(Styles/)Page/Text grid
 class SwTextGridPage: public SfxTabPage
 {
-    VclPtr<RadioButton>     m_pNoGridRB;
-    VclPtr<RadioButton>     m_pLinesGridRB;
-    VclPtr<RadioButton>     m_pCharsGridRB;
-    VclPtr<CheckBox>        m_pSnapToCharsCB;
-
-    VclPtr<SwPageGridExample>   m_pExampleWN;
-
-    VclPtr<VclFrame>        m_pLayoutFL;
-    VclPtr<NumericField>    m_pLinesPerPageNF;
-    VclPtr<FixedText>       m_pLinesRangeFT;
-
-    VclPtr<MetricField>     m_pTextSizeMF;
-
-    VclPtr<FixedText>       m_pCharsPerLineFT;
-    VclPtr<NumericField>    m_pCharsPerLineNF;
-    VclPtr<FixedText>       m_pCharsRangeFT;
-
-    VclPtr<FixedText>       m_pCharWidthFT;
-    VclPtr<MetricField>     m_pCharWidthMF;
-
-    VclPtr<FixedText>       m_pRubySizeFT;
-    VclPtr<MetricField>     m_pRubySizeMF;
-
-    VclPtr<CheckBox>        m_pRubyBelowCB;
-
-    VclPtr<VclFrame>        m_pDisplayFL;
-
-    VclPtr<CheckBox>        m_pDisplayCB;
-    VclPtr<CheckBox>        m_pPrintCB;
-    VclPtr<SvxColorListBox> m_pColorLB;
-
     sal_Int32       m_nRubyUserValue;
     bool        m_bRubyUserValue;
     Size            m_aPageSize;
@@ -68,26 +36,47 @@ class SwTextGridPage: public SfxTabPage
     bool        m_bHRulerChanged;
     bool        m_bVRulerChanged;
 
+    SwPageGridExample m_aExampleWN;
+    std::unique_ptr<weld::RadioButton> m_xNoGridRB;
+    std::unique_ptr<weld::RadioButton> m_xLinesGridRB;
+    std::unique_ptr<weld::RadioButton> m_xCharsGridRB;
+    std::unique_ptr<weld::CheckButton> m_xSnapToCharsCB;
+    std::unique_ptr<weld::CustomWeld> m_xExampleWN;
+    std::unique_ptr<weld::Widget> m_xLayoutFL;
+    std::unique_ptr<weld::SpinButton> m_xLinesPerPageNF;
+    std::unique_ptr<weld::Label> m_xLinesRangeFT;
+    std::unique_ptr<weld::MetricSpinButton> m_xTextSizeMF;
+    std::unique_ptr<weld::Label> m_xCharsPerLineFT;
+    std::unique_ptr<weld::SpinButton> m_xCharsPerLineNF;
+    std::unique_ptr<weld::Label> m_xCharsRangeFT;
+    std::unique_ptr<weld::Label> m_xCharWidthFT;
+    std::unique_ptr<weld::MetricSpinButton> m_xCharWidthMF;
+    std::unique_ptr<weld::Label> m_xRubySizeFT;
+    std::unique_ptr<weld::MetricSpinButton> m_xRubySizeMF;
+    std::unique_ptr<weld::CheckButton> m_xRubyBelowCB;
+    std::unique_ptr<weld::Widget> m_xDisplayFL;
+    std::unique_ptr<weld::CheckButton> m_xDisplayCB;
+    std::unique_ptr<weld::CheckButton> m_xPrintCB;
+    std::unique_ptr<ColorListBox> m_xColorLB;
+
     void UpdatePageSize(const SfxItemSet& rSet);
     void PutGridItem(SfxItemSet& rSet);
-    static void SetLinesOrCharsRanges(FixedText & rField, const sal_Int32 nValue );
+    static void SetLinesOrCharsRanges(weld::Label& rField, const sal_Int32 nValue);
 
     void GridModifyHdl();
 
-    DECL_LINK(GridTypeHdl, Button*, void);
-    DECL_LINK(CharorLineChangedHdl, SpinField&, void);
-    DECL_LINK(CharorLineLoseFocusdHdl, Control&, void);
-    DECL_LINK(TextSizeChangedHdl, SpinField&, void);
-    DECL_LINK(TextSizeLoseFocusHdl, Control&, void);
-    DECL_LINK(ColorModifyHdl, SvxColorListBox&, void);
-    DECL_LINK(GridModifyClickHdl, Button*, void);
-    DECL_LINK(DisplayGridHdl, Button*, void);
+    DECL_LINK(GridTypeHdl, weld::ToggleButton&, void);
+    DECL_LINK(CharorLineChangedHdl, weld::SpinButton&, void);
+    DECL_LINK(TextSizeChangedHdl, weld::MetricSpinButton&, void);
+    DECL_LINK(ColorModifyHdl, ColorListBox&, void);
+    DECL_LINK(GridModifyClickHdl, weld::ToggleButton&, void);
+    DECL_LINK(DisplayGridHdl, weld::ToggleButton&, void);
 
     using SfxTabPage::ActivatePage;
     using SfxTabPage::DeactivatePage;
 
 public:
-    SwTextGridPage(vcl::Window *pParent, const SfxItemSet &rSet);
+    SwTextGridPage(TabPageParent pParent, const SfxItemSet &rSet);
     virtual ~SwTextGridPage() override;
     virtual void dispose() override;
 
diff --git a/sw/uiconfig/swriter/ui/textgridpage.ui b/sw/uiconfig/swriter/ui/textgridpage.ui
index 7880adbc10f3..64ec3e518079 100644
--- a/sw/uiconfig/swriter/ui/textgridpage.ui
+++ b/sw/uiconfig/swriter/ui/textgridpage.ui
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="sw">
   <requires lib="gtk+" version="3.18"/>
-  <requires lib="LibreOffice" version="1.0"/>
   <object class="GtkAdjustment" id="adjustmentCHARSPERLINE">
     <property name="lower">1</property>
     <property name="upper">233</property>
@@ -23,6 +22,20 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkAdjustment" id="adjustmentMetric1">
+    <property name="lower">1</property>
+    <property name="upper">5600</property>
+    <property name="value">10</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustmentMetric2">
+    <property name="lower">1</property>
+    <property name="upper">5600</property>
+    <property name="value">10</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
   <object class="GtkBox" id="TextGridPage">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -61,7 +74,6 @@
                         <property name="xalign">0</property>
                         <property name="active">True</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">radioRB_LINESGRID</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -77,7 +89,7 @@
                         <property name="use_underline">True</property>
                         <property name="xalign">0</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">radioRB_CHARSGRID</property>
+                        <property name="group">radioRB_NOGRID</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -125,7 +137,7 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="swlo-SwPageGridExample" id="drawingareaWN_EXAMPLE">
+                  <object class="GtkDrawingArea" id="drawingareaWN_EXAMPLE">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="halign">center</property>
@@ -285,10 +297,11 @@
                         <property name="column_spacing">12</property>
                         <property name="row_homogeneous">True</property>
                         <child>
-                          <object class="GtkSpinButton" id="spinMF_CHARWIDTH:0pt">
+                          <object class="GtkSpinButton" id="spinMF_CHARWIDTH">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="adjustment">adjustmentMetric</property>
+                            <property name="activates_default">True</property>
+                            <property name="adjustment">adjustmentMetric2</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
@@ -302,7 +315,7 @@
                             <property name="halign">start</property>
                             <property name="label" translatable="yes" context="textgridpage|labelFT_CHARWIDTH">Character _width:</property>
                             <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">spinMF_CHARWIDTH:0pt</property>
+                            <property name="mnemonic_widget">spinMF_CHARWIDTH</property>
                           </object>
                           <packing>
                             <property name="left_attach">0</property>
@@ -316,7 +329,7 @@
                             <property name="halign">start</property>
                             <property name="label" translatable="yes" context="textgridpage|labelFT_RUBYSIZE">Max. Ruby text size:</property>
                             <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">spinMF_RUBYSIZE:0pt</property>
+                            <property name="mnemonic_widget">spinMF_RUBYSIZE</property>
                           </object>
                           <packing>
                             <property name="left_attach">0</property>
@@ -324,10 +337,11 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkSpinButton" id="spinMF_RUBYSIZE:0pt">
+                          <object class="GtkSpinButton" id="spinMF_RUBYSIZE">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="adjustment">adjustmentMetric</property>
+                            <property name="activates_default">True</property>
+                            <property name="adjustment">adjustmentMetric1</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
@@ -341,7 +355,7 @@
                             <property name="halign">start</property>
                             <property name="label" translatable="yes" context="textgridpage|labelFT_TEXTSIZE">Max. base text size:</property>
                             <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">spinMF_TEXTSIZE:0pt</property>
+                            <property name="mnemonic_widget">spinMF_TEXTSIZE</property>
                           </object>
                           <packing>
                             <property name="left_attach">0</property>
@@ -349,9 +363,10 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkSpinButton" id="spinMF_TEXTSIZE:0pt">
+                          <object class="GtkSpinButton" id="spinMF_TEXTSIZE">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
+                            <property name="activates_default">True</property>
                             <property name="adjustment">adjustmentMetric</property>
                           </object>
                           <packing>
@@ -378,9 +393,9 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
                     <property name="halign">start</property>
                     <property name="margin_left">12</property>
+                    <property name="use_underline">True</property>
                     <property name="xalign">0</property>
                     <property name="draw_indicator">True</property>
                   </object>
@@ -435,8 +450,8 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
                     <property name="halign">start</property>
+                    <property name="use_underline">True</property>
                     <property name="xalign">0.14000000059604645</property>
                     <property name="draw_indicator">True</property>
                   </object>
@@ -451,9 +466,9 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
                     <property name="halign">start</property>
                     <property name="margin_left">12</property>
+                    <property name="use_underline">True</property>
                     <property name="xalign">0</property>
                     <property name="draw_indicator">True</property>
                   </object>
@@ -477,11 +492,15 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="svxcorelo-SvxColorListBox" id="listLB_COLOR">
+                  <object class="GtkMenuButton" id="listLB_COLOR">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
+                    <property name="receives_default">False</property>
                     <property name="halign">start</property>
                     <property name="valign">center</property>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </object>
                   <packing>
                     <property name="left_attach">2</property>
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 0b2535414c32..a448703252bd 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -2472,6 +2472,13 @@ weld::Builder* SalInstance::CreateInterimBuilder(vcl::Window* pParent, const OUS
     return new SalInstanceBuilder(pParent, rUIRoot, rUIFile);
 }
 
+weld::Builder* Application::CreateInterimBuilder(weld::Widget* pParent, const OUString &rUIFile)
+{
+    SalInstanceWidget* pParentInstance = dynamic_cast<SalInstanceWidget*>(pParent);
+    vcl::Window* pParentWidget = pParentInstance ? pParentInstance->getWidget() : nullptr;
+    return Application::CreateInterimBuilder(pParentWidget, rUIFile);
+}
+
 weld::MessageDialog* SalInstance::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonsType, const OUString& rPrimaryMessage)
 {
     SalInstanceWidget* pParentInstance = dynamic_cast<SalInstanceWidget*>(pParent);


More information about the Libreoffice-commits mailing list