1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <tools/debug.hxx>
21 #include <vcl/settings.hxx>
22 #include <vcl/svapp.hxx>
23 #include <vcl/toolbox.hxx>
24 #include <vcl/virdev.hxx>
25 #include <sfx2/objsh.hxx>
27 #include <svtools/toolbarmenu.hxx>
28 #include <svtools/popupwindowcontroller.hxx>
29 #include <svtools/valueset.hxx>
31 #include <svx/strings.hrc>
32 #include <svx/svxids.hrc>
35 #include <svx/drawitem.hxx>
36 #include <svx/xlineit0.hxx>
37 #include <svx/xlncapit.hxx>
38 #include <svx/xlndsit.hxx>
39 #include <svx/xlnstit.hxx>
40 #include <svx/xlnedit.hxx>
41 #include <svx/xtable.hxx>
42 #include <svx/linectrl.hxx>
43 #include <svx/itemwin.hxx>
44 #include <svx/dialmgr.hxx>
45 #include <tbxcolorupdate.hxx>
49 #include <comphelper/lok.hxx>
50 #include <comphelper/propertyvalue.hxx>
52 using namespace ::com::sun::star::uno
;
53 using namespace ::com::sun::star::beans
;
54 using namespace ::com::sun::star::util
;
55 using namespace ::com::sun::star::frame
;
56 using namespace ::com::sun::star::lang
;
57 using namespace ::com::sun::star
;
59 // For End Line Controller
62 SvxLineStyleToolBoxControl::SvxLineStyleToolBoxControl( const css::uno::Reference
<css::uno::XComponentContext
>& rContext
)
63 : svt::PopupWindowController( rContext
, nullptr, OUString() )
65 addStatusListener(".uno:LineDash");
68 SvxLineStyleToolBoxControl::~SvxLineStyleToolBoxControl()
72 void SAL_CALL
SvxLineStyleToolBoxControl::statusChanged( const frame::FeatureStateEvent
& rEvent
)
74 ToolBox
* pToolBox
= nullptr;
76 if (!getToolboxId(nId
, &pToolBox
) && !m_pToolbar
)
79 if ( rEvent
.FeatureURL
.Complete
== m_aCommandURL
)
82 m_pToolbar
->set_item_sensitive(m_aCommandURL
, rEvent
.IsEnabled
);
84 pToolBox
->EnableItem( nId
, rEvent
.IsEnabled
);
87 m_xBtnUpdater
->Update(rEvent
);
89 SfxObjectShell
* pSh
= SfxObjectShell::Current();
93 const SvxDashListItem
* pItem
= pSh
->GetItem( SID_DASH_LIST
);
97 XDashListRef xList
= pItem
->GetDashList();
98 int nIndex
= m_xBtnUpdater
->GetStyleIndex();
99 bool bNoneLineStyle
= false;
105 BitmapEx
aEmpty(xList
->GetBitmapForUISolidLine());
106 aEmpty
.Erase(Application::GetSettings().GetStyleSettings().GetFieldColor());
109 Graphic
aGraf(aEmpty
);
110 m_pToolbar
->set_item_image(m_aCommandURL
, aGraf
.GetXGraphic());
113 pToolBox
->SetItemImage(nId
, Image(aEmpty
));
114 bNoneLineStyle
= true;
120 Graphic
aGraf(xList
->GetBitmapForUISolidLine());
121 m_pToolbar
->set_item_image(m_aCommandURL
, aGraf
.GetXGraphic());
124 pToolBox
->SetItemImage(nId
, Image(xList
->GetBitmapForUISolidLine()));
129 Graphic
aGraf(xList
->GetUiBitmap(nIndex
- 2));
130 m_pToolbar
->set_item_image(m_aCommandURL
, aGraf
.GetXGraphic());
133 pToolBox
->SetItemImage(nId
, Image(xList
->GetUiBitmap(nIndex
- 2)));
136 if (m_aLineStyleIsNoneFunction
)
137 m_aLineStyleIsNoneFunction(bNoneLineStyle
);
140 void SAL_CALL
SvxLineStyleToolBoxControl::execute(sal_Int16
/*KeyModifier*/)
144 // Toggle the popup also when toolbutton is activated
145 m_pToolbar
->set_menu_item_active(m_aCommandURL
, !m_pToolbar
->get_menu_item_active(m_aCommandURL
));
149 // Open the popup also when Enter key is pressed.
154 void SvxLineStyleToolBoxControl::initialize( const css::uno::Sequence
<css::uno::Any
>& rArguments
)
156 svt::PopupWindowController::initialize( rArguments
);
160 mxPopoverContainer
.reset(new ToolbarPopupContainer(m_pToolbar
));
161 m_pToolbar
->set_item_popover(m_aCommandURL
, mxPopoverContainer
->getTopLevel());
164 ToolBox
* pToolBox
= nullptr;
166 if ( getToolboxId( nId
, &pToolBox
) )
168 pToolBox
->SetItemBits( nId
, pToolBox
->GetItemBits( nId
) | ToolBoxItemBits::DROPDOWNONLY
);
171 m_xBtnUpdater
.reset(new svx::ToolboxButtonLineStyleUpdater
);
174 void SvxLineStyleToolBoxControl::setLineStyleSelectFunction(const LineStyleSelectFunction
& rLineStyleSelectFunction
)
176 m_aLineStyleSelectFunction
= rLineStyleSelectFunction
;
179 void SvxLineStyleToolBoxControl::setLineStyleIsNoneFunction(const LineStyleIsNoneFunction
& rLineStyleIsNoneFunction
)
181 m_aLineStyleIsNoneFunction
= rLineStyleIsNoneFunction
;
184 void SvxLineStyleToolBoxControl::dispatchLineStyleCommand(const OUString
& rCommand
, const Sequence
<PropertyValue
>& rArgs
)
186 if (m_aLineStyleSelectFunction
&& m_aLineStyleSelectFunction(rCommand
, rArgs
[0].Value
))
189 dispatchCommand(rCommand
, rArgs
);
192 std::unique_ptr
<WeldToolbarPopup
> SvxLineStyleToolBoxControl::weldPopupWindow()
194 return std::make_unique
<SvxLineBox
>(this, m_pToolbar
, m_xBtnUpdater
->GetStyleIndex());
197 VclPtr
<vcl::Window
> SvxLineStyleToolBoxControl::createVclPopupWindow( vcl::Window
* pParent
)
199 mxInterimPopover
= VclPtr
<InterimToolbarPopup
>::Create(getFrameInterface(), pParent
,
200 std::make_unique
<SvxLineBox
>(this, pParent
->GetFrameWeld(), m_xBtnUpdater
->GetStyleIndex()));
202 mxInterimPopover
->Show();
204 return mxInterimPopover
;
207 OUString
SvxLineStyleToolBoxControl::getImplementationName()
209 return "com.sun.star.comp.svx.LineStyleToolBoxControl";
212 css::uno::Sequence
<OUString
> SvxLineStyleToolBoxControl::getSupportedServiceNames()
214 return { "com.sun.star.frame.ToolbarController" };
217 extern "C" SAL_DLLPUBLIC_EXPORT
css::uno::XInterface
*
218 com_sun_star_comp_svx_LineStyleToolBoxControl_get_implementation(
219 css::uno::XComponentContext
* rContext
,
220 css::uno::Sequence
<css::uno::Any
> const & )
222 return cppu::acquire( new SvxLineStyleToolBoxControl( rContext
) );
227 class SvxLineEndToolBoxControl final
: public svt::PopupWindowController
230 explicit SvxLineEndToolBoxControl( const css::uno::Reference
<css::uno::XComponentContext
>& rContext
);
233 virtual void SAL_CALL
initialize( const css::uno::Sequence
<css::uno::Any
>& rArguments
) override
;
236 virtual OUString SAL_CALL
getImplementationName() override
;
237 virtual css::uno::Sequence
<OUString
> SAL_CALL
getSupportedServiceNames() override
;
239 virtual void SAL_CALL
execute(sal_Int16 nKeyModifier
) override
;
242 virtual std::unique_ptr
<WeldToolbarPopup
> weldPopupWindow() override
;
243 virtual VclPtr
<vcl::Window
> createVclPopupWindow( vcl::Window
* pParent
) override
;
246 class SvxLineEndWindow final
: public WeldToolbarPopup
249 XLineEndListRef mpLineEndList
;
250 rtl::Reference
<SvxLineEndToolBoxControl
> mxControl
;
251 std::unique_ptr
<ValueSet
> mxLineEndSet
;
252 std::unique_ptr
<weld::CustomWeld
> mxLineEndSetWin
;
256 DECL_LINK( SelectHdl
, ValueSet
*, void );
260 virtual void GrabFocus() override
262 mxLineEndSet
->GrabFocus();
266 SvxLineEndWindow(SvxLineEndToolBoxControl
* pControl
, weld::Widget
* pParent
);
267 virtual void statusChanged( const css::frame::FeatureStateEvent
& rEvent
) override
;
272 constexpr sal_uInt16 gnCols
= 2;
274 SvxLineEndWindow::SvxLineEndWindow(SvxLineEndToolBoxControl
* pControl
, weld::Widget
* pParent
)
275 : WeldToolbarPopup(pControl
->getFrameInterface(), pParent
, "svx/ui/floatinglineend.ui", "FloatingLineEnd")
276 , mxControl(pControl
)
277 , mxLineEndSet(new ValueSet(m_xBuilder
->weld_scrolled_window("valuesetwin", true)))
278 , mxLineEndSetWin(new weld::CustomWeld(*m_xBuilder
, "valueset", *mxLineEndSet
))
281 mxLineEndSet
->SetStyle(mxLineEndSet
->GetStyle() | WB_ITEMBORDER
| WB_3DLOOK
| WB_NO_DIRECTSELECT
);
282 mxLineEndSet
->SetHelpId(HID_POPUP_LINEEND_CTRL
);
283 m_xTopLevel
->set_help_id(HID_POPUP_LINEEND
);
285 SfxObjectShell
* pDocSh
= SfxObjectShell::Current();
288 const SfxPoolItem
* pItem
= pDocSh
->GetItem( SID_LINEEND_LIST
);
290 mpLineEndList
= static_cast<const SvxLineEndListItem
*>( pItem
)->GetLineEndList();
292 DBG_ASSERT( mpLineEndList
.is(), "LineEndList not found" );
294 mxLineEndSet
->SetSelectHdl( LINK( this, SvxLineEndWindow
, SelectHdl
) );
295 mxLineEndSet
->SetColCount( gnCols
);
297 // ValueSet fill with entries of LineEndList
300 AddStatusListener( ".uno:LineEndListState");
303 IMPL_LINK_NOARG(SvxLineEndWindow
, SelectHdl
, ValueSet
*, void)
305 std::unique_ptr
<XLineEndItem
> pLineEndItem
;
306 std::unique_ptr
<XLineStartItem
> pLineStartItem
;
307 sal_uInt16 nId
= mxLineEndSet
->GetSelectedItemId();
311 pLineStartItem
.reset(new XLineStartItem());
315 pLineEndItem
.reset(new XLineEndItem());
317 else if( nId
% 2 ) // beginning of line
319 const XLineEndEntry
* pEntry
= mpLineEndList
->GetLineEnd( (nId
- 1) / 2 - 1 );
320 pLineStartItem
.reset(new XLineStartItem(pEntry
->GetName(), pEntry
->GetLineEnd()));
324 const XLineEndEntry
* pEntry
= mpLineEndList
->GetLineEnd( nId
/ 2 - 2 );
325 pLineEndItem
.reset(new XLineEndItem(pEntry
->GetName(), pEntry
->GetLineEnd()));
331 if ( pLineStartItem
)
334 pLineStartItem
->QueryValue( a
);
339 pLineEndItem
->QueryValue( a
);
341 Sequence
< PropertyValue
> aArgs
{ comphelper::makePropertyValue(name
, a
) };
343 /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call.
344 This instance may be deleted in the meantime (i.e. when a dialog is opened
345 while in Dispatch()), accessing members will crash in this case. */
346 mxLineEndSet
->SetNoSelection();
348 mxControl
->dispatchCommand(mxControl
->getCommandURL(), aArgs
);
350 mxControl
->EndPopupMode();
353 void SvxLineEndWindow::FillValueSet()
355 if( !mpLineEndList
.is() )
358 ScopedVclPtrInstance
< VirtualDevice
> pVD
;
360 tools::Long nCount
= mpLineEndList
->Count();
362 // First entry: no line end.
363 // An entry is temporarily added to get the UI bitmap
364 basegfx::B2DPolyPolygon aNothing
;
365 mpLineEndList
->Insert(std::make_unique
<XLineEndEntry
>(aNothing
,
366 comphelper::LibreOfficeKit::isActive() ? SvxResId(RID_SVXSTR_INVISIBLE
)
367 : SvxResId(RID_SVXSTR_NONE
)));
368 const XLineEndEntry
* pEntry
= mpLineEndList
->GetLineEnd(nCount
);
369 BitmapEx aBmp
= mpLineEndList
->GetUiBitmap( nCount
);
370 OSL_ENSURE( !aBmp
.IsEmpty(), "UI bitmap was not created" );
372 maBmpSize
= aBmp
.GetSizePixel();
373 pVD
->SetOutputSizePixel( maBmpSize
, false );
374 maBmpSize
.setWidth( maBmpSize
.Width() / 2 );
376 Point
aPt1( maBmpSize
.Width(), 0 );
378 pVD
->DrawBitmapEx( Point(), aBmp
);
379 mxLineEndSet
->InsertItem(1, Image(pVD
->GetBitmapEx(aPt0
, maBmpSize
)), pEntry
->GetName());
380 mxLineEndSet
->InsertItem(2, Image(pVD
->GetBitmapEx(aPt1
, maBmpSize
)), pEntry
->GetName());
382 mpLineEndList
->Remove(nCount
);
384 for( tools::Long i
= 0; i
< nCount
; i
++ )
386 pEntry
= mpLineEndList
->GetLineEnd( i
);
387 DBG_ASSERT( pEntry
, "Could not access LineEndEntry" );
388 aBmp
= mpLineEndList
->GetUiBitmap( i
);
389 OSL_ENSURE( !aBmp
.IsEmpty(), "UI bitmap was not created" );
391 pVD
->DrawBitmapEx( aPt0
, aBmp
);
392 mxLineEndSet
->InsertItem(static_cast<sal_uInt16
>((i
+1)*2L+1),
393 Image(pVD
->GetBitmapEx(aPt0
, maBmpSize
)), pEntry
->GetName());
394 mxLineEndSet
->InsertItem(static_cast<sal_uInt16
>((i
+2)*2L),
395 Image(pVD
->GetBitmapEx(aPt1
, maBmpSize
)), pEntry
->GetName());
397 mnLines
= std::min( static_cast<sal_uInt16
>(nCount
+ 1), sal_uInt16(MAX_LINES
) );
398 mxLineEndSet
->SetLineCount( mnLines
);
403 void SvxLineEndWindow::statusChanged( const css::frame::FeatureStateEvent
& rEvent
)
405 if ( rEvent
.FeatureURL
.Complete
!= ".uno:LineEndListState" )
408 // The list of line ends (LineEndList) has changed
409 css::uno::Reference
< css::uno::XWeak
> xWeak
;
410 if ( rEvent
.State
>>= xWeak
)
412 mpLineEndList
.set( static_cast< XLineEndList
* >( xWeak
.get() ) );
413 DBG_ASSERT( mpLineEndList
.is(), "LineEndList not found" );
415 mxLineEndSet
->Clear();
420 void SvxLineEndWindow::SetSize()
422 sal_uInt16 nItemCount
= mxLineEndSet
->GetItemCount();
423 sal_uInt16 nMaxLines
= nItemCount
/ gnCols
;
425 WinBits nBits
= mxLineEndSet
->GetStyle();
426 if ( mnLines
== nMaxLines
)
427 nBits
&= ~WB_VSCROLL
;
430 mxLineEndSet
->SetStyle( nBits
);
432 Size
aSize( maBmpSize
);
433 aSize
.AdjustWidth(6 );
434 aSize
.AdjustHeight(6 );
435 aSize
= mxLineEndSet
->CalcWindowSizePixel( aSize
);
436 mxLineEndSet
->GetDrawingArea()->set_size_request(aSize
.Width(), aSize
.Height());
437 mxLineEndSet
->SetOutputSizePixel(aSize
);
440 SvxLineEndToolBoxControl::SvxLineEndToolBoxControl( const css::uno::Reference
<css::uno::XComponentContext
>& rContext
)
441 : svt::PopupWindowController( rContext
, nullptr, OUString() )
445 void SAL_CALL
SvxLineEndToolBoxControl::execute(sal_Int16
/*KeyModifier*/)
449 // Toggle the popup also when toolbutton is activated
450 m_pToolbar
->set_menu_item_active(m_aCommandURL
, !m_pToolbar
->get_menu_item_active(m_aCommandURL
));
454 // Open the popup also when Enter key is pressed.
459 void SvxLineEndToolBoxControl::initialize( const css::uno::Sequence
<css::uno::Any
>& rArguments
)
461 svt::PopupWindowController::initialize( rArguments
);
465 mxPopoverContainer
.reset(new ToolbarPopupContainer(m_pToolbar
));
466 m_pToolbar
->set_item_popover(m_aCommandURL
, mxPopoverContainer
->getTopLevel());
469 ToolBox
* pToolBox
= nullptr;
471 if ( getToolboxId( nId
, &pToolBox
) )
472 pToolBox
->SetItemBits( nId
, pToolBox
->GetItemBits( nId
) | ToolBoxItemBits::DROPDOWNONLY
);
475 std::unique_ptr
<WeldToolbarPopup
> SvxLineEndToolBoxControl::weldPopupWindow()
477 return std::make_unique
<SvxLineEndWindow
>(this, m_pToolbar
);
480 VclPtr
<vcl::Window
> SvxLineEndToolBoxControl::createVclPopupWindow( vcl::Window
* pParent
)
482 mxInterimPopover
= VclPtr
<InterimToolbarPopup
>::Create(getFrameInterface(), pParent
,
483 std::make_unique
<SvxLineEndWindow
>(this, pParent
->GetFrameWeld()));
485 mxInterimPopover
->Show();
487 mxInterimPopover
->SetText(SvxResId(RID_SVXSTR_LINEEND
));
489 return mxInterimPopover
;
492 OUString
SvxLineEndToolBoxControl::getImplementationName()
494 return "com.sun.star.comp.svx.LineEndToolBoxControl";
497 css::uno::Sequence
<OUString
> SvxLineEndToolBoxControl::getSupportedServiceNames()
499 return { "com.sun.star.frame.ToolbarController" };
502 extern "C" SAL_DLLPUBLIC_EXPORT
css::uno::XInterface
*
503 com_sun_star_comp_svx_LineEndToolBoxControl_get_implementation(
504 css::uno::XComponentContext
* rContext
,
505 css::uno::Sequence
<css::uno::Any
> const & )
507 return cppu::acquire( new SvxLineEndToolBoxControl( rContext
) );
510 SvxLineBox::SvxLineBox(SvxLineStyleToolBoxControl
* pControl
, weld::Widget
* pParent
, int nInitialIndex
)
511 : WeldToolbarPopup(pControl
->getFrameInterface(), pParent
, "svx/ui/floatinglinestyle.ui", "FloatingLineStyle")
512 , mxControl(pControl
)
513 , mxLineStyleSet(new ValueSet(m_xBuilder
->weld_scrolled_window("valuesetwin", true)))
514 , mxLineStyleSetWin(new weld::CustomWeld(*m_xBuilder
, "valueset", *mxLineStyleSet
))
516 mxLineStyleSet
->SetStyle(WB_FLATVALUESET
| WB_ITEMBORDER
| WB_3DLOOK
| WB_NO_DIRECTSELECT
);
520 mxLineStyleSet
->SelectItem(nInitialIndex
+ 1);
522 mxLineStyleSet
->SetSelectHdl( LINK( this, SvxLineBox
, SelectHdl
) );
525 void SvxLineBox::GrabFocus()
527 mxLineStyleSet
->GrabFocus();
530 SvxLineBox::~SvxLineBox()
534 // Fills the listbox (provisional) with strings
536 void SvxLineBox::Fill( const XDashListRef
&pList
)
538 mxLineStyleSet
->Clear();
544 mxLineStyleSet
->InsertItem(1, Image(), pList
->GetStringForUiNoLine());
546 // entry for solid line
547 auto aBmp
= pList
->GetBitmapForUISolidLine();
548 Size aBmpSize
= aBmp
.GetSizePixel();
549 mxLineStyleSet
->InsertItem(2, Image(aBmp
), pList
->GetStringForUiSolidLine());
551 // entries for dashed lines
552 tools::Long nCount
= pList
->Count();
553 for( tools::Long i
= 0; i
< nCount
; i
++ )
555 const XDashEntry
* pEntry
= pList
->GetDash(i
);
556 const BitmapEx aBitmap
= pList
->GetUiBitmap(i
);
558 mxLineStyleSet
->InsertItem(i
+ 3, Image(aBitmap
), pEntry
->GetName());
561 sal_uInt16 nLines
= std::min( static_cast<sal_uInt16
>(nCount
+ 2), sal_uInt16(MAX_LINES
) );
562 mxLineStyleSet
->SetLineCount(nLines
);
564 WinBits nBits
= mxLineStyleSet
->GetStyle();
565 if ( nLines
== mxLineStyleSet
->GetItemCount() )
566 nBits
&= ~WB_VSCROLL
;
569 mxLineStyleSet
->SetStyle( nBits
);
571 Size
aSize(aBmpSize
);
572 aSize
.AdjustWidth(6);
573 aSize
.AdjustHeight(6);
574 aSize
= mxLineStyleSet
->CalcWindowSizePixel(aSize
);
575 mxLineStyleSet
->GetDrawingArea()->set_size_request(aSize
.Width(), aSize
.Height());
576 mxLineStyleSet
->SetOutputSizePixel(aSize
);
579 IMPL_LINK_NOARG(SvxLineBox
, SelectHdl
, ValueSet
*, void)
581 drawing::LineStyle eXLS
;
582 sal_Int32 nPos
= mxLineStyleSet
->GetSelectedItemId();
583 --nPos
; // ids start at 1, get the pos of the id
588 eXLS
= drawing::LineStyle_NONE
;
592 eXLS
= drawing::LineStyle_SOLID
;
597 eXLS
= drawing::LineStyle_DASH
;
598 const SfxObjectShell
* pObjSh
= SfxObjectShell::Current();
599 if (nPos
!= -1 && pObjSh
&& pObjSh
->GetItem(SID_DASH_LIST
))
601 // LineDashItem will only be sent if it also has a dash.
603 SvxDashListItem
const * pItem
= pObjSh
->GetItem( SID_DASH_LIST
);
604 const XDashEntry
* pEntry
= pItem
->GetDashList()->GetDash(nPos
- 2);
605 XLineDashItem
aLineDashItem(pEntry
->GetName(), pEntry
->GetDash());
608 aLineDashItem
.QueryValue ( a
);
609 Sequence
< PropertyValue
> aArgs
{ comphelper::makePropertyValue("LineDash", a
) };
610 mxControl
->dispatchLineStyleCommand(".uno:LineDash", aArgs
);
612 // set also cap style using the toolbar line style selection popup
613 css::drawing::DashStyle eStyle
= pEntry
->GetDash().GetDashStyle();
614 XLineCapItem
aLineCapItem(
615 eStyle
== drawing::DashStyle_RECT
|| eStyle
== drawing::DashStyle_RECTRELATIVE
616 ? css::drawing::LineCap_BUTT
617 : css::drawing::LineCap_ROUND
);
618 aLineCapItem
.QueryValue ( a
);
619 Sequence
< PropertyValue
> aArgs2
{ comphelper::makePropertyValue("LineCap", a
) };
620 mxControl
->dispatchLineStyleCommand(".uno:LineCap", aArgs2
);
626 XLineStyleItem
aLineStyleItem( eXLS
);
628 aLineStyleItem
.QueryValue ( a
);
629 Sequence
< PropertyValue
> aArgs
{ comphelper::makePropertyValue("XLineStyle", a
) };
630 mxControl
->dispatchLineStyleCommand(".uno:XLineStyle", aArgs
);
632 mxControl
->EndPopupMode();
635 void SvxLineBox::FillControl()
637 SfxObjectShell
* pSh
= SfxObjectShell::Current();
640 const SvxDashListItem
* pItem
= pSh
->GetItem( SID_DASH_LIST
);
642 Fill(pItem
->GetDashList());
646 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */