20#include <osl/diagnose.h>
24#include <svx/svxids.hrc>
34#include <bitmaps.hlst>
38using namespace css::uno;
68 const css::uno::Reference<css::frame::XFrame>& rxFrame)
69 :
PanelLayout(pParent,
"AreaPropertyPanel",
"svx/ui/sidebararea.ui"),
71 meLastXFS(static_cast<sal_uInt16>(-1)),
76 mxColorTextFT(m_xBuilder->weld_label(
"filllabel")),
77 mxLbFillType(m_xBuilder->weld_combo_box(
"fillstylearea")),
78 mxLbFillAttr(m_xBuilder->weld_combo_box(
"fillattrhb")),
80 mxLbFillGradTo(
new ColorListBox(m_xBuilder->weld_menu_button(
"fillgrad2"), [
this]{ return GetFrameWeld(); })),
81 mxToolBoxColor(m_xBuilder->weld_toolbar(
"selectcolor")),
83 mxTrspTextFT(m_xBuilder->weld_label(
"transparencylabel")),
84 mxLBTransType(m_xBuilder->weld_combo_box(
"transtype")),
85 mxMTRTransparent(m_xBuilder->weld_metric_spin_button(
"settransparency", FieldUnit::PERCENT)),
86 mxSldTransparent(m_xBuilder->weld_scale(
"transparencyslider")),
87 mxBTNGradient(m_xBuilder->weld_toolbar(
"selectgradient")),
88 mxMTRAngle(m_xBuilder->weld_metric_spin_button(
"gradangle", FieldUnit::DEGREE)),
89 mxGradientStyle(m_xBuilder->weld_combo_box(
"gradientstyle")),
90 mxBmpImport(m_xBuilder->weld_button(
"bmpimport")),
91 maImgAxial(BMP_AXIAL),
94 maImgRadial(BMP_RADIAL),
95 maImgSquare(BMP_SQUARE),
96 maImgLinear(BMP_LINEAR)
200 auto xWait = std::make_unique<weld::WaitObject>(
m_xContainer.get());
206 mxLbFillAttr->clear();
211 OUString aFileName =
aURL.GetLastName().getToken(0,
'.');
212 OUString
aName = aFileName;
214 XBitmapListRef pList = pSh->GetItem(SID_BITMAP_LIST)->GetBitmapList();
217 bool bValidBitmapName =
false;
218 while( !bValidBitmapName )
220 bValidBitmapName =
true;
221 for(
tools::Long i = 0;
i < pList->Count() && bValidBitmapName;
i++ )
223 if(
aName == pList->GetBitmap(
i)->GetName() )
225 bValidBitmapName =
false;
226 aName = aFileName + OUString::number(j++);
231 pList->Insert(std::make_unique<XBitmapEntry>(aGraphic,
aName));
236 mxLbFillAttr->set_active_text(
aName);
237 SelectFillAttrHdl(*mxLbFillAttr);
243 FillStyleChanged(
true);
248 SelectFillAttrHdl_Impl();
253 SelectFillAttrHdl_Impl();
258 SelectFillAttrHdl_Impl();
263 sal_Int32 nPosFillStyle =
static_cast<eFillStyle
>(
mxLbFillType->get_active());
268 const bool bFillStyleChange(
static_cast<eFillStyle
>(
meLastXFS) !=
static_cast<eFillStyle
>(nPosFillStyle));
270 switch(nPosFillStyle)
272 case eFillStyle::NONE:
283 case eFillStyle::SOLID:
293 case eFillStyle::GRADIENT:
296 if (pSh && pSh->
GetItem(SID_COLOR_TABLE))
312 case eFillStyle::HATCH:
321 if (
nPos != -1 && pSh && pSh->
GetItem(SID_HATCH_LIST))
325 if(nPos < pItem->GetHatchList()->
Count())
342 case eFillStyle::BITMAP:
351 if (
nPos != -1 && pSh && pSh->
GetItem(SID_BITMAP_LIST))
355 if(nPos < pItem->GetBitmapList()->
Count())
372 case eFillStyle::PATTERN:
381 if (
nPos != -1 && pSh && pSh->
GetItem(SID_PATTERN_LIST))
385 if(nPos < pItem->GetPatternList()->
Count())
415 bool bShowLbFillAttr =
false;
416 bool bShowLbFillGradFrom =
false;
417 bool bShowLbFillGradTo =
false;
418 bool bShowGradientStyle =
false;
419 bool bShowMTRAngle =
false;
420 bool bShowToolBoxColor =
false;
421 bool bShowBmpImport =
false;
444 bShowToolBoxColor =
true;
459 bShowLbFillGradFrom =
true;
460 bShowLbFillGradTo =
true;
461 bShowGradientStyle =
true;
462 bShowMTRAngle =
true;
498 if (pSh->
GetItem(SID_GRADIENT_LIST))
501 pSh->
GetItem(SID_GRADIENT_LIST)->GetGradientList());
533 bShowLbFillAttr =
true;
545 if (mnLastPosHatch < pXHatchList->
Count())
570 bShowLbFillAttr =
true;
579 bShowBmpImport =
true;
588 if (mnLastPosBitmap < pXBitmapList->
Count())
600 bShowBmpImport =
false;
613 if (mnLastPosPattern < pXPatternList->
Count())
625 bShowLbFillAttr =
false;
672 bool bZeroValue(
false);
706 sal_Int32 nEntryPos(0);
707 OUString* pImage =
nullptr;
719 case css::awt::GradientStyle_LINEAR:
725 case css::awt::GradientStyle_AXIAL:
731 case css::awt::GradientStyle_RADIAL:
737 case css::awt::GradientStyle_ELLIPTICAL:
743 case css::awt::GradientStyle_SQUARE:
749 case css::awt::GradientStyle_RECT:
802 else if (bDefaultOrSet)
866 else if (bDefaultOrSet && pState)
877 case drawing::FillStyle_NONE:
885 case drawing::FillStyle_SOLID:
888 case drawing::FillStyle_GRADIENT:
891 case drawing::FillStyle_HATCH:
894 case drawing::FillStyle_BITMAP:
1067 const bool bDisabled(SfxItemState::DISABLED == eState);
1068 const bool bDefaultOrSet(SfxItemState::DEFAULT <= eState);
1069 const bool bDefault(SfxItemState::DEFAULT == eState);
1073 case SID_ATTR_FILL_TRANSPARENCE:
1076 case SID_ATTR_FILL_FLOATTRANSPARENCE:
1079 case SID_ATTR_FILL_STYLE:
1082 case SID_ATTR_FILL_COLOR:
1085 case SID_ATTR_FILL_GRADIENT:
1088 case SID_ATTR_FILL_HATCH:
1091 case SID_ATTR_FILL_BITMAP:
1094 case SID_ATTR_FILL_USE_SLIDE_BACKGROUND:
1097 case SID_GRADIENT_LIST:
1123 case SID_HATCH_LIST:
1149 case SID_BITMAP_LIST:
1150 case SID_PATTERN_LIST:
1164 if(nSID == SID_BITMAP_LIST)
1166 else if(nSID == SID_PATTERN_LIST)
1185 const sal_uInt16 nVal = mxSldTransparent->get_value();
1186 SetTransparency(nVal);
1188 setFillTransparence(aLinearItem);
1193 sal_Int32 nSelectType = mxLBTransType->get_active();
1194 bool bGradient =
false;
1195 sal_uInt16 nTrans = 0;
1199 mxBTNGradient->hide();
1200 mxMTRTransparent->show();
1201 mxSldTransparent->show();
1202 mxMTRTransparent->set_sensitive(
true);
1203 mxSldTransparent->set_sensitive(
true);
1206 else if(1 == nSelectType)
1208 mxBTNGradient->hide();
1209 mxMTRTransparent->show();
1210 mxSldTransparent->show();
1211 nTrans = mnLastTransSolid;
1212 mxMTRTransparent->set_value(nTrans, FieldUnit::PERCENT);
1213 mxLBTransType->set_active(1);
1214 mxMTRTransparent->set_sensitive(
true);
1215 mxSldTransparent->set_sensitive(
true);
1219 mxBTNGradient->show();
1221 switch (nSelectType)
1243 mxMTRTransparent->hide();
1244 mxSldTransparent->hide();
1245 mxBTNGradient->set_sensitive(
true);
1250 setFillTransparence(aLinearItem);
1259 switch(
static_cast<css::awt::GradientStyle
>(nSelectType))
1261 case css::awt::GradientStyle_LINEAR:
1262 aTmpGradient = maGradientLinear;
1264 case css::awt::GradientStyle_AXIAL:
1265 aTmpGradient = maGradientAxial;
1267 case css::awt::GradientStyle_RADIAL:
1268 aTmpGradient = maGradientRadial;
1270 case css::awt::GradientStyle_ELLIPTICAL:
1271 aTmpGradient = maGradientElliptical;
1273 case css::awt::GradientStyle_SQUARE:
1274 aTmpGradient = maGradientSquare;
1276 case css::awt::GradientStyle_RECT:
1277 aTmpGradient = maGradientRect;
1284 setFillFloatTransparence(aGradientItem);
1289 const sal_uInt16 nTrans =
static_cast<sal_uInt16
>(mxMTRTransparent->get_value(FieldUnit::PERCENT));
1290 mnLastTransSolid = nTrans;
1291 SetTransparency(nTrans);
1292 const sal_Int32 nSelectType = mxLBTransType->get_active();
1294 if(nTrans && !nSelectType)
1296 mxLBTransType->set_active(1);
1300 setFillTransparence(aLinearItem);
1308 case css::awt::GradientStyle_LINEAR:
1310 case css::awt::GradientStyle_AXIAL:
1312 case css::awt::GradientStyle_RADIAL:
1314 case css::awt::GradientStyle_ELLIPTICAL:
1316 case css::awt::GradientStyle_SQUARE:
1318 case css::awt::GradientStyle_RECT:
1327 case css::awt::GradientStyle_LINEAR:
1330 case css::awt::GradientStyle_AXIAL:
1333 case css::awt::GradientStyle_RADIAL:
1336 case css::awt::GradientStyle_ELLIPTICAL:
1339 case css::awt::GradientStyle_SQUARE:
1342 case css::awt::GradientStyle_RECT:
constexpr OStringLiteral SIDEBARGRADIENT
sfx2::sidebar::Panel * m_pPanel
virtual weld::Window * GetFrameWeld() const
static SAL_WARN_UNUSED_RESULT SfxObjectShell * Current()
const SfxPoolItem * GetItem(sal_uInt16 nSlotId) const
virtual SfxUInt16Item * Clone(SfxItemPool *=nullptr) const override
const XBitmapListRef & GetBitmapList() const
const XGradientListRef & GetGradientList() const
const XHatchListRef & GetHatchList() const
ErrCode GetGraphic(Graphic &) const
const XPatternListRef & GetPatternList() const
const GraphicObject & GetGraphicObject() const
virtual XFillBitmapItem * Clone(SfxItemPool *pPool=nullptr) const override
virtual XFillColorItem * Clone(SfxItemPool *pPool=nullptr) const override
virtual XFillFloatTransparenceItem * Clone(SfxItemPool *pPool=nullptr) const override
virtual XFillGradientItem * Clone(SfxItemPool *pPool=nullptr) const override
virtual XFillHatchItem * Clone(SfxItemPool *pPool=nullptr) const override
virtual XFillStyleItem * Clone(SfxItemPool *pPool=nullptr) const override
Item to enable slide background for filled objects.
const Color & GetEndColor() const
css::awt::GradientStyle GetGradientStyle() const
void SetBorder(sal_uInt16 nNewBorder)
const Color & GetStartColor() const
Degree10 GetAngle() const
void SetStartColor(const Color &rColor)
void SetGradientStyle(css::awt::GradientStyle eNewStyle)
void SetXOffset(sal_uInt16 nNewOffset)
void SetEndColor(const Color &rColor)
void SetAngle(Degree10 nNewAngle)
void SetYOffset(sal_uInt16 nNewOffset)
const OUString & GetName() const
constexpr ::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
#define LINK(Instance, Class, Member)
SVX_DLLPUBLIC void Fill(weld::ComboBox &, const XHatchListRef &pList)
SVX_DLLPUBLIC void Fill(weld::ComboBox &rListBox)
Reference< XNameAccess > m_xContainer
constexpr OUStringLiteral PATTERN