18dcb2a10SAndre Fischer /**************************************************************
28dcb2a10SAndre Fischer *
38dcb2a10SAndre Fischer * Licensed to the Apache Software Foundation (ASF) under one
48dcb2a10SAndre Fischer * or more contributor license agreements. See the NOTICE file
58dcb2a10SAndre Fischer * distributed with this work for additional information
68dcb2a10SAndre Fischer * regarding copyright ownership. The ASF licenses this file
78dcb2a10SAndre Fischer * to you under the Apache License, Version 2.0 (the
88dcb2a10SAndre Fischer * "License"); you may not use this file except in compliance
98dcb2a10SAndre Fischer * with the License. You may obtain a copy of the License at
108dcb2a10SAndre Fischer *
118dcb2a10SAndre Fischer * http://www.apache.org/licenses/LICENSE-2.0
128dcb2a10SAndre Fischer *
138dcb2a10SAndre Fischer * Unless required by applicable law or agreed to in writing,
148dcb2a10SAndre Fischer * software distributed under the License is distributed on an
158dcb2a10SAndre Fischer * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
168dcb2a10SAndre Fischer * KIND, either express or implied. See the License for the
178dcb2a10SAndre Fischer * specific language governing permissions and limitations
188dcb2a10SAndre Fischer * under the License.
198dcb2a10SAndre Fischer *
208dcb2a10SAndre Fischer *************************************************************/
218dcb2a10SAndre Fischer
22d29c2fc2SAndre Fischer #include <sfx2/sidebar/ResourceDefinitions.hrc>
238dcb2a10SAndre Fischer #include <sfx2/sidebar/Theme.hxx>
248dcb2a10SAndre Fischer #include <sfx2/sidebar/ControlFactory.hxx>
25*6a606da0SAndre Fischer #include <sfx2/sidebar/Layouter.hxx>
268dcb2a10SAndre Fischer #include <LinePropertyPanel.hxx>
278dcb2a10SAndre Fischer #include <LinePropertyPanel.hrc>
288dcb2a10SAndre Fischer #include <svx/dialogs.hrc>
298dcb2a10SAndre Fischer #include <svx/dialmgr.hxx>
308dcb2a10SAndre Fischer #include <sfx2/objsh.hxx>
318dcb2a10SAndre Fischer #include <sfx2/bindings.hxx>
328dcb2a10SAndre Fischer #include <sfx2/dispatch.hxx>
338dcb2a10SAndre Fischer #include <svx/xlnclit.hxx>
348dcb2a10SAndre Fischer #include <svx/xtable.hxx>
358dcb2a10SAndre Fischer #include <svx/xdash.hxx>
368dcb2a10SAndre Fischer #include <svx/drawitem.hxx>
378dcb2a10SAndre Fischer #include <svx/svxitems.hrc>
388dcb2a10SAndre Fischer #include <svtools/valueset.hxx>
398dcb2a10SAndre Fischer #include <unotools/pathoptions.hxx>
408dcb2a10SAndre Fischer #include <unotools/viewoptions.hxx>
418dcb2a10SAndre Fischer #include <comphelper/processfactory.hxx>
428dcb2a10SAndre Fischer #include <i18npool/mslangid.hxx>
438dcb2a10SAndre Fischer #include <svx/xlineit0.hxx>
448dcb2a10SAndre Fischer #include <svx/xlndsit.hxx>
458dcb2a10SAndre Fischer #include <vcl/svapp.hxx>
468dcb2a10SAndre Fischer #include <svx/xlnwtit.hxx>
478dcb2a10SAndre Fischer #include <vcl/lstbox.hxx>
488dcb2a10SAndre Fischer #include <svx/tbxcolorupdate.hxx>
498dcb2a10SAndre Fischer #include <vcl/toolbox.hxx>
508dcb2a10SAndre Fischer #include <svx/xlntrit.hxx>
518dcb2a10SAndre Fischer #include <svx/xlnstit.hxx>
528dcb2a10SAndre Fischer #include <svx/xlnedit.hxx>
538dcb2a10SAndre Fischer #include <svx/xlncapit.hxx>
548dcb2a10SAndre Fischer #include <svx/xlinjoit.hxx>
558dcb2a10SAndre Fischer #include "svx/sidebar/PopupContainer.hxx"
568dcb2a10SAndre Fischer #include "svx/sidebar/PopupControl.hxx"
57facb16e7SArmin Le Grand #include <svx/sidebar/ColorControl.hxx>
588dcb2a10SAndre Fischer #include "LineWidthControl.hxx"
598dcb2a10SAndre Fischer #include <boost/bind.hpp>
608dcb2a10SAndre Fischer
618dcb2a10SAndre Fischer using namespace css;
628dcb2a10SAndre Fischer using namespace cssu;
63*6a606da0SAndre Fischer using ::sfx2::sidebar::Layouter;
648dcb2a10SAndre Fischer using ::sfx2::sidebar::Theme;
658dcb2a10SAndre Fischer
66*6a606da0SAndre Fischer
678dcb2a10SAndre Fischer #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
688dcb2a10SAndre Fischer
698dcb2a10SAndre Fischer namespace {
GetItemId_Impl_line(ValueSet & rValueSet,const Color & rCol)708dcb2a10SAndre Fischer short GetItemId_Impl_line( ValueSet& rValueSet, const Color& rCol )
718dcb2a10SAndre Fischer {
728dcb2a10SAndre Fischer if(rCol == COL_AUTO)
738dcb2a10SAndre Fischer return 0;
748dcb2a10SAndre Fischer
758dcb2a10SAndre Fischer bool bFound = false;
768dcb2a10SAndre Fischer sal_uInt16 nCount = rValueSet.GetItemCount();
778dcb2a10SAndre Fischer sal_uInt16 n = 1;
788dcb2a10SAndre Fischer
798dcb2a10SAndre Fischer while ( !bFound && n <= nCount )
808dcb2a10SAndre Fischer {
818dcb2a10SAndre Fischer Color aValCol = rValueSet.GetItemColor(n);
828dcb2a10SAndre Fischer
838dcb2a10SAndre Fischer bFound = ( aValCol.GetRed() == rCol.GetRed()
848dcb2a10SAndre Fischer && aValCol.GetGreen() == rCol.GetGreen()
858dcb2a10SAndre Fischer && aValCol.GetBlue() == rCol.GetBlue() );
868dcb2a10SAndre Fischer
878dcb2a10SAndre Fischer if ( !bFound )
888dcb2a10SAndre Fischer n++;
898dcb2a10SAndre Fischer }
908dcb2a10SAndre Fischer return bFound ? n : -1;
918dcb2a10SAndre Fischer }
928dcb2a10SAndre Fischer
FillLineEndListBox(ListBox & rListBoxStart,ListBox & rListBoxEnd,const XLineEndListSharedPtr aList)93c7be74b1SArmin Le Grand void FillLineEndListBox(ListBox& rListBoxStart, ListBox& rListBoxEnd, const XLineEndListSharedPtr aList)
94a567bdc8SArmin Le Grand {
95c7be74b1SArmin Le Grand const sal_uInt32 nCount(aList.get() ? aList->Count() : 0);
9697e8a929SArmin Le Grand const String sNone(SVX_RES(RID_SVXSTR_NONE));
9797e8a929SArmin Le Grand
98a567bdc8SArmin Le Grand rListBoxStart.SetUpdateMode(false);
99a567bdc8SArmin Le Grand rListBoxEnd.SetUpdateMode(false);
1008dcb2a10SAndre Fischer
10197e8a929SArmin Le Grand rListBoxStart.Clear();
10297e8a929SArmin Le Grand rListBoxEnd.Clear();
10397e8a929SArmin Le Grand
10497e8a929SArmin Le Grand // add 'none' entries
10597e8a929SArmin Le Grand rListBoxStart.InsertEntry(sNone);
10697e8a929SArmin Le Grand rListBoxEnd.InsertEntry(sNone);
10797e8a929SArmin Le Grand
108a567bdc8SArmin Le Grand for(sal_uInt32 i(0); i < nCount; i++)
109a567bdc8SArmin Le Grand {
110c7be74b1SArmin Le Grand XLineEndEntry* pEntry = aList->GetLineEnd(i);
111c7be74b1SArmin Le Grand const Bitmap aBitmap = aList->GetUiBitmap(i);
1128dcb2a10SAndre Fischer
11397e8a929SArmin Le Grand if(!aBitmap.IsEmpty())
114a567bdc8SArmin Le Grand {
11597e8a929SArmin Le Grand Bitmap aCopyStart(aBitmap);
11697e8a929SArmin Le Grand Bitmap aCopyEnd(aBitmap);
11797e8a929SArmin Le Grand // delete pBitmap;
118a567bdc8SArmin Le Grand const Size aBmpSize(aCopyStart.GetSizePixel());
119a567bdc8SArmin Le Grand const Rectangle aCropRectStart(Point(), Size(aBmpSize.Width() / 2, aBmpSize.Height()));
120a567bdc8SArmin Le Grand const Rectangle aCropRectEnd(Point(aBmpSize.Width() / 2, 0), Size(aBmpSize.Width() / 2, aBmpSize.Height()));
121a567bdc8SArmin Le Grand
122a567bdc8SArmin Le Grand aCopyStart.Crop(aCropRectStart);
123a567bdc8SArmin Le Grand rListBoxStart.InsertEntry(
124a567bdc8SArmin Le Grand pEntry->GetName(),
125a567bdc8SArmin Le Grand aCopyStart);
126a567bdc8SArmin Le Grand
127a567bdc8SArmin Le Grand aCopyEnd.Crop(aCropRectEnd);
128a567bdc8SArmin Le Grand rListBoxEnd.InsertEntry(
129a567bdc8SArmin Le Grand pEntry->GetName(),
130a567bdc8SArmin Le Grand aCopyEnd);
131a567bdc8SArmin Le Grand }
132a567bdc8SArmin Le Grand else
133a567bdc8SArmin Le Grand {
134a567bdc8SArmin Le Grand rListBoxStart.InsertEntry(pEntry->GetName());
135a567bdc8SArmin Le Grand rListBoxEnd.InsertEntry(pEntry->GetName());
136a567bdc8SArmin Le Grand }
137a567bdc8SArmin Le Grand }
1388dcb2a10SAndre Fischer
139a567bdc8SArmin Le Grand rListBoxStart.SetUpdateMode(true);
140a567bdc8SArmin Le Grand rListBoxEnd.SetUpdateMode(true);
141a567bdc8SArmin Le Grand }
14297e8a929SArmin Le Grand
FillLineStyleListBox(ListBox & rListBox,const XDashListSharedPtr aList)143c7be74b1SArmin Le Grand void FillLineStyleListBox(ListBox& rListBox, const XDashListSharedPtr aList)
14497e8a929SArmin Le Grand {
145c7be74b1SArmin Le Grand const sal_uInt32 nCount(aList.get() ? aList->Count() : 0);
14697e8a929SArmin Le Grand rListBox.SetUpdateMode(false);
14797e8a929SArmin Le Grand
14897e8a929SArmin Le Grand rListBox.Clear();
14997e8a929SArmin Le Grand
15097e8a929SArmin Le Grand // entry for 'none'
151c7be74b1SArmin Le Grand rListBox.InsertEntry(aList->GetStringForUiNoLine());
15297e8a929SArmin Le Grand
15397e8a929SArmin Le Grand // entry for solid line
154c7be74b1SArmin Le Grand rListBox.InsertEntry(aList->GetStringForUiSolidLine(), aList->GetBitmapForUISolidLine());
15597e8a929SArmin Le Grand
15697e8a929SArmin Le Grand for(sal_uInt32 i(0); i < nCount; i++)
15797e8a929SArmin Le Grand {
158c7be74b1SArmin Le Grand XDashEntry* pEntry = aList->GetDash(i);
159c7be74b1SArmin Le Grand const Bitmap aBitmap = aList->GetUiBitmap(i);
16097e8a929SArmin Le Grand
16197e8a929SArmin Le Grand if(!aBitmap.IsEmpty())
16297e8a929SArmin Le Grand {
16397e8a929SArmin Le Grand rListBox.InsertEntry(
16497e8a929SArmin Le Grand pEntry->GetName(),
16597e8a929SArmin Le Grand aBitmap);
16697e8a929SArmin Le Grand // delete pBitmap;
16797e8a929SArmin Le Grand }
16897e8a929SArmin Le Grand else
16997e8a929SArmin Le Grand {
17097e8a929SArmin Le Grand rListBox.InsertEntry(pEntry->GetName());
17197e8a929SArmin Le Grand }
17297e8a929SArmin Le Grand }
17397e8a929SArmin Le Grand
17497e8a929SArmin Le Grand rListBox.SetUpdateMode(true);
17597e8a929SArmin Le Grand }
176a567bdc8SArmin Le Grand } // end of anonymous namespace
1778dcb2a10SAndre Fischer
1788dcb2a10SAndre Fischer // namespace open
1798dcb2a10SAndre Fischer
1808dcb2a10SAndre Fischer namespace svx { namespace sidebar {
1818dcb2a10SAndre Fischer
LinePropertyPanel(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)1828dcb2a10SAndre Fischer LinePropertyPanel::LinePropertyPanel(
1838dcb2a10SAndre Fischer Window* pParent,
1848dcb2a10SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame,
1858dcb2a10SAndre Fischer SfxBindings* pBindings)
1868dcb2a10SAndre Fischer : Control(
1878dcb2a10SAndre Fischer pParent,
1888dcb2a10SAndre Fischer SVX_RES(RID_SIDEBAR_LINE_PANEL)),
1898dcb2a10SAndre Fischer mpFTWidth(new FixedText(this, SVX_RES(FT_WIDTH))),
1908dcb2a10SAndre Fischer mpTBWidthBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
1918dcb2a10SAndre Fischer mpTBWidth(sfx2::sidebar::ControlFactory::CreateToolBox(mpTBWidthBackground.get(), SVX_RES(TB_WIDTH))),
1928dcb2a10SAndre Fischer mpFTColor(new FixedText(this, SVX_RES(FT_COLOR))),
1938dcb2a10SAndre Fischer mpTBColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
1948dcb2a10SAndre Fischer mpTBColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpTBColorBackground.get(), SVX_RES(TB_COLOR))),
1958dcb2a10SAndre Fischer mpFTStyle(new FixedText(this, SVX_RES(FT_STYLE))),
19697e8a929SArmin Le Grand mpLBStyle(new ListBox(this, SVX_RES(LB_STYLE))),
1978dcb2a10SAndre Fischer mpFTTrancparency(new FixedText(this, SVX_RES(FT_TRANSPARENT))),
1988dcb2a10SAndre Fischer mpMFTransparent(new MetricField(this, SVX_RES(MF_TRANSPARENT))),
1998dcb2a10SAndre Fischer mpFTArrow(new FixedText(this, SVX_RES(FT_ARROW))),
2001137d172SArmin Le Grand mpLBStart(new ListBox(this, SVX_RES(LB_START))),
2011137d172SArmin Le Grand mpLBEnd(new ListBox(this, SVX_RES(LB_END))),
2028dcb2a10SAndre Fischer mpFTEdgeStyle(new FixedText(this, SVX_RES(FT_EDGESTYLE))),
2038dcb2a10SAndre Fischer mpLBEdgeStyle(new ListBox(this, SVX_RES(LB_EDGESTYLE))),
2048dcb2a10SAndre Fischer mpFTCapStyle(new FixedText(this, SVX_RES(FT_CAPSTYLE))),
2058dcb2a10SAndre Fischer mpLBCapStyle(new ListBox(this, SVX_RES(LB_CAPSTYLE))),
206a567bdc8SArmin Le Grand maStyleControl(SID_ATTR_LINE_STYLE, *pBindings, *this),
207a567bdc8SArmin Le Grand maDashControl (SID_ATTR_LINE_DASH, *pBindings, *this),
208a567bdc8SArmin Le Grand maWidthControl(SID_ATTR_LINE_WIDTH, *pBindings, *this),
209a567bdc8SArmin Le Grand maColorControl(SID_ATTR_LINE_COLOR, *pBindings, *this),
210a567bdc8SArmin Le Grand maStartControl(SID_ATTR_LINE_START, *pBindings, *this),
211a567bdc8SArmin Le Grand maEndControl(SID_ATTR_LINE_END, *pBindings, *this),
212a567bdc8SArmin Le Grand maLineEndListControl(SID_LINEEND_LIST, *pBindings, *this),
21397e8a929SArmin Le Grand maLineStyleListControl(SID_DASH_LIST, *pBindings, *this),
214a567bdc8SArmin Le Grand maTransControl(SID_ATTR_LINE_TRANSPARENCE, *pBindings, *this),
215a567bdc8SArmin Le Grand maEdgeStyle(SID_ATTR_LINE_JOINT, *pBindings, *this),
216a567bdc8SArmin Le Grand maCapStyle(SID_ATTR_LINE_CAP, *pBindings, *this),
2178dcb2a10SAndre Fischer maColor(COL_BLACK),
2188dcb2a10SAndre Fischer mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_LINE_COLOR, TBI_COLOR, mpTBColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)),
2198dcb2a10SAndre Fischer mpStyleItem(),
2208dcb2a10SAndre Fischer mpDashItem(),
2218dcb2a10SAndre Fischer mnTrans(0),
2228dcb2a10SAndre Fischer meMapUnit(SFX_MAPUNIT_MM),
2238dcb2a10SAndre Fischer mnWidthCoreValue(0),
224c7be74b1SArmin Le Grand maLineEndList(),
225c7be74b1SArmin Le Grand maLineStyleList(),
2268dcb2a10SAndre Fischer mpStartItem(0),
2278dcb2a10SAndre Fischer mpEndItem(0),
2288dcb2a10SAndre Fischer maColorPopup(this, ::boost::bind(&LinePropertyPanel::CreateColorPopupControl, this, _1)),
2298dcb2a10SAndre Fischer maLineWidthPopup(this, ::boost::bind(&LinePropertyPanel::CreateLineWidthPopupControl, this, _1)),
2308dcb2a10SAndre Fischer maIMGColor(SVX_RES(IMG_COLOR)),
2318dcb2a10SAndre Fischer maIMGNone(SVX_RES(IMG_NONE_ICON)),
2328dcb2a10SAndre Fischer mpIMGWidthIcon(),
2338dcb2a10SAndre Fischer mpIMGWidthIconH(),
2348dcb2a10SAndre Fischer mxFrame(rxFrame),
2358dcb2a10SAndre Fischer mpBindings(pBindings),
2368dcb2a10SAndre Fischer mbColorAvailable(true),
237*6a606da0SAndre Fischer mbWidthValuable(true),
238*6a606da0SAndre Fischer maLayouter(*this)
2398dcb2a10SAndre Fischer {
2408dcb2a10SAndre Fischer Initialize();
2418dcb2a10SAndre Fischer FreeResource();
242*6a606da0SAndre Fischer
243*6a606da0SAndre Fischer // Setup the grid layouter.
244*6a606da0SAndre Fischer const sal_Int32 nMappedToolBoxWidth (Layouter::MapWidth(*this, TOOLBOX_WIDTH));
245*6a606da0SAndre Fischer
246*6a606da0SAndre Fischer maLayouter.GetCell(0,0).SetControl(*mpFTWidth);
247*6a606da0SAndre Fischer maLayouter.GetCell(1,0).SetControl(*mpTBWidthBackground).SetFixedWidth();
248*6a606da0SAndre Fischer
249*6a606da0SAndre Fischer maLayouter.GetCell(0,2).SetControl(*mpFTColor);
250*6a606da0SAndre Fischer maLayouter.GetCell(1,2).SetControl(*mpTBColorBackground).SetFixedWidth();
251*6a606da0SAndre Fischer
252*6a606da0SAndre Fischer maLayouter.GetCell(2,0).SetControl(*mpFTStyle);
253*6a606da0SAndre Fischer maLayouter.GetCell(3,0).SetControl(*mpLBStyle);
254*6a606da0SAndre Fischer
255*6a606da0SAndre Fischer maLayouter.GetCell(2,2).SetControl(*mpFTTrancparency);
256*6a606da0SAndre Fischer maLayouter.GetCell(3,2).SetControl(*mpMFTransparent);
257*6a606da0SAndre Fischer
258*6a606da0SAndre Fischer maLayouter.GetCell(4,0).SetControl(*mpFTArrow).SetGridWidth(3);
259*6a606da0SAndre Fischer maLayouter.GetCell(5,0).SetControl(*mpLBStart);
260*6a606da0SAndre Fischer maLayouter.GetCell(5,2).SetControl(*mpLBEnd);
261*6a606da0SAndre Fischer
262*6a606da0SAndre Fischer maLayouter.GetCell(6,0).SetControl(*mpFTEdgeStyle);
263*6a606da0SAndre Fischer maLayouter.GetCell(7,0).SetControl(*mpLBEdgeStyle);
264*6a606da0SAndre Fischer
265*6a606da0SAndre Fischer maLayouter.GetCell(6,2).SetControl(*mpFTCapStyle);
266*6a606da0SAndre Fischer maLayouter.GetCell(7,2).SetControl(*mpLBCapStyle);
267*6a606da0SAndre Fischer
268*6a606da0SAndre Fischer maLayouter.GetColumn(0)
269*6a606da0SAndre Fischer .SetWeight(1)
270*6a606da0SAndre Fischer .SetLeftPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL))
271*6a606da0SAndre Fischer .SetMinimumWidth(nMappedToolBoxWidth);
272*6a606da0SAndre Fischer maLayouter.GetColumn(1)
273*6a606da0SAndre Fischer .SetWeight(0)
274*6a606da0SAndre Fischer .SetMinimumWidth(Layouter::MapWidth(*this, CONTROL_SPACING_HORIZONTAL));
275*6a606da0SAndre Fischer maLayouter.GetColumn(2)
276*6a606da0SAndre Fischer .SetWeight(1)
277*6a606da0SAndre Fischer .SetRightPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL))
278*6a606da0SAndre Fischer .SetMinimumWidth(nMappedToolBoxWidth);
279*6a606da0SAndre Fischer
280*6a606da0SAndre Fischer // Make controls that display text handle short widths more
281*6a606da0SAndre Fischer // graceful.
282*6a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpFTWidth);
283*6a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpFTColor);
284*6a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpFTStyle);
285*6a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpFTTrancparency);
286*6a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpFTArrow);
287*6a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpFTEdgeStyle);
288*6a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpFTCapStyle);
2898dcb2a10SAndre Fischer }
2908dcb2a10SAndre Fischer
2918dcb2a10SAndre Fischer
2928dcb2a10SAndre Fischer
~LinePropertyPanel()2938dcb2a10SAndre Fischer LinePropertyPanel::~LinePropertyPanel()
2948dcb2a10SAndre Fischer {
2958dcb2a10SAndre Fischer // Destroy the toolboxes, then their background windows.
2968dcb2a10SAndre Fischer mpTBWidth.reset();
2978dcb2a10SAndre Fischer mpTBColor.reset();
29897e8a929SArmin Le Grand
2998dcb2a10SAndre Fischer mpTBWidthBackground.reset();
3008dcb2a10SAndre Fischer mpTBColorBackground.reset();
3018dcb2a10SAndre Fischer }
3028dcb2a10SAndre Fischer
3038dcb2a10SAndre Fischer
3048dcb2a10SAndre Fischer
Initialize()3058dcb2a10SAndre Fischer void LinePropertyPanel::Initialize()
3068dcb2a10SAndre Fischer {
30737fee4fdSAndre Fischer mpFTWidth->SetBackground(Wallpaper());
30837fee4fdSAndre Fischer mpFTColor->SetBackground(Wallpaper());
30937fee4fdSAndre Fischer mpFTStyle->SetBackground(Wallpaper());
31037fee4fdSAndre Fischer mpFTTrancparency->SetBackground(Wallpaper());
31137fee4fdSAndre Fischer mpFTArrow->SetBackground(Wallpaper());
31237fee4fdSAndre Fischer mpFTEdgeStyle->SetBackground(Wallpaper());
31337fee4fdSAndre Fischer mpFTCapStyle->SetBackground(Wallpaper());
31437fee4fdSAndre Fischer
3158dcb2a10SAndre Fischer mpIMGWidthIcon.reset(new Image[8]);
3162d10cb3dSArmin Le Grand mpIMGWidthIcon[0] = Image(SVX_RES(IMG_WIDTH1_ICON));
3172d10cb3dSArmin Le Grand mpIMGWidthIcon[1] = Image(SVX_RES(IMG_WIDTH2_ICON));
3182d10cb3dSArmin Le Grand mpIMGWidthIcon[2] = Image(SVX_RES(IMG_WIDTH3_ICON));
3192d10cb3dSArmin Le Grand mpIMGWidthIcon[3] = Image(SVX_RES(IMG_WIDTH4_ICON));
3202d10cb3dSArmin Le Grand mpIMGWidthIcon[4] = Image(SVX_RES(IMG_WIDTH5_ICON));
3212d10cb3dSArmin Le Grand mpIMGWidthIcon[5] = Image(SVX_RES(IMG_WIDTH6_ICON));
3222d10cb3dSArmin Le Grand mpIMGWidthIcon[6] = Image(SVX_RES(IMG_WIDTH7_ICON));
3232d10cb3dSArmin Le Grand mpIMGWidthIcon[7] = Image(SVX_RES(IMG_WIDTH8_ICON));
3242d10cb3dSArmin Le Grand
3252d10cb3dSArmin Le Grand //high contrast
3268dcb2a10SAndre Fischer mpIMGWidthIconH.reset(new Image[8]);
3272d10cb3dSArmin Le Grand mpIMGWidthIconH[0] = Image(SVX_RES(IMG_WIDTH1_ICON_H));
3282d10cb3dSArmin Le Grand mpIMGWidthIconH[1] = Image(SVX_RES(IMG_WIDTH2_ICON_H));
3292d10cb3dSArmin Le Grand mpIMGWidthIconH[2] = Image(SVX_RES(IMG_WIDTH3_ICON_H));
3302d10cb3dSArmin Le Grand mpIMGWidthIconH[3] = Image(SVX_RES(IMG_WIDTH4_ICON_H));
3312d10cb3dSArmin Le Grand mpIMGWidthIconH[4] = Image(SVX_RES(IMG_WIDTH5_ICON_H));
3322d10cb3dSArmin Le Grand mpIMGWidthIconH[5] = Image(SVX_RES(IMG_WIDTH6_ICON_H));
3332d10cb3dSArmin Le Grand mpIMGWidthIconH[6] = Image(SVX_RES(IMG_WIDTH7_ICON_H));
3342d10cb3dSArmin Le Grand mpIMGWidthIconH[7] = Image(SVX_RES(IMG_WIDTH8_ICON_H));
3352d10cb3dSArmin Le Grand
3362d10cb3dSArmin Le Grand meMapUnit = maWidthControl.GetCoreMetric();
3372d10cb3dSArmin Le Grand
3382d10cb3dSArmin Le Grand mpTBColor->SetItemImage(TBI_COLOR, maIMGColor);
3392d10cb3dSArmin Le Grand Size aTbxSize( mpTBColor->CalcWindowSizePixel() );
3402d10cb3dSArmin Le Grand mpTBColor->SetOutputSizePixel( aTbxSize );
3412d10cb3dSArmin Le Grand mpTBColor->SetItemBits( TBI_COLOR, mpTBColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY );
3422d10cb3dSArmin Le Grand mpTBColor->SetQuickHelpText(TBI_COLOR,String(SVX_RES(STR_QH_TB_COLOR))); //Add
3432d10cb3dSArmin Le Grand mpTBColor->SetBackground(Wallpaper());
3442d10cb3dSArmin Le Grand mpTBColor->SetPaintTransparent(true);
3452d10cb3dSArmin Le Grand Link aLink = LINK(this, LinePropertyPanel, ToolboxColorSelectHdl);
3462d10cb3dSArmin Le Grand mpTBColor->SetDropdownClickHdl ( aLink );
3472d10cb3dSArmin Le Grand mpTBColor->SetSelectHdl ( aLink );
3482d10cb3dSArmin Le Grand
3492d10cb3dSArmin Le Grand FillLineStyleList();
3502d10cb3dSArmin Le Grand SelectLineStyle();
3512d10cb3dSArmin Le Grand aLink = LINK( this, LinePropertyPanel, ChangeLineStyleHdl );
3522d10cb3dSArmin Le Grand mpLBStyle->SetSelectHdl( aLink );
3532d10cb3dSArmin Le Grand mpLBStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Style")));
354a68b38dfSArmin Le Grand mpLBStyle->AdaptDropDownLineCountToMaximum();
3558dcb2a10SAndre Fischer
3562d10cb3dSArmin Le Grand mpTBWidth->SetItemImage(TBI_WIDTH, mpIMGWidthIcon[0]);
3572d10cb3dSArmin Le Grand aTbxSize = mpTBWidth->CalcWindowSizePixel() ;
3582d10cb3dSArmin Le Grand mpTBWidth->SetOutputSizePixel( aTbxSize );
3592d10cb3dSArmin Le Grand mpTBWidth->SetItemBits( TBI_WIDTH, mpTBWidth->GetItemBits( TBI_WIDTH ) | TIB_DROPDOWNONLY );
3602d10cb3dSArmin Le Grand mpTBWidth->SetQuickHelpText(TBI_WIDTH,String(SVX_RES(STR_QH_TB_WIDTH))); //Add
3612d10cb3dSArmin Le Grand mpTBWidth->SetBackground(Wallpaper());
3622d10cb3dSArmin Le Grand mpTBWidth->SetPaintTransparent(true);
3632d10cb3dSArmin Le Grand aLink = LINK(this, LinePropertyPanel, ToolboxWidthSelectHdl);
3642d10cb3dSArmin Le Grand mpTBWidth->SetDropdownClickHdl ( aLink );
3652d10cb3dSArmin Le Grand mpTBWidth->SetSelectHdl ( aLink );
3662d10cb3dSArmin Le Grand
3672d10cb3dSArmin Le Grand FillLineEndList();
3682d10cb3dSArmin Le Grand SelectEndStyle(true);
3692d10cb3dSArmin Le Grand SelectEndStyle(false);
3702d10cb3dSArmin Le Grand aLink = LINK( this, LinePropertyPanel, ChangeStartHdl );
3712d10cb3dSArmin Le Grand mpLBStart->SetSelectHdl( aLink );
3722d10cb3dSArmin Le Grand mpLBStart->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Beginning Style"))); //wj acc
373a68b38dfSArmin Le Grand mpLBStart->AdaptDropDownLineCountToMaximum();
3742d10cb3dSArmin Le Grand aLink = LINK( this, LinePropertyPanel, ChangeEndHdl );
3752d10cb3dSArmin Le Grand mpLBEnd->SetSelectHdl( aLink );
3762d10cb3dSArmin Le Grand mpLBEnd->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Ending Style"))); //wj acc
377a68b38dfSArmin Le Grand mpLBEnd->AdaptDropDownLineCountToMaximum();
3788dcb2a10SAndre Fischer
3792d10cb3dSArmin Le Grand aLink = LINK(this, LinePropertyPanel, ChangeTransparentHdl);
3802d10cb3dSArmin Le Grand mpMFTransparent->SetModifyHdl(aLink);
3812d10cb3dSArmin Le Grand mpMFTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); //wj acc
3822d10cb3dSArmin Le Grand
3832d10cb3dSArmin Le Grand mpTBWidth->SetAccessibleRelationLabeledBy(mpFTWidth.get());
3842d10cb3dSArmin Le Grand mpTBColor->SetAccessibleRelationLabeledBy(mpFTColor.get());
38597e8a929SArmin Le Grand mpLBStyle->SetAccessibleRelationLabeledBy(mpFTStyle.get());
3862d10cb3dSArmin Le Grand mpMFTransparent->SetAccessibleRelationLabeledBy(mpFTTrancparency.get());
3872d10cb3dSArmin Le Grand mpLBStart->SetAccessibleRelationLabeledBy(mpFTArrow.get());
3882d10cb3dSArmin Le Grand mpLBEnd->SetAccessibleRelationLabeledBy(mpLBEnd.get());
3898dcb2a10SAndre Fischer
3908dcb2a10SAndre Fischer aLink = LINK( this, LinePropertyPanel, ChangeEdgeStyleHdl );
3918dcb2a10SAndre Fischer mpLBEdgeStyle->SetSelectHdl( aLink );
3928dcb2a10SAndre Fischer mpLBEdgeStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Corner Style")));
3938dcb2a10SAndre Fischer
3948dcb2a10SAndre Fischer aLink = LINK( this, LinePropertyPanel, ChangeCapStyleHdl );
3958dcb2a10SAndre Fischer mpLBCapStyle->SetSelectHdl( aLink );
3968dcb2a10SAndre Fischer mpLBCapStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Cap Style")));
3978dcb2a10SAndre Fischer }
3988dcb2a10SAndre Fischer
3998dcb2a10SAndre Fischer
4008dcb2a10SAndre Fischer
SetupIcons(void)4018dcb2a10SAndre Fischer void LinePropertyPanel::SetupIcons(void)
4028dcb2a10SAndre Fischer {
4038dcb2a10SAndre Fischer if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
4048dcb2a10SAndre Fischer {
4058dcb2a10SAndre Fischer // todo
4068dcb2a10SAndre Fischer }
4078dcb2a10SAndre Fischer else
4088dcb2a10SAndre Fischer {
4098dcb2a10SAndre Fischer // todo
4108dcb2a10SAndre Fischer }
4118dcb2a10SAndre Fischer }
4128dcb2a10SAndre Fischer
4138dcb2a10SAndre Fischer
4148dcb2a10SAndre Fischer
Create(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)4158dcb2a10SAndre Fischer LinePropertyPanel* LinePropertyPanel::Create (
4168dcb2a10SAndre Fischer Window* pParent,
4178dcb2a10SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame,
4188dcb2a10SAndre Fischer SfxBindings* pBindings)
4198dcb2a10SAndre Fischer {
4208dcb2a10SAndre Fischer if (pParent == NULL)
4218dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no parent Window given to LinePropertyPanel::Create"), NULL, 0);
4228dcb2a10SAndre Fischer if ( ! rxFrame.is())
4238dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no XFrame given to LinePropertyPanel::Create"), NULL, 1);
4248dcb2a10SAndre Fischer if (pBindings == NULL)
4258dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no SfxBindings given to LinePropertyPanel::Create"), NULL, 2);
4268dcb2a10SAndre Fischer
4278dcb2a10SAndre Fischer return new LinePropertyPanel(
4288dcb2a10SAndre Fischer pParent,
4298dcb2a10SAndre Fischer rxFrame,
4308dcb2a10SAndre Fischer pBindings);
4318dcb2a10SAndre Fischer }
4328dcb2a10SAndre Fischer
4338dcb2a10SAndre Fischer
4348dcb2a10SAndre Fischer
43537fee4fdSAndre Fischer
DataChanged(const DataChangedEvent & rEvent)4368dcb2a10SAndre Fischer void LinePropertyPanel::DataChanged(
4378dcb2a10SAndre Fischer const DataChangedEvent& rEvent)
4388dcb2a10SAndre Fischer {
4398dcb2a10SAndre Fischer (void)rEvent;
4408dcb2a10SAndre Fischer
4418dcb2a10SAndre Fischer SetupIcons();
4428dcb2a10SAndre Fischer }
4438dcb2a10SAndre Fischer
4448dcb2a10SAndre Fischer
4458dcb2a10SAndre Fischer
4468dcb2a10SAndre Fischer
NotifyItemUpdate(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState,const bool bIsEnabled)4478dcb2a10SAndre Fischer void LinePropertyPanel::NotifyItemUpdate(
4488dcb2a10SAndre Fischer sal_uInt16 nSID,
4498dcb2a10SAndre Fischer SfxItemState eState,
45045da7d5eSAndre Fischer const SfxPoolItem* pState,
45145da7d5eSAndre Fischer const bool bIsEnabled)
4528dcb2a10SAndre Fischer {
45345da7d5eSAndre Fischer (void)bIsEnabled;
4542d10cb3dSArmin Le Grand const bool bDisabled(SFX_ITEM_DISABLED == eState);
45545da7d5eSAndre Fischer
4562d10cb3dSArmin Le Grand switch(nSID)
4572d10cb3dSArmin Le Grand {
4582d10cb3dSArmin Le Grand case SID_ATTR_LINE_COLOR:
4598dcb2a10SAndre Fischer {
4602d10cb3dSArmin Le Grand if(bDisabled)
4612d10cb3dSArmin Le Grand {
4622d10cb3dSArmin Le Grand mpFTColor->Disable();
4632d10cb3dSArmin Le Grand mpTBColor->Disable();
4642d10cb3dSArmin Le Grand }
4652d10cb3dSArmin Le Grand else
4662d10cb3dSArmin Le Grand {
4672d10cb3dSArmin Le Grand mpFTColor->Enable();
4682d10cb3dSArmin Le Grand mpTBColor->Enable();
4692d10cb3dSArmin Le Grand }
4702d10cb3dSArmin Le Grand
4712d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT)
4722d10cb3dSArmin Le Grand {
4738dcb2a10SAndre Fischer const XLineColorItem* pItem = dynamic_cast< const XLineColorItem* >(pState);
4742d10cb3dSArmin Le Grand if(pItem)
4752d10cb3dSArmin Le Grand {
4762d10cb3dSArmin Le Grand maColor = pItem->GetColorValue();
4772d10cb3dSArmin Le Grand mbColorAvailable = true;
4782d10cb3dSArmin Le Grand mpColorUpdater->Update(maColor);
4792d10cb3dSArmin Le Grand break;
4802d10cb3dSArmin Le Grand }
4812d10cb3dSArmin Le Grand }
4828dcb2a10SAndre Fischer
4832d10cb3dSArmin Le Grand mbColorAvailable = false;
4842d10cb3dSArmin Le Grand mpColorUpdater->Update(COL_WHITE);
4852d10cb3dSArmin Le Grand break;
4868dcb2a10SAndre Fischer }
4872d10cb3dSArmin Le Grand case SID_ATTR_LINE_DASH:
4882d10cb3dSArmin Le Grand case SID_ATTR_LINE_STYLE:
4898dcb2a10SAndre Fischer {
4902d10cb3dSArmin Le Grand if(bDisabled)
4912d10cb3dSArmin Le Grand {
4922d10cb3dSArmin Le Grand mpFTStyle->Disable();
49397e8a929SArmin Le Grand mpLBStyle->Disable();
4942d10cb3dSArmin Le Grand }
4952d10cb3dSArmin Le Grand else
4962d10cb3dSArmin Le Grand {
4972d10cb3dSArmin Le Grand mpFTStyle->Enable();
49897e8a929SArmin Le Grand mpLBStyle->Enable();
4992d10cb3dSArmin Le Grand }
5008dcb2a10SAndre Fischer
5012d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT)
5022d10cb3dSArmin Le Grand {
5032d10cb3dSArmin Le Grand if(nSID == SID_ATTR_LINE_STYLE)
5042d10cb3dSArmin Le Grand {
5052d10cb3dSArmin Le Grand const XLineStyleItem* pItem = dynamic_cast< const XLineStyleItem* >(pState);
5068dcb2a10SAndre Fischer
5072d10cb3dSArmin Le Grand if(pItem)
5082d10cb3dSArmin Le Grand {
5092d10cb3dSArmin Le Grand mpStyleItem.reset(pState ? (XLineStyleItem*)pItem->Clone() : 0);
5102d10cb3dSArmin Le Grand }
5112d10cb3dSArmin Le Grand }
5122d10cb3dSArmin Le Grand else // if(nSID == SID_ATTR_LINE_DASH)
5132d10cb3dSArmin Le Grand {
5142d10cb3dSArmin Le Grand const XLineDashItem* pItem = dynamic_cast< const XLineDashItem* >(pState);
5152d10cb3dSArmin Le Grand
5162d10cb3dSArmin Le Grand if(pItem)
5172d10cb3dSArmin Le Grand {
5182d10cb3dSArmin Le Grand mpDashItem.reset(pState ? (XLineDashItem*)pItem->Clone() : 0);
5192d10cb3dSArmin Le Grand }
5202d10cb3dSArmin Le Grand }
5212d10cb3dSArmin Le Grand }
5222d10cb3dSArmin Le Grand else
5232d10cb3dSArmin Le Grand {
5242d10cb3dSArmin Le Grand if(nSID == SID_ATTR_LINE_STYLE)
5252d10cb3dSArmin Le Grand {
5262d10cb3dSArmin Le Grand mpStyleItem.reset(0);
5272d10cb3dSArmin Le Grand }
5282d10cb3dSArmin Le Grand else
5292d10cb3dSArmin Le Grand {
5302d10cb3dSArmin Le Grand mpDashItem.reset(0);
5312d10cb3dSArmin Le Grand }
5322d10cb3dSArmin Le Grand }
5332d10cb3dSArmin Le Grand
5342d10cb3dSArmin Le Grand SelectLineStyle();
5352d10cb3dSArmin Le Grand break;
5368dcb2a10SAndre Fischer }
5372d10cb3dSArmin Le Grand case SID_ATTR_LINE_TRANSPARENCE:
5388dcb2a10SAndre Fischer {
5392d10cb3dSArmin Le Grand if(bDisabled)
5402d10cb3dSArmin Le Grand {
5412d10cb3dSArmin Le Grand mpFTTrancparency->Disable();
5422d10cb3dSArmin Le Grand mpMFTransparent->Disable();
5432d10cb3dSArmin Le Grand }
5442d10cb3dSArmin Le Grand else
5452d10cb3dSArmin Le Grand {
5462d10cb3dSArmin Le Grand mpFTTrancparency->Enable();
5472d10cb3dSArmin Le Grand mpMFTransparent->Enable();
5482d10cb3dSArmin Le Grand }
5492d10cb3dSArmin Le Grand
5502d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT)
5512d10cb3dSArmin Le Grand {
5528dcb2a10SAndre Fischer const XLineTransparenceItem* pItem = dynamic_cast< const XLineTransparenceItem* >(pState);
5538dcb2a10SAndre Fischer
5542d10cb3dSArmin Le Grand if(pItem)
5552d10cb3dSArmin Le Grand {
5562d10cb3dSArmin Le Grand mnTrans = pItem->GetValue();
5572d10cb3dSArmin Le Grand mpMFTransparent->SetValue(mnTrans);
5582d10cb3dSArmin Le Grand break;
5592d10cb3dSArmin Le Grand }
5602d10cb3dSArmin Le Grand }
5612d10cb3dSArmin Le Grand
5622d10cb3dSArmin Le Grand mpMFTransparent->SetValue(0);//add
5632d10cb3dSArmin Le Grand mpMFTransparent->SetText(String());
5642d10cb3dSArmin Le Grand break;
5658dcb2a10SAndre Fischer }
5662d10cb3dSArmin Le Grand case SID_ATTR_LINE_WIDTH:
5678dcb2a10SAndre Fischer {
5682d10cb3dSArmin Le Grand if(bDisabled)
5692d10cb3dSArmin Le Grand {
5702d10cb3dSArmin Le Grand mpTBWidth->Disable();
5712d10cb3dSArmin Le Grand mpFTWidth->Disable();
5722d10cb3dSArmin Le Grand }
5732d10cb3dSArmin Le Grand else
5742d10cb3dSArmin Le Grand {
5752d10cb3dSArmin Le Grand mpTBWidth->Enable();
5762d10cb3dSArmin Le Grand mpFTWidth->Enable();
5772d10cb3dSArmin Le Grand }
5782d10cb3dSArmin Le Grand
5792d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT)
5802d10cb3dSArmin Le Grand {
5818dcb2a10SAndre Fischer const XLineWidthItem* pItem = dynamic_cast< const XLineWidthItem* >(pState);
5828dcb2a10SAndre Fischer
5832d10cb3dSArmin Le Grand if(pItem)
5842d10cb3dSArmin Le Grand {
5852d10cb3dSArmin Le Grand mnWidthCoreValue = pItem->GetValue();
5862d10cb3dSArmin Le Grand mbWidthValuable = true;
5872d10cb3dSArmin Le Grand SetWidthIcon();
5882d10cb3dSArmin Le Grand break;
5892d10cb3dSArmin Le Grand }
5902d10cb3dSArmin Le Grand }
5912d10cb3dSArmin Le Grand
5922d10cb3dSArmin Le Grand mbWidthValuable = false;
5932d10cb3dSArmin Le Grand SetWidthIcon();
5942d10cb3dSArmin Le Grand break;
5958dcb2a10SAndre Fischer }
5962d10cb3dSArmin Le Grand case SID_ATTR_LINE_START:
5978dcb2a10SAndre Fischer {
5982d10cb3dSArmin Le Grand if(bDisabled)
5992d10cb3dSArmin Le Grand {
6002d10cb3dSArmin Le Grand mpFTArrow->Disable();
6012d10cb3dSArmin Le Grand mpLBStart->Disable();
6022d10cb3dSArmin Le Grand }
6032d10cb3dSArmin Le Grand else
6042d10cb3dSArmin Le Grand {
6052d10cb3dSArmin Le Grand mpFTArrow->Enable();
6062d10cb3dSArmin Le Grand mpLBStart->Enable();
6072d10cb3dSArmin Le Grand }
6088dcb2a10SAndre Fischer
6092d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT)
6102d10cb3dSArmin Le Grand {
611a567bdc8SArmin Le Grand const XLineStartItem* pItem = dynamic_cast< const XLineStartItem* >(pState);
612a567bdc8SArmin Le Grand
613a567bdc8SArmin Le Grand if(pItem)
614a567bdc8SArmin Le Grand {
6152d10cb3dSArmin Le Grand mpStartItem.reset(pItem ? (XLineStartItem*)pItem->Clone() : 0);
6162d10cb3dSArmin Le Grand SelectEndStyle(true);
617a567bdc8SArmin Le Grand break;
618a567bdc8SArmin Le Grand }
6192d10cb3dSArmin Le Grand }
620a567bdc8SArmin Le Grand
6212d10cb3dSArmin Le Grand mpStartItem.reset(0);
6222d10cb3dSArmin Le Grand SelectEndStyle(true);
6232d10cb3dSArmin Le Grand break;
6248dcb2a10SAndre Fischer }
6252d10cb3dSArmin Le Grand case SID_ATTR_LINE_END:
6268dcb2a10SAndre Fischer {
6272d10cb3dSArmin Le Grand if(bDisabled)
6282d10cb3dSArmin Le Grand {
6292d10cb3dSArmin Le Grand mpFTArrow->Disable();
6302d10cb3dSArmin Le Grand mpLBEnd->Disable();
6312d10cb3dSArmin Le Grand }
6322d10cb3dSArmin Le Grand else
6332d10cb3dSArmin Le Grand {
6342d10cb3dSArmin Le Grand mpFTArrow->Enable();
6352d10cb3dSArmin Le Grand mpLBEnd->Enable();
6362d10cb3dSArmin Le Grand }
6378dcb2a10SAndre Fischer
6382d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT)
6392d10cb3dSArmin Le Grand {
640a567bdc8SArmin Le Grand const XLineEndItem* pItem = dynamic_cast< const XLineEndItem* >(pState);
641a567bdc8SArmin Le Grand
642a567bdc8SArmin Le Grand if(pItem)
643a567bdc8SArmin Le Grand {
6442d10cb3dSArmin Le Grand mpEndItem.reset(pItem ? (XLineEndItem*)pItem->Clone() : 0);
6452d10cb3dSArmin Le Grand SelectEndStyle(false);
646a567bdc8SArmin Le Grand break;
647a567bdc8SArmin Le Grand }
6482d10cb3dSArmin Le Grand }
649a567bdc8SArmin Le Grand
6502d10cb3dSArmin Le Grand mpEndItem.reset(0);
6512d10cb3dSArmin Le Grand SelectEndStyle(false);
6522d10cb3dSArmin Le Grand break;
6538dcb2a10SAndre Fischer }
6542d10cb3dSArmin Le Grand case SID_LINEEND_LIST:
6558dcb2a10SAndre Fischer {
6562d10cb3dSArmin Le Grand FillLineEndList();
6572d10cb3dSArmin Le Grand SelectEndStyle(true);
6582d10cb3dSArmin Le Grand SelectEndStyle(false);
6592d10cb3dSArmin Le Grand break;
6608dcb2a10SAndre Fischer }
6612d10cb3dSArmin Le Grand case SID_DASH_LIST:
66297e8a929SArmin Le Grand {
6632d10cb3dSArmin Le Grand FillLineStyleList();
6642d10cb3dSArmin Le Grand SelectLineStyle();
6652d10cb3dSArmin Le Grand break;
66697e8a929SArmin Le Grand }
6678dcb2a10SAndre Fischer case SID_ATTR_LINE_JOINT:
6688dcb2a10SAndre Fischer {
6692d10cb3dSArmin Le Grand if(bDisabled)
6708dcb2a10SAndre Fischer {
6718dcb2a10SAndre Fischer mpLBEdgeStyle->Disable();
67247df10a6SArmin Le Grand mpFTEdgeStyle->Disable();
6738dcb2a10SAndre Fischer }
6748dcb2a10SAndre Fischer else
6758dcb2a10SAndre Fischer {
6768dcb2a10SAndre Fischer mpLBEdgeStyle->Enable();
67747df10a6SArmin Le Grand mpFTEdgeStyle->Enable();
6782d10cb3dSArmin Le Grand }
6792d10cb3dSArmin Le Grand
6802d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT)
6812d10cb3dSArmin Le Grand {
6828dcb2a10SAndre Fischer const XLineJointItem* pItem = dynamic_cast< const XLineJointItem* >(pState);
6838dcb2a10SAndre Fischer
6842d10cb3dSArmin Le Grand if(pItem)
6858dcb2a10SAndre Fischer {
6862d10cb3dSArmin Le Grand sal_uInt16 nEntryPos(0);
6872d10cb3dSArmin Le Grand
6888dcb2a10SAndre Fischer switch(pItem->GetValue())
6898dcb2a10SAndre Fischer {
6908dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_MIDDLE:
6918dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_ROUND:
6928dcb2a10SAndre Fischer {
6938dcb2a10SAndre Fischer nEntryPos = 1;
6948dcb2a10SAndre Fischer break;
6958dcb2a10SAndre Fischer }
6968dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_NONE:
6978dcb2a10SAndre Fischer {
6988dcb2a10SAndre Fischer nEntryPos = 2;
6998dcb2a10SAndre Fischer break;
7008dcb2a10SAndre Fischer }
7018dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_MITER:
7028dcb2a10SAndre Fischer {
7038dcb2a10SAndre Fischer nEntryPos = 3;
7048dcb2a10SAndre Fischer break;
7058dcb2a10SAndre Fischer }
7068dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_BEVEL:
7078dcb2a10SAndre Fischer {
7088dcb2a10SAndre Fischer nEntryPos = 4;
7098dcb2a10SAndre Fischer break;
7108dcb2a10SAndre Fischer }
7118dcb2a10SAndre Fischer
7128dcb2a10SAndre Fischer default:
7138dcb2a10SAndre Fischer break;
7148dcb2a10SAndre Fischer }
7158dcb2a10SAndre Fischer
7162d10cb3dSArmin Le Grand if(nEntryPos)
7172d10cb3dSArmin Le Grand {
7182d10cb3dSArmin Le Grand mpLBEdgeStyle->SelectEntryPos(nEntryPos - 1);
7192d10cb3dSArmin Le Grand break;
7202d10cb3dSArmin Le Grand }
7218dcb2a10SAndre Fischer }
7228dcb2a10SAndre Fischer }
7232d10cb3dSArmin Le Grand
7242d10cb3dSArmin Le Grand mpLBEdgeStyle->SetNoSelection();
7258dcb2a10SAndre Fischer break;
7268dcb2a10SAndre Fischer }
7278dcb2a10SAndre Fischer case SID_ATTR_LINE_CAP:
7288dcb2a10SAndre Fischer {
7292d10cb3dSArmin Le Grand if(bDisabled)
7308dcb2a10SAndre Fischer {
7318dcb2a10SAndre Fischer mpLBCapStyle->Disable();
73247df10a6SArmin Le Grand mpFTCapStyle->Disable();
7338dcb2a10SAndre Fischer }
7348dcb2a10SAndre Fischer else
7358dcb2a10SAndre Fischer {
7368dcb2a10SAndre Fischer mpLBCapStyle->Enable();
73747df10a6SArmin Le Grand mpLBCapStyle->Enable();
7382d10cb3dSArmin Le Grand }
7392d10cb3dSArmin Le Grand
7402d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT)
7412d10cb3dSArmin Le Grand {
7428dcb2a10SAndre Fischer const XLineCapItem* pItem = dynamic_cast< const XLineCapItem* >(pState);
7438dcb2a10SAndre Fischer
7442d10cb3dSArmin Le Grand if(pItem)
7458dcb2a10SAndre Fischer {
7462d10cb3dSArmin Le Grand sal_uInt16 nEntryPos(0);
7472d10cb3dSArmin Le Grand
7488dcb2a10SAndre Fischer switch(pItem->GetValue())
7498dcb2a10SAndre Fischer {
7508dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_BUTT:
7518dcb2a10SAndre Fischer {
7528dcb2a10SAndre Fischer nEntryPos = 1;
7538dcb2a10SAndre Fischer break;
7548dcb2a10SAndre Fischer }
7558dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_ROUND:
7568dcb2a10SAndre Fischer {
7578dcb2a10SAndre Fischer nEntryPos = 2;
7588dcb2a10SAndre Fischer break;
7598dcb2a10SAndre Fischer }
7608dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_SQUARE:
7618dcb2a10SAndre Fischer {
7628dcb2a10SAndre Fischer nEntryPos = 3;
7638dcb2a10SAndre Fischer break;
7648dcb2a10SAndre Fischer }
7658dcb2a10SAndre Fischer
7668dcb2a10SAndre Fischer default:
7678dcb2a10SAndre Fischer break;
7688dcb2a10SAndre Fischer }
7698dcb2a10SAndre Fischer
7702d10cb3dSArmin Le Grand if(nEntryPos)
7712d10cb3dSArmin Le Grand {
7722d10cb3dSArmin Le Grand mpLBCapStyle->SelectEntryPos(nEntryPos - 1);
7732d10cb3dSArmin Le Grand break;
7742d10cb3dSArmin Le Grand }
7758dcb2a10SAndre Fischer }
7768dcb2a10SAndre Fischer }
777d74d90d6SArmin Le Grand
778d74d90d6SArmin Le Grand mpLBCapStyle->SetNoSelection();
7798dcb2a10SAndre Fischer break;
7808dcb2a10SAndre Fischer }
7818dcb2a10SAndre Fischer }
7828dcb2a10SAndre Fischer }
7838dcb2a10SAndre Fischer
7848dcb2a10SAndre Fischer
7858dcb2a10SAndre Fischer
78645da7d5eSAndre Fischer
GetBindings()7878dcb2a10SAndre Fischer SfxBindings* LinePropertyPanel::GetBindings()
7888dcb2a10SAndre Fischer {
7898dcb2a10SAndre Fischer return mpBindings;
7908dcb2a10SAndre Fischer }
7918dcb2a10SAndre Fischer
7928dcb2a10SAndre Fischer
7938dcb2a10SAndre Fischer
IMPL_LINK(LinePropertyPanel,ImplPopupModeEndHdl,FloatingWindow *,EMPTYARG)7948dcb2a10SAndre Fischer IMPL_LINK( LinePropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
7958dcb2a10SAndre Fischer {
7962d10cb3dSArmin Le Grand return 0;
7978dcb2a10SAndre Fischer }
7988dcb2a10SAndre Fischer
7998dcb2a10SAndre Fischer
8008dcb2a10SAndre Fischer
8018dcb2a10SAndre Fischer
IMPL_LINK(LinePropertyPanel,ToolboxColorSelectHdl,ToolBox *,pToolBox)8028dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ToolboxColorSelectHdl,ToolBox*, pToolBox)
8038dcb2a10SAndre Fischer {
8042d10cb3dSArmin Le Grand sal_uInt16 nId = pToolBox->GetCurItemId();
8052d10cb3dSArmin Le Grand if(nId == TBI_COLOR)
8062d10cb3dSArmin Le Grand {
8078dcb2a10SAndre Fischer maColorPopup.Show(*pToolBox);
8088dcb2a10SAndre Fischer maColorPopup.SetCurrentColor(maColor, mbColorAvailable);
8092d10cb3dSArmin Le Grand }
8102d10cb3dSArmin Le Grand return 0;
8118dcb2a10SAndre Fischer }
8128dcb2a10SAndre Fischer
8138dcb2a10SAndre Fischer
8148dcb2a10SAndre Fischer
8158dcb2a10SAndre Fischer
8167134ea5bSPavel Janík IMPL_LINK(LinePropertyPanel, ChangeLineStyleHdl, ToolBox*, /* pToolBox */)
8178dcb2a10SAndre Fischer {
81897e8a929SArmin Le Grand const sal_uInt16 nPos(mpLBStyle->GetSelectEntryPos());
8198dcb2a10SAndre Fischer
82097e8a929SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBStyle->GetSavedValue())
82197e8a929SArmin Le Grand {
82297e8a929SArmin Le Grand if(0 == nPos)
82397e8a929SArmin Le Grand {
82497e8a929SArmin Le Grand // XLINE_NONE
82597e8a929SArmin Le Grand const XLineStyleItem aItem(XLINE_NONE);
82697e8a929SArmin Le Grand
82797e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L);
82897e8a929SArmin Le Grand }
82997e8a929SArmin Le Grand else if(1 == nPos)
83097e8a929SArmin Le Grand {
83197e8a929SArmin Le Grand // XLINE_SOLID
83297e8a929SArmin Le Grand const XLineStyleItem aItem(XLINE_SOLID);
83397e8a929SArmin Le Grand
83497e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L);
83597e8a929SArmin Le Grand }
836c7be74b1SArmin Le Grand else if(maLineStyleList.get() && maLineStyleList->Count() > (long)(nPos - 2))
83797e8a929SArmin Le Grand {
83897e8a929SArmin Le Grand // XLINE_DASH
83997e8a929SArmin Le Grand const XLineStyleItem aItemA(XLINE_DASH);
840c7be74b1SArmin Le Grand const XDashEntry* pDashEntry = maLineStyleList->GetDash(nPos - 2);
841c3c0ed1bSArmin Le Grand OSL_ENSURE(pDashEntry, "OOps, got empty XDash from XDashList (!)");
842c3c0ed1bSArmin Le Grand const XLineDashItem aItemB(
843c3c0ed1bSArmin Le Grand pDashEntry ? pDashEntry->GetName() : String(),
844c3c0ed1bSArmin Le Grand pDashEntry ? pDashEntry->GetDash() : XDash());
84597e8a929SArmin Le Grand
84697e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItemA, 0L);
84797e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_DASH, SFX_CALLMODE_RECORD, &aItemB, 0L);
84897e8a929SArmin Le Grand }
84997e8a929SArmin Le Grand }
85097e8a929SArmin Le Grand
85197e8a929SArmin Le Grand return 0;
85297e8a929SArmin Le Grand }
8538dcb2a10SAndre Fischer
8548dcb2a10SAndre Fischer
8558dcb2a10SAndre Fischer
IMPL_LINK(LinePropertyPanel,ChangeStartHdl,void *,EMPTYARG)8568dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeStartHdl, void*, EMPTYARG)
8578dcb2a10SAndre Fischer {
8582d10cb3dSArmin Le Grand sal_uInt16 nPos = mpLBStart->GetSelectEntryPos();
8592d10cb3dSArmin Le Grand if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != mpLBStart->GetSavedValue() )
8602d10cb3dSArmin Le Grand {
8612d10cb3dSArmin Le Grand XLineStartItem* pItem = NULL;
8622d10cb3dSArmin Le Grand if( nPos == 0 )
8632d10cb3dSArmin Le Grand pItem = new XLineStartItem();
864c7be74b1SArmin Le Grand else if( maLineEndList.get() && maLineEndList->Count() > (long) ( nPos - 1 ) )
865c7be74b1SArmin Le Grand pItem = new XLineStartItem( mpLBStart->GetSelectEntry(),maLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() );
8662d10cb3dSArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINEEND_STYLE, SFX_CALLMODE_RECORD, pItem, 0L);
8672d10cb3dSArmin Le Grand delete pItem;
8682d10cb3dSArmin Le Grand }
8692d10cb3dSArmin Le Grand return 0;
8708dcb2a10SAndre Fischer }
8718dcb2a10SAndre Fischer
8728dcb2a10SAndre Fischer
8738dcb2a10SAndre Fischer
8748dcb2a10SAndre Fischer
IMPL_LINK(LinePropertyPanel,ChangeEndHdl,void *,EMPTYARG)8758dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeEndHdl, void*, EMPTYARG)
8768dcb2a10SAndre Fischer {
8772d10cb3dSArmin Le Grand sal_uInt16 nPos = mpLBEnd->GetSelectEntryPos();
8782d10cb3dSArmin Le Grand if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != mpLBEnd->GetSavedValue() )
8792d10cb3dSArmin Le Grand {
8802d10cb3dSArmin Le Grand XLineEndItem* pItem = NULL;
8812d10cb3dSArmin Le Grand if( nPos == 0 )
8822d10cb3dSArmin Le Grand pItem = new XLineEndItem();
883c7be74b1SArmin Le Grand else if( maLineEndList.get() && maLineEndList->Count() > (long) ( nPos - 1 ) )
884c7be74b1SArmin Le Grand pItem = new XLineEndItem( mpLBEnd->GetSelectEntry(), maLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() );
8852d10cb3dSArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINEEND_STYLE, SFX_CALLMODE_RECORD, pItem, 0L);
8862d10cb3dSArmin Le Grand delete pItem;
8872d10cb3dSArmin Le Grand }
8882d10cb3dSArmin Le Grand return 0;
8898dcb2a10SAndre Fischer }
8908dcb2a10SAndre Fischer
8918dcb2a10SAndre Fischer
8928dcb2a10SAndre Fischer
8938dcb2a10SAndre Fischer
IMPL_LINK(LinePropertyPanel,ChangeEdgeStyleHdl,void *,EMPTYARG)8948dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeEdgeStyleHdl, void*, EMPTYARG)
8958dcb2a10SAndre Fischer {
8968dcb2a10SAndre Fischer const sal_uInt16 nPos(mpLBEdgeStyle->GetSelectEntryPos());
8978dcb2a10SAndre Fischer
8988dcb2a10SAndre Fischer if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBEdgeStyle->GetSavedValue())
8998dcb2a10SAndre Fischer {
9008dcb2a10SAndre Fischer XLineJointItem* pItem = 0;
9018dcb2a10SAndre Fischer
9028dcb2a10SAndre Fischer switch(nPos)
9038dcb2a10SAndre Fischer {
9048dcb2a10SAndre Fischer case 0: // rounded
9058dcb2a10SAndre Fischer {
9068dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_ROUND);
9078dcb2a10SAndre Fischer break;
9088dcb2a10SAndre Fischer }
9098dcb2a10SAndre Fischer case 1: // none
9108dcb2a10SAndre Fischer {
9118dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_NONE);
9128dcb2a10SAndre Fischer break;
9138dcb2a10SAndre Fischer }
9148dcb2a10SAndre Fischer case 2: // mitered
9158dcb2a10SAndre Fischer {
9168dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_MITER);
9178dcb2a10SAndre Fischer break;
9188dcb2a10SAndre Fischer }
9198dcb2a10SAndre Fischer case 3: // beveled
9208dcb2a10SAndre Fischer {
9218dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_BEVEL);
9228dcb2a10SAndre Fischer break;
9238dcb2a10SAndre Fischer }
9248dcb2a10SAndre Fischer }
9258dcb2a10SAndre Fischer
9268dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_JOINT, SFX_CALLMODE_RECORD, pItem, 0L);
9278dcb2a10SAndre Fischer delete pItem;
9288dcb2a10SAndre Fischer }
9298dcb2a10SAndre Fischer return 0;
9308dcb2a10SAndre Fischer }
9318dcb2a10SAndre Fischer
9328dcb2a10SAndre Fischer
9338dcb2a10SAndre Fischer
9348dcb2a10SAndre Fischer
IMPL_LINK(LinePropertyPanel,ChangeCapStyleHdl,void *,EMPTYARG)9358dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeCapStyleHdl, void*, EMPTYARG)
9368dcb2a10SAndre Fischer {
9378dcb2a10SAndre Fischer const sal_uInt16 nPos(mpLBCapStyle->GetSelectEntryPos());
9388dcb2a10SAndre Fischer
9398dcb2a10SAndre Fischer if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBCapStyle->GetSavedValue())
9408dcb2a10SAndre Fischer {
9418dcb2a10SAndre Fischer XLineCapItem* pItem = 0;
9428dcb2a10SAndre Fischer
9438dcb2a10SAndre Fischer switch(nPos)
9448dcb2a10SAndre Fischer {
9458dcb2a10SAndre Fischer case 0: // flat
9468dcb2a10SAndre Fischer {
9478dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_BUTT);
9488dcb2a10SAndre Fischer break;
9498dcb2a10SAndre Fischer }
9508dcb2a10SAndre Fischer case 1: // round
9518dcb2a10SAndre Fischer {
9528dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_ROUND);
9538dcb2a10SAndre Fischer break;
9548dcb2a10SAndre Fischer }
9558dcb2a10SAndre Fischer case 2: // square
9568dcb2a10SAndre Fischer {
9578dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_SQUARE);
9588dcb2a10SAndre Fischer break;
9598dcb2a10SAndre Fischer }
9608dcb2a10SAndre Fischer }
9618dcb2a10SAndre Fischer
9628dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_CAP, SFX_CALLMODE_RECORD, pItem, 0L);
9638dcb2a10SAndre Fischer delete pItem;
9648dcb2a10SAndre Fischer }
9658dcb2a10SAndre Fischer return 0;
9668dcb2a10SAndre Fischer }
9678dcb2a10SAndre Fischer
9688dcb2a10SAndre Fischer
9698dcb2a10SAndre Fischer
9708dcb2a10SAndre Fischer
IMPL_LINK(LinePropertyPanel,ToolboxWidthSelectHdl,ToolBox *,pToolBox)9718dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ToolboxWidthSelectHdl,ToolBox*, pToolBox)
9728dcb2a10SAndre Fischer {
9732d10cb3dSArmin Le Grand if (pToolBox->GetCurItemId() == TBI_WIDTH)
9742d10cb3dSArmin Le Grand {
9752d10cb3dSArmin Le Grand maLineWidthPopup.SetWidthSelect(mnWidthCoreValue, mbWidthValuable, meMapUnit);
9768dcb2a10SAndre Fischer maLineWidthPopup.Show(*pToolBox);
9772d10cb3dSArmin Le Grand }
9782d10cb3dSArmin Le Grand return 0;
9798dcb2a10SAndre Fischer }
9808dcb2a10SAndre Fischer
9818dcb2a10SAndre Fischer
9828dcb2a10SAndre Fischer
9838dcb2a10SAndre Fischer
IMPL_LINK(LinePropertyPanel,ChangeTransparentHdl,void *,EMPTYARG)9848dcb2a10SAndre Fischer IMPL_LINK( LinePropertyPanel, ChangeTransparentHdl, void *, EMPTYARG )
9858dcb2a10SAndre Fischer {
9862d10cb3dSArmin Le Grand sal_uInt16 nVal = (sal_uInt16)mpMFTransparent->GetValue();
9872d10cb3dSArmin Le Grand XLineTransparenceItem aItem( nVal );
9888dcb2a10SAndre Fischer
9892d10cb3dSArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L);
9902d10cb3dSArmin Le Grand return( 0L );
9918dcb2a10SAndre Fischer }
9928dcb2a10SAndre Fischer
9938dcb2a10SAndre Fischer
9948dcb2a10SAndre Fischer
9958dcb2a10SAndre Fischer
996b7a56e95SArmin Le Grand namespace
997b7a56e95SArmin Le Grand {
GetTransparentColor(void)998b7a56e95SArmin Le Grand Color GetTransparentColor (void)
999b7a56e95SArmin Le Grand {
1000b7a56e95SArmin Le Grand return COL_TRANSPARENT;
1001b7a56e95SArmin Le Grand }
1002b7a56e95SArmin Le Grand } // end of anonymous namespace
1003b7a56e95SArmin Le Grand
CreateColorPopupControl(PopupContainer * pParent)10048dcb2a10SAndre Fischer PopupControl* LinePropertyPanel::CreateColorPopupControl (PopupContainer* pParent)
10058dcb2a10SAndre Fischer {
10068dcb2a10SAndre Fischer return new ColorControl(
10078dcb2a10SAndre Fischer pParent,
10088dcb2a10SAndre Fischer mpBindings,
10098dcb2a10SAndre Fischer SVX_RES(RID_POPUPPANEL_LINEPAGE_COLOR),
10108dcb2a10SAndre Fischer SVX_RES(VS_COLOR),
10118dcb2a10SAndre Fischer ::boost::bind(GetTransparentColor),
10128dcb2a10SAndre Fischer ::boost::bind(&LinePropertyPanel::SetColor, this, _1, _2),
10138dcb2a10SAndre Fischer pParent,
1014b7a56e95SArmin Le Grand 0);
10158dcb2a10SAndre Fischer }
10168dcb2a10SAndre Fischer
10178dcb2a10SAndre Fischer
10188dcb2a10SAndre Fischer
10198dcb2a10SAndre Fischer
CreateLineWidthPopupControl(PopupContainer * pParent)10208dcb2a10SAndre Fischer PopupControl* LinePropertyPanel::CreateLineWidthPopupControl (PopupContainer* pParent)
10218dcb2a10SAndre Fischer {
10228dcb2a10SAndre Fischer return new LineWidthControl(pParent, *this);
10238dcb2a10SAndre Fischer }
10248dcb2a10SAndre Fischer
10258dcb2a10SAndre Fischer
10268dcb2a10SAndre Fischer
10278dcb2a10SAndre Fischer
EndLineWidthPopupMode(void)10288dcb2a10SAndre Fischer void LinePropertyPanel::EndLineWidthPopupMode (void)
10298dcb2a10SAndre Fischer {
10308dcb2a10SAndre Fischer maLineWidthPopup.Hide();
10318dcb2a10SAndre Fischer }
10328dcb2a10SAndre Fischer
10338dcb2a10SAndre Fischer
10348dcb2a10SAndre Fischer
10358dcb2a10SAndre Fischer
Resize(void)1036*6a606da0SAndre Fischer void LinePropertyPanel::Resize (void)
1037*6a606da0SAndre Fischer {
1038*6a606da0SAndre Fischer maLayouter.Layout();
1039*6a606da0SAndre Fischer }
1040*6a606da0SAndre Fischer
1041*6a606da0SAndre Fischer
1042*6a606da0SAndre Fischer
1043*6a606da0SAndre Fischer
SetWidthIcon(int n)10448dcb2a10SAndre Fischer void LinePropertyPanel::SetWidthIcon(int n)
10458dcb2a10SAndre Fischer {
10462d10cb3dSArmin Le Grand if(n==0)
10472d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, maIMGNone);
10482d10cb3dSArmin Le Grand else
10492d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[n-1] : mpIMGWidthIcon[n-1]);
10508dcb2a10SAndre Fischer }
10518dcb2a10SAndre Fischer
10528dcb2a10SAndre Fischer
10538dcb2a10SAndre Fischer
SetWidthIcon()10548dcb2a10SAndre Fischer void LinePropertyPanel::SetWidthIcon()
10558dcb2a10SAndre Fischer {
10562d10cb3dSArmin Le Grand if(!mbWidthValuable)
10572d10cb3dSArmin Le Grand {
10582d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, maIMGNone);
10592d10cb3dSArmin Le Grand return;
10602d10cb3dSArmin Le Grand }
10612d10cb3dSArmin Le Grand
10622d10cb3dSArmin Le Grand long nVal = LogicToLogic(mnWidthCoreValue * 10,(MapUnit)meMapUnit , MAP_POINT);
10632d10cb3dSArmin Le Grand
10642d10cb3dSArmin Le Grand if(nVal <= 6)
10652d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[0] : mpIMGWidthIcon[0]);
10662d10cb3dSArmin Le Grand else if(nVal > 6 && nVal <= 9)
10672d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[1] : mpIMGWidthIcon[1]);
10682d10cb3dSArmin Le Grand else if(nVal > 9 && nVal <= 12)
10692d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[2] : mpIMGWidthIcon[2]);
10702d10cb3dSArmin Le Grand else if(nVal > 12 && nVal <= 19)
10712d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[3] : mpIMGWidthIcon[3]);
10722d10cb3dSArmin Le Grand else if(nVal > 19 && nVal <= 26)
10732d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[4] : mpIMGWidthIcon[4]);
10742d10cb3dSArmin Le Grand else if(nVal > 26 && nVal <= 37)
10752d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[5] : mpIMGWidthIcon[5]);
10762d10cb3dSArmin Le Grand else if(nVal > 37 && nVal <=52)
10772d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[6] : mpIMGWidthIcon[6]);
10782d10cb3dSArmin Le Grand else if(nVal > 52)
10792d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[7] : mpIMGWidthIcon[7]);
10808dcb2a10SAndre Fischer
10818dcb2a10SAndre Fischer }
10828dcb2a10SAndre Fischer
10838dcb2a10SAndre Fischer
10848dcb2a10SAndre Fischer
SetColor(const String & rsColorName,const Color aColor)10858dcb2a10SAndre Fischer void LinePropertyPanel::SetColor (
10868dcb2a10SAndre Fischer const String& rsColorName,
10878dcb2a10SAndre Fischer const Color aColor)
10888dcb2a10SAndre Fischer {
10898dcb2a10SAndre Fischer XLineColorItem aColorItem(rsColorName, aColor);
10908dcb2a10SAndre Fischer mpBindings->GetDispatcher()->Execute(SID_ATTR_LINE_COLOR, SFX_CALLMODE_RECORD, &aColorItem, 0L);
10918dcb2a10SAndre Fischer maColor = aColor;
10928dcb2a10SAndre Fischer }
10938dcb2a10SAndre Fischer
10948dcb2a10SAndre Fischer
10958dcb2a10SAndre Fischer
SetWidth(long nWidth)10968dcb2a10SAndre Fischer void LinePropertyPanel::SetWidth(long nWidth)
10978dcb2a10SAndre Fischer {
10988dcb2a10SAndre Fischer mnWidthCoreValue = nWidth;
10998dcb2a10SAndre Fischer mbWidthValuable = true;
11008dcb2a10SAndre Fischer }
11018dcb2a10SAndre Fischer
11028dcb2a10SAndre Fischer
11038dcb2a10SAndre Fischer
FillLineEndList()11048dcb2a10SAndre Fischer void LinePropertyPanel::FillLineEndList()
11058dcb2a10SAndre Fischer {
11062d10cb3dSArmin Le Grand SfxObjectShell* pSh = SfxObjectShell::Current();
11072d10cb3dSArmin Le Grand if ( pSh && pSh->GetItem( SID_LINEEND_LIST ) )
11082d10cb3dSArmin Le Grand {
11092d10cb3dSArmin Le Grand mpLBStart->Enable();
11102d10cb3dSArmin Le Grand SvxLineEndListItem aItem( *(const SvxLineEndListItem*)(pSh->GetItem( SID_LINEEND_LIST ) ) );
1111c7be74b1SArmin Le Grand maLineEndList = aItem.GetLineEndList();
1112a567bdc8SArmin Le Grand
1113c7be74b1SArmin Le Grand if(maLineEndList.get())
11142d10cb3dSArmin Le Grand {
1115c7be74b1SArmin Le Grand FillLineEndListBox(*mpLBStart, *mpLBEnd, maLineEndList);
11162d10cb3dSArmin Le Grand }
11172d10cb3dSArmin Le Grand
11182d10cb3dSArmin Le Grand mpLBStart->SelectEntryPos(0);
11192d10cb3dSArmin Le Grand mpLBEnd->SelectEntryPos(0);
11202d10cb3dSArmin Le Grand }
11212d10cb3dSArmin Le Grand else
11222d10cb3dSArmin Le Grand {
11232d10cb3dSArmin Le Grand mpLBStart->Disable();
11242d10cb3dSArmin Le Grand mpLBEnd->Disable();
11252d10cb3dSArmin Le Grand }
11268dcb2a10SAndre Fischer }
11278dcb2a10SAndre Fischer
11288dcb2a10SAndre Fischer
11298dcb2a10SAndre Fischer
FillLineStyleList()113097e8a929SArmin Le Grand void LinePropertyPanel::FillLineStyleList()
113197e8a929SArmin Le Grand {
11322d10cb3dSArmin Le Grand SfxObjectShell* pSh = SfxObjectShell::Current();
11332d10cb3dSArmin Le Grand if ( pSh && pSh->GetItem( SID_DASH_LIST ) )
11342d10cb3dSArmin Le Grand {
11352d10cb3dSArmin Le Grand mpLBStyle->Enable();
11362d10cb3dSArmin Le Grand SvxDashListItem aItem( *(const SvxDashListItem*)(pSh->GetItem( SID_DASH_LIST ) ) );
1137c7be74b1SArmin Le Grand maLineStyleList = aItem.GetDashList();
113897e8a929SArmin Le Grand
1139c7be74b1SArmin Le Grand if(maLineStyleList.get())
11402d10cb3dSArmin Le Grand {
1141c7be74b1SArmin Le Grand FillLineStyleListBox(*mpLBStyle, maLineStyleList);
11422d10cb3dSArmin Le Grand }
11432d10cb3dSArmin Le Grand
11442d10cb3dSArmin Le Grand mpLBStyle->SelectEntryPos(0);
11452d10cb3dSArmin Le Grand }
11462d10cb3dSArmin Le Grand else
11472d10cb3dSArmin Le Grand {
11482d10cb3dSArmin Le Grand mpLBStyle->Disable();
11492d10cb3dSArmin Le Grand }
115097e8a929SArmin Le Grand }
115197e8a929SArmin Le Grand
115297e8a929SArmin Le Grand
115397e8a929SArmin Le Grand
SelectLineStyle()115497e8a929SArmin Le Grand void LinePropertyPanel::SelectLineStyle()
115597e8a929SArmin Le Grand {
11562d10cb3dSArmin Le Grand if( !mpStyleItem.get() || !mpDashItem.get() )
11572d10cb3dSArmin Le Grand {
11582d10cb3dSArmin Le Grand mpLBStyle->SetNoSelection();
115947df10a6SArmin Le Grand mpLBStyle->Disable();
11602d10cb3dSArmin Le Grand return;
11612d10cb3dSArmin Le Grand }
116297e8a929SArmin Le Grand
116397e8a929SArmin Le Grand const XLineStyle eXLS(mpStyleItem ? (XLineStyle)mpStyleItem->GetValue() : XLINE_NONE);
11642d10cb3dSArmin Le Grand bool bSelected(false);
116597e8a929SArmin Le Grand
116697e8a929SArmin Le Grand switch(eXLS)
116797e8a929SArmin Le Grand {
116897e8a929SArmin Le Grand case XLINE_NONE:
116997e8a929SArmin Le Grand break;
117097e8a929SArmin Le Grand case XLINE_SOLID:
11712d10cb3dSArmin Le Grand mpLBStyle->SelectEntryPos(1);
11722d10cb3dSArmin Le Grand bSelected = true;
117397e8a929SArmin Le Grand break;
117497e8a929SArmin Le Grand default:
1175c7be74b1SArmin Le Grand if(mpDashItem && maLineStyleList.get())
11762d10cb3dSArmin Le Grand {
11772d10cb3dSArmin Le Grand const XDash& rDash = mpDashItem->GetDashValue();
1178c7be74b1SArmin Le Grand for(sal_Int32 a(0);!bSelected && a < maLineStyleList->Count(); a++)
11792d10cb3dSArmin Le Grand {
1180c7be74b1SArmin Le Grand XDashEntry* pEntry = maLineStyleList->GetDash(a);
11812d10cb3dSArmin Le Grand const XDash& rEntry = pEntry->GetDash();
11822d10cb3dSArmin Le Grand if(rDash == rEntry)
11832d10cb3dSArmin Le Grand {
11842d10cb3dSArmin Le Grand mpLBStyle->SelectEntryPos((sal_uInt16)a + 2);
11852d10cb3dSArmin Le Grand bSelected = true;
11862d10cb3dSArmin Le Grand }
11872d10cb3dSArmin Le Grand }
11882d10cb3dSArmin Le Grand }
118997e8a929SArmin Le Grand break;
119097e8a929SArmin Le Grand }
11912d10cb3dSArmin Le Grand
119297e8a929SArmin Le Grand if(!bSelected)
11932d10cb3dSArmin Le Grand mpLBStyle->SelectEntryPos( 0 );
119497e8a929SArmin Le Grand }
119597e8a929SArmin Le Grand
SelectEndStyle(bool bStart)11968dcb2a10SAndre Fischer void LinePropertyPanel::SelectEndStyle(bool bStart)
11978dcb2a10SAndre Fischer {
11982d10cb3dSArmin Le Grand sal_Bool bSelected(false);
11992d10cb3dSArmin Le Grand
12002d10cb3dSArmin Le Grand if(bStart)
12012d10cb3dSArmin Le Grand {
12022d10cb3dSArmin Le Grand if( !mpStartItem.get() )
12032d10cb3dSArmin Le Grand {
12042d10cb3dSArmin Le Grand mpLBStart->SetNoSelection();
120547df10a6SArmin Le Grand mpLBStart->Disable();
12062d10cb3dSArmin Le Grand return;
12072d10cb3dSArmin Le Grand }
12082d10cb3dSArmin Le Grand
1209c7be74b1SArmin Le Grand if(mpStartItem && maLineEndList.get())
12102d10cb3dSArmin Le Grand {
12112d10cb3dSArmin Le Grand const basegfx::B2DPolyPolygon& rItemPolygon = mpStartItem->GetLineStartValue();
1212c7be74b1SArmin Le Grand for(sal_Int32 a(0);!bSelected && a < maLineEndList->Count(); a++)
12132d10cb3dSArmin Le Grand {
1214c7be74b1SArmin Le Grand XLineEndEntry* pEntry = maLineEndList->GetLineEnd(a);
12152d10cb3dSArmin Le Grand const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd();
12162d10cb3dSArmin Le Grand if(rItemPolygon == rEntryPolygon)
12172d10cb3dSArmin Le Grand {
12182d10cb3dSArmin Le Grand mpLBStart->SelectEntryPos((sal_uInt16)a + 1);
12192d10cb3dSArmin Le Grand bSelected = true;
12202d10cb3dSArmin Le Grand }
12212d10cb3dSArmin Le Grand }
12222d10cb3dSArmin Le Grand }
12232d10cb3dSArmin Le Grand
12242d10cb3dSArmin Le Grand if(!bSelected)
12252d10cb3dSArmin Le Grand {
12262d10cb3dSArmin Le Grand mpLBStart->SelectEntryPos( 0 );
12272d10cb3dSArmin Le Grand }
12282d10cb3dSArmin Le Grand }
12292d10cb3dSArmin Le Grand else
12302d10cb3dSArmin Le Grand {
12312d10cb3dSArmin Le Grand if( !mpEndItem.get() )
12322d10cb3dSArmin Le Grand {
12332d10cb3dSArmin Le Grand mpLBEnd->SetNoSelection();
123447df10a6SArmin Le Grand mpLBEnd->Disable();
12352d10cb3dSArmin Le Grand return;
12362d10cb3dSArmin Le Grand }
12372d10cb3dSArmin Le Grand
1238c7be74b1SArmin Le Grand if(mpEndItem && maLineEndList.get())
12392d10cb3dSArmin Le Grand {
12402d10cb3dSArmin Le Grand const basegfx::B2DPolyPolygon& rItemPolygon = mpEndItem->GetLineEndValue();
1241c7be74b1SArmin Le Grand for(sal_Int32 a(0);!bSelected && a < maLineEndList->Count(); a++)
12422d10cb3dSArmin Le Grand {
1243c7be74b1SArmin Le Grand XLineEndEntry* pEntry = maLineEndList->GetLineEnd(a);
12442d10cb3dSArmin Le Grand const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd();
12452d10cb3dSArmin Le Grand if(rItemPolygon == rEntryPolygon)
12462d10cb3dSArmin Le Grand {
12472d10cb3dSArmin Le Grand mpLBEnd->SelectEntryPos((sal_uInt16)a + 1);
12482d10cb3dSArmin Le Grand bSelected = true;
12492d10cb3dSArmin Le Grand }
12502d10cb3dSArmin Le Grand }
12512d10cb3dSArmin Le Grand }
12522d10cb3dSArmin Le Grand
12532d10cb3dSArmin Le Grand if(!bSelected)
12542d10cb3dSArmin Le Grand {
12552d10cb3dSArmin Le Grand mpLBEnd->SelectEntryPos( 0 );
12562d10cb3dSArmin Le Grand }
12572d10cb3dSArmin Le Grand }
12588dcb2a10SAndre Fischer }
12598dcb2a10SAndre Fischer
12608dcb2a10SAndre Fischer
12618dcb2a10SAndre Fischer } } // end of namespace svx::sidebar
12624e8031e0SArmin Le Grand
12634e8031e0SArmin Le Grand // eof
1264