tdf#49247: add sidebar panel for soft edges effect
Shapes are handled in all modules; images only in draw/impress (TODO). Change-Id: Ib96eb4c36fdb69dd605f9b5a507f67a279797286 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94162 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
parent
188aa42a25
commit
fcb945e37d
@ -561,6 +561,32 @@
|
||||
</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>
|
||||
</prop>
|
||||
<prop oor:name="OrderIndex" oor:type="xs:int">
|
||||
<value>300</value>
|
||||
</prop>
|
||||
</node>
|
||||
|
||||
<node oor:name="ShadowPropertyPanel" oor:op="replace">
|
||||
<prop oor:name="Title" oor:type="xs:string">
|
||||
<value xml:lang="en-US">Shadow</value>
|
||||
|
@ -230,6 +230,8 @@ interface TableDraw
|
||||
SID_ATTR_GLOW_RADIUS [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
|
||||
SID_ATTR_GLOW_TRANSPARENCY [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
|
||||
|
||||
SID_ATTR_SOFTEDGE_RADIUS [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -392,6 +392,8 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq )
|
||||
case SID_ATTR_GLOW:
|
||||
case SID_ATTR_GLOW_COLOR:
|
||||
case SID_ATTR_GLOW_RADIUS:
|
||||
case SID_ATTR_GLOW_TRANSPARENCY:
|
||||
case SID_ATTR_SOFTEDGE_RADIUS:
|
||||
if (const SfxItemSet* pNewArgs = rReq.GetArgs())
|
||||
pView->SetAttrToMarked(*pNewArgs, false);
|
||||
rReq.Done();
|
||||
|
@ -2880,5 +2880,10 @@ interface DrawView
|
||||
ExecMethod = FuTemporary;
|
||||
StateMethod = GetAttrState;
|
||||
]
|
||||
SID_ATTR_SOFTEDGE_RADIUS
|
||||
[
|
||||
ExecMethod = FuTemporary;
|
||||
StateMethod = GetAttrState;
|
||||
]
|
||||
|
||||
}
|
||||
|
@ -3474,6 +3474,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
|
||||
case SID_ATTR_GLOW_COLOR:
|
||||
case SID_ATTR_GLOW_RADIUS:
|
||||
case SID_ATTR_GLOW_TRANSPARENCY:
|
||||
case SID_ATTR_SOFTEDGE_RADIUS:
|
||||
if (const SfxItemSet* pNewArgs = rReq.GetArgs())
|
||||
mpDrawView->SetAttributes(*pNewArgs);
|
||||
rReq.Done();
|
||||
|
@ -441,6 +441,7 @@ void DrawViewShell::GetAttrState( SfxItemSet& rSet )
|
||||
case SID_ATTR_GLOW_COLOR:
|
||||
case SID_ATTR_GLOW_RADIUS:
|
||||
case SID_ATTR_GLOW_TRANSPARENCY:
|
||||
case SID_ATTR_SOFTEDGE_RADIUS:
|
||||
case SID_SET_SUB_SCRIPT:
|
||||
case SID_SET_SUPER_SCRIPT:
|
||||
{
|
||||
|
@ -198,6 +198,7 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
|
||||
svx/source/sidebar/area/AreaPropertyPanelBase \
|
||||
svx/source/sidebar/area/AreaTransparencyGradientPopup \
|
||||
svx/source/sidebar/glow/GlowPropertyPanel \
|
||||
svx/source/sidebar/softedge/SoftEdgePropertyPanel \
|
||||
svx/source/sidebar/shadow/ShadowPropertyPanel \
|
||||
svx/source/sidebar/graphic/GraphicPropertyPanel \
|
||||
svx/source/sidebar/line/LinePropertyPanel \
|
||||
|
@ -119,6 +119,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\
|
||||
svx/uiconfig/ui/sidebarempty \
|
||||
svx/uiconfig/ui/sidebarglow \
|
||||
svx/uiconfig/ui/sidebarshadow \
|
||||
svx/uiconfig/ui/sidebarsoftedge \
|
||||
svx/uiconfig/ui/sidebargallery \
|
||||
svx/uiconfig/ui/sidebargraphic \
|
||||
svx/uiconfig/ui/sidebarline \
|
||||
|
@ -12321,3 +12321,20 @@ SdrPercentItem GlowTransparency SID_ATTR_GLOW_TRANSPARENCY
|
||||
ToolBoxConfig = FALSE,
|
||||
GroupId = SfxGroupId::Document;
|
||||
]
|
||||
|
||||
SdrMetricItem SoftEdgeRad SID_ATTR_SOFTEDGE_RADIUS
|
||||
|
||||
[
|
||||
AutoUpdate = TRUE,
|
||||
FastCall = FALSE,
|
||||
ReadOnlyDoc = FALSE,
|
||||
Toggle = FALSE,
|
||||
Container = FALSE,
|
||||
RecordAbsolute = FALSE,
|
||||
RecordPerSet;
|
||||
|
||||
AccelConfig = FALSE,
|
||||
MenuConfig = FALSE,
|
||||
ToolBoxConfig = FALSE,
|
||||
GroupId = SfxGroupId::Document;
|
||||
]
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "area/AreaPropertyPanel.hxx"
|
||||
#include "glow/GlowPropertyPanel.hxx"
|
||||
#include "shadow/ShadowPropertyPanel.hxx"
|
||||
#include "softedge/SoftEdgePropertyPanel.hxx"
|
||||
#include "graphic/GraphicPropertyPanel.hxx"
|
||||
#include "line/LinePropertyPanel.hxx"
|
||||
#include "possize/PosSizePropertyPanel.hxx"
|
||||
@ -147,6 +148,10 @@ Reference<ui::XUIElement> SAL_CALL PanelFactory::createUIElement (
|
||||
{
|
||||
pControl = ShadowPropertyPanel::Create(pParentWindow, xFrame, pBindings);
|
||||
}
|
||||
else if (rsResourceURL.endsWith("/SoftEdgePropertyPanel"))
|
||||
{
|
||||
pControl = SoftEdgePropertyPanel::Create(pParentWindow, xFrame, pBindings);
|
||||
}
|
||||
else if (rsResourceURL.endsWith("/GraphicPropertyPanel"))
|
||||
{
|
||||
pControl = GraphicPropertyPanel::Create(pParentWindow, xFrame, pBindings);
|
||||
|
96
svx/source/sidebar/softedge/SoftEdgePropertyPanel.cxx
Normal file
96
svx/source/sidebar/softedge/SoftEdgePropertyPanel.cxx
Normal file
@ -0,0 +1,96 @@
|
||||
/* -*- 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_RAD, 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: */
|
56
svx/source/sidebar/softedge/SoftEdgePropertyPanel.hxx
Normal file
56
svx/source/sidebar/softedge/SoftEdgePropertyPanel.hxx
Normal file
@ -0,0 +1,56 @@
|
||||
/* -*- 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: */
|
82
svx/uiconfig/ui/sidebarsoftedge.ui
Normal file
82
svx/uiconfig/ui/sidebarsoftedge.ui
Normal file
@ -0,0 +1,82 @@
|
||||
<?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>
|
||||
</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>
|
@ -216,6 +216,14 @@ interface TextDraw : TextDrawBase
|
||||
DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
|
||||
]
|
||||
|
||||
SID_ATTR_SOFTEDGE_RADIUS
|
||||
[
|
||||
Export = FALSE;
|
||||
ExecMethod = ExecDrawAttrArgs ;
|
||||
StateMethod = GetDrawAttrState ;
|
||||
DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
|
||||
]
|
||||
|
||||
SID_ATTRIBUTES_LINE
|
||||
[
|
||||
ExecMethod = ExecDrawDlg ;
|
||||
|
Loading…
x
Reference in New Issue
Block a user