tdf#136073 combine glow and softedge sidebar section

Change-Id: I19381009f5b286b051ae0cb90a794ed51a413a7a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103835
Tested-by: Jenkins
Reviewed-by: Andreas Kainz <kainz.a@gmail.com>
diff --git a/compilerplugins/clang/unusedfields.writeonly.results b/compilerplugins/clang/unusedfields.writeonly.results
index aa90dcb..5860bee 100644
--- a/compilerplugins/clang/unusedfields.writeonly.results
+++ b/compilerplugins/clang/unusedfields.writeonly.results
@@ -770,12 +770,12 @@ svx/source/sdr/attribute/sdrtextattribute.cxx:49
    drawinglayer::attribute::ImpSdrTextAttribute maPropertiesVersion sal_uInt32
svx/source/sdr/attribute/sdrtextattribute.cxx:63
    drawinglayer::attribute::ImpSdrTextAttribute mbWrongSpell _Bool
svx/source/sidebar/glow/GlowPropertyPanel.hxx:40
    svx::sidebar::GlowPropertyPanel maGlowColorController sfx2::sidebar::ControllerItem
svx/source/sidebar/glow/GlowPropertyPanel.hxx:41
svx/source/sidebar/effect/EffectPropertyPanel.hxx:40
    svx::sidebar::EffectPropertyPanel maGlowColorController sfx2::sidebar::ControllerItem
svx/source/sidebar/effect/EffectPropertyPanel.hxx:41
    svx::sidebar::GlowPropertyPanel maGlowRadiusController sfx2::sidebar::ControllerItem
svx/source/sidebar/glow/GlowPropertyPanel.hxx:42
    svx::sidebar::GlowPropertyPanel maGlowTransparencyController sfx2::sidebar::ControllerItem
svx/source/sidebar/effect/EffectPropertyPanel.hxx:42
    svx::sidebar::EffectPropertyPanel maGlowTransparencyController sfx2::sidebar::ControllerItem
svx/source/sidebar/line/LinePropertyPanel.hxx:83
    svx::sidebar::LinePropertyPanel maStyleControl sfx2::sidebar::ControllerItem
svx/source/sidebar/line/LinePropertyPanel.hxx:84
@@ -816,8 +816,8 @@ svx/source/sidebar/possize/PosSizePropertyPanel.hxx:117
    svx::sidebar::PosSizePropertyPanel mxAlignDispatch std::unique_ptr<ToolbarUnoDispatcher>
svx/source/sidebar/possize/PosSizePropertyPanel.hxx:119
    svx::sidebar::PosSizePropertyPanel mxAlignDispatch2 std::unique_ptr<ToolbarUnoDispatcher>
svx/source/sidebar/softedge/SoftEdgePropertyPanel.hxx:41
    svx::sidebar::SoftEdgePropertyPanel maSoftEdgeRadiusController sfx2::sidebar::ControllerItem
svx/source/sidebar/effect/EffectPropertyPanel.hxx:41
    svx::sidebar::EffectPropertyPanel maSoftEdgeRadiusController sfx2::sidebar::ControllerItem
svx/source/sidebar/styles/StylesPropertyPanel.hxx:13
    svx::sidebar::StylesPropertyPanel m_xFontStyleDispatch std::unique_ptr<ToolbarUnoDispatcher>
svx/source/sidebar/styles/StylesPropertyPanel.hxx:16
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
index 7deb82a..75a3a07 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
@@ -589,12 +589,12 @@
        </prop>
      </node>

      <node oor:name="GlowPropertyPanel" oor:op="replace">
      <node oor:name="EffectPropertyPanel" oor:op="replace">
        <prop oor:name="Title" oor:type="xs:string">
          <value xml:lang="en-US">Glow</value>
          <value xml:lang="en-US">Effect</value>
        </prop>
        <prop oor:name="Id" oor:type="xs:string">
          <value>GlowPropertyPanel</value>
          <value>EffectPropertyPanel</value>
        </prop>
        <prop oor:name="DeckId" oor:type="xs:string">
          <value>PropertyDeck</value>
@@ -608,33 +608,7 @@
          </value>
        </prop>
        <prop oor:name="ImplementationURL" oor:type="xs:string">
          <value>private:resource/toolpanel/SvxPanelFactory/GlowPropertyPanel</value>
        </prop>
        <prop oor:name="OrderIndex" oor:type="xs:int">
          <value>300</value>
        </prop>
      </node>

      <node oor:name="SoftEdgePropertyPanel" oor:op="replace">
        <prop oor:name="Title" oor:type="xs:string">
          <value xml:lang="en-US">Soft Edge</value>
        </prop>
        <prop oor:name="Id" oor:type="xs:string">
          <value>SoftEdgePropertyPanel</value>
        </prop>
        <prop oor:name="DeckId" oor:type="xs:string">
          <value>PropertyDeck</value>
        </prop>
        <prop oor:name="ContextList">
          <value oor:separator=";">
            Calc,           Draw,       hidden  ;
            DrawImpress,    Draw,       hidden  ;
            DrawImpress,    Graphic,    hidden  ;
            WriterVariants, Draw,       hidden  ;
          </value>
        </prop>
        <prop oor:name="ImplementationURL" oor:type="xs:string">
          <value>private:resource/toolpanel/SvxPanelFactory/SoftEdgePropertyPanel</value>
          <value>private:resource/toolpanel/SvxPanelFactory/EffectPropertyPanel</value>
        </prop>
        <prop oor:name="OrderIndex" oor:type="xs:int">
          <value>300</value>
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index 4243612..f7b9479 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -199,8 +199,7 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
    svx/source/sidebar/area/AreaPropertyPanel \
    svx/source/sidebar/area/AreaPropertyPanelBase \
    svx/source/sidebar/area/AreaTransparencyGradientPopup \
    svx/source/sidebar/glow/GlowPropertyPanel \
    svx/source/sidebar/softedge/SoftEdgePropertyPanel \
    svx/source/sidebar/effect/EffectPropertyPanel \
    svx/source/sidebar/shadow/ShadowPropertyPanel \
    svx/source/sidebar/graphic/GraphicPropertyPanel \
    svx/source/sidebar/line/LinePropertyPanel \
diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk
index a55e413..b8e18d7 100644
--- a/svx/UIConfig_svx.mk
+++ b/svx/UIConfig_svx.mk
@@ -123,9 +123,8 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\
	svx/uiconfig/ui/selectionmenu \
	svx/uiconfig/ui/sidebararea \
	svx/uiconfig/ui/sidebarempty \
	svx/uiconfig/ui/sidebarglow \
	svx/uiconfig/ui/sidebareffect \
	svx/uiconfig/ui/sidebarshadow \
	svx/uiconfig/ui/sidebarsoftedge \
	svx/uiconfig/ui/sidebargallery \
	svx/uiconfig/ui/sidebargraphic \
	svx/uiconfig/ui/sidebarline \
diff --git a/svx/source/sidebar/PanelFactory.cxx b/svx/source/sidebar/PanelFactory.cxx
index 8f5c4d8..1b93e20 100644
--- a/svx/source/sidebar/PanelFactory.cxx
+++ b/svx/source/sidebar/PanelFactory.cxx
@@ -24,9 +24,8 @@
#include "paragraph/ParaPropertyPanel.hxx"
#include "lists/ListsPropertyPanel.hxx"
#include "area/AreaPropertyPanel.hxx"
#include "glow/GlowPropertyPanel.hxx"
#include "shadow/ShadowPropertyPanel.hxx"
#include "softedge/SoftEdgePropertyPanel.hxx"
#include "effect/EffectPropertyPanel.hxx"
#include "graphic/GraphicPropertyPanel.hxx"
#include "line/LinePropertyPanel.hxx"
#include "possize/PosSizePropertyPanel.hxx"
@@ -141,17 +140,13 @@ Reference<ui::XUIElement> SAL_CALL PanelFactory::createUIElement (
    {
        pControl = AreaPropertyPanel::Create(pParentWindow, xFrame, pBindings);
    }
    else if (rsResourceURL.endsWith("/GlowPropertyPanel"))
    {
        pControl = GlowPropertyPanel::Create(pParentWindow, xFrame, pBindings);
    }
    else if (rsResourceURL.endsWith("/ShadowPropertyPanel"))
    {
        pControl = ShadowPropertyPanel::Create(pParentWindow, xFrame, pBindings);
    }
    else if (rsResourceURL.endsWith("/SoftEdgePropertyPanel"))
    else if (rsResourceURL.endsWith("/EffectPropertyPanel"))
    {
        pControl = SoftEdgePropertyPanel::Create(pParentWindow, xFrame, pBindings);
        pControl = EffectPropertyPanel::Create(pParentWindow, xFrame, pBindings);
    }
    else if (rsResourceURL.endsWith("/GraphicPropertyPanel"))
    {
diff --git a/svx/source/sidebar/effect/EffectPropertyPanel.cxx b/svx/source/sidebar/effect/EffectPropertyPanel.cxx
new file mode 100644
index 0000000..6e0ade4
--- /dev/null
+++ b/svx/source/sidebar/effect/EffectPropertyPanel.cxx
@@ -0,0 +1,189 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * 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/.
 */

#include <sal/config.h>

#include "EffectPropertyPanel.hxx"

#include <sfx2/dispatch.hxx>
#include <svx/colorbox.hxx>
#include <svx/sdmetitm.hxx>
#include <svx/sdooitm.hxx>
#include <svx/sdprcitm.hxx>
#include <svx/svddef.hxx>
#include <svx/svxids.hrc>
#include <svx/xcolit.hxx>
#include <rtl/math.hxx>

namespace svx::sidebar
{
EffectPropertyPanel::EffectPropertyPanel(vcl::Window* pParent,
                                         const css::uno::Reference<css::frame::XFrame>& rxFrame,
                                         SfxBindings* pBindings)
    : PanelLayout(pParent, "EffectPropertyPanel", "svx/ui/sidebareffect.ui", rxFrame)
    , maGlowColorController(SID_ATTR_GLOW_COLOR, *pBindings, *this)
    , maGlowRadiusController(SID_ATTR_GLOW_RADIUS, *pBindings, *this)
    , maGlowTransparencyController(SID_ATTR_GLOW_TRANSPARENCY, *pBindings, *this)
    , mxFTTransparency(m_xBuilder->weld_label("transparency"))
    , maSoftEdgeRadiusController(SID_ATTR_SOFTEDGE_RADIUS, *pBindings, *this)
    , mpBindings(pBindings)
    , mxGlowRadius(m_xBuilder->weld_metric_spin_button("LB_GLOW_RADIUS", FieldUnit::POINT))
    , mxLBGlowColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_GLOW_COLOR"), GetFrameWeld()))
    , mxGlowTransparency(
          m_xBuilder->weld_metric_spin_button("LB_GLOW_TRANSPARENCY", FieldUnit::PERCENT))
    , mxFTRadiusSoftEdge(m_xBuilder->weld_label("radiussoftedge"))
    , mxFTRadiusGlow(m_xBuilder->weld_label("radiusglow"))
    , mxFTColor(m_xBuilder->weld_label("color"))
    , mxSoftEdgeRadius(m_xBuilder->weld_metric_spin_button("SB_SOFTEDGE_RADIUS", FieldUnit::POINT))
{
    Initialize();
}

EffectPropertyPanel::~EffectPropertyPanel() { disposeOnce(); }

void EffectPropertyPanel::dispose()
{
    mxGlowRadius.reset();
    mxLBGlowColor.reset();
    mxGlowTransparency.reset();
    mxFTRadiusSoftEdge.reset();
    mxFTColor.reset();
    mxFTTransparency.reset();
    mxSoftEdgeRadius.reset();
    mxFTRadiusGlow.reset();

    PanelLayout::dispose();
    maGlowColorController.dispose();
    maGlowRadiusController.dispose();
    maGlowTransparencyController.dispose();
    maSoftEdgeRadiusController.dispose();
}

void EffectPropertyPanel::Initialize()
{
    mxGlowRadius->connect_value_changed(LINK(this, EffectPropertyPanel, ModifyGlowRadiusHdl));
    mxLBGlowColor->SetSelectHdl(LINK(this, EffectPropertyPanel, ModifyGlowColorHdl));
    mxGlowTransparency->connect_value_changed(
        LINK(this, EffectPropertyPanel, ModifyGlowTransparencyHdl));
    mxSoftEdgeRadius->connect_value_changed(
        LINK(this, EffectPropertyPanel, ModifySoftEdgeRadiusHdl));
}

IMPL_LINK_NOARG(EffectPropertyPanel, ModifySoftEdgeRadiusHdl, weld::MetricSpinButton&, void)
{
    SdrMetricItem aItem(SDRATTR_SOFTEDGE_RADIUS, mxSoftEdgeRadius->get_value(FieldUnit::MM_100TH));
    mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_SOFTEDGE_RADIUS, SfxCallMode::RECORD,
                                             { &aItem });
}

IMPL_LINK_NOARG(EffectPropertyPanel, ModifyGlowColorHdl, ColorListBox&, void)
{
    XColorItem aItem(SDRATTR_GLOW_COLOR, mxLBGlowColor->GetSelectEntryColor());
    mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_COLOR, SfxCallMode::RECORD, { &aItem });
}

IMPL_LINK_NOARG(EffectPropertyPanel, ModifyGlowRadiusHdl, weld::MetricSpinButton&, void)
{
    SdrMetricItem aItem(SDRATTR_GLOW_RADIUS, mxGlowRadius->get_value(FieldUnit::MM_100TH));
    mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_RADIUS, SfxCallMode::RECORD, { &aItem });
}

