summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-06-12 11:22:15 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-06-12 17:46:27 +0200
commitf8480defc137d0eb9f9cd20294909546c2cfc598 (patch)
tree0211fbac81c7fea32477e243bebc4238c2214b3c
parent5f42787232a5a2ece35d4c018df8a9b7c856919f (diff)
weld SvxTransparenceTabPage
Change-Id: If8c8a6cf74664f9acd360d877c57e8dd9de2f2b5 Reviewed-on: https://gerrit.libreoffice.org/55694 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--cui/source/inc/cuitabarea.hxx65
-rw-r--r--cui/source/tabpages/tptrans.cxx352
-rw-r--r--cui/uiconfig/ui/transparencytabpage.ui162
-rw-r--r--include/svx/dlgctrl.hxx51
-rw-r--r--include/vcl/customweld.hxx1
-rw-r--r--svx/source/dialog/dlgctrl.cxx149
6 files changed, 511 insertions, 269 deletions
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index da368bf460e0..7a72431bb9a5 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -146,42 +146,48 @@ class SvxTransparenceTabPage : public SvxTabPage
PageType nPageType;
sal_uInt16 nDlgType;
+ bool bBitmap;
+
+ XFillAttrSetItem aXFillAttr;
+ SfxItemSet& rXFSet;
+
+ XRectPreview m_aCtlBitmapPreview;
+ XRectPreview m_aCtlXRectPreview;
+
// main selection
- VclPtr<RadioButton> m_pRbtTransOff;
- VclPtr<RadioButton> m_pRbtTransLinear;
- VclPtr<RadioButton> m_pRbtTransGradient;
+ std::unique_ptr<weld::RadioButton> m_xRbtTransOff;
+ std::unique_ptr<weld::RadioButton> m_xRbtTransLinear;
+ std::unique_ptr<weld::RadioButton> m_xRbtTransGradient;
/// linear transparency
- VclPtr<MetricField> m_pMtrTransparent;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrTransparent;
// gradient transparency
- VclPtr<VclGrid> m_pGridGradient;
- VclPtr<ListBox> m_pLbTrgrGradientType;
- VclPtr<FixedText> m_pFtTrgrCenterX;
- VclPtr<MetricField> m_pMtrTrgrCenterX;
- VclPtr<FixedText> m_pFtTrgrCenterY;
- VclPtr<MetricField> m_pMtrTrgrCenterY;
- VclPtr<FixedText> m_pFtTrgrAngle;
- VclPtr<MetricField> m_pMtrTrgrAngle;
- VclPtr<MetricField> m_pMtrTrgrBorder;
- VclPtr<MetricField> m_pMtrTrgrStartValue;
- VclPtr<MetricField> m_pMtrTrgrEndValue;
+ std::unique_ptr<weld::Widget> m_xGridGradient;
+ std::unique_ptr<weld::ComboBoxText> m_xLbTrgrGradientType;
+ std::unique_ptr<weld::Label> m_xFtTrgrCenterX;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrTrgrCenterX;
+ std::unique_ptr<weld::Label> m_xFtTrgrCenterY;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrTrgrCenterY;
+ std::unique_ptr<weld::Label> m_xFtTrgrAngle;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrTrgrAngle;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrTrgrBorder;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrTrgrStartValue;
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrTrgrEndValue;
+ std::unique_ptr<weld::Widget> m_xCtlBitmapBorder;
+ std::unique_ptr<weld::Widget> m_xCtlXRectBorder;
// preview
- VclPtr<SvxXRectPreview> m_pCtlBitmapPreview;
- VclPtr<SvxXRectPreview> m_pCtlXRectPreview;
- bool bBitmap;
-
- XFillAttrSetItem aXFillAttr;
- SfxItemSet& rXFSet;
+ std::unique_ptr<weld::CustomWeld> m_xCtlBitmapPreview;
+ std::unique_ptr<weld::CustomWeld> m_xCtlXRectPreview;
- DECL_LINK(ClickTransOffHdl_Impl, Button*, void );
- DECL_LINK(ClickTransLinearHdl_Impl, Button*, void );
- DECL_LINK(ClickTransGradientHdl_Impl, Button*, void );
- DECL_LINK(ModifyTransparentHdl_Impl, Edit&, void);
- DECL_LINK(ModifiedTrgrEditHdl_Impl, Edit&, void);
- DECL_LINK(ModifiedTrgrListBoxHdl_Impl, ListBox&, void);
- void ModifiedTrgrHdl_Impl(void const *);
+ DECL_LINK(ClickTransOffHdl_Impl, weld::ToggleButton&, void);
+ DECL_LINK(ClickTransLinearHdl_Impl, weld::ToggleButton&, void);
+ DECL_LINK(ClickTransGradientHdl_Impl, weld::ToggleButton&, void );
+ DECL_LINK(ModifyTransparentHdl_Impl, weld::MetricSpinButton&, void);
+ DECL_LINK(ModifiedTrgrEditHdl_Impl, weld::MetricSpinButton&, void);
+ DECL_LINK(ModifiedTrgrListBoxHdl_Impl, weld::ComboBoxText&, void);
+ void ModifiedTrgrHdl_Impl(const weld::ComboBoxText*);
void ActivateLinear(bool bActivate);
void ActivateGradient(bool bActivate);
@@ -191,9 +197,8 @@ class SvxTransparenceTabPage : public SvxTabPage
void InvalidatePreview (bool bEnable = true );
public:
- SvxTransparenceTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs);
+ SvxTransparenceTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs);
virtual ~SvxTransparenceTabPage() override;
- virtual void dispose() override;
static VclPtr<SfxTabPage> Create(TabPageParent, const SfxItemSet*);
static const sal_uInt16* GetRanges() { return pTransparenceRanges; }
diff --git a/cui/source/tabpages/tptrans.cxx b/cui/source/tabpages/tptrans.cxx
index 1f6fc20da7dd..f75416c0c94b 100644
--- a/cui/source/tabpages/tptrans.cxx
+++ b/cui/source/tabpages/tptrans.cxx
@@ -59,22 +59,22 @@ const sal_uInt16 SvxTransparenceTabPage::pTransparenceRanges[] =
|*
\************************************************************************/
-IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransOffHdl_Impl, Button*, void)
+IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransOffHdl_Impl, weld::ToggleButton&, void)
{
// disable all other controls
ActivateLinear(false);
ActivateGradient(false);
// Preview
- rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
- rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
- m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
- m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
+ rXFSet.ClearItem(XATTR_FILLTRANSPARENCE);
+ rXFSet.ClearItem(XATTR_FILLFLOATTRANSPARENCE);
+ m_aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
+ m_aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
- InvalidatePreview( false );
+ InvalidatePreview(false);
}
-IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransLinearHdl_Impl, Button*, void)
+IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransLinearHdl_Impl, weld::ToggleButton&, void)
{
// enable linear, disable other
ActivateLinear(true);
@@ -82,10 +82,10 @@ IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransLinearHdl_Impl, Button*, void)
// preview
rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
- ModifyTransparentHdl_Impl (*m_pMtrTransparent);
+ ModifyTransparentHdl_Impl(*m_xMtrTransparent);
}
-IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransGradientHdl_Impl, Button*, void)
+IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransGradientHdl_Impl, weld::ToggleButton&, void)
{
// enable gradient, disable other
ActivateLinear(false);
@@ -93,79 +93,56 @@ IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransGradientHdl_Impl, Button*, voi
// preview
rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
- ModifiedTrgrHdl_Impl (nullptr);
+ ModifiedTrgrHdl_Impl(nullptr);
}
SvxTransparenceTabPage::~SvxTransparenceTabPage()
{
- disposeOnce();
-}
-
-void SvxTransparenceTabPage::dispose()
-{
- m_pRbtTransOff.clear();
- m_pRbtTransLinear.clear();
- m_pRbtTransGradient.clear();
- m_pMtrTransparent.clear();
- m_pGridGradient.clear();
- m_pLbTrgrGradientType.clear();
- m_pFtTrgrCenterX.clear();
- m_pMtrTrgrCenterX.clear();
- m_pFtTrgrCenterY.clear();
- m_pMtrTrgrCenterY.clear();
- m_pFtTrgrAngle.clear();
- m_pMtrTrgrAngle.clear();
- m_pMtrTrgrBorder.clear();
- m_pMtrTrgrStartValue.clear();
- m_pMtrTrgrEndValue.clear();
- m_pCtlBitmapPreview.clear();
- m_pCtlXRectPreview.clear();
- SvxTabPage::dispose();
}
void SvxTransparenceTabPage::ActivateLinear(bool bActivate)
{
- m_pMtrTransparent->Enable(bActivate);
+ m_xMtrTransparent->set_sensitive(bActivate);
}
-IMPL_LINK_NOARG(SvxTransparenceTabPage, ModifyTransparentHdl_Impl, Edit&, void)
+IMPL_LINK_NOARG(SvxTransparenceTabPage, ModifyTransparentHdl_Impl, weld::MetricSpinButton&, void)
{
- sal_uInt16 nPos = static_cast<sal_uInt16>(m_pMtrTransparent->GetValue());
+ sal_uInt16 nPos = m_xMtrTransparent->get_value(FUNIT_PERCENT);
rXFSet.Put(XFillTransparenceItem(nPos));
// preview
InvalidatePreview();
}
-IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl, ListBox&, rListBox, void)
+IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl, weld::ComboBoxText&, rListBox, void)
{
ModifiedTrgrHdl_Impl(&rListBox);
}
-IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl, Edit&, rBox, void)
+IMPL_LINK_NOARG(SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl, weld::MetricSpinButton&, void)
{
- ModifiedTrgrHdl_Impl(&rBox);
+ ModifiedTrgrHdl_Impl(nullptr);
}
-void SvxTransparenceTabPage::ModifiedTrgrHdl_Impl(void const * pControl)
+void SvxTransparenceTabPage::ModifiedTrgrHdl_Impl(const weld::ComboBoxText* pControl)
{
- if(pControl == m_pLbTrgrGradientType || pControl == this)
+ if (pControl == m_xLbTrgrGradientType.get())
{
- css::awt::GradientStyle eXGS = static_cast<css::awt::GradientStyle>(m_pLbTrgrGradientType->GetSelectedEntryPos());
+ css::awt::GradientStyle eXGS = static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active());
SetControlState_Impl( eXGS );
}
// preview
- sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(m_pMtrTrgrStartValue->GetValue()) * 255) / 100);
- sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(m_pMtrTrgrEndValue->GetValue()) * 255) / 100);
+ sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(m_xMtrTrgrStartValue->get_value(FUNIT_PERCENT)) * 255) / 100);
+ sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(m_xMtrTrgrEndValue->get_value(FUNIT_PERCENT)) * 255) / 100);
XGradient aTmpGradient(
Color(nStartCol, nStartCol, nStartCol),
Color(nEndCol, nEndCol, nEndCol),
- static_cast<css::awt::GradientStyle>(m_pLbTrgrGradientType->GetSelectedEntryPos()),
- static_cast<sal_uInt16>(m_pMtrTrgrAngle->GetValue()) * 10,
- static_cast<sal_uInt16>(m_pMtrTrgrCenterX->GetValue()),
- static_cast<sal_uInt16>(m_pMtrTrgrCenterY->GetValue()),
- static_cast<sal_uInt16>(m_pMtrTrgrBorder->GetValue()),
+ static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active()),
+ static_cast<sal_uInt16>(m_xMtrTrgrAngle->get_value(FUNIT_DEGREE)) * 10,
+ static_cast<sal_uInt16>(m_xMtrTrgrCenterX->get_value(FUNIT_PERCENT)),
+ static_cast<sal_uInt16>(m_xMtrTrgrCenterY->get_value(FUNIT_PERCENT)),
+ static_cast<sal_uInt16>(m_xMtrTrgrBorder->get_value(FUNIT_PERCENT)),
100, 100);
XFillFloatTransparenceItem aItem( aTmpGradient);
@@ -176,11 +153,11 @@ void SvxTransparenceTabPage::ModifiedTrgrHdl_Impl(void const * pControl)
void SvxTransparenceTabPage::ActivateGradient(bool bActivate)
{
- m_pGridGradient->Enable(bActivate);
+ m_xGridGradient->set_sensitive(bActivate);
- if(bActivate)
+ if (bActivate)
{
- css::awt::GradientStyle eXGS = static_cast<css::awt::GradientStyle>(m_pLbTrgrGradientType->GetSelectedEntryPos());
+ css::awt::GradientStyle eXGS = static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active());
SetControlState_Impl( eXGS );
}
}
@@ -191,107 +168,102 @@ void SvxTransparenceTabPage::SetControlState_Impl(css::awt::GradientStyle eXGS)
{
case css::awt::GradientStyle_LINEAR:
case css::awt::GradientStyle_AXIAL:
- m_pFtTrgrCenterX->Disable();
- m_pMtrTrgrCenterX->Disable();
- m_pFtTrgrCenterY->Disable();
- m_pMtrTrgrCenterY->Disable();
- m_pFtTrgrAngle->Enable();
- m_pMtrTrgrAngle->Enable();
+ m_xFtTrgrCenterX->set_sensitive(false);
+ m_xMtrTrgrCenterX->set_sensitive(false);
+ m_xFtTrgrCenterY->set_sensitive(false);
+ m_xMtrTrgrCenterY->set_sensitive(false);
+ m_xFtTrgrAngle->set_sensitive(true);
+ m_xMtrTrgrAngle->set_sensitive(true);
break;
case css::awt::GradientStyle_RADIAL:
- m_pFtTrgrCenterX->Enable();
- m_pMtrTrgrCenterX->Enable();
- m_pFtTrgrCenterY->Enable();
- m_pMtrTrgrCenterY->Enable();
- m_pFtTrgrAngle->Disable();
- m_pMtrTrgrAngle->Disable();
+ m_xFtTrgrCenterX->set_sensitive(true);
+ m_xMtrTrgrCenterX->set_sensitive(true);
+ m_xFtTrgrCenterY->set_sensitive(true);
+ m_xMtrTrgrCenterY->set_sensitive(true);
+ m_xFtTrgrAngle->set_sensitive(false);
+ m_xMtrTrgrAngle->set_sensitive(false);
break;
case css::awt::GradientStyle_ELLIPTICAL:
- m_pFtTrgrCenterX->Enable();
- m_pMtrTrgrCenterX->Enable();
- m_pFtTrgrCenterY->Enable();
- m_pMtrTrgrCenterY->Enable();
- m_pFtTrgrAngle->Enable();
- m_pMtrTrgrAngle->Enable();
+ m_xFtTrgrCenterX->set_sensitive(true);
+ m_xMtrTrgrCenterX->set_sensitive(true);
+ m_xFtTrgrCenterY->set_sensitive(true);
+ m_xMtrTrgrCenterY->set_sensitive(true);
+ m_xFtTrgrAngle->set_sensitive(true);
+ m_xMtrTrgrAngle->set_sensitive(true);
break;
case css::awt::GradientStyle_SQUARE:
case css::awt::GradientStyle_RECT:
- m_pFtTrgrCenterX->Enable();
- m_pMtrTrgrCenterX->Enable();
- m_pFtTrgrCenterY->Enable();
- m_pMtrTrgrCenterY->Enable();
- m_pFtTrgrAngle->Enable();
- m_pMtrTrgrAngle->Enable();
+ m_xFtTrgrCenterX->set_sensitive(true);
+ m_xMtrTrgrCenterX->set_sensitive(true);
+ m_xFtTrgrCenterY->set_sensitive(true);
+ m_xMtrTrgrCenterY->set_sensitive(true);
+ m_xFtTrgrAngle->set_sensitive(true);
+ m_xMtrTrgrAngle->set_sensitive(true);
break;
default:
break;
}
}
-SvxTransparenceTabPage::SvxTransparenceTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs)
-: SvxTabPage ( pParent,
- "TransparencyTabPage",
- "cui/ui/transparencytabpage.ui",
- rInAttrs),
- rOutAttrs ( rInAttrs ),
- nPageType ( PageType::Area ),
- nDlgType (0),
- bBitmap ( false ),
- aXFillAttr ( rInAttrs.GetPool() ),
- rXFSet ( aXFillAttr.GetItemSet() )
+SvxTransparenceTabPage::SvxTransparenceTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs)
+ : SvxTabPage(pParent, "cui/ui/transparencytabpage.ui", "TransparencyTabPage", rInAttrs)
+ , rOutAttrs(rInAttrs)
+ , nPageType(PageType::Area)
+ , nDlgType(0)
+ , bBitmap(false)
+ , aXFillAttr(rInAttrs.GetPool())
+ , rXFSet(aXFillAttr.GetItemSet())
+ , m_xRbtTransOff(m_xBuilder->weld_radio_button("RBT_TRANS_OFF"))
+ , m_xRbtTransLinear(m_xBuilder->weld_radio_button("RBT_TRANS_LINEAR"))
+ , m_xRbtTransGradient(m_xBuilder->weld_radio_button("RBT_TRANS_GRADIENT"))
+ , m_xMtrTransparent(m_xBuilder->weld_metric_spin_button("MTR_TRANSPARENT", FUNIT_PERCENT))
+ , m_xGridGradient(m_xBuilder->weld_widget("gridGradient"))
+ , m_xLbTrgrGradientType(m_xBuilder->weld_combo_box_text("LB_TRGR_GRADIENT_TYPES"))
+ , m_xFtTrgrCenterX(m_xBuilder->weld_label("FT_TRGR_CENTER_X"))
+ , m_xMtrTrgrCenterX(m_xBuilder->weld_metric_spin_button("MTR_TRGR_CENTER_X", FUNIT_PERCENT))
+ , m_xFtTrgrCenterY(m_xBuilder->weld_label("FT_TRGR_CENTER_Y"))
+ , m_xMtrTrgrCenterY(m_xBuilder->weld_metric_spin_button("MTR_TRGR_CENTER_Y", FUNIT_PERCENT))
+ , m_xFtTrgrAngle(m_xBuilder->weld_label("FT_TRGR_ANGLE"))
+ , m_xMtrTrgrAngle(m_xBuilder->weld_metric_spin_button("MTR_TRGR_ANGLE", FUNIT_DEGREE))
+ , m_xMtrTrgrBorder(m_xBuilder->weld_metric_spin_button("MTR_TRGR_BORDER", FUNIT_PERCENT))
+ , m_xMtrTrgrStartValue(m_xBuilder->weld_metric_spin_button("MTR_TRGR_START_VALUE", FUNIT_PERCENT))
+ , m_xMtrTrgrEndValue(m_xBuilder->weld_metric_spin_button("MTR_TRGR_END_VALUE", FUNIT_PERCENT))
+ , m_xCtlBitmapBorder(m_xBuilder->weld_widget("bitmap_border"))
+ , m_xCtlXRectBorder(m_xBuilder->weld_widget("trans_border"))
+ , m_xCtlBitmapPreview(new weld::CustomWeld(*m_xBuilder, "CTL_BITMAP_PREVIEW", m_aCtlBitmapPreview))
+ , m_xCtlXRectPreview(new weld::CustomWeld(*m_xBuilder, "CTL_TRANS_PREVIEW", m_aCtlXRectPreview))
{
- get(m_pRbtTransOff,"RBT_TRANS_OFF");
- get(m_pRbtTransLinear,"RBT_TRANS_LINEAR");
- get(m_pRbtTransGradient,"RBT_TRANS_GRADIENT");
-
- get(m_pMtrTransparent,"MTR_TRANSPARENT");
-
- get(m_pGridGradient,"gridGradient");
- get(m_pLbTrgrGradientType,"LB_TRGR_GRADIENT_TYPES");
- get(m_pFtTrgrCenterX,"FT_TRGR_CENTER_X");
- get(m_pMtrTrgrCenterX,"MTR_TRGR_CENTER_X");
- get(m_pFtTrgrCenterY,"FT_TRGR_CENTER_Y");
- get(m_pMtrTrgrCenterY,"MTR_TRGR_CENTER_Y");
- get(m_pFtTrgrAngle,"FT_TRGR_ANGLE");
- get(m_pMtrTrgrAngle,"MTR_TRGR_ANGLE");
- get(m_pMtrTrgrBorder,"MTR_TRGR_BORDER");
- get(m_pMtrTrgrStartValue,"MTR_TRGR_START_VALUE");
- get(m_pMtrTrgrEndValue,"MTR_TRGR_END_VALUE");
-
- get(m_pCtlBitmapPreview,"CTL_BITMAP_PREVIEW");
- get(m_pCtlXRectPreview,"CTL_TRANS_PREVIEW");
-
// main selection
- m_pRbtTransOff->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl));
- m_pRbtTransLinear->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl));
- m_pRbtTransGradient->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl));
+ m_xRbtTransOff->connect_toggled(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl));
+ m_xRbtTransLinear->connect_toggled(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl));
+ m_xRbtTransGradient->connect_toggled(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl));
// linear transparency
- m_pMtrTransparent->SetValue( 50 );
- m_pMtrTransparent->SetModifyHdl(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl));
+ m_xMtrTransparent->set_value(50, FUNIT_PERCENT);
+ m_xMtrTransparent->connect_value_changed(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl));
// gradient transparency
- m_pMtrTrgrEndValue->SetValue( 100 );
- m_pMtrTrgrStartValue->SetValue( 0 );
- Link<Edit&,void> aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl);
- m_pLbTrgrGradientType->SetSelectHdl( LINK( this, SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl) );
- m_pMtrTrgrCenterX->SetModifyHdl( aLink );
- m_pMtrTrgrCenterY->SetModifyHdl( aLink );
- m_pMtrTrgrAngle->SetModifyHdl( aLink );
- m_pMtrTrgrBorder->SetModifyHdl( aLink );
- m_pMtrTrgrStartValue->SetModifyHdl( aLink );
- m_pMtrTrgrEndValue->SetModifyHdl( aLink );
+ m_xMtrTrgrEndValue->set_value(100, FUNIT_PERCENT);
+ m_xMtrTrgrStartValue->set_value(0, FUNIT_PERCENT);
+ Link<weld::MetricSpinButton&,void> aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl);
+ m_xLbTrgrGradientType->connect_changed(LINK(this, SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl));
+ m_xMtrTrgrCenterX->connect_value_changed( aLink );
+ m_xMtrTrgrCenterY->connect_value_changed( aLink );
+ m_xMtrTrgrAngle->connect_value_changed( aLink );
+ m_xMtrTrgrBorder->connect_value_changed( aLink );
+ m_xMtrTrgrStartValue->connect_value_changed( aLink );
+ m_xMtrTrgrEndValue->connect_value_changed( aLink );
// this page needs ExchangeSupport
SetExchangeSupport();
}
-VclPtr<SfxTabPage> SvxTransparenceTabPage::Create(TabPageParent pWindow, const SfxItemSet* rAttrs)
+VclPtr<SfxTabPage> SvxTransparenceTabPage::Create(TabPageParent pParent, const SfxItemSet* rAttrs)
{
- return VclPtr<SvxTransparenceTabPage>::Create(pWindow.pParent, *rAttrs);
+ return VclPtr<SvxTransparenceTabPage>::Create(pParent, *rAttrs);
}
bool SvxTransparenceTabPage::FillItemSet(SfxItemSet* rAttrs)
@@ -310,11 +282,11 @@ bool SvxTransparenceTabPage::FillItemSet(SfxItemSet* rAttrs)
bool bSwitchOffLinear(false);
bool bSwitchOffGradient(false);
- if(m_pMtrTransparent->IsEnabled())
+ if (m_xMtrTransparent->get_sensitive())
{
// linear transparence
- sal_uInt16 nPos = static_cast<sal_uInt16>(m_pMtrTransparent->GetValue());
- if(m_pMtrTransparent->IsValueChangedFromSaved() || !bLinearActive)
+ sal_uInt16 nPos = m_xMtrTransparent->get_value(FUNIT_PERCENT);
+ if (m_xMtrTransparent->get_value_changed_from_saved() || !bLinearActive)
{
XFillTransparenceItem aItem(nPos);
SdrPercentItem aShadowItem(makeSdrShadowTransparenceItem(nPos));
@@ -328,28 +300,28 @@ bool SvxTransparenceTabPage::FillItemSet(SfxItemSet* rAttrs)
}
}
}
- else if(m_pLbTrgrGradientType->IsEnabled())
+ else if (m_xLbTrgrGradientType->get_active())
{
// transparence gradient, fill ItemSet from values
- if(!bGradActive
- || m_pLbTrgrGradientType->IsValueChangedFromSaved()
- || m_pMtrTrgrAngle->IsValueChangedFromSaved()
- || m_pMtrTrgrCenterX->IsValueChangedFromSaved()
- || m_pMtrTrgrCenterY->IsValueChangedFromSaved()
- || m_pMtrTrgrBorder->IsValueChangedFromSaved()
- || m_pMtrTrgrStartValue->IsValueChangedFromSaved()
- || m_pMtrTrgrEndValue->IsValueChangedFromSaved() )
+ if (!bGradActive
+ || m_xLbTrgrGradientType->get_value_changed_from_saved()
+ || m_xMtrTrgrAngle->get_value_changed_from_saved()
+ || m_xMtrTrgrCenterX->get_value_changed_from_saved()
+ || m_xMtrTrgrCenterY->get_value_changed_from_saved()
+ || m_xMtrTrgrBorder->get_value_changed_from_saved()
+ || m_xMtrTrgrStartValue->get_value_changed_from_saved()
+ || m_xMtrTrgrEndValue->get_value_changed_from_saved())
{
- sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(m_pMtrTrgrStartValue->GetValue()) * 255) / 100);
- sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(m_pMtrTrgrEndValue->GetValue()) * 255) / 100);
+ sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(m_xMtrTrgrStartValue->get_value(FUNIT_PERCENT)) * 255) / 100);
+ sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(m_xMtrTrgrEndValue->get_value(FUNIT_PERCENT)) * 255) / 100);
XGradient aTmpGradient(
Color(nStartCol, nStartCol, nStartCol),
Color(nEndCol, nEndCol, nEndCol),
- static_cast<css::awt::GradientStyle>(m_pLbTrgrGradientType->GetSelectedEntryPos()),
- static_cast<sal_uInt16>(m_pMtrTrgrAngle->GetValue()) * 10,
- static_cast<sal_uInt16>(m_pMtrTrgrCenterX->GetValue()),
- static_cast<sal_uInt16>(m_pMtrTrgrCenterY->GetValue()),
- static_cast<sal_uInt16>(m_pMtrTrgrBorder->GetValue()),
+ static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active()),
+ static_cast<sal_uInt16>(m_xMtrTrgrAngle->get_value(FUNIT_DEGREE)) * 10,
+ static_cast<sal_uInt16>(m_xMtrTrgrCenterX->get_value(FUNIT_PERCENT)),
+ static_cast<sal_uInt16>(m_xMtrTrgrCenterY->get_value(FUNIT_PERCENT)),
+ static_cast<sal_uInt16>(m_xMtrTrgrBorder->get_value(FUNIT_PERCENT)),
100, 100);
XFillFloatTransparenceItem aItem(aTmpGradient);
@@ -412,37 +384,37 @@ void SvxTransparenceTabPage::Reset(const SfxItemSet* rAttrs)
// transparence gradient
const XGradient& rGradient = static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->GetGradientValue();
css::awt::GradientStyle eXGS(rGradient.GetGradientStyle());
- m_pLbTrgrGradientType->SelectEntryPos(sal::static_int_cast< sal_Int32 >(eXGS));
- m_pMtrTrgrAngle->SetValue(rGradient.GetAngle() / 10);
- m_pMtrTrgrBorder->SetValue(rGradient.GetBorder());
- m_pMtrTrgrCenterX->SetValue(rGradient.GetXOffset());
- m_pMtrTrgrCenterY->SetValue(rGradient.GetYOffset());
- m_pMtrTrgrStartValue->SetValue(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(rGradient.GetStartColor().GetRed()) + 1) * 100) / 255));
- m_pMtrTrgrEndValue->SetValue(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(rGradient.GetEndColor().GetRed()) + 1) * 100) / 255));
+ m_xLbTrgrGradientType->set_active(sal::static_int_cast< sal_Int32 >(eXGS));
+ m_xMtrTrgrAngle->set_value(rGradient.GetAngle() / 10, FUNIT_DEGREE);
+ m_xMtrTrgrBorder->set_value(rGradient.GetBorder(), FUNIT_PERCENT);
+ m_xMtrTrgrCenterX->set_value(rGradient.GetXOffset(), FUNIT_PERCENT);
+ m_xMtrTrgrCenterY->set_value(rGradient.GetYOffset(), FUNIT_PERCENT);
+ m_xMtrTrgrStartValue->set_value(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(rGradient.GetStartColor().GetRed()) + 1) * 100) / 255), FUNIT_PERCENT);
+ m_xMtrTrgrEndValue->set_value(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(rGradient.GetEndColor().GetRed()) + 1) * 100) / 255), FUNIT_PERCENT);
// linear transparence
sal_uInt16 nTransp = static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue();
- m_pMtrTransparent->SetValue(bLinearActive ? nTransp : 50);
- ModifyTransparentHdl_Impl(*m_pMtrTransparent);
+ m_xMtrTransparent->set_value(bLinearActive ? nTransp : 50, FUNIT_PERCENT);
+ ModifyTransparentHdl_Impl(*m_xMtrTransparent);
// select the correct radio button
if(bGradActive)
{
// transparence gradient, set controls appropriate to item
- m_pRbtTransGradient->Check();
- ClickTransGradientHdl_Impl(nullptr);
+ m_xRbtTransGradient->set_active(true);
+ ClickTransGradientHdl_Impl(*m_xRbtTransGradient);
}
else if(bLinearActive)
{
// linear transparence
- m_pRbtTransLinear->Check();
- ClickTransLinearHdl_Impl(nullptr);
+ m_xRbtTransLinear->set_active(true);
+ ClickTransLinearHdl_Impl(*m_xRbtTransLinear);
}
else
{
// no transparence
- m_pRbtTransOff->Check();
- ClickTransOffHdl_Impl(nullptr);
+ m_xRbtTransOff->set_active(true);
+ ClickTransOffHdl_Impl(*m_xRbtTransOff);
ModifiedTrgrHdl_Impl(nullptr);
}
@@ -454,14 +426,14 @@ void SvxTransparenceTabPage::Reset(const SfxItemSet* rAttrs)
void SvxTransparenceTabPage::ChangesApplied()
{
- m_pMtrTransparent->SaveValue();
- m_pLbTrgrGradientType->SaveValue();
- m_pMtrTrgrCenterX->SaveValue();
- m_pMtrTrgrCenterY->SaveValue();
- m_pMtrTrgrAngle->SaveValue();
- m_pMtrTrgrBorder->SaveValue();
- m_pMtrTrgrStartValue->SaveValue();
- m_pMtrTrgrEndValue->SaveValue();
+ m_xMtrTransparent->save_value();
+ m_xLbTrgrGradientType->save_value();
+ m_xMtrTrgrCenterX->save_value();
+ m_xMtrTrgrCenterY->save_value();
+ m_xMtrTrgrAngle->save_value();
+ m_xMtrTrgrBorder->save_value();
+ m_xMtrTrgrStartValue->save_value();
+ m_xMtrTrgrEndValue->save_value();
}
void SvxTransparenceTabPage::ActivatePage(const SfxItemSet& rSet)
@@ -493,18 +465,20 @@ void SvxTransparenceTabPage::PointChanged(weld::DrawingArea*, RectPoint)
// Preview-Methods
-bool SvxTransparenceTabPage::InitPreview ( const SfxItemSet& rSet )
+bool SvxTransparenceTabPage::InitPreview(const SfxItemSet& rSet)
{
// set transparencetype for preview
- if ( m_pRbtTransOff->IsChecked() )
+ if (m_xRbtTransOff->get_active())
{
- ClickTransOffHdl_Impl(nullptr);
- } else if ( m_pRbtTransLinear->IsChecked() )
+ ClickTransOffHdl_Impl(*m_xRbtTransOff);
+ }
+ else if (m_xRbtTransLinear->get_active())
{
- ClickTransLinearHdl_Impl(nullptr);
- } else if ( m_pRbtTransGradient->IsChecked() )
+ ClickTransLinearHdl_Impl(*m_xRbtTransLinear);
+ }
+ else if (m_xRbtTransGradient->get_active())
{
- ClickTransGradientHdl_Impl(nullptr);
+ ClickTransGradientHdl_Impl(*m_xRbtTransGradient);
}
// Get fillstyle for preview
@@ -515,24 +489,24 @@ bool SvxTransparenceTabPage::InitPreview ( const SfxItemSet& rSet )
rXFSet.Put ( rSet.Get(XATTR_FILLBACKGROUND) );
rXFSet.Put ( rSet.Get(XATTR_FILLBITMAP) );
- m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
- m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
+ m_aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
+ m_aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
bBitmap = rSet.Get(XATTR_FILLSTYLE).GetValue() == drawing::FillStyle_BITMAP;
// show the right preview window
if ( bBitmap )
{
- m_pCtlBitmapPreview->Show();
- m_pCtlXRectPreview->Hide();
+ m_xCtlBitmapBorder->show();
+ m_xCtlXRectBorder->hide();
}
else
{
- m_pCtlBitmapPreview->Hide();
- m_pCtlXRectPreview->Show();
+ m_xCtlBitmapBorder->hide();
+ m_xCtlXRectBorder->show();
}
- return !m_pRbtTransOff->IsChecked();
+ return !m_xRbtTransOff->get_active();
}
void SvxTransparenceTabPage::InvalidatePreview (bool bEnable)
@@ -541,23 +515,23 @@ void SvxTransparenceTabPage::InvalidatePreview (bool bEnable)
{
if ( bEnable )
{
- m_pCtlBitmapPreview->Enable();
- m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
+ m_xCtlBitmapPreview->set_sensitive(true);
+ m_aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
}
else
- m_pCtlBitmapPreview->Disable();
- m_pCtlBitmapPreview->Invalidate();
+ m_xCtlBitmapPreview->set_sensitive(false);
+ m_xCtlBitmapPreview->queue_draw();
}
else
{
if ( bEnable )
{
- m_pCtlXRectPreview->Enable();
- m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
+ m_xCtlXRectPreview->set_sensitive(true);
+ m_aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
}
else
- m_pCtlXRectPreview->Disable();
- m_pCtlXRectPreview->Invalidate();
+ m_xCtlXRectPreview->set_sensitive(false);
+ m_xCtlXRectPreview->queue_draw();
}
}
diff --git a/cui/uiconfig/ui/transparencytabpage.ui b/cui/uiconfig/ui/transparencytabpage.ui
index 4ae85c2b1701..efb31b319517 100644
--- a/cui/uiconfig/ui/transparencytabpage.ui
+++ b/cui/uiconfig/ui/transparencytabpage.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="cui">
<requires lib="gtk+" version="3.18"/>
- <requires lib="LibreOffice" version="1.0"/>
<object class="GtkAdjustment" id="adjustmentDegrees">
<property name="upper">359</property>
<property name="step_increment">1</property>
@@ -13,6 +12,31 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
+ <object class="GtkAdjustment" id="adjustmentPercent1">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustmentPercent2">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustmentPercent3">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustmentPercent4">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustmentPercent5">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
<object class="GtkListStore" id="liststoreTYPE">
<columns>
<!-- column-name gchararray1 -->
@@ -91,7 +115,6 @@
<property name="image_position">bottom</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
- <property name="group">RBT_TRANS_LINEAR</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -107,11 +130,10 @@
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="image_position">right</property>
- <property name="active">True</property>
<property name="draw_indicator">True</property>
- <property name="group">RBT_TRANS_GRADIENT</property>
+ <property name="group">RBT_TRANS_OFF</property>
<accessibility>
- <relation type="label-for" target="MTR_TRANSPARENT:0%"/>
+ <relation type="label-for" target="MTR_TRANSPARENT"/>
</accessibility>
</object>
<packing>
@@ -127,7 +149,6 @@
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
- <property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">RBT_TRANS_OFF</property>
</object>
@@ -137,9 +158,10 @@
</packing>
</child>
<child>
- <object class="GtkSpinButton" id="MTR_TRANSPARENT:0%">
+ <object class="GtkSpinButton" id="MTR_TRANSPARENT">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="activates_default">True</property>
<property name="adjustment">adjustmentPercent</property>
<accessibility>
<relation type="labelled-by" target="RBT_TRANS_LINEAR"/>
@@ -170,10 +192,11 @@
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
- <object class="GtkSpinButton" id="MTR_TRGR_END_VALUE:0%">
+ <object class="GtkSpinButton" id="MTR_TRGR_END_VALUE">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="adjustment">adjustmentPercent</property>
+ <property name="activates_default">True</property>
+ <property name="adjustment">adjustmentPercent5</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -181,10 +204,11 @@
</packing>
</child>
<child>
- <object class="GtkSpinButton" id="MTR_TRGR_START_VALUE:0%">
+ <object class="GtkSpinButton" id="MTR_TRGR_START_VALUE">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="adjustment">adjustmentPercent</property>
+ <property name="activates_default">True</property>
+ <property name="adjustment">adjustmentPercent4</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -192,10 +216,11 @@
</packing>
</child>
<child>
- <object class="GtkSpinButton" id="MTR_TRGR_BORDER:0%">
+ <object class="GtkSpinButton" id="MTR_TRGR_BORDER">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="adjustment">adjustmentPercent</property>
+ <property name="activates_default">True</property>
+ <property name="adjustment">adjustmentPercent3</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -203,9 +228,10 @@
</packing>
</child>
<child>
- <object class="GtkSpinButton" id="MTR_TRGR_ANGLE:0degree">
+ <object class="GtkSpinButton" id="MTR_TRGR_ANGLE">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="activates_default">True</property>
<property name="adjustment">adjustmentDegrees</property>
</object>
<packing>
@@ -214,10 +240,11 @@
</packing>
</child>
<child>
- <object class="GtkSpinButton" id="MTR_TRGR_CENTER_Y:0%">
+ <object class="GtkSpinButton" id="MTR_TRGR_CENTER_Y">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="adjustment">adjustmentPercent</property>
+ <property name="activates_default">True</property>
+ <property name="adjustment">adjustmentPercent2</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -225,10 +252,11 @@
</packing>
</child>
<child>
- <object class="GtkSpinButton" id="MTR_TRGR_CENTER_X:0%">
+ <object class="GtkSpinButton" id="MTR_TRGR_CENTER_X">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="adjustment">adjustmentPercent</property>
+ <property name="activates_default">True</property>
+ <property name="adjustment">adjustmentPercent1</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -255,10 +283,10 @@
<object class="GtkLabel" id="FT_TRGR_TYPE">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes" context="transparencytabpage|FT_TRGR_TYPE">Ty_pe:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">LB_TRGR_GRADIENT_TYPES</property>
+ <property name="xalign">1</property>
</object>
</child>
</object>
@@ -276,10 +304,10 @@
<object class="GtkLabel" id="FT_TRGR_CENTER_X">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes" context="transparencytabpage|FT_TRGR_CENTER_X">Center _X:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">MTR_TRGR_CENTER_X:0%</property>
+ <property name="mnemonic_widget">MTR_TRGR_CENTER_X</property>
+ <property name="xalign">1</property>
</object>
</child>
</object>
@@ -297,10 +325,10 @@
<object class="GtkLabel" id="FT_TRGR_CENTER_Y">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes" context="transparencytabpage|FT_TRGR_CENTER_Y">Center _Y:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">MTR_TRGR_CENTER_Y:0%</property>
+ <property name="mnemonic_widget">MTR_TRGR_CENTER_Y</property>
+ <property name="xalign">1</property>
</object>
</child>
</object>
@@ -318,10 +346,10 @@
<object class="GtkLabel" id="FT_TRGR_ANGLE">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes" context="transparencytabpage|FT_TRGR_ANGLE">_Angle:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">MTR_TRGR_ANGLE:0degree</property>
+ <property name="mnemonic_widget">MTR_TRGR_ANGLE</property>
+ <property name="xalign">1</property>
</object>
</child>
</object>
@@ -339,10 +367,10 @@
<object class="GtkLabel" id="FT_TRGR_BORDER">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes" context="transparencytabpage|FT_TRGR_BORDER">_Border:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">MTR_TRGR_BORDER:0%</property>
+ <property name="mnemonic_widget">MTR_TRGR_BORDER</property>
+ <property name="xalign">1</property>
</object>
</child>
</object>
@@ -360,10 +388,10 @@
<object class="GtkLabel" id="FT_TRGR_START_VALUE">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes" context="transparencytabpage|FT_TRGR_START_VALUE">_Start value:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">MTR_TRGR_START_VALUE:0%</property>
+ <property name="mnemonic_widget">MTR_TRGR_START_VALUE</property>
+ <property name="xalign">1</property>
</object>
</child>
</object>
@@ -381,10 +409,10 @@
<object class="GtkLabel" id="FT_TRGR_END_VALUE">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes" context="transparencytabpage|FT_TRGR_END_VALUE">_End value:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">MTR_TRGR_END_VALUE:0%</property>
+ <property name="mnemonic_widget">MTR_TRGR_END_VALUE</property>
+ <property name="xalign">1</property>
</object>
</child>
</object>
@@ -418,14 +446,31 @@
<property name="spacing">6</property>
<property name="homogeneous">True</property>
<child>
- <object class="svxlo-SvxXRectPreview" id="CTL_BITMAP_PREVIEW">
+ <object class="GtkScrolledWindow" id="bitmap_border">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="CTL_BITMAP_PREVIEW-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes" context="transparencytabpage|CTL_BITMAP_PREVIEW-atkobject">Example</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">never</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkDrawingArea" id="CTL_BITMAP_PREVIEW">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="CTL_BITMAP_PREVIEW-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes" context="transparencytabpage|CTL_BITMAP_PREVIEW-atkobject">Example</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -436,14 +481,31 @@
</packing>
</child>
<child>
- <object class="svxlo-SvxXRectPreview" id="CTL_TRANS_PREVIEW">
+ <object class="GtkScrolledWindow" id="trans_border">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="CTL_TRANS_PREVIEW-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes" context="transparencytabpage|CTL_TRANS_PREVIEW-atkobject">Example</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">never</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkDrawingArea" id="CTL_TRANS_PREVIEW">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="CTL_TRANS_PREVIEW-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes" context="transparencytabpage|CTL_TRANS_PREVIEW-atkobject">Example</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -483,8 +545,8 @@
<object class="GtkLabel" id="FL_PROP">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes" context="transparencytabpage|FL_PROP">Area Transparency Mode</property>
+ <property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@@ -495,13 +557,13 @@
<property name="mode">both</property>
<property name="ignore_hidden">True</property>
<widgets>
- <widget name="MTR_TRANSPARENT:0%"/>
- <widget name="MTR_TRGR_END_VALUE:0%"/>
- <widget name="MTR_TRGR_START_VALUE:0%"/>
- <widget name="MTR_TRGR_BORDER:0%"/>
- <widget name="MTR_TRGR_ANGLE:0degree"/>
- <widget name="MTR_TRGR_CENTER_Y:0%"/>
- <widget name="MTR_TRGR_CENTER_X:0%"/>
+ <widget name="MTR_TRANSPARENT"/>
+ <widget name="MTR_TRGR_END_VALUE"/>
+ <widget name="MTR_TRGR_START_VALUE"/>
+ <widget name="MTR_TRGR_BORDER"/>
+ <widget name="MTR_TRGR_ANGLE"/>
+ <widget name="MTR_TRGR_CENTER_Y"/>
+ <widget name="MTR_TRGR_CENTER_X"/>
<widget name="LB_TRGR_GRADIENT_TYPES"/>
</widgets>
</object>
diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx
index c7a1e1087765..e45f31db5193 100644
--- a/include/svx/dlgctrl.hxx
+++ b/include/svx/dlgctrl.hxx
@@ -382,6 +382,41 @@ public:
}
};
+class SAL_WARN_UNUSED SAL_DLLPUBLIC_RTTI PreviewBase : public weld::CustomWidgetController
+{
+private:
+ std::unique_ptr<SdrModel> mpModel;
+ VclPtr<VirtualDevice> mpBufferDevice;
+
+protected:
+ void InitSettings();
+
+ // prepare buffered paint
+ void LocalPrePaint(vcl::RenderContext const & rRenderContext);
+
+ // end and output buffered paint
+ void LocalPostPaint(vcl::RenderContext& rRenderContext);
+
+public:
+ PreviewBase();
+ virtual void SetDrawingArea(weld::DrawingArea*) override;
+ virtual ~PreviewBase() override;
+
+ // change support
+ virtual void StyleUpdated() override;
+
+ // dada read access
+ SdrModel& getModel() const
+ {
+ return *mpModel;
+ }
+ OutputDevice& getBufferDevice() const
+ {
+ return *mpBufferDevice;
+ }
+};
+
+
/*************************************************************************
|*
|* SvxLinePreview
@@ -437,6 +472,22 @@ public:
virtual void Resize() override;
};
+class SAL_WARN_UNUSED SVX_DLLPUBLIC XRectPreview : public PreviewBase
+{
+private:
+ SdrObject* mpRectangleObject;
+
+public:
+ XRectPreview();
+ virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override;
+ virtual ~XRectPreview() override;
+
+ void SetAttributes(const SfxItemSet& rItemSet);
+
+ virtual void Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect ) override;
+ virtual void Resize() override;
+};
+
/*************************************************************************
|*
|* SvxXShadowPreview
diff --git a/include/vcl/customweld.hxx b/include/vcl/customweld.hxx
index 2d6089871ef3..622b20c256c5 100644
--- a/include/vcl/customweld.hxx
+++ b/include/vcl/customweld.hxx
@@ -104,6 +104,7 @@ public:
m_xDrawingArea->set_size_request(nWidth, nHeight);
}
void show() { m_xDrawingArea->show(); }
+ void hide() { m_xDrawingArea->hide(); }
void set_margin_top(int nMargin) { m_xDrawingArea->set_margin_top(nMargin); }
void set_margin_bottom(int nMargin) { m_xDrawingArea->set_margin_bottom(nMargin); }
void set_sensitive(bool bSensitive) { m_xDrawingArea->set_sensitive(bSensitive); }
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index eee6d668d1e0..ef1461d640f1 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -2176,4 +2176,153 @@ void SvxXShadowPreview::Paint(vcl::RenderContext& rRenderContext, const tools::R
LocalPostPaint(rRenderContext);
}
+void PreviewBase::InitSettings()
+{
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+
+ svtools::ColorConfig aColorConfig;
+ Color aTextColor(aColorConfig.GetColorValue(svtools::FONTCOLOR).nColor);
+ getBufferDevice().SetTextColor(aTextColor);
+
+ getBufferDevice().SetBackground(rStyleSettings.GetWindowColor());
+
+ getBufferDevice().SetDrawMode(rStyleSettings.GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR);
+
+ Invalidate();
+}
+
+PreviewBase::PreviewBase()
+ : mpModel(new SdrModel())
+{
+ // init model
+ mpModel->GetItemPool().FreezeIdRanges();
+}
+
+void PreviewBase::SetDrawingArea(weld::DrawingArea* pDrawingArea)
+{
+ CustomWidgetController::SetDrawingArea(pDrawingArea);
+ mpBufferDevice = VclPtr<VirtualDevice>::Create(pDrawingArea->get_ref_device());
+ mpBufferDevice->SetMapMode(MapMode(MapUnit::Map100thMM));
+}
+
+PreviewBase::~PreviewBase()
+{
+ mpModel.reset();
+ mpBufferDevice.disposeAndClear();
+}
+
+void PreviewBase::LocalPrePaint(vcl::RenderContext const & rRenderContext)
+{
+ // init BufferDevice
+ if (mpBufferDevice->GetOutputSizePixel() != GetOutputSizePixel())
+ {
+ mpBufferDevice->SetDrawMode(rRenderContext.GetDrawMode());
+ mpBufferDevice->SetSettings(rRenderContext.GetSettings());
+ mpBufferDevice->SetAntialiasing(rRenderContext.GetAntialiasing());
+ mpBufferDevice->SetOutputSizePixel(GetOutputSizePixel());
+ mpBufferDevice->SetMapMode(rRenderContext.GetMapMode());
+ }
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+
+ if (rStyleSettings.GetPreviewUsesCheckeredBackground())
+ {
+ const Point aNull(0, 0);
+ static const sal_uInt32 nLen(8);
+ static const Color aW(COL_WHITE);
+ static const Color aG(0xef, 0xef, 0xef);
+ const bool bWasEnabled(mpBufferDevice->IsMapModeEnabled());
+
+ mpBufferDevice->EnableMapMode(false);
+ mpBufferDevice->DrawCheckered(aNull, mpBufferDevice->GetOutputSizePixel(), nLen, aW, aG);
+ mpBufferDevice->EnableMapMode(bWasEnabled);
+ }
+ else
+ {
+ mpBufferDevice->Erase();
+ }
+}
+
+void PreviewBase::LocalPostPaint(vcl::RenderContext& rRenderContext)
+{
+ // copy to front (in pixel mode)
+ const bool bWasEnabledSrc(mpBufferDevice->IsMapModeEnabled());
+ const bool bWasEnabledDst(rRenderContext.IsMapModeEnabled());
+ const Point aEmptyPoint;
+
+ mpBufferDevice->EnableMapMode(false);
+ rRenderContext.EnableMapMode(false);
+
+ rRenderContext.DrawOutDev(aEmptyPoint, GetOutputSizePixel(),
+ aEmptyPoint, GetOutputSizePixel(),
+ *mpBufferDevice);
+
+ mpBufferDevice->EnableMapMode(bWasEnabledSrc);
+ rRenderContext.EnableMapMode(bWasEnabledDst);
+}
+
+void PreviewBase::StyleUpdated()
+{
+ InitSettings();
+}
+
+XRectPreview::XRectPreview()
+ : mpRectangleObject(nullptr)
+{
+}
+
+void XRectPreview::SetDrawingArea(weld::DrawingArea* pDrawingArea)
+{
+ PreviewBase::SetDrawingArea(pDrawingArea);
+ InitSettings();
+
+ // create RectangleObject
+ const tools::Rectangle aObjectSize(Point(), GetOutputSizePixel());
+ mpRectangleObject = new SdrRectObj(
+ getModel(),
+ aObjectSize);
+}
+
+void XRectPreview::Resize()
+{
+ const tools::Rectangle aObjectSize(Point(), GetOutputSizePixel());
+ SdrObject *pOrigObject = mpRectangleObject;
+ if (pOrigObject)
+ {
+ mpRectangleObject = new SdrRectObj(
+ getModel(),
+ aObjectSize);
+ SetAttributes(pOrigObject->GetMergedItemSet());
+ SdrObject::Free(pOrigObject);
+ }
+ PreviewBase::Resize();
+}
+
+XRectPreview::~XRectPreview()
+{
+ SdrObject::Free(mpRectangleObject);
+}
+
+void XRectPreview::SetAttributes(const SfxItemSet& rItemSet)
+{
+ mpRectangleObject->SetMergedItemSet(rItemSet, true);
+ mpRectangleObject->SetMergedItem(XLineStyleItem(drawing::LineStyle_NONE));
+}
+
+void XRectPreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
+{
+ LocalPrePaint(rRenderContext);
+
+ sdr::contact::SdrObjectVector aObjectVector;
+
+ aObjectVector.push_back(mpRectangleObject);
+
+ sdr::contact::ObjectContactOfObjListPainter aPainter(getBufferDevice(), aObjectVector, nullptr);
+ sdr::contact::DisplayInfo aDisplayInfo;
+
+ aPainter.ProcessDisplay(aDisplayInfo);
+
+ LocalPostPaint(rRenderContext);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */