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 228dcb2a10SAndre Fischer #include <sfx2/sidebar/propertypanel.hrc> 238dcb2a10SAndre Fischer #include <sfx2/sidebar/Theme.hxx> 248dcb2a10SAndre Fischer #include <sfx2/sidebar/ControlFactory.hxx> 258dcb2a10SAndre Fischer #include <LinePropertyPanel.hxx> 268dcb2a10SAndre Fischer #include <LinePropertyPanel.hrc> 278dcb2a10SAndre Fischer #include <svx/dialogs.hrc> 288dcb2a10SAndre Fischer #include <svx/dialmgr.hxx> 298dcb2a10SAndre Fischer #include <sfx2/objsh.hxx> 308dcb2a10SAndre Fischer #include <sfx2/bindings.hxx> 318dcb2a10SAndre Fischer #include <sfx2/dispatch.hxx> 328dcb2a10SAndre Fischer #include <svx/xlnclit.hxx> 338dcb2a10SAndre Fischer #include <svx/xtable.hxx> 348dcb2a10SAndre Fischer #include <svx/xdash.hxx> 358dcb2a10SAndre Fischer #include <svx/drawitem.hxx> 368dcb2a10SAndre Fischer #include <svx/svxitems.hrc> 378dcb2a10SAndre Fischer #include <svtools/valueset.hxx> 388dcb2a10SAndre Fischer #include <unotools/pathoptions.hxx> 398dcb2a10SAndre Fischer #include <unotools/viewoptions.hxx> 408dcb2a10SAndre Fischer #include <comphelper/processfactory.hxx> 418dcb2a10SAndre Fischer #include <i18npool/mslangid.hxx> 428dcb2a10SAndre Fischer #include <svx/xlineit0.hxx> 438dcb2a10SAndre Fischer #include <svx/xlndsit.hxx> 448dcb2a10SAndre Fischer #include <vcl/svapp.hxx> 458dcb2a10SAndre Fischer #include <svx/xlnwtit.hxx> 468dcb2a10SAndre Fischer #include <vcl/lstbox.hxx> 478dcb2a10SAndre Fischer #include <svx/tbxcolorupdate.hxx> 488dcb2a10SAndre Fischer #include <vcl/toolbox.hxx> 498dcb2a10SAndre Fischer #include <svx/xlntrit.hxx> 508dcb2a10SAndre Fischer #include <svx/xlnstit.hxx> 518dcb2a10SAndre Fischer #include <svx/xlnedit.hxx> 528dcb2a10SAndre Fischer #include <svx/xlncapit.hxx> 538dcb2a10SAndre Fischer #include <svx/xlinjoit.hxx> 548dcb2a10SAndre Fischer #include "svx/sidebar/PopupContainer.hxx" 558dcb2a10SAndre Fischer #include "svx/sidebar/PopupControl.hxx" 56facb16e7SArmin Le Grand #include <svx/sidebar/ColorControl.hxx> 578dcb2a10SAndre Fischer #include "LineWidthControl.hxx" 588dcb2a10SAndre Fischer #include <boost/bind.hpp> 598dcb2a10SAndre Fischer 608dcb2a10SAndre Fischer using namespace css; 618dcb2a10SAndre Fischer using namespace cssu; 628dcb2a10SAndre Fischer using ::sfx2::sidebar::Theme; 638dcb2a10SAndre Fischer 648dcb2a10SAndre Fischer #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) 658dcb2a10SAndre Fischer 668dcb2a10SAndre Fischer namespace { 678dcb2a10SAndre Fischer short GetItemId_Impl_line( ValueSet& rValueSet, const Color& rCol ) 688dcb2a10SAndre Fischer { 698dcb2a10SAndre Fischer if(rCol == COL_AUTO) 708dcb2a10SAndre Fischer return 0; 718dcb2a10SAndre Fischer 728dcb2a10SAndre Fischer bool bFound = false; 738dcb2a10SAndre Fischer sal_uInt16 nCount = rValueSet.GetItemCount(); 748dcb2a10SAndre Fischer sal_uInt16 n = 1; 758dcb2a10SAndre Fischer 768dcb2a10SAndre Fischer while ( !bFound && n <= nCount ) 778dcb2a10SAndre Fischer { 788dcb2a10SAndre Fischer Color aValCol = rValueSet.GetItemColor(n); 798dcb2a10SAndre Fischer 808dcb2a10SAndre Fischer bFound = ( aValCol.GetRed() == rCol.GetRed() 818dcb2a10SAndre Fischer && aValCol.GetGreen() == rCol.GetGreen() 828dcb2a10SAndre Fischer && aValCol.GetBlue() == rCol.GetBlue() ); 838dcb2a10SAndre Fischer 848dcb2a10SAndre Fischer if ( !bFound ) 858dcb2a10SAndre Fischer n++; 868dcb2a10SAndre Fischer } 878dcb2a10SAndre Fischer return bFound ? n : -1; 888dcb2a10SAndre Fischer } 898dcb2a10SAndre Fischer 90*c7be74b1SArmin Le Grand void FillLineEndListBox(ListBox& rListBoxStart, ListBox& rListBoxEnd, const XLineEndListSharedPtr aList) 91a567bdc8SArmin Le Grand { 92*c7be74b1SArmin Le Grand const sal_uInt32 nCount(aList.get() ? aList->Count() : 0); 9397e8a929SArmin Le Grand const String sNone(SVX_RES(RID_SVXSTR_NONE)); 9497e8a929SArmin Le Grand 95a567bdc8SArmin Le Grand rListBoxStart.SetUpdateMode(false); 96a567bdc8SArmin Le Grand rListBoxEnd.SetUpdateMode(false); 978dcb2a10SAndre Fischer 9897e8a929SArmin Le Grand rListBoxStart.Clear(); 9997e8a929SArmin Le Grand rListBoxEnd.Clear(); 10097e8a929SArmin Le Grand 10197e8a929SArmin Le Grand // add 'none' entries 10297e8a929SArmin Le Grand rListBoxStart.InsertEntry(sNone); 10397e8a929SArmin Le Grand rListBoxEnd.InsertEntry(sNone); 10497e8a929SArmin Le Grand 105a567bdc8SArmin Le Grand for(sal_uInt32 i(0); i < nCount; i++) 106a567bdc8SArmin Le Grand { 107*c7be74b1SArmin Le Grand XLineEndEntry* pEntry = aList->GetLineEnd(i); 108*c7be74b1SArmin Le Grand const Bitmap aBitmap = aList->GetUiBitmap(i); 1098dcb2a10SAndre Fischer 11097e8a929SArmin Le Grand if(!aBitmap.IsEmpty()) 111a567bdc8SArmin Le Grand { 11297e8a929SArmin Le Grand Bitmap aCopyStart(aBitmap); 11397e8a929SArmin Le Grand Bitmap aCopyEnd(aBitmap); 11497e8a929SArmin Le Grand // delete pBitmap; 115a567bdc8SArmin Le Grand const Size aBmpSize(aCopyStart.GetSizePixel()); 116a567bdc8SArmin Le Grand const Rectangle aCropRectStart(Point(), Size(aBmpSize.Width() / 2, aBmpSize.Height())); 117a567bdc8SArmin Le Grand const Rectangle aCropRectEnd(Point(aBmpSize.Width() / 2, 0), Size(aBmpSize.Width() / 2, aBmpSize.Height())); 118a567bdc8SArmin Le Grand 119a567bdc8SArmin Le Grand aCopyStart.Crop(aCropRectStart); 120a567bdc8SArmin Le Grand rListBoxStart.InsertEntry( 121a567bdc8SArmin Le Grand pEntry->GetName(), 122a567bdc8SArmin Le Grand aCopyStart); 123a567bdc8SArmin Le Grand 124a567bdc8SArmin Le Grand aCopyEnd.Crop(aCropRectEnd); 125a567bdc8SArmin Le Grand rListBoxEnd.InsertEntry( 126a567bdc8SArmin Le Grand pEntry->GetName(), 127a567bdc8SArmin Le Grand aCopyEnd); 128a567bdc8SArmin Le Grand } 129a567bdc8SArmin Le Grand else 130a567bdc8SArmin Le Grand { 131a567bdc8SArmin Le Grand rListBoxStart.InsertEntry(pEntry->GetName()); 132a567bdc8SArmin Le Grand rListBoxEnd.InsertEntry(pEntry->GetName()); 133a567bdc8SArmin Le Grand } 134a567bdc8SArmin Le Grand } 1358dcb2a10SAndre Fischer 136a567bdc8SArmin Le Grand rListBoxStart.SetUpdateMode(true); 137a567bdc8SArmin Le Grand rListBoxEnd.SetUpdateMode(true); 138a567bdc8SArmin Le Grand } 13997e8a929SArmin Le Grand 140*c7be74b1SArmin Le Grand void FillLineStyleListBox(ListBox& rListBox, const XDashListSharedPtr aList) 14197e8a929SArmin Le Grand { 142*c7be74b1SArmin Le Grand const sal_uInt32 nCount(aList.get() ? aList->Count() : 0); 14397e8a929SArmin Le Grand rListBox.SetUpdateMode(false); 14497e8a929SArmin Le Grand 14597e8a929SArmin Le Grand rListBox.Clear(); 14697e8a929SArmin Le Grand 14797e8a929SArmin Le Grand // entry for 'none' 148*c7be74b1SArmin Le Grand rListBox.InsertEntry(aList->GetStringForUiNoLine()); 14997e8a929SArmin Le Grand 15097e8a929SArmin Le Grand // entry for solid line 151*c7be74b1SArmin Le Grand rListBox.InsertEntry(aList->GetStringForUiSolidLine(), aList->GetBitmapForUISolidLine()); 15297e8a929SArmin Le Grand 15397e8a929SArmin Le Grand for(sal_uInt32 i(0); i < nCount; i++) 15497e8a929SArmin Le Grand { 155*c7be74b1SArmin Le Grand XDashEntry* pEntry = aList->GetDash(i); 156*c7be74b1SArmin Le Grand const Bitmap aBitmap = aList->GetUiBitmap(i); 15797e8a929SArmin Le Grand 15897e8a929SArmin Le Grand if(!aBitmap.IsEmpty()) 15997e8a929SArmin Le Grand { 16097e8a929SArmin Le Grand rListBox.InsertEntry( 16197e8a929SArmin Le Grand pEntry->GetName(), 16297e8a929SArmin Le Grand aBitmap); 16397e8a929SArmin Le Grand // delete pBitmap; 16497e8a929SArmin Le Grand } 16597e8a929SArmin Le Grand else 16697e8a929SArmin Le Grand { 16797e8a929SArmin Le Grand rListBox.InsertEntry(pEntry->GetName()); 16897e8a929SArmin Le Grand } 16997e8a929SArmin Le Grand } 17097e8a929SArmin Le Grand 17197e8a929SArmin Le Grand rListBox.SetUpdateMode(true); 17297e8a929SArmin Le Grand } 173a567bdc8SArmin Le Grand } // end of anonymous namespace 1748dcb2a10SAndre Fischer 1758dcb2a10SAndre Fischer // namespace open 1768dcb2a10SAndre Fischer 1778dcb2a10SAndre Fischer namespace svx { namespace sidebar { 1788dcb2a10SAndre Fischer 1798dcb2a10SAndre Fischer LinePropertyPanel::LinePropertyPanel( 1808dcb2a10SAndre Fischer Window* pParent, 1818dcb2a10SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame, 1828dcb2a10SAndre Fischer SfxBindings* pBindings) 1838dcb2a10SAndre Fischer : Control( 1848dcb2a10SAndre Fischer pParent, 1858dcb2a10SAndre Fischer SVX_RES(RID_SIDEBAR_LINE_PANEL)), 1868dcb2a10SAndre Fischer mpFTWidth(new FixedText(this, SVX_RES(FT_WIDTH))), 1878dcb2a10SAndre Fischer mpTBWidthBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)), 1888dcb2a10SAndre Fischer mpTBWidth(sfx2::sidebar::ControlFactory::CreateToolBox(mpTBWidthBackground.get(), SVX_RES(TB_WIDTH))), 1898dcb2a10SAndre Fischer mpFTColor(new FixedText(this, SVX_RES(FT_COLOR))), 1908dcb2a10SAndre Fischer mpTBColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)), 1918dcb2a10SAndre Fischer mpTBColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpTBColorBackground.get(), SVX_RES(TB_COLOR))), 1928dcb2a10SAndre Fischer mpFTStyle(new FixedText(this, SVX_RES(FT_STYLE))), 19397e8a929SArmin Le Grand mpLBStyle(new ListBox(this, SVX_RES(LB_STYLE))), 1948dcb2a10SAndre Fischer mpFTTrancparency(new FixedText(this, SVX_RES(FT_TRANSPARENT))), 1958dcb2a10SAndre Fischer mpMFTransparent(new MetricField(this, SVX_RES(MF_TRANSPARENT))), 1968dcb2a10SAndre Fischer mpFTArrow(new FixedText(this, SVX_RES(FT_ARROW))), 1971137d172SArmin Le Grand mpLBStart(new ListBox(this, SVX_RES(LB_START))), 1981137d172SArmin Le Grand mpLBEnd(new ListBox(this, SVX_RES(LB_END))), 1998dcb2a10SAndre Fischer mpFTEdgeStyle(new FixedText(this, SVX_RES(FT_EDGESTYLE))), 2008dcb2a10SAndre Fischer mpLBEdgeStyle(new ListBox(this, SVX_RES(LB_EDGESTYLE))), 2018dcb2a10SAndre Fischer mpFTCapStyle(new FixedText(this, SVX_RES(FT_CAPSTYLE))), 2028dcb2a10SAndre Fischer mpLBCapStyle(new ListBox(this, SVX_RES(LB_CAPSTYLE))), 203a567bdc8SArmin Le Grand maStyleControl(SID_ATTR_LINE_STYLE, *pBindings, *this), 204a567bdc8SArmin Le Grand maDashControl (SID_ATTR_LINE_DASH, *pBindings, *this), 205a567bdc8SArmin Le Grand maWidthControl(SID_ATTR_LINE_WIDTH, *pBindings, *this), 206a567bdc8SArmin Le Grand maColorControl(SID_ATTR_LINE_COLOR, *pBindings, *this), 207a567bdc8SArmin Le Grand maStartControl(SID_ATTR_LINE_START, *pBindings, *this), 208a567bdc8SArmin Le Grand maEndControl(SID_ATTR_LINE_END, *pBindings, *this), 209a567bdc8SArmin Le Grand maLineEndListControl(SID_LINEEND_LIST, *pBindings, *this), 21097e8a929SArmin Le Grand maLineStyleListControl(SID_DASH_LIST, *pBindings, *this), 211a567bdc8SArmin Le Grand maTransControl(SID_ATTR_LINE_TRANSPARENCE, *pBindings, *this), 212a567bdc8SArmin Le Grand maEdgeStyle(SID_ATTR_LINE_JOINT, *pBindings, *this), 213a567bdc8SArmin Le Grand maCapStyle(SID_ATTR_LINE_CAP, *pBindings, *this), 2148dcb2a10SAndre Fischer maColor(COL_BLACK), 2158dcb2a10SAndre Fischer mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_LINE_COLOR, TBI_COLOR, mpTBColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)), 2168dcb2a10SAndre Fischer mpStyleItem(), 2178dcb2a10SAndre Fischer mpDashItem(), 2188dcb2a10SAndre Fischer mnTrans(0), 2198dcb2a10SAndre Fischer meMapUnit(SFX_MAPUNIT_MM), 2208dcb2a10SAndre Fischer mnWidthCoreValue(0), 221*c7be74b1SArmin Le Grand maLineEndList(), 222*c7be74b1SArmin Le Grand maLineStyleList(), 2238dcb2a10SAndre Fischer mpStartItem(0), 2248dcb2a10SAndre Fischer mpEndItem(0), 2258dcb2a10SAndre Fischer maColorPopup(this, ::boost::bind(&LinePropertyPanel::CreateColorPopupControl, this, _1)), 2268dcb2a10SAndre Fischer maLineWidthPopup(this, ::boost::bind(&LinePropertyPanel::CreateLineWidthPopupControl, this, _1)), 2278dcb2a10SAndre Fischer maIMGColor(SVX_RES(IMG_COLOR)), 2288dcb2a10SAndre Fischer maIMGNone(SVX_RES(IMG_NONE_ICON)), 2298dcb2a10SAndre Fischer mpIMGWidthIcon(), 2308dcb2a10SAndre Fischer mpIMGWidthIconH(), 2318dcb2a10SAndre Fischer mxFrame(rxFrame), 2328dcb2a10SAndre Fischer mpBindings(pBindings), 2338dcb2a10SAndre Fischer mbColorAvailable(true), 2342d10cb3dSArmin Le Grand mbWidthValuable(true) 2358dcb2a10SAndre Fischer { 2368dcb2a10SAndre Fischer Initialize(); 2378dcb2a10SAndre Fischer FreeResource(); 2388dcb2a10SAndre Fischer } 2398dcb2a10SAndre Fischer 2408dcb2a10SAndre Fischer 2418dcb2a10SAndre Fischer 2428dcb2a10SAndre Fischer LinePropertyPanel::~LinePropertyPanel() 2438dcb2a10SAndre Fischer { 2448dcb2a10SAndre Fischer // Destroy the toolboxes, then their background windows. 2458dcb2a10SAndre Fischer mpTBWidth.reset(); 2468dcb2a10SAndre Fischer mpTBColor.reset(); 24797e8a929SArmin Le Grand 2488dcb2a10SAndre Fischer mpTBWidthBackground.reset(); 2498dcb2a10SAndre Fischer mpTBColorBackground.reset(); 2508dcb2a10SAndre Fischer } 2518dcb2a10SAndre Fischer 2528dcb2a10SAndre Fischer 2538dcb2a10SAndre Fischer 2548dcb2a10SAndre Fischer void LinePropertyPanel::Initialize() 2558dcb2a10SAndre Fischer { 25637fee4fdSAndre Fischer mpFTWidth->SetBackground(Wallpaper()); 25737fee4fdSAndre Fischer mpFTColor->SetBackground(Wallpaper()); 25837fee4fdSAndre Fischer mpFTStyle->SetBackground(Wallpaper()); 25937fee4fdSAndre Fischer mpFTTrancparency->SetBackground(Wallpaper()); 26037fee4fdSAndre Fischer mpFTArrow->SetBackground(Wallpaper()); 26137fee4fdSAndre Fischer mpFTEdgeStyle->SetBackground(Wallpaper()); 26237fee4fdSAndre Fischer mpFTCapStyle->SetBackground(Wallpaper()); 26337fee4fdSAndre Fischer 2648dcb2a10SAndre Fischer mpIMGWidthIcon.reset(new Image[8]); 2652d10cb3dSArmin Le Grand mpIMGWidthIcon[0] = Image(SVX_RES(IMG_WIDTH1_ICON)); 2662d10cb3dSArmin Le Grand mpIMGWidthIcon[1] = Image(SVX_RES(IMG_WIDTH2_ICON)); 2672d10cb3dSArmin Le Grand mpIMGWidthIcon[2] = Image(SVX_RES(IMG_WIDTH3_ICON)); 2682d10cb3dSArmin Le Grand mpIMGWidthIcon[3] = Image(SVX_RES(IMG_WIDTH4_ICON)); 2692d10cb3dSArmin Le Grand mpIMGWidthIcon[4] = Image(SVX_RES(IMG_WIDTH5_ICON)); 2702d10cb3dSArmin Le Grand mpIMGWidthIcon[5] = Image(SVX_RES(IMG_WIDTH6_ICON)); 2712d10cb3dSArmin Le Grand mpIMGWidthIcon[6] = Image(SVX_RES(IMG_WIDTH7_ICON)); 2722d10cb3dSArmin Le Grand mpIMGWidthIcon[7] = Image(SVX_RES(IMG_WIDTH8_ICON)); 2732d10cb3dSArmin Le Grand 2742d10cb3dSArmin Le Grand //high contrast 2758dcb2a10SAndre Fischer mpIMGWidthIconH.reset(new Image[8]); 2762d10cb3dSArmin Le Grand mpIMGWidthIconH[0] = Image(SVX_RES(IMG_WIDTH1_ICON_H)); 2772d10cb3dSArmin Le Grand mpIMGWidthIconH[1] = Image(SVX_RES(IMG_WIDTH2_ICON_H)); 2782d10cb3dSArmin Le Grand mpIMGWidthIconH[2] = Image(SVX_RES(IMG_WIDTH3_ICON_H)); 2792d10cb3dSArmin Le Grand mpIMGWidthIconH[3] = Image(SVX_RES(IMG_WIDTH4_ICON_H)); 2802d10cb3dSArmin Le Grand mpIMGWidthIconH[4] = Image(SVX_RES(IMG_WIDTH5_ICON_H)); 2812d10cb3dSArmin Le Grand mpIMGWidthIconH[5] = Image(SVX_RES(IMG_WIDTH6_ICON_H)); 2822d10cb3dSArmin Le Grand mpIMGWidthIconH[6] = Image(SVX_RES(IMG_WIDTH7_ICON_H)); 2832d10cb3dSArmin Le Grand mpIMGWidthIconH[7] = Image(SVX_RES(IMG_WIDTH8_ICON_H)); 2842d10cb3dSArmin Le Grand 2852d10cb3dSArmin Le Grand meMapUnit = maWidthControl.GetCoreMetric(); 2862d10cb3dSArmin Le Grand 2872d10cb3dSArmin Le Grand mpTBColor->SetItemImage(TBI_COLOR, maIMGColor); 2882d10cb3dSArmin Le Grand Size aTbxSize( mpTBColor->CalcWindowSizePixel() ); 2892d10cb3dSArmin Le Grand mpTBColor->SetOutputSizePixel( aTbxSize ); 2902d10cb3dSArmin Le Grand mpTBColor->SetItemBits( TBI_COLOR, mpTBColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY ); 2912d10cb3dSArmin Le Grand mpTBColor->SetQuickHelpText(TBI_COLOR,String(SVX_RES(STR_QH_TB_COLOR))); //Add 2922d10cb3dSArmin Le Grand mpTBColor->SetBackground(Wallpaper()); 2932d10cb3dSArmin Le Grand mpTBColor->SetPaintTransparent(true); 2942d10cb3dSArmin Le Grand Link aLink = LINK(this, LinePropertyPanel, ToolboxColorSelectHdl); 2952d10cb3dSArmin Le Grand mpTBColor->SetDropdownClickHdl ( aLink ); 2962d10cb3dSArmin Le Grand mpTBColor->SetSelectHdl ( aLink ); 2972d10cb3dSArmin Le Grand 2982d10cb3dSArmin Le Grand FillLineStyleList(); 2992d10cb3dSArmin Le Grand SelectLineStyle(); 3002d10cb3dSArmin Le Grand aLink = LINK( this, LinePropertyPanel, ChangeLineStyleHdl ); 3012d10cb3dSArmin Le Grand mpLBStyle->SetSelectHdl( aLink ); 3022d10cb3dSArmin Le Grand mpLBStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Style"))); 303a68b38dfSArmin Le Grand mpLBStyle->AdaptDropDownLineCountToMaximum(); 3048dcb2a10SAndre Fischer 3052d10cb3dSArmin Le Grand mpTBWidth->SetItemImage(TBI_WIDTH, mpIMGWidthIcon[0]); 3062d10cb3dSArmin Le Grand aTbxSize = mpTBWidth->CalcWindowSizePixel() ; 3072d10cb3dSArmin Le Grand mpTBWidth->SetOutputSizePixel( aTbxSize ); 3082d10cb3dSArmin Le Grand mpTBWidth->SetItemBits( TBI_WIDTH, mpTBWidth->GetItemBits( TBI_WIDTH ) | TIB_DROPDOWNONLY ); 3092d10cb3dSArmin Le Grand mpTBWidth->SetQuickHelpText(TBI_WIDTH,String(SVX_RES(STR_QH_TB_WIDTH))); //Add 3102d10cb3dSArmin Le Grand mpTBWidth->SetBackground(Wallpaper()); 3112d10cb3dSArmin Le Grand mpTBWidth->SetPaintTransparent(true); 3122d10cb3dSArmin Le Grand aLink = LINK(this, LinePropertyPanel, ToolboxWidthSelectHdl); 3132d10cb3dSArmin Le Grand mpTBWidth->SetDropdownClickHdl ( aLink ); 3142d10cb3dSArmin Le Grand mpTBWidth->SetSelectHdl ( aLink ); 3152d10cb3dSArmin Le Grand 3162d10cb3dSArmin Le Grand FillLineEndList(); 3172d10cb3dSArmin Le Grand SelectEndStyle(true); 3182d10cb3dSArmin Le Grand SelectEndStyle(false); 3192d10cb3dSArmin Le Grand aLink = LINK( this, LinePropertyPanel, ChangeStartHdl ); 3202d10cb3dSArmin Le Grand mpLBStart->SetSelectHdl( aLink ); 3212d10cb3dSArmin Le Grand mpLBStart->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Beginning Style"))); //wj acc 322a68b38dfSArmin Le Grand mpLBStart->AdaptDropDownLineCountToMaximum(); 3232d10cb3dSArmin Le Grand aLink = LINK( this, LinePropertyPanel, ChangeEndHdl ); 3242d10cb3dSArmin Le Grand mpLBEnd->SetSelectHdl( aLink ); 3252d10cb3dSArmin Le Grand mpLBEnd->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Ending Style"))); //wj acc 326a68b38dfSArmin Le Grand mpLBEnd->AdaptDropDownLineCountToMaximum(); 3278dcb2a10SAndre Fischer 3282d10cb3dSArmin Le Grand aLink = LINK(this, LinePropertyPanel, ChangeTransparentHdl); 3292d10cb3dSArmin Le Grand mpMFTransparent->SetModifyHdl(aLink); 3302d10cb3dSArmin Le Grand mpMFTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); //wj acc 3312d10cb3dSArmin Le Grand 3322d10cb3dSArmin Le Grand mpTBWidth->SetAccessibleRelationLabeledBy(mpFTWidth.get()); 3332d10cb3dSArmin Le Grand mpTBColor->SetAccessibleRelationLabeledBy(mpFTColor.get()); 33497e8a929SArmin Le Grand mpLBStyle->SetAccessibleRelationLabeledBy(mpFTStyle.get()); 3352d10cb3dSArmin Le Grand mpMFTransparent->SetAccessibleRelationLabeledBy(mpFTTrancparency.get()); 3362d10cb3dSArmin Le Grand mpLBStart->SetAccessibleRelationLabeledBy(mpFTArrow.get()); 3372d10cb3dSArmin Le Grand mpLBEnd->SetAccessibleRelationLabeledBy(mpLBEnd.get()); 3388dcb2a10SAndre Fischer 3398dcb2a10SAndre Fischer aLink = LINK( this, LinePropertyPanel, ChangeEdgeStyleHdl ); 3408dcb2a10SAndre Fischer mpLBEdgeStyle->SetSelectHdl( aLink ); 3418dcb2a10SAndre Fischer mpLBEdgeStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Corner Style"))); 3428dcb2a10SAndre Fischer 3438dcb2a10SAndre Fischer aLink = LINK( this, LinePropertyPanel, ChangeCapStyleHdl ); 3448dcb2a10SAndre Fischer mpLBCapStyle->SetSelectHdl( aLink ); 3458dcb2a10SAndre Fischer mpLBCapStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Cap Style"))); 3468dcb2a10SAndre Fischer } 3478dcb2a10SAndre Fischer 3488dcb2a10SAndre Fischer 3498dcb2a10SAndre Fischer 3508dcb2a10SAndre Fischer void LinePropertyPanel::SetupIcons(void) 3518dcb2a10SAndre Fischer { 3528dcb2a10SAndre Fischer if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons)) 3538dcb2a10SAndre Fischer { 3548dcb2a10SAndre Fischer // todo 3558dcb2a10SAndre Fischer } 3568dcb2a10SAndre Fischer else 3578dcb2a10SAndre Fischer { 3588dcb2a10SAndre Fischer // todo 3598dcb2a10SAndre Fischer } 3608dcb2a10SAndre Fischer } 3618dcb2a10SAndre Fischer 3628dcb2a10SAndre Fischer 3638dcb2a10SAndre Fischer 3648dcb2a10SAndre Fischer LinePropertyPanel* LinePropertyPanel::Create ( 3658dcb2a10SAndre Fischer Window* pParent, 3668dcb2a10SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame, 3678dcb2a10SAndre Fischer SfxBindings* pBindings) 3688dcb2a10SAndre Fischer { 3698dcb2a10SAndre Fischer if (pParent == NULL) 3708dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no parent Window given to LinePropertyPanel::Create"), NULL, 0); 3718dcb2a10SAndre Fischer if ( ! rxFrame.is()) 3728dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no XFrame given to LinePropertyPanel::Create"), NULL, 1); 3738dcb2a10SAndre Fischer if (pBindings == NULL) 3748dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no SfxBindings given to LinePropertyPanel::Create"), NULL, 2); 3758dcb2a10SAndre Fischer 3768dcb2a10SAndre Fischer return new LinePropertyPanel( 3778dcb2a10SAndre Fischer pParent, 3788dcb2a10SAndre Fischer rxFrame, 3798dcb2a10SAndre Fischer pBindings); 3808dcb2a10SAndre Fischer } 3818dcb2a10SAndre Fischer 3828dcb2a10SAndre Fischer 3838dcb2a10SAndre Fischer 38437fee4fdSAndre Fischer 3858dcb2a10SAndre Fischer void LinePropertyPanel::DataChanged( 3868dcb2a10SAndre Fischer const DataChangedEvent& rEvent) 3878dcb2a10SAndre Fischer { 3888dcb2a10SAndre Fischer (void)rEvent; 3898dcb2a10SAndre Fischer 3908dcb2a10SAndre Fischer SetupIcons(); 3918dcb2a10SAndre Fischer } 3928dcb2a10SAndre Fischer 3938dcb2a10SAndre Fischer 3948dcb2a10SAndre Fischer 3958dcb2a10SAndre Fischer 3968dcb2a10SAndre Fischer void LinePropertyPanel::NotifyItemUpdate( 3978dcb2a10SAndre Fischer sal_uInt16 nSID, 3988dcb2a10SAndre Fischer SfxItemState eState, 39945da7d5eSAndre Fischer const SfxPoolItem* pState, 40045da7d5eSAndre Fischer const bool bIsEnabled) 4018dcb2a10SAndre Fischer { 40245da7d5eSAndre Fischer (void)bIsEnabled; 4032d10cb3dSArmin Le Grand const bool bDisabled(SFX_ITEM_DISABLED == eState); 40445da7d5eSAndre Fischer 4052d10cb3dSArmin Le Grand switch(nSID) 4062d10cb3dSArmin Le Grand { 4072d10cb3dSArmin Le Grand case SID_ATTR_LINE_COLOR: 4088dcb2a10SAndre Fischer { 4092d10cb3dSArmin Le Grand if(bDisabled) 4102d10cb3dSArmin Le Grand { 4112d10cb3dSArmin Le Grand mpFTColor->Disable(); 4122d10cb3dSArmin Le Grand mpTBColor->Disable(); 4132d10cb3dSArmin Le Grand } 4142d10cb3dSArmin Le Grand else 4152d10cb3dSArmin Le Grand { 4162d10cb3dSArmin Le Grand mpFTColor->Enable(); 4172d10cb3dSArmin Le Grand mpTBColor->Enable(); 4182d10cb3dSArmin Le Grand } 4192d10cb3dSArmin Le Grand 4202d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT) 4212d10cb3dSArmin Le Grand { 4228dcb2a10SAndre Fischer const XLineColorItem* pItem = dynamic_cast< const XLineColorItem* >(pState); 4232d10cb3dSArmin Le Grand if(pItem) 4242d10cb3dSArmin Le Grand { 4252d10cb3dSArmin Le Grand maColor = pItem->GetColorValue(); 4262d10cb3dSArmin Le Grand mbColorAvailable = true; 4272d10cb3dSArmin Le Grand mpColorUpdater->Update(maColor); 4282d10cb3dSArmin Le Grand break; 4292d10cb3dSArmin Le Grand } 4302d10cb3dSArmin Le Grand } 4318dcb2a10SAndre Fischer 4322d10cb3dSArmin Le Grand mbColorAvailable = false; 4332d10cb3dSArmin Le Grand mpColorUpdater->Update(COL_WHITE); 4342d10cb3dSArmin Le Grand break; 4358dcb2a10SAndre Fischer } 4362d10cb3dSArmin Le Grand case SID_ATTR_LINE_DASH: 4372d10cb3dSArmin Le Grand case SID_ATTR_LINE_STYLE: 4388dcb2a10SAndre Fischer { 4392d10cb3dSArmin Le Grand if(bDisabled) 4402d10cb3dSArmin Le Grand { 4412d10cb3dSArmin Le Grand mpFTStyle->Disable(); 44297e8a929SArmin Le Grand mpLBStyle->Disable(); 4432d10cb3dSArmin Le Grand } 4442d10cb3dSArmin Le Grand else 4452d10cb3dSArmin Le Grand { 4462d10cb3dSArmin Le Grand mpFTStyle->Enable(); 44797e8a929SArmin Le Grand mpLBStyle->Enable(); 4482d10cb3dSArmin Le Grand } 4498dcb2a10SAndre Fischer 4502d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT) 4512d10cb3dSArmin Le Grand { 4522d10cb3dSArmin Le Grand if(nSID == SID_ATTR_LINE_STYLE) 4532d10cb3dSArmin Le Grand { 4542d10cb3dSArmin Le Grand const XLineStyleItem* pItem = dynamic_cast< const XLineStyleItem* >(pState); 4558dcb2a10SAndre Fischer 4562d10cb3dSArmin Le Grand if(pItem) 4572d10cb3dSArmin Le Grand { 4582d10cb3dSArmin Le Grand mpStyleItem.reset(pState ? (XLineStyleItem*)pItem->Clone() : 0); 4592d10cb3dSArmin Le Grand } 4602d10cb3dSArmin Le Grand } 4612d10cb3dSArmin Le Grand else // if(nSID == SID_ATTR_LINE_DASH) 4622d10cb3dSArmin Le Grand { 4632d10cb3dSArmin Le Grand const XLineDashItem* pItem = dynamic_cast< const XLineDashItem* >(pState); 4642d10cb3dSArmin Le Grand 4652d10cb3dSArmin Le Grand if(pItem) 4662d10cb3dSArmin Le Grand { 4672d10cb3dSArmin Le Grand mpDashItem.reset(pState ? (XLineDashItem*)pItem->Clone() : 0); 4682d10cb3dSArmin Le Grand } 4692d10cb3dSArmin Le Grand } 4702d10cb3dSArmin Le Grand } 4712d10cb3dSArmin Le Grand else 4722d10cb3dSArmin Le Grand { 4732d10cb3dSArmin Le Grand if(nSID == SID_ATTR_LINE_STYLE) 4742d10cb3dSArmin Le Grand { 4752d10cb3dSArmin Le Grand mpStyleItem.reset(0); 4762d10cb3dSArmin Le Grand } 4772d10cb3dSArmin Le Grand else 4782d10cb3dSArmin Le Grand { 4792d10cb3dSArmin Le Grand mpDashItem.reset(0); 4802d10cb3dSArmin Le Grand } 4812d10cb3dSArmin Le Grand } 4822d10cb3dSArmin Le Grand 4832d10cb3dSArmin Le Grand SelectLineStyle(); 4842d10cb3dSArmin Le Grand break; 4858dcb2a10SAndre Fischer } 4862d10cb3dSArmin Le Grand case SID_ATTR_LINE_TRANSPARENCE: 4878dcb2a10SAndre Fischer { 4882d10cb3dSArmin Le Grand if(bDisabled) 4892d10cb3dSArmin Le Grand { 4902d10cb3dSArmin Le Grand mpFTTrancparency->Disable(); 4912d10cb3dSArmin Le Grand mpMFTransparent->Disable(); 4922d10cb3dSArmin Le Grand } 4932d10cb3dSArmin Le Grand else 4942d10cb3dSArmin Le Grand { 4952d10cb3dSArmin Le Grand mpFTTrancparency->Enable(); 4962d10cb3dSArmin Le Grand mpMFTransparent->Enable(); 4972d10cb3dSArmin Le Grand } 4982d10cb3dSArmin Le Grand 4992d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT) 5002d10cb3dSArmin Le Grand { 5018dcb2a10SAndre Fischer const XLineTransparenceItem* pItem = dynamic_cast< const XLineTransparenceItem* >(pState); 5028dcb2a10SAndre Fischer 5032d10cb3dSArmin Le Grand if(pItem) 5042d10cb3dSArmin Le Grand { 5052d10cb3dSArmin Le Grand mnTrans = pItem->GetValue(); 5062d10cb3dSArmin Le Grand mpMFTransparent->SetValue(mnTrans); 5072d10cb3dSArmin Le Grand break; 5082d10cb3dSArmin Le Grand } 5092d10cb3dSArmin Le Grand } 5102d10cb3dSArmin Le Grand 5112d10cb3dSArmin Le Grand mpMFTransparent->SetValue(0);//add 5122d10cb3dSArmin Le Grand mpMFTransparent->SetText(String()); 5132d10cb3dSArmin Le Grand break; 5148dcb2a10SAndre Fischer } 5152d10cb3dSArmin Le Grand case SID_ATTR_LINE_WIDTH: 5168dcb2a10SAndre Fischer { 5172d10cb3dSArmin Le Grand if(bDisabled) 5182d10cb3dSArmin Le Grand { 5192d10cb3dSArmin Le Grand mpTBWidth->Disable(); 5202d10cb3dSArmin Le Grand mpFTWidth->Disable(); 5212d10cb3dSArmin Le Grand } 5222d10cb3dSArmin Le Grand else 5232d10cb3dSArmin Le Grand { 5242d10cb3dSArmin Le Grand mpTBWidth->Enable(); 5252d10cb3dSArmin Le Grand mpFTWidth->Enable(); 5262d10cb3dSArmin Le Grand } 5272d10cb3dSArmin Le Grand 5282d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT) 5292d10cb3dSArmin Le Grand { 5308dcb2a10SAndre Fischer const XLineWidthItem* pItem = dynamic_cast< const XLineWidthItem* >(pState); 5318dcb2a10SAndre Fischer 5322d10cb3dSArmin Le Grand if(pItem) 5332d10cb3dSArmin Le Grand { 5342d10cb3dSArmin Le Grand mnWidthCoreValue = pItem->GetValue(); 5352d10cb3dSArmin Le Grand mbWidthValuable = true; 5362d10cb3dSArmin Le Grand SetWidthIcon(); 5372d10cb3dSArmin Le Grand break; 5382d10cb3dSArmin Le Grand } 5392d10cb3dSArmin Le Grand } 5402d10cb3dSArmin Le Grand 5412d10cb3dSArmin Le Grand mbWidthValuable = false; 5422d10cb3dSArmin Le Grand SetWidthIcon(); 5432d10cb3dSArmin Le Grand break; 5448dcb2a10SAndre Fischer } 5452d10cb3dSArmin Le Grand case SID_ATTR_LINE_START: 5468dcb2a10SAndre Fischer { 5472d10cb3dSArmin Le Grand if(bDisabled) 5482d10cb3dSArmin Le Grand { 5492d10cb3dSArmin Le Grand mpFTArrow->Disable(); 5502d10cb3dSArmin Le Grand mpLBStart->Disable(); 5512d10cb3dSArmin Le Grand } 5522d10cb3dSArmin Le Grand else 5532d10cb3dSArmin Le Grand { 5542d10cb3dSArmin Le Grand mpFTArrow->Enable(); 5552d10cb3dSArmin Le Grand mpLBStart->Enable(); 5562d10cb3dSArmin Le Grand } 5578dcb2a10SAndre Fischer 5582d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT) 5592d10cb3dSArmin Le Grand { 560a567bdc8SArmin Le Grand const XLineStartItem* pItem = dynamic_cast< const XLineStartItem* >(pState); 561a567bdc8SArmin Le Grand 562a567bdc8SArmin Le Grand if(pItem) 563a567bdc8SArmin Le Grand { 5642d10cb3dSArmin Le Grand mpStartItem.reset(pItem ? (XLineStartItem*)pItem->Clone() : 0); 5652d10cb3dSArmin Le Grand SelectEndStyle(true); 566a567bdc8SArmin Le Grand break; 567a567bdc8SArmin Le Grand } 5682d10cb3dSArmin Le Grand } 569a567bdc8SArmin Le Grand 5702d10cb3dSArmin Le Grand mpStartItem.reset(0); 5712d10cb3dSArmin Le Grand SelectEndStyle(true); 5722d10cb3dSArmin Le Grand break; 5738dcb2a10SAndre Fischer } 5742d10cb3dSArmin Le Grand case SID_ATTR_LINE_END: 5758dcb2a10SAndre Fischer { 5762d10cb3dSArmin Le Grand if(bDisabled) 5772d10cb3dSArmin Le Grand { 5782d10cb3dSArmin Le Grand mpFTArrow->Disable(); 5792d10cb3dSArmin Le Grand mpLBEnd->Disable(); 5802d10cb3dSArmin Le Grand } 5812d10cb3dSArmin Le Grand else 5822d10cb3dSArmin Le Grand { 5832d10cb3dSArmin Le Grand mpFTArrow->Enable(); 5842d10cb3dSArmin Le Grand mpLBEnd->Enable(); 5852d10cb3dSArmin Le Grand } 5868dcb2a10SAndre Fischer 5872d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT) 5882d10cb3dSArmin Le Grand { 589a567bdc8SArmin Le Grand const XLineEndItem* pItem = dynamic_cast< const XLineEndItem* >(pState); 590a567bdc8SArmin Le Grand 591a567bdc8SArmin Le Grand if(pItem) 592a567bdc8SArmin Le Grand { 5932d10cb3dSArmin Le Grand mpEndItem.reset(pItem ? (XLineEndItem*)pItem->Clone() : 0); 5942d10cb3dSArmin Le Grand SelectEndStyle(false); 595a567bdc8SArmin Le Grand break; 596a567bdc8SArmin Le Grand } 5972d10cb3dSArmin Le Grand } 598a567bdc8SArmin Le Grand 5992d10cb3dSArmin Le Grand mpEndItem.reset(0); 6002d10cb3dSArmin Le Grand SelectEndStyle(false); 6012d10cb3dSArmin Le Grand break; 6028dcb2a10SAndre Fischer } 6032d10cb3dSArmin Le Grand case SID_LINEEND_LIST: 6048dcb2a10SAndre Fischer { 6052d10cb3dSArmin Le Grand FillLineEndList(); 6062d10cb3dSArmin Le Grand SelectEndStyle(true); 6072d10cb3dSArmin Le Grand SelectEndStyle(false); 6082d10cb3dSArmin Le Grand break; 6098dcb2a10SAndre Fischer } 6102d10cb3dSArmin Le Grand case SID_DASH_LIST: 61197e8a929SArmin Le Grand { 6122d10cb3dSArmin Le Grand FillLineStyleList(); 6132d10cb3dSArmin Le Grand SelectLineStyle(); 6142d10cb3dSArmin Le Grand break; 61597e8a929SArmin Le Grand } 6168dcb2a10SAndre Fischer case SID_ATTR_LINE_JOINT: 6178dcb2a10SAndre Fischer { 6182d10cb3dSArmin Le Grand if(bDisabled) 6198dcb2a10SAndre Fischer { 6208dcb2a10SAndre Fischer mpLBEdgeStyle->Disable(); 6218dcb2a10SAndre Fischer } 6228dcb2a10SAndre Fischer else 6238dcb2a10SAndre Fischer { 6248dcb2a10SAndre Fischer mpLBEdgeStyle->Enable(); 6252d10cb3dSArmin Le Grand } 6262d10cb3dSArmin Le Grand 6272d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT) 6282d10cb3dSArmin Le Grand { 6298dcb2a10SAndre Fischer const XLineJointItem* pItem = dynamic_cast< const XLineJointItem* >(pState); 6308dcb2a10SAndre Fischer 6312d10cb3dSArmin Le Grand if(pItem) 6328dcb2a10SAndre Fischer { 6332d10cb3dSArmin Le Grand sal_uInt16 nEntryPos(0); 6342d10cb3dSArmin Le Grand 6358dcb2a10SAndre Fischer switch(pItem->GetValue()) 6368dcb2a10SAndre Fischer { 6378dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_MIDDLE: 6388dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_ROUND: 6398dcb2a10SAndre Fischer { 6408dcb2a10SAndre Fischer nEntryPos = 1; 6418dcb2a10SAndre Fischer break; 6428dcb2a10SAndre Fischer } 6438dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_NONE: 6448dcb2a10SAndre Fischer { 6458dcb2a10SAndre Fischer nEntryPos = 2; 6468dcb2a10SAndre Fischer break; 6478dcb2a10SAndre Fischer } 6488dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_MITER: 6498dcb2a10SAndre Fischer { 6508dcb2a10SAndre Fischer nEntryPos = 3; 6518dcb2a10SAndre Fischer break; 6528dcb2a10SAndre Fischer } 6538dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_BEVEL: 6548dcb2a10SAndre Fischer { 6558dcb2a10SAndre Fischer nEntryPos = 4; 6568dcb2a10SAndre Fischer break; 6578dcb2a10SAndre Fischer } 6588dcb2a10SAndre Fischer 6598dcb2a10SAndre Fischer default: 6608dcb2a10SAndre Fischer break; 6618dcb2a10SAndre Fischer } 6628dcb2a10SAndre Fischer 6632d10cb3dSArmin Le Grand if(nEntryPos) 6642d10cb3dSArmin Le Grand { 6652d10cb3dSArmin Le Grand mpLBEdgeStyle->SelectEntryPos(nEntryPos - 1); 6662d10cb3dSArmin Le Grand break; 6672d10cb3dSArmin Le Grand } 6688dcb2a10SAndre Fischer } 6698dcb2a10SAndre Fischer } 6702d10cb3dSArmin Le Grand 6712d10cb3dSArmin Le Grand mpLBEdgeStyle->SetNoSelection(); 6728dcb2a10SAndre Fischer break; 6738dcb2a10SAndre Fischer } 6748dcb2a10SAndre Fischer case SID_ATTR_LINE_CAP: 6758dcb2a10SAndre Fischer { 6762d10cb3dSArmin Le Grand if(bDisabled) 6778dcb2a10SAndre Fischer { 6788dcb2a10SAndre Fischer mpLBCapStyle->Disable(); 6798dcb2a10SAndre Fischer } 6808dcb2a10SAndre Fischer else 6818dcb2a10SAndre Fischer { 6828dcb2a10SAndre Fischer mpLBCapStyle->Enable(); 6832d10cb3dSArmin Le Grand } 6842d10cb3dSArmin Le Grand 6852d10cb3dSArmin Le Grand if(eState >= SFX_ITEM_DEFAULT) 6862d10cb3dSArmin Le Grand { 6878dcb2a10SAndre Fischer const XLineCapItem* pItem = dynamic_cast< const XLineCapItem* >(pState); 6888dcb2a10SAndre Fischer 6892d10cb3dSArmin Le Grand if(pItem) 6908dcb2a10SAndre Fischer { 6912d10cb3dSArmin Le Grand sal_uInt16 nEntryPos(0); 6922d10cb3dSArmin Le Grand 6938dcb2a10SAndre Fischer switch(pItem->GetValue()) 6948dcb2a10SAndre Fischer { 6958dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_BUTT: 6968dcb2a10SAndre Fischer { 6978dcb2a10SAndre Fischer nEntryPos = 1; 6988dcb2a10SAndre Fischer break; 6998dcb2a10SAndre Fischer } 7008dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_ROUND: 7018dcb2a10SAndre Fischer { 7028dcb2a10SAndre Fischer nEntryPos = 2; 7038dcb2a10SAndre Fischer break; 7048dcb2a10SAndre Fischer } 7058dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_SQUARE: 7068dcb2a10SAndre Fischer { 7078dcb2a10SAndre Fischer nEntryPos = 3; 7088dcb2a10SAndre Fischer break; 7098dcb2a10SAndre Fischer } 7108dcb2a10SAndre Fischer 7118dcb2a10SAndre Fischer default: 7128dcb2a10SAndre Fischer break; 7138dcb2a10SAndre Fischer } 7148dcb2a10SAndre Fischer 7152d10cb3dSArmin Le Grand if(nEntryPos) 7162d10cb3dSArmin Le Grand { 7172d10cb3dSArmin Le Grand mpLBCapStyle->SelectEntryPos(nEntryPos - 1); 7182d10cb3dSArmin Le Grand break; 7192d10cb3dSArmin Le Grand } 7208dcb2a10SAndre Fischer } 7218dcb2a10SAndre Fischer } 722d74d90d6SArmin Le Grand 723d74d90d6SArmin Le Grand mpLBCapStyle->SetNoSelection(); 7248dcb2a10SAndre Fischer break; 7258dcb2a10SAndre Fischer } 7268dcb2a10SAndre Fischer } 7278dcb2a10SAndre Fischer } 7288dcb2a10SAndre Fischer 7298dcb2a10SAndre Fischer 7308dcb2a10SAndre Fischer 73145da7d5eSAndre Fischer 7328dcb2a10SAndre Fischer SfxBindings* LinePropertyPanel::GetBindings() 7338dcb2a10SAndre Fischer { 7348dcb2a10SAndre Fischer return mpBindings; 7358dcb2a10SAndre Fischer } 7368dcb2a10SAndre Fischer 7378dcb2a10SAndre Fischer 7388dcb2a10SAndre Fischer 7398dcb2a10SAndre Fischer IMPL_LINK( LinePropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG ) 7408dcb2a10SAndre Fischer { 7412d10cb3dSArmin Le Grand return 0; 7428dcb2a10SAndre Fischer } 7438dcb2a10SAndre Fischer 7448dcb2a10SAndre Fischer 7458dcb2a10SAndre Fischer 7468dcb2a10SAndre Fischer 7478dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ToolboxColorSelectHdl,ToolBox*, pToolBox) 7488dcb2a10SAndre Fischer { 7492d10cb3dSArmin Le Grand sal_uInt16 nId = pToolBox->GetCurItemId(); 7502d10cb3dSArmin Le Grand if(nId == TBI_COLOR) 7512d10cb3dSArmin Le Grand { 7528dcb2a10SAndre Fischer maColorPopup.Show(*pToolBox); 7538dcb2a10SAndre Fischer maColorPopup.SetCurrentColor(maColor, mbColorAvailable); 7542d10cb3dSArmin Le Grand } 7552d10cb3dSArmin Le Grand return 0; 7568dcb2a10SAndre Fischer } 7578dcb2a10SAndre Fischer 7588dcb2a10SAndre Fischer 7598dcb2a10SAndre Fischer 7608dcb2a10SAndre Fischer 7617134ea5bSPavel Janík IMPL_LINK(LinePropertyPanel, ChangeLineStyleHdl, ToolBox*, /* pToolBox */) 7628dcb2a10SAndre Fischer { 76397e8a929SArmin Le Grand const sal_uInt16 nPos(mpLBStyle->GetSelectEntryPos()); 7648dcb2a10SAndre Fischer 76597e8a929SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBStyle->GetSavedValue()) 76697e8a929SArmin Le Grand { 76797e8a929SArmin Le Grand if(0 == nPos) 76897e8a929SArmin Le Grand { 76997e8a929SArmin Le Grand // XLINE_NONE 77097e8a929SArmin Le Grand const XLineStyleItem aItem(XLINE_NONE); 77197e8a929SArmin Le Grand 77297e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L); 77397e8a929SArmin Le Grand } 77497e8a929SArmin Le Grand else if(1 == nPos) 77597e8a929SArmin Le Grand { 77697e8a929SArmin Le Grand // XLINE_SOLID 77797e8a929SArmin Le Grand const XLineStyleItem aItem(XLINE_SOLID); 77897e8a929SArmin Le Grand 77997e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L); 78097e8a929SArmin Le Grand } 781*c7be74b1SArmin Le Grand else if(maLineStyleList.get() && maLineStyleList->Count() > (long)(nPos - 2)) 78297e8a929SArmin Le Grand { 78397e8a929SArmin Le Grand // XLINE_DASH 78497e8a929SArmin Le Grand const XLineStyleItem aItemA(XLINE_DASH); 785*c7be74b1SArmin Le Grand const XDashEntry* pDashEntry = maLineStyleList->GetDash(nPos - 2); 786c3c0ed1bSArmin Le Grand OSL_ENSURE(pDashEntry, "OOps, got empty XDash from XDashList (!)"); 787c3c0ed1bSArmin Le Grand const XLineDashItem aItemB( 788c3c0ed1bSArmin Le Grand pDashEntry ? pDashEntry->GetName() : String(), 789c3c0ed1bSArmin Le Grand pDashEntry ? pDashEntry->GetDash() : XDash()); 79097e8a929SArmin Le Grand 79197e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItemA, 0L); 79297e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_DASH, SFX_CALLMODE_RECORD, &aItemB, 0L); 79397e8a929SArmin Le Grand } 79497e8a929SArmin Le Grand } 79597e8a929SArmin Le Grand 79697e8a929SArmin Le Grand return 0; 79797e8a929SArmin Le Grand } 7988dcb2a10SAndre Fischer 7998dcb2a10SAndre Fischer 8008dcb2a10SAndre Fischer 8018dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeStartHdl, void*, EMPTYARG) 8028dcb2a10SAndre Fischer { 8032d10cb3dSArmin Le Grand sal_uInt16 nPos = mpLBStart->GetSelectEntryPos(); 8042d10cb3dSArmin Le Grand if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != mpLBStart->GetSavedValue() ) 8052d10cb3dSArmin Le Grand { 8062d10cb3dSArmin Le Grand XLineStartItem* pItem = NULL; 8072d10cb3dSArmin Le Grand if( nPos == 0 ) 8082d10cb3dSArmin Le Grand pItem = new XLineStartItem(); 809*c7be74b1SArmin Le Grand else if( maLineEndList.get() && maLineEndList->Count() > (long) ( nPos - 1 ) ) 810*c7be74b1SArmin Le Grand pItem = new XLineStartItem( mpLBStart->GetSelectEntry(),maLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ); 8112d10cb3dSArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINEEND_STYLE, SFX_CALLMODE_RECORD, pItem, 0L); 8122d10cb3dSArmin Le Grand delete pItem; 8132d10cb3dSArmin Le Grand } 8142d10cb3dSArmin Le Grand return 0; 8158dcb2a10SAndre Fischer } 8168dcb2a10SAndre Fischer 8178dcb2a10SAndre Fischer 8188dcb2a10SAndre Fischer 8198dcb2a10SAndre Fischer 8208dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeEndHdl, void*, EMPTYARG) 8218dcb2a10SAndre Fischer { 8222d10cb3dSArmin Le Grand sal_uInt16 nPos = mpLBEnd->GetSelectEntryPos(); 8232d10cb3dSArmin Le Grand if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != mpLBEnd->GetSavedValue() ) 8242d10cb3dSArmin Le Grand { 8252d10cb3dSArmin Le Grand XLineEndItem* pItem = NULL; 8262d10cb3dSArmin Le Grand if( nPos == 0 ) 8272d10cb3dSArmin Le Grand pItem = new XLineEndItem(); 828*c7be74b1SArmin Le Grand else if( maLineEndList.get() && maLineEndList->Count() > (long) ( nPos - 1 ) ) 829*c7be74b1SArmin Le Grand pItem = new XLineEndItem( mpLBEnd->GetSelectEntry(), maLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ); 8302d10cb3dSArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINEEND_STYLE, SFX_CALLMODE_RECORD, pItem, 0L); 8312d10cb3dSArmin Le Grand delete pItem; 8322d10cb3dSArmin Le Grand } 8332d10cb3dSArmin Le Grand return 0; 8348dcb2a10SAndre Fischer } 8358dcb2a10SAndre Fischer 8368dcb2a10SAndre Fischer 8378dcb2a10SAndre Fischer 8388dcb2a10SAndre Fischer 8398dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeEdgeStyleHdl, void*, EMPTYARG) 8408dcb2a10SAndre Fischer { 8418dcb2a10SAndre Fischer const sal_uInt16 nPos(mpLBEdgeStyle->GetSelectEntryPos()); 8428dcb2a10SAndre Fischer 8438dcb2a10SAndre Fischer if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBEdgeStyle->GetSavedValue()) 8448dcb2a10SAndre Fischer { 8458dcb2a10SAndre Fischer XLineJointItem* pItem = 0; 8468dcb2a10SAndre Fischer 8478dcb2a10SAndre Fischer switch(nPos) 8488dcb2a10SAndre Fischer { 8498dcb2a10SAndre Fischer case 0: // rounded 8508dcb2a10SAndre Fischer { 8518dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_ROUND); 8528dcb2a10SAndre Fischer break; 8538dcb2a10SAndre Fischer } 8548dcb2a10SAndre Fischer case 1: // none 8558dcb2a10SAndre Fischer { 8568dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_NONE); 8578dcb2a10SAndre Fischer break; 8588dcb2a10SAndre Fischer } 8598dcb2a10SAndre Fischer case 2: // mitered 8608dcb2a10SAndre Fischer { 8618dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_MITER); 8628dcb2a10SAndre Fischer break; 8638dcb2a10SAndre Fischer } 8648dcb2a10SAndre Fischer case 3: // beveled 8658dcb2a10SAndre Fischer { 8668dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_BEVEL); 8678dcb2a10SAndre Fischer break; 8688dcb2a10SAndre Fischer } 8698dcb2a10SAndre Fischer } 8708dcb2a10SAndre Fischer 8718dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_JOINT, SFX_CALLMODE_RECORD, pItem, 0L); 8728dcb2a10SAndre Fischer delete pItem; 8738dcb2a10SAndre Fischer } 8748dcb2a10SAndre Fischer return 0; 8758dcb2a10SAndre Fischer } 8768dcb2a10SAndre Fischer 8778dcb2a10SAndre Fischer 8788dcb2a10SAndre Fischer 8798dcb2a10SAndre Fischer 8808dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeCapStyleHdl, void*, EMPTYARG) 8818dcb2a10SAndre Fischer { 8828dcb2a10SAndre Fischer const sal_uInt16 nPos(mpLBCapStyle->GetSelectEntryPos()); 8838dcb2a10SAndre Fischer 8848dcb2a10SAndre Fischer if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBCapStyle->GetSavedValue()) 8858dcb2a10SAndre Fischer { 8868dcb2a10SAndre Fischer XLineCapItem* pItem = 0; 8878dcb2a10SAndre Fischer 8888dcb2a10SAndre Fischer switch(nPos) 8898dcb2a10SAndre Fischer { 8908dcb2a10SAndre Fischer case 0: // flat 8918dcb2a10SAndre Fischer { 8928dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_BUTT); 8938dcb2a10SAndre Fischer break; 8948dcb2a10SAndre Fischer } 8958dcb2a10SAndre Fischer case 1: // round 8968dcb2a10SAndre Fischer { 8978dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_ROUND); 8988dcb2a10SAndre Fischer break; 8998dcb2a10SAndre Fischer } 9008dcb2a10SAndre Fischer case 2: // square 9018dcb2a10SAndre Fischer { 9028dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_SQUARE); 9038dcb2a10SAndre Fischer break; 9048dcb2a10SAndre Fischer } 9058dcb2a10SAndre Fischer } 9068dcb2a10SAndre Fischer 9078dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_CAP, SFX_CALLMODE_RECORD, pItem, 0L); 9088dcb2a10SAndre Fischer delete pItem; 9098dcb2a10SAndre Fischer } 9108dcb2a10SAndre Fischer return 0; 9118dcb2a10SAndre Fischer } 9128dcb2a10SAndre Fischer 9138dcb2a10SAndre Fischer 9148dcb2a10SAndre Fischer 9158dcb2a10SAndre Fischer 9168dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ToolboxWidthSelectHdl,ToolBox*, pToolBox) 9178dcb2a10SAndre Fischer { 9182d10cb3dSArmin Le Grand if (pToolBox->GetCurItemId() == TBI_WIDTH) 9192d10cb3dSArmin Le Grand { 9202d10cb3dSArmin Le Grand maLineWidthPopup.SetWidthSelect(mnWidthCoreValue, mbWidthValuable, meMapUnit); 9218dcb2a10SAndre Fischer maLineWidthPopup.Show(*pToolBox); 9222d10cb3dSArmin Le Grand } 9232d10cb3dSArmin Le Grand return 0; 9248dcb2a10SAndre Fischer } 9258dcb2a10SAndre Fischer 9268dcb2a10SAndre Fischer 9278dcb2a10SAndre Fischer 9288dcb2a10SAndre Fischer 9298dcb2a10SAndre Fischer IMPL_LINK( LinePropertyPanel, ChangeTransparentHdl, void *, EMPTYARG ) 9308dcb2a10SAndre Fischer { 9312d10cb3dSArmin Le Grand sal_uInt16 nVal = (sal_uInt16)mpMFTransparent->GetValue(); 9322d10cb3dSArmin Le Grand XLineTransparenceItem aItem( nVal ); 9338dcb2a10SAndre Fischer 9342d10cb3dSArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L); 9352d10cb3dSArmin Le Grand return( 0L ); 9368dcb2a10SAndre Fischer } 9378dcb2a10SAndre Fischer 9388dcb2a10SAndre Fischer 9398dcb2a10SAndre Fischer 9408dcb2a10SAndre Fischer 941b7a56e95SArmin Le Grand namespace 942b7a56e95SArmin Le Grand { 943b7a56e95SArmin Le Grand Color GetTransparentColor (void) 944b7a56e95SArmin Le Grand { 945b7a56e95SArmin Le Grand return COL_TRANSPARENT; 946b7a56e95SArmin Le Grand } 947b7a56e95SArmin Le Grand } // end of anonymous namespace 948b7a56e95SArmin Le Grand 9498dcb2a10SAndre Fischer PopupControl* LinePropertyPanel::CreateColorPopupControl (PopupContainer* pParent) 9508dcb2a10SAndre Fischer { 9518dcb2a10SAndre Fischer return new ColorControl( 9528dcb2a10SAndre Fischer pParent, 9538dcb2a10SAndre Fischer mpBindings, 9548dcb2a10SAndre Fischer SVX_RES(RID_POPUPPANEL_LINEPAGE_COLOR), 9558dcb2a10SAndre Fischer SVX_RES(VS_COLOR), 9568dcb2a10SAndre Fischer ::boost::bind(GetTransparentColor), 9578dcb2a10SAndre Fischer ::boost::bind(&LinePropertyPanel::SetColor, this, _1, _2), 9588dcb2a10SAndre Fischer pParent, 959b7a56e95SArmin Le Grand 0); 9608dcb2a10SAndre Fischer } 9618dcb2a10SAndre Fischer 9628dcb2a10SAndre Fischer 9638dcb2a10SAndre Fischer 9648dcb2a10SAndre Fischer 9658dcb2a10SAndre Fischer PopupControl* LinePropertyPanel::CreateLineWidthPopupControl (PopupContainer* pParent) 9668dcb2a10SAndre Fischer { 9678dcb2a10SAndre Fischer return new LineWidthControl(pParent, *this); 9688dcb2a10SAndre Fischer } 9698dcb2a10SAndre Fischer 9708dcb2a10SAndre Fischer 9718dcb2a10SAndre Fischer 9728dcb2a10SAndre Fischer 9738dcb2a10SAndre Fischer void LinePropertyPanel::EndLineWidthPopupMode (void) 9748dcb2a10SAndre Fischer { 9758dcb2a10SAndre Fischer maLineWidthPopup.Hide(); 9768dcb2a10SAndre Fischer } 9778dcb2a10SAndre Fischer 9788dcb2a10SAndre Fischer 9798dcb2a10SAndre Fischer 9808dcb2a10SAndre Fischer 9818dcb2a10SAndre Fischer void LinePropertyPanel::SetWidthIcon(int n) 9828dcb2a10SAndre Fischer { 9832d10cb3dSArmin Le Grand if(n==0) 9842d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, maIMGNone); 9852d10cb3dSArmin Le Grand else 9862d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[n-1] : mpIMGWidthIcon[n-1]); 9878dcb2a10SAndre Fischer } 9888dcb2a10SAndre Fischer 9898dcb2a10SAndre Fischer 9908dcb2a10SAndre Fischer 9918dcb2a10SAndre Fischer void LinePropertyPanel::SetWidthIcon() 9928dcb2a10SAndre Fischer { 9932d10cb3dSArmin Le Grand if(!mbWidthValuable) 9942d10cb3dSArmin Le Grand { 9952d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, maIMGNone); 9962d10cb3dSArmin Le Grand return; 9972d10cb3dSArmin Le Grand } 9982d10cb3dSArmin Le Grand 9992d10cb3dSArmin Le Grand long nVal = LogicToLogic(mnWidthCoreValue * 10,(MapUnit)meMapUnit , MAP_POINT); 10002d10cb3dSArmin Le Grand 10012d10cb3dSArmin Le Grand if(nVal <= 6) 10022d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[0] : mpIMGWidthIcon[0]); 10032d10cb3dSArmin Le Grand else if(nVal > 6 && nVal <= 9) 10042d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[1] : mpIMGWidthIcon[1]); 10052d10cb3dSArmin Le Grand else if(nVal > 9 && nVal <= 12) 10062d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[2] : mpIMGWidthIcon[2]); 10072d10cb3dSArmin Le Grand else if(nVal > 12 && nVal <= 19) 10082d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[3] : mpIMGWidthIcon[3]); 10092d10cb3dSArmin Le Grand else if(nVal > 19 && nVal <= 26) 10102d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[4] : mpIMGWidthIcon[4]); 10112d10cb3dSArmin Le Grand else if(nVal > 26 && nVal <= 37) 10122d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[5] : mpIMGWidthIcon[5]); 10132d10cb3dSArmin Le Grand else if(nVal > 37 && nVal <=52) 10142d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[6] : mpIMGWidthIcon[6]); 10152d10cb3dSArmin Le Grand else if(nVal > 52) 10162d10cb3dSArmin Le Grand mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[7] : mpIMGWidthIcon[7]); 10178dcb2a10SAndre Fischer 10188dcb2a10SAndre Fischer } 10198dcb2a10SAndre Fischer 10208dcb2a10SAndre Fischer 10218dcb2a10SAndre Fischer 10228dcb2a10SAndre Fischer void LinePropertyPanel::SetColor ( 10238dcb2a10SAndre Fischer const String& rsColorName, 10248dcb2a10SAndre Fischer const Color aColor) 10258dcb2a10SAndre Fischer { 10268dcb2a10SAndre Fischer XLineColorItem aColorItem(rsColorName, aColor); 10278dcb2a10SAndre Fischer mpBindings->GetDispatcher()->Execute(SID_ATTR_LINE_COLOR, SFX_CALLMODE_RECORD, &aColorItem, 0L); 10288dcb2a10SAndre Fischer maColor = aColor; 10298dcb2a10SAndre Fischer } 10308dcb2a10SAndre Fischer 10318dcb2a10SAndre Fischer 10328dcb2a10SAndre Fischer 10338dcb2a10SAndre Fischer void LinePropertyPanel::SetWidth(long nWidth) 10348dcb2a10SAndre Fischer { 10358dcb2a10SAndre Fischer mnWidthCoreValue = nWidth; 10368dcb2a10SAndre Fischer mbWidthValuable = true; 10378dcb2a10SAndre Fischer } 10388dcb2a10SAndre Fischer 10398dcb2a10SAndre Fischer 10408dcb2a10SAndre Fischer 10418dcb2a10SAndre Fischer void LinePropertyPanel::FillLineEndList() 10428dcb2a10SAndre Fischer { 10432d10cb3dSArmin Le Grand SfxObjectShell* pSh = SfxObjectShell::Current(); 10442d10cb3dSArmin Le Grand if ( pSh && pSh->GetItem( SID_LINEEND_LIST ) ) 10452d10cb3dSArmin Le Grand { 10462d10cb3dSArmin Le Grand mpLBStart->Enable(); 10472d10cb3dSArmin Le Grand SvxLineEndListItem aItem( *(const SvxLineEndListItem*)(pSh->GetItem( SID_LINEEND_LIST ) ) ); 1048*c7be74b1SArmin Le Grand maLineEndList = aItem.GetLineEndList(); 1049a567bdc8SArmin Le Grand 1050*c7be74b1SArmin Le Grand if(maLineEndList.get()) 10512d10cb3dSArmin Le Grand { 1052*c7be74b1SArmin Le Grand FillLineEndListBox(*mpLBStart, *mpLBEnd, maLineEndList); 10532d10cb3dSArmin Le Grand } 10542d10cb3dSArmin Le Grand 10552d10cb3dSArmin Le Grand mpLBStart->SelectEntryPos(0); 10562d10cb3dSArmin Le Grand mpLBEnd->SelectEntryPos(0); 10572d10cb3dSArmin Le Grand } 10582d10cb3dSArmin Le Grand else 10592d10cb3dSArmin Le Grand { 10602d10cb3dSArmin Le Grand mpLBStart->Disable(); 10612d10cb3dSArmin Le Grand mpLBEnd->Disable(); 10622d10cb3dSArmin Le Grand } 10638dcb2a10SAndre Fischer } 10648dcb2a10SAndre Fischer 10658dcb2a10SAndre Fischer 10668dcb2a10SAndre Fischer 106797e8a929SArmin Le Grand void LinePropertyPanel::FillLineStyleList() 106897e8a929SArmin Le Grand { 10692d10cb3dSArmin Le Grand SfxObjectShell* pSh = SfxObjectShell::Current(); 10702d10cb3dSArmin Le Grand if ( pSh && pSh->GetItem( SID_DASH_LIST ) ) 10712d10cb3dSArmin Le Grand { 10722d10cb3dSArmin Le Grand mpLBStyle->Enable(); 10732d10cb3dSArmin Le Grand SvxDashListItem aItem( *(const SvxDashListItem*)(pSh->GetItem( SID_DASH_LIST ) ) ); 1074*c7be74b1SArmin Le Grand maLineStyleList = aItem.GetDashList(); 107597e8a929SArmin Le Grand 1076*c7be74b1SArmin Le Grand if(maLineStyleList.get()) 10772d10cb3dSArmin Le Grand { 1078*c7be74b1SArmin Le Grand FillLineStyleListBox(*mpLBStyle, maLineStyleList); 10792d10cb3dSArmin Le Grand } 10802d10cb3dSArmin Le Grand 10812d10cb3dSArmin Le Grand mpLBStyle->SelectEntryPos(0); 10822d10cb3dSArmin Le Grand } 10832d10cb3dSArmin Le Grand else 10842d10cb3dSArmin Le Grand { 10852d10cb3dSArmin Le Grand mpLBStyle->Disable(); 10862d10cb3dSArmin Le Grand } 108797e8a929SArmin Le Grand } 108897e8a929SArmin Le Grand 108997e8a929SArmin Le Grand 109097e8a929SArmin Le Grand 109197e8a929SArmin Le Grand void LinePropertyPanel::SelectLineStyle() 109297e8a929SArmin Le Grand { 10932d10cb3dSArmin Le Grand if( !mpStyleItem.get() || !mpDashItem.get() ) 10942d10cb3dSArmin Le Grand { 10952d10cb3dSArmin Le Grand mpLBStyle->SetNoSelection(); 10962d10cb3dSArmin Le Grand return; 10972d10cb3dSArmin Le Grand } 109897e8a929SArmin Le Grand 109997e8a929SArmin Le Grand const XLineStyle eXLS(mpStyleItem ? (XLineStyle)mpStyleItem->GetValue() : XLINE_NONE); 11002d10cb3dSArmin Le Grand bool bSelected(false); 110197e8a929SArmin Le Grand 110297e8a929SArmin Le Grand switch(eXLS) 110397e8a929SArmin Le Grand { 110497e8a929SArmin Le Grand case XLINE_NONE: 110597e8a929SArmin Le Grand break; 110697e8a929SArmin Le Grand case XLINE_SOLID: 11072d10cb3dSArmin Le Grand mpLBStyle->SelectEntryPos(1); 11082d10cb3dSArmin Le Grand bSelected = true; 110997e8a929SArmin Le Grand break; 111097e8a929SArmin Le Grand default: 1111*c7be74b1SArmin Le Grand if(mpDashItem && maLineStyleList.get()) 11122d10cb3dSArmin Le Grand { 11132d10cb3dSArmin Le Grand const XDash& rDash = mpDashItem->GetDashValue(); 1114*c7be74b1SArmin Le Grand for(sal_Int32 a(0);!bSelected && a < maLineStyleList->Count(); a++) 11152d10cb3dSArmin Le Grand { 1116*c7be74b1SArmin Le Grand XDashEntry* pEntry = maLineStyleList->GetDash(a); 11172d10cb3dSArmin Le Grand const XDash& rEntry = pEntry->GetDash(); 11182d10cb3dSArmin Le Grand if(rDash == rEntry) 11192d10cb3dSArmin Le Grand { 11202d10cb3dSArmin Le Grand mpLBStyle->SelectEntryPos((sal_uInt16)a + 2); 11212d10cb3dSArmin Le Grand bSelected = true; 11222d10cb3dSArmin Le Grand } 11232d10cb3dSArmin Le Grand } 11242d10cb3dSArmin Le Grand } 112597e8a929SArmin Le Grand break; 112697e8a929SArmin Le Grand } 11272d10cb3dSArmin Le Grand 112897e8a929SArmin Le Grand if(!bSelected) 11292d10cb3dSArmin Le Grand mpLBStyle->SelectEntryPos( 0 ); 113097e8a929SArmin Le Grand } 113197e8a929SArmin Le Grand 11328dcb2a10SAndre Fischer void LinePropertyPanel::SelectEndStyle(bool bStart) 11338dcb2a10SAndre Fischer { 11342d10cb3dSArmin Le Grand sal_Bool bSelected(false); 11352d10cb3dSArmin Le Grand 11362d10cb3dSArmin Le Grand if(bStart) 11372d10cb3dSArmin Le Grand { 11382d10cb3dSArmin Le Grand if( !mpStartItem.get() ) 11392d10cb3dSArmin Le Grand { 11402d10cb3dSArmin Le Grand mpLBStart->SetNoSelection(); 11412d10cb3dSArmin Le Grand return; 11422d10cb3dSArmin Le Grand } 11432d10cb3dSArmin Le Grand 1144*c7be74b1SArmin Le Grand if(mpStartItem && maLineEndList.get()) 11452d10cb3dSArmin Le Grand { 11462d10cb3dSArmin Le Grand const basegfx::B2DPolyPolygon& rItemPolygon = mpStartItem->GetLineStartValue(); 1147*c7be74b1SArmin Le Grand for(sal_Int32 a(0);!bSelected && a < maLineEndList->Count(); a++) 11482d10cb3dSArmin Le Grand { 1149*c7be74b1SArmin Le Grand XLineEndEntry* pEntry = maLineEndList->GetLineEnd(a); 11502d10cb3dSArmin Le Grand const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd(); 11512d10cb3dSArmin Le Grand if(rItemPolygon == rEntryPolygon) 11522d10cb3dSArmin Le Grand { 11532d10cb3dSArmin Le Grand mpLBStart->SelectEntryPos((sal_uInt16)a + 1); 11542d10cb3dSArmin Le Grand bSelected = true; 11552d10cb3dSArmin Le Grand } 11562d10cb3dSArmin Le Grand } 11572d10cb3dSArmin Le Grand } 11582d10cb3dSArmin Le Grand 11592d10cb3dSArmin Le Grand if(!bSelected) 11602d10cb3dSArmin Le Grand { 11612d10cb3dSArmin Le Grand mpLBStart->SelectEntryPos( 0 ); 11622d10cb3dSArmin Le Grand } 11632d10cb3dSArmin Le Grand } 11642d10cb3dSArmin Le Grand else 11652d10cb3dSArmin Le Grand { 11662d10cb3dSArmin Le Grand if( !mpEndItem.get() ) 11672d10cb3dSArmin Le Grand { 11682d10cb3dSArmin Le Grand mpLBEnd->SetNoSelection(); 11692d10cb3dSArmin Le Grand return; 11702d10cb3dSArmin Le Grand } 11712d10cb3dSArmin Le Grand 1172*c7be74b1SArmin Le Grand if(mpEndItem && maLineEndList.get()) 11732d10cb3dSArmin Le Grand { 11742d10cb3dSArmin Le Grand const basegfx::B2DPolyPolygon& rItemPolygon = mpEndItem->GetLineEndValue(); 1175*c7be74b1SArmin Le Grand for(sal_Int32 a(0);!bSelected && a < maLineEndList->Count(); a++) 11762d10cb3dSArmin Le Grand { 1177*c7be74b1SArmin Le Grand XLineEndEntry* pEntry = maLineEndList->GetLineEnd(a); 11782d10cb3dSArmin Le Grand const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd(); 11792d10cb3dSArmin Le Grand if(rItemPolygon == rEntryPolygon) 11802d10cb3dSArmin Le Grand { 11812d10cb3dSArmin Le Grand mpLBEnd->SelectEntryPos((sal_uInt16)a + 1); 11822d10cb3dSArmin Le Grand bSelected = true; 11832d10cb3dSArmin Le Grand } 11842d10cb3dSArmin Le Grand } 11852d10cb3dSArmin Le Grand } 11862d10cb3dSArmin Le Grand 11872d10cb3dSArmin Le Grand if(!bSelected) 11882d10cb3dSArmin Le Grand { 11892d10cb3dSArmin Le Grand mpLBEnd->SelectEntryPos( 0 ); 11902d10cb3dSArmin Le Grand } 11912d10cb3dSArmin Le Grand } 11928dcb2a10SAndre Fischer } 11938dcb2a10SAndre Fischer 11948dcb2a10SAndre Fischer 11958dcb2a10SAndre Fischer } } // end of namespace svx::sidebar 11964e8031e0SArmin Le Grand 11974e8031e0SArmin Le Grand // eof 1198