IMPL_LINK_NOARG(EffectPropertyPanel, ModifyGlowTransparencyHdl, weld::MetricSpinButton&, void)
{
    SdrPercentItem aItem(SDRATTR_GLOW_TRANSPARENCY,
                         mxGlowTransparency->get_value(FieldUnit::PERCENT));
    mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_TRANSPARENCY, SfxCallMode::RECORD,
                                             { &aItem });
}

void EffectPropertyPanel::UpdateControls()
{
    const bool bEnabled = mxGlowRadius->get_value(FieldUnit::MM_100TH) != 0;
    mxLBGlowColor->set_sensitive(bEnabled);
    mxGlowTransparency->set_sensitive(bEnabled);
    mxFTColor->set_sensitive(bEnabled);
    mxFTTransparency->set_sensitive(bEnabled);
}

void EffectPropertyPanel::NotifyItemUpdate(sal_uInt16 nSID, SfxItemState eState,
                                           const SfxPoolItem* pState)
{
    switch (nSID)
    {
        case SID_ATTR_SOFTEDGE_RADIUS:
        {
            if (eState >= SfxItemState::DEFAULT)
            {
                const SdrMetricItem* pRadiusItem = dynamic_cast<const SdrMetricItem*>(pState);
                if (pRadiusItem)
                {
                    mxSoftEdgeRadius->set_value(pRadiusItem->GetValue(), FieldUnit::MM_100TH);
                }
            }
        }
        break;
        case SID_ATTR_GLOW_COLOR:
        {
            if (eState >= SfxItemState::DEFAULT)
            {
                const XColorItem* pColorItem = dynamic_cast<const XColorItem*>(pState);
                if (pColorItem)
                {
                    mxLBGlowColor->SelectEntry(pColorItem->GetColorValue());
                }
            }
        }
        break;
        case SID_ATTR_GLOW_RADIUS:
        {
            if (eState >= SfxItemState::DEFAULT)
            {
                const SdrMetricItem* pRadiusItem = dynamic_cast<const SdrMetricItem*>(pState);
                if (pRadiusItem)
                {
                    mxGlowRadius->set_value(pRadiusItem->GetValue(), FieldUnit::MM_100TH);
                }
            }
        }
        break;
        case SID_ATTR_GLOW_TRANSPARENCY:
        {
            if (eState >= SfxItemState::DEFAULT)
            {
                if (auto pItem = dynamic_cast<const SdrPercentItem*>(pState))
                {
                    mxGlowTransparency->set_value(pItem->GetValue(), FieldUnit::PERCENT);
                }
            }
        }
        break;
    }
    UpdateControls();
}

VclPtr<vcl::Window>
EffectPropertyPanel::Create(vcl::Window* pParent,
                            const css::uno::Reference<css::frame::XFrame>& rxFrame,
                            SfxBindings* pBindings)
{
    if (pParent == nullptr)
        throw css::lang::IllegalArgumentException(
            "no parent Window given to EffectPropertyPanel::Create", nullptr, 0);
    if (!rxFrame.is())
        throw css::lang::IllegalArgumentException("no XFrame given to EffectPropertyPanel::Create",
                                                  nullptr, 1);
    if (pBindings == nullptr)
        throw css::lang::IllegalArgumentException(
            "no SfxBindings given to EffectPropertyPanel::Create", nullptr, 2);

    return VclPtr<EffectPropertyPanel>::Create(pParent, rxFrame, pBindings);
}
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/sidebar/glow/GlowPropertyPanel.hxx b/svx/source/sidebar/effect/EffectPropertyPanel.hxx
similarity index 69%
rename from svx/source/sidebar/glow/GlowPropertyPanel.hxx
rename to svx/source/sidebar/effect/EffectPropertyPanel.hxx
index aaffa44..771c642 100644
--- a/svx/source/sidebar/glow/GlowPropertyPanel.hxx
+++ b/svx/source/sidebar/effect/EffectPropertyPanel.hxx
@@ -6,8 +6,8 @@
 * 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/.
 */
#ifndef INCLUDED_SVX_SOURCE_SIDEBAR_GLOW_GLOWPROPERTYPANEL_HXX
#define INCLUDED_SVX_SOURCE_SIDEBAR_GLOW_GLOWPROPERTYPANEL_HXX
#ifndef INCLUDED_SVX_SOURCE_SIDEBAR_EFFECT_EFFECTPROPERTYPANEL_HXX
#define INCLUDED_SVX_SOURCE_SIDEBAR_EFFECT_EFFECTPROPERTYPANEL_HXX

#include <vcl/vclptr.hxx>
#include <sfx2/sidebar/ControllerItem.hxx>
@@ -17,13 +17,14 @@ class ColorListBox;

namespace svx::sidebar
{
class GlowPropertyPanel : public PanelLayout,
                          public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
class EffectPropertyPanel : public PanelLayout,
                            public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
{
public:
    GlowPropertyPanel(vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame,
                      SfxBindings* pBindings);
    virtual ~GlowPropertyPanel() override;
    EffectPropertyPanel(vcl::Window* pParent,
                        const css::uno::Reference<css::frame::XFrame>& rxFrame,
                        SfxBindings* pBindings);
    virtual ~EffectPropertyPanel() override;
    virtual void dispose() override;

    static VclPtr<vcl::Window> Create(vcl::Window* pParent,
@@ -40,15 +41,18 @@ private:
    sfx2::sidebar::ControllerItem maGlowColorController;
    sfx2::sidebar::ControllerItem maGlowRadiusController;
    sfx2::sidebar::ControllerItem maGlowTransparencyController;
    std::unique_ptr<weld::Label> mxFTTransparency;
    sfx2::sidebar::ControllerItem maSoftEdgeRadiusController;

    SfxBindings* mpBindings;

    std::unique_ptr<weld::MetricSpinButton> mxGlowRadius;
    std::unique_ptr<ColorListBox> mxLBGlowColor;
    std::unique_ptr<weld::MetricSpinButton> mxGlowTransparency;
    std::unique_ptr<weld::Label> mxFTRadius;
    std::unique_ptr<weld::Label> mxFTRadiusSoftEdge;
    std::unique_ptr<weld::Label> mxFTRadiusGlow;
    std::unique_ptr<weld::Label> mxFTColor;
    std::unique_ptr<weld::Label> mxFTTransparency;
    std::unique_ptr<weld::MetricSpinButton> mxSoftEdgeRadius;

    void Initialize();
    void UpdateControls();
@@ -56,6 +60,7 @@ private:
    DECL_LINK(ModifyGlowColorHdl, ColorListBox&, void);
    DECL_LINK(ModifyGlowRadiusHdl, weld::MetricSpinButton&, void);
    DECL_LINK(ModifyGlowTransparencyHdl, weld::MetricSpinButton&, void);
    DECL_LINK(ModifySoftEdgeRadiusHdl, weld::MetricSpinButton&, void);
};
}

diff --git a/svx/source/sidebar/glow/GlowPropertyPanel.cxx b/svx/source/sidebar/glow/GlowPropertyPanel.cxx
deleted file mode 100644
index acb63e0..0000000
--- a/svx/source/sidebar/glow/GlowPropertyPanel.cxx
+++ /dev/null
@@ -1,162 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * 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/.
 */

#include <sal/config.h>

#include "GlowPropertyPanel.hxx"

#include <sfx2/dispatch.hxx>
#include <svx/colorbox.hxx>
#include <svx/sdmetitm.hxx>
#include <svx/sdooitm.hxx>
#include <svx/sdprcitm.hxx>
#include <svx/svddef.hxx>
#include <svx/svxids.hrc>
#include <svx/xcolit.hxx>
#include <rtl/math.hxx>

namespace svx::sidebar
{
GlowPropertyPanel::GlowPropertyPanel(vcl::Window* pParent,
                                     const css::uno::Reference<css::frame::XFrame>& rxFrame,
                                     SfxBindings* pBindings)
    : PanelLayout(pParent, "GlowPropertyPanel", "svx/ui/sidebarglow.ui", rxFrame)
    , maGlowColorController(SID_ATTR_GLOW_COLOR, *pBindings, *this)
    , maGlowRadiusController(SID_ATTR_GLOW_RADIUS, *pBindings, *this)
    , maGlowTransparencyController(SID_ATTR_GLOW_TRANSPARENCY, *pBindings, *this)
    , mpBindings(pBindings)
    , mxGlowRadius(m_xBuilder->weld_metric_spin_button("LB_GLOW_RADIUS", FieldUnit::POINT))
    , mxLBGlowColor(new ColorListBox(m_xBuilder->weld_menu_button("LB_GLOW_COLOR"), GetFrameWeld()))
    , mxGlowTransparency(
          m_xBuilder->weld_metric_spin_button("LB_GLOW_TRANSPARENCY", FieldUnit::PERCENT))
    , mxFTRadius(m_xBuilder->weld_label("radius"))
    , mxFTColor(m_xBuilder->weld_label("color"))
    , mxFTTransparency(m_xBuilder->weld_label("transparency"))
{
    Initialize();
}

GlowPropertyPanel::~GlowPropertyPanel() { disposeOnce(); }

void GlowPropertyPanel::dispose()
{
    mxFTRadius.reset();
    mxGlowRadius.reset();
    mxFTColor.reset();
    mxLBGlowColor.reset();
    mxFTTransparency.reset();
    mxGlowTransparency.reset();

    maGlowColorController.dispose();
    maGlowRadiusController.dispose();
    maGlowTransparencyController.dispose();
    PanelLayout::dispose();
}

void GlowPropertyPanel::Initialize()
{
    mxLBGlowColor->SetSelectHdl(LINK(this, GlowPropertyPanel, ModifyGlowColorHdl));
    mxGlowRadius->connect_value_changed(LINK(this, GlowPropertyPanel, ModifyGlowRadiusHdl));
    mxGlowTransparency->connect_value_changed(
        LINK(this, GlowPropertyPanel, ModifyGlowTransparencyHdl));
}

IMPL_LINK_NOARG(GlowPropertyPanel, ModifyGlowColorHdl, ColorListBox&, void)
{
    XColorItem aItem(SDRATTR_GLOW_COLOR, mxLBGlowColor->GetSelectEntryColor());
    mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_COLOR, SfxCallMode::RECORD, { &aItem });
}

IMPL_LINK_NOARG(GlowPropertyPanel, ModifyGlowRadiusHdl, weld::MetricSpinButton&, void)
{
    SdrMetricItem aItem(SDRATTR_GLOW_RADIUS, mxGlowRadius->get_value(FieldUnit::MM_100TH));
    mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_RADIUS, SfxCallMode::RECORD, { &aItem });
}

IMPL_LINK_NOARG(GlowPropertyPanel, ModifyGlowTransparencyHdl, weld::MetricSpinButton&, void)
{
    SdrPercentItem aItem(SDRATTR_GLOW_TRANSPARENCY,
                         mxGlowTransparency->get_value(FieldUnit::PERCENT));
    mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_TRANSPARENCY, SfxCallMode::RECORD,
                                             { &aItem });
}

void GlowPropertyPanel::UpdateControls()
{
    const bool bEnabled = mxGlowRadius->get_value(FieldUnit::MM_100TH) != 0;
    mxLBGlowColor->set_sensitive(bEnabled);
    mxGlowTransparency->set_sensitive(bEnabled);
    mxFTColor->set_sensitive(bEnabled);
    mxFTTransparency->set_sensitive(bEnabled);
}

void GlowPropertyPanel::NotifyItemUpdate(sal_uInt16 nSID, SfxItemState eState,
                                         const SfxPoolItem* pState)
{
    switch (nSID)
    {
        case SID_ATTR_GLOW_COLOR:
        {
            if (eState >= SfxItemState::DEFAULT)
            {
                const XColorItem* pColorItem = dynamic_cast<const XColorItem*>(pState);
                if (pColorItem)
                {
                    mxLBGlowColor->SelectEntry(pColorItem->GetColorValue());
                }
            }
        }
        break;
        case SID_ATTR_GLOW_RADIUS:
        {
            if (eState >= SfxItemState::DEFAULT)
            {
                const SdrMetricItem* pRadiusItem = dynamic_cast<const SdrMetricItem*>(pState);
                if (pRadiusItem)
                {
                    mxGlowRadius->set_value(pRadiusItem->GetValue(), FieldUnit::MM_100TH);
                }
            }
        }
        break;
        case SID_ATTR_GLOW_TRANSPARENCY:
        {
            if (eState >= SfxItemState::DEFAULT)
            {
                if (auto pItem = dynamic_cast<const SdrPercentItem*>(pState))
                {
                    mxGlowTransparency->set_value(pItem->GetValue(), FieldUnit::PERCENT);
                }
            }
        }
        break;
    }
    UpdateControls();
}

VclPtr<vcl::Window>
GlowPropertyPanel::Create(vcl::Window* pParent,
                          const css::uno::Reference<css::frame::XFrame>& rxFrame,
                          SfxBindings* pBindings)
{
    if (pParent == nullptr)
        throw css::lang::IllegalArgumentException(
            "no parent Window given to GlowPropertyPanel::Create", nullptr, 0);
    if (!rxFrame.is())
        throw css::lang::IllegalArgumentException("no XFrame given to GlowPropertyPanel::Create",
                                                  nullptr, 1);
    if (pBindings == nullptr)
        throw css::lang::IllegalArgumentException(
            "no SfxBindings given to GlowPropertyPanel::Create", nullptr, 2);

    return VclPtr<GlowPropertyPanel>::Create(pParent, rxFrame, pBindings);
}
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/sidebar/softedge/SoftEdgePropertyPanel.cxx b/svx/source/sidebar/softedge/SoftEdgePropertyPanel.cxx
deleted file mode 100644
index 3551149..0000000
--- a/svx/source/sidebar/softedge/SoftEdgePropertyPanel.cxx
+++ /dev/null
@@ -1,96 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * 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/.
 */

#include <sal/config.h>

#include "SoftEdgePropertyPanel.hxx"

#include <sfx2/dispatch.hxx>
#include <svx/sdmetitm.hxx>
#include <svx/svddef.hxx>
#include <svx/svxids.hrc>
#include <svx/xcolit.hxx>

namespace svx::sidebar
{
SoftEdgePropertyPanel::SoftEdgePropertyPanel(vcl::Window* pParent,
                                             const css::uno::Reference<css::frame::XFrame>& rxFrame,
                                             SfxBindings* pBindings)
    : PanelLayout(pParent, "SoftEdgePropertyPanel", "svx/ui/sidebarsoftedge.ui", rxFrame)
    , maSoftEdgeRadiusController(SID_ATTR_SOFTEDGE_RADIUS, *pBindings, *this)
    , mpBindings(pBindings)
    , mxSoftEdgeRadius(m_xBuilder->weld_metric_spin_button("SB_SOFTEDGE_RADIUS", FieldUnit::POINT))
    , mxFTRadius(m_xBuilder->weld_label("radius"))
{
    Initialize();
}

SoftEdgePropertyPanel::~SoftEdgePropertyPanel() { disposeOnce(); }

void SoftEdgePropertyPanel::dispose()
{
    mxFTRadius.reset();
    mxSoftEdgeRadius.reset();
    maSoftEdgeRadiusController.dispose();
    PanelLayout::dispose();
}

void SoftEdgePropertyPanel::Initialize()
{
    mxSoftEdgeRadius->connect_value_changed(
        LINK(this, SoftEdgePropertyPanel, ModifySoftEdgeRadiusHdl));
}

IMPL_LINK_NOARG(SoftEdgePropertyPanel, ModifySoftEdgeRadiusHdl, weld::MetricSpinButton&, void)
{
    SdrMetricItem aItem(SDRATTR_SOFTEDGE_RADIUS, mxSoftEdgeRadius->get_value(FieldUnit::MM_100TH));
    mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_SOFTEDGE_RADIUS, SfxCallMode::RECORD,
                                             { &aItem });
}

void SoftEdgePropertyPanel::NotifyItemUpdate(sal_uInt16 nSID, SfxItemState eState,
                                             const SfxPoolItem* pState)
{
    switch (nSID)
    {
        case SID_ATTR_SOFTEDGE_RADIUS:
        {
            if (eState >= SfxItemState::DEFAULT)
            {
                const SdrMetricItem* pRadiusItem = dynamic_cast<const SdrMetricItem*>(pState);
                if (pRadiusItem)
                {
                    mxSoftEdgeRadius->set_value(pRadiusItem->GetValue(), FieldUnit::MM_100TH);
                }
            }
        }
        break;
    }
}

VclPtr<vcl::Window>
SoftEdgePropertyPanel::Create(vcl::Window* pParent,
                              const css::uno::Reference<css::frame::XFrame>& rxFrame,
                              SfxBindings* pBindings)
{
    if (pParent == nullptr)
        throw css::lang::IllegalArgumentException(
            "no parent Window given to SoftEdgePropertyPanel::Create", nullptr, 0);
    if (!rxFrame.is())
        throw css::lang::IllegalArgumentException(
            "no XFrame given to SoftEdgePropertyPanel::Create", nullptr, 1);
    if (pBindings == nullptr)
        throw css::lang::IllegalArgumentException(
            "no SfxBindings given to SoftEdgePropertyPanel::Create", nullptr, 2);

    return VclPtr<SoftEdgePropertyPanel>::Create(pParent, rxFrame, pBindings);
}
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/sidebar/softedge/SoftEdgePropertyPanel.hxx b/svx/source/sidebar/softedge/SoftEdgePropertyPanel.hxx
deleted file mode 100644
index c7f3b69..0000000
--- a/svx/source/sidebar/softedge/SoftEdgePropertyPanel.hxx
+++ /dev/null
@@ -1,56 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * 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/.
 */
#ifndef INCLUDED_SVX_SOURCE_SIDEBAR_SOFTEDGE_SOFTEDGEPROPERTYPANEL_HXX
#define INCLUDED_SVX_SOURCE_SIDEBAR_SOFTEDGE_SOFTEDGEPROPERTYPANEL_HXX

#include <vcl/vclptr.hxx>
#include <sfx2/sidebar/ControllerItem.hxx>
#include <sfx2/sidebar/PanelLayout.hxx>

class ColorListBox;

namespace svx::sidebar
{
class SoftEdgePropertyPanel : public PanelLayout,
                              public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
{
public:
    SoftEdgePropertyPanel(vcl::Window* pParent,
                          const css::uno::Reference<css::frame::XFrame>& rxFrame,
                          SfxBindings* pBindings);
    virtual ~SoftEdgePropertyPanel() override;
    virtual void dispose() override;

    static VclPtr<vcl::Window> Create(vcl::Window* pParent,
                                      const css::uno::Reference<css::frame::XFrame>& rxFrame,
                                      SfxBindings* pBindings);

    virtual void NotifyItemUpdate(const sal_uInt16 nSId, const SfxItemState eState,
                                  const SfxPoolItem* pState) override;

    virtual void GetControlState(const sal_uInt16 /*nSId*/,
                                 boost::property_tree::ptree& /*rState*/) override{};

private:
    sfx2::sidebar::ControllerItem maSoftEdgeRadiusController;

    SfxBindings* mpBindings;

    std::unique_ptr<weld::MetricSpinButton> mxSoftEdgeRadius;
    std::unique_ptr<weld::Label> mxFTRadius;

    void Initialize();

    DECL_LINK(ModifySoftEdgeRadiusHdl, weld::MetricSpinButton&, void);
};
}

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/uiconfig/ui/sidebareffect.ui b/svx/uiconfig/ui/sidebareffect.ui
new file mode 100644
index 0000000..b779536
--- /dev/null
+++ b/svx/uiconfig/ui/sidebareffect.ui
@@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface domain="svx">
  <requires lib="gtk+" version="3.18"/>
  <object class="GtkAdjustment" id="adjustment1">
    <property name="upper">150</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
  </object>
  <object class="GtkAdjustment" id="adjustment2">
    <property name="upper">100</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
  </object>
  <object class="GtkGrid" id="GlowPropertyPanel">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <child>
      <object class="GtkGrid" id="grid3">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="hexpand">True</property>
        <property name="border_width">6</property>
        <child>
          <object class="GtkBox" id="box2">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="hexpand">True</property>
            <property name="orientation">vertical</property>
            <property name="spacing">12</property>
            <child>
              <object class="GtkFrame" id="glowframe">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="label_xalign">0</property>
                <property name="shadow_type">none</property>
                <child>
                  <object class="GtkAlignment">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="top_padding">12</property>
                    <child>
                      <object class="GtkGrid" id="grid1">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="orientation">vertical</property>
                        <property name="row_spacing">3</property>
                        <property name="column_spacing">6</property>
                        <child>
                          <object class="GtkLabel" id="radiusglow">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="label" translatable="yes" context="sidebarglow|radius">Radius:</property>
                            <property name="use_underline">True</property>
                            <property name="mnemonic_widget">LB_GLOW_RADIUS</property>
                            <property name="xalign">0</property>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
                            <property name="top_attach">0</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkSpinButton" id="LB_GLOW_RADIUS">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="hexpand">True</property>
                            <property name="adjustment">adjustment1</property>
                          </object>
                          <packing>
                            <property name="left_attach">1</property>
                            <property name="top_attach">0</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkLabel" id="color">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="label" translatable="yes" context="sidebarglow|color">Color:</property>
                            <property name="use_underline">True</property>
                            <property name="mnemonic_widget">LB_GLOW_COLOR</property>
                            <property name="xalign">0</property>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
                            <property name="top_attach">1</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkMenuButton" id="LB_GLOW_COLOR">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="receives_default">False</property>
                            <property name="valign">center</property>
                            <property name="xalign">0</property>
                            <property name="draw_indicator">True</property>
                            <property name="label" translatable="no"></property>
                            <child>
                              <placeholder/>
                            </child>
                          </object>
                          <packing>
                            <property name="left_attach">1</property>
                            <property name="top_attach">1</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkLabel" id="transparency">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="label" translatable="yes" context="sidebarglow|transparency">Transparency:</property>
                            <property name="use_underline">True</property>
                            <property name="mnemonic_widget">LB_GLOW_TRANSPARENCY</property>
                            <property name="xalign">0</property>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
                            <property name="top_attach">2</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkSpinButton" id="LB_GLOW_TRANSPARENCY">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="hexpand">True</property>
                            <property name="adjustment">adjustment2</property>
                          </object>
                          <packing>
                            <property name="left_attach">1</property>
                            <property name="top_attach">2</property>
                          </packing>
                        </child>
                      </object>
                    </child>
                  </object>
                </child>
                <child type="label">
                  <object class="GtkLabel">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="label" translatable="yes" context="sidebarglow|glow">Glow</property>
                    <attributes>
                      <attribute name="weight" value="bold"/>
                    </attributes>
                  </object>
                </child>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkFrame" id="softedgeframe">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="label_xalign">0</property>
                <property name="shadow_type">none</property>
                <child>
                  <object class="GtkAlignment">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="top_padding">12</property>
                    <child>
                      <object class="GtkGrid" id="grid2">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="orientation">vertical</property>
                        <property name="row_spacing">6</property>
                        <property name="column_spacing">6</property>
                        <child>
                          <object class="GtkLabel" id="radiussoftedge">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="label" translatable="yes" context="sidebarsoftedge|radius">Radius:</property>
                            <property name="use_underline">True</property>
                            <property name="mnemonic_widget">SB_SOFTEDGE_RADIUS</property>
                            <property name="xalign">0</property>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
                            <property name="top_attach">0</property>
                          </packing>
                        </child>
                        <child>
                          <object class="GtkSpinButton" id="SB_SOFTEDGE_RADIUS">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="hexpand">True</property>
                            <property name="adjustment">adjustment1</property>
                          </object>
                          <packing>
                            <property name="left_attach">1</property>
                            <property name="top_attach">0</property>
                          </packing>
                        </child>
                      </object>
                    </child>
                  </object>
                </child>
                <child type="label">
                  <object class="GtkLabel">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="label" translatable="yes" context="sidebarsoftedge|softedge">Soft Edge</property>
                    <attributes>
                      <attribute name="weight" value="bold"/>
                    </attributes>
                  </object>
                </child>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">1</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="left_attach">0</property>
            <property name="top_attach">0</property>
          </packing>
        </child>
      </object>
      <packing>
        <property name="left_attach">0</property>
        <property name="top_attach">0</property>
      </packing>
    </child>
  </object>
  <object class="GtkSizeGroup" id="sizegroupLabel">
    <widgets>
      <widget name="radiusglow"/>
      <widget name="color"/>
      <widget name="transparency"/>
      <widget name="radiussoftedge"/>
    </widgets>
  </object>
</interface>
diff --git a/svx/uiconfig/ui/sidebarglow.ui b/svx/uiconfig/ui/sidebarglow.ui
deleted file mode 100644
index 302d8b3..0000000
--- a/svx/uiconfig/ui/sidebarglow.ui
+++ /dev/null
@@ -1,141 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface domain="svx">
  <requires lib="gtk+" version="3.18"/>
  <object class="GtkAdjustment" id="adjustment1">
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="upper">150</property>
  </object>
  <object class="GtkAdjustment" id="adjustment2">
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="upper">100</property>
  </object>
  <object class="GtkGrid" id="GlowPropertyPanel">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <child>
      <object class="GtkGrid" id="grid3">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="hexpand">True</property>
        <property name="border_width">6</property>
        <child>
          <object class="GtkBox" id="box2">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="hexpand">True</property>
            <property name="orientation">vertical</property>
            <child>
              <object class="GtkGrid" id="grid1">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="orientation">vertical</property>
                <property name="row_spacing">3</property>
                <property name="column_spacing">6</property>
                <child>
                  <object class="GtkLabel" id="radius">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="label" translatable="yes" context="sidebarglow|radius">Radius:</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">LB_GLOW_RADIUS</property>
                    <property name="xalign">0</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="LB_GLOW_RADIUS">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="hexpand">True</property>
                    <property name="adjustment">adjustment1</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="color">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="label" translatable="yes" context="sidebarglow|color">Color:</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">LB_GLOW_COLOR</property>
                    <property name="xalign">0</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkMenuButton" id="LB_GLOW_COLOR">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">False</property>
                    <property name="valign">center</property>
                    <property name="xalign">0</property>
                    <property name="draw_indicator">True</property>
                    <property name="label" translatable="no"></property>
                    <child>
                      <placeholder/>
                    </child>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="transparency">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="label" translatable="yes" context="sidebarglow|transparency">Transparency:</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">LB_GLOW_TRANSPARENCY</property>
                    <property name="xalign">0</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="LB_GLOW_TRANSPARENCY">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="hexpand">True</property>
                    <property name="adjustment">adjustment2</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">2</property>
                  </packing>
                </child>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="left_attach">0</property>
            <property name="top_attach">0</property>
          </packing>
        </child>
      </object>
      <packing>
        <property name="left_attach">0</property>
        <property name="top_attach">0</property>
      </packing>
    </child>
  </object>
</interface>
diff --git a/svx/uiconfig/ui/sidebarsoftedge.ui b/svx/uiconfig/ui/sidebarsoftedge.ui
deleted file mode 100644
index 8130b06..0000000
--- a/svx/uiconfig/ui/sidebarsoftedge.ui
+++ /dev/null
@@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface domain="svx">
  <requires lib="gtk+" version="3.18"/>
  <object class="GtkAdjustment" id="adjustment1">
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="upper">100</property>
  </object>
  <object class="GtkGrid" id="SoftEdgePropertyPanel">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <child>
      <object class="GtkGrid" id="grid3">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="hexpand">True</property>
        <property name="vexpand">True</property>
        <property name="border_width">6</property>
        <child>
          <object class="GtkBox" id="box2">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="hexpand">True</property>
            <property name="orientation">vertical</property>
            <property name="spacing">6</property>
            <child>
              <object class="GtkGrid" id="grid1">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="orientation">vertical</property>
                <property name="row_spacing">6</property>
                <property name="column_spacing">6</property>
                <child>
                  <object class="GtkLabel" id="radius">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="label" translatable="yes" context="sidebarsoftedge|radius">Radius:</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">SB_SOFTEDGE_RADIUS</property>
                    <property name="xalign">0</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="SB_SOFTEDGE_RADIUS">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="hexpand">True</property>
                    <property name="adjustment">adjustment1</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">0</property>
                  </packing>
                </child>
                <child>
                  <placeholder/>
                </child>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="left_attach">0</property>
            <property name="top_attach">0</property>
          </packing>
        </child>
      </object>
      <packing>
        <property name="left_attach">0</property>
        <property name="top_attach">0</property>
      </packing>
    </child>
  </object>
</interface>