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 90a567bdc8SArmin Le Grand void FillLineEndListBox(ListBox& rListBoxStart, ListBox& rListBoxEnd, const XLineEndList& rList) 91a567bdc8SArmin Le Grand { 92a567bdc8SArmin Le Grand const sal_uInt32 nCount(rList.Count()); 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 { 107a567bdc8SArmin Le Grand XLineEndEntry* pEntry = rList.GetLineEnd(i); 10897e8a929SArmin Le Grand const Bitmap aBitmap = const_cast< XLineEndList& >(rList).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 14097e8a929SArmin Le Grand void FillLineStyleListBox(ListBox& rListBox, const XDashList& rList) 14197e8a929SArmin Le Grand { 14297e8a929SArmin Le Grand const sal_uInt32 nCount(rList.Count()); 14397e8a929SArmin Le Grand rListBox.SetUpdateMode(false); 14497e8a929SArmin Le Grand 14597e8a929SArmin Le Grand rListBox.Clear(); 14697e8a929SArmin Le Grand 14797e8a929SArmin Le Grand // entry for 'none' 14897e8a929SArmin Le Grand rListBox.InsertEntry(rList.GetStringForUiNoLine()); 14997e8a929SArmin Le Grand 15097e8a929SArmin Le Grand // entry for solid line 15197e8a929SArmin Le Grand rListBox.InsertEntry(rList.GetStringForUiSolidLine(), rList.GetBitmapForUISolidLine()); 15297e8a929SArmin Le Grand 15397e8a929SArmin Le Grand for(sal_uInt32 i(0); i < nCount; i++) 15497e8a929SArmin Le Grand { 15597e8a929SArmin Le Grand XDashEntry* pEntry = rList.GetDash(i); 15697e8a929SArmin Le Grand const Bitmap aBitmap = const_cast< XDashList& >(rList).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), 2218dcb2a10SAndre Fischer mpLineEndList(0), 22297e8a929SArmin Le Grand mpLineStyleList(0), 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), 2348dcb2a10SAndre Fischer mbStyleAvailable(false), 2358dcb2a10SAndre Fischer mbDashAvailable(false), 2368dcb2a10SAndre Fischer mbTransAvailable(true), 2378dcb2a10SAndre Fischer mbWidthValuable(true), 2388dcb2a10SAndre Fischer mbStartAvailable(true), 2398dcb2a10SAndre Fischer mbEndAvailable(true) 2408dcb2a10SAndre Fischer { 2418dcb2a10SAndre Fischer Initialize(); 2428dcb2a10SAndre Fischer FreeResource(); 2438dcb2a10SAndre Fischer } 2448dcb2a10SAndre Fischer 2458dcb2a10SAndre Fischer 2468dcb2a10SAndre Fischer 2478dcb2a10SAndre Fischer LinePropertyPanel::~LinePropertyPanel() 2488dcb2a10SAndre Fischer { 2498dcb2a10SAndre Fischer // Destroy the toolboxes, then their background windows. 2508dcb2a10SAndre Fischer mpTBWidth.reset(); 2518dcb2a10SAndre Fischer mpTBColor.reset(); 25297e8a929SArmin Le Grand 2538dcb2a10SAndre Fischer mpTBWidthBackground.reset(); 2548dcb2a10SAndre Fischer mpTBColorBackground.reset(); 2558dcb2a10SAndre Fischer } 2568dcb2a10SAndre Fischer 2578dcb2a10SAndre Fischer 2588dcb2a10SAndre Fischer 2598dcb2a10SAndre Fischer void LinePropertyPanel::Initialize() 2608dcb2a10SAndre Fischer { 26137fee4fdSAndre Fischer mpFTWidth->SetBackground(Wallpaper()); 26237fee4fdSAndre Fischer mpFTColor->SetBackground(Wallpaper()); 26337fee4fdSAndre Fischer mpFTStyle->SetBackground(Wallpaper()); 26437fee4fdSAndre Fischer mpFTTrancparency->SetBackground(Wallpaper()); 26537fee4fdSAndre Fischer mpFTArrow->SetBackground(Wallpaper()); 26637fee4fdSAndre Fischer mpFTEdgeStyle->SetBackground(Wallpaper()); 26737fee4fdSAndre Fischer mpFTCapStyle->SetBackground(Wallpaper()); 26837fee4fdSAndre Fischer 2698dcb2a10SAndre Fischer mpIMGWidthIcon.reset(new Image[8]); 2708dcb2a10SAndre Fischer mpIMGWidthIcon[0] = Image(SVX_RES(IMG_WIDTH1_ICON)); 2718dcb2a10SAndre Fischer mpIMGWidthIcon[1] = Image(SVX_RES(IMG_WIDTH2_ICON)); 2728dcb2a10SAndre Fischer mpIMGWidthIcon[2] = Image(SVX_RES(IMG_WIDTH3_ICON)); 2738dcb2a10SAndre Fischer mpIMGWidthIcon[3] = Image(SVX_RES(IMG_WIDTH4_ICON)); 2748dcb2a10SAndre Fischer mpIMGWidthIcon[4] = Image(SVX_RES(IMG_WIDTH5_ICON)); 2758dcb2a10SAndre Fischer mpIMGWidthIcon[5] = Image(SVX_RES(IMG_WIDTH6_ICON)); 2768dcb2a10SAndre Fischer mpIMGWidthIcon[6] = Image(SVX_RES(IMG_WIDTH7_ICON)); 2778dcb2a10SAndre Fischer mpIMGWidthIcon[7] = Image(SVX_RES(IMG_WIDTH8_ICON)); 2788dcb2a10SAndre Fischer 2798dcb2a10SAndre Fischer //high contrast 2808dcb2a10SAndre Fischer mpIMGWidthIconH.reset(new Image[8]); 2818dcb2a10SAndre Fischer mpIMGWidthIconH[0] = Image(SVX_RES(IMG_WIDTH1_ICON_H)); 2828dcb2a10SAndre Fischer mpIMGWidthIconH[1] = Image(SVX_RES(IMG_WIDTH2_ICON_H)); 2838dcb2a10SAndre Fischer mpIMGWidthIconH[2] = Image(SVX_RES(IMG_WIDTH3_ICON_H)); 2848dcb2a10SAndre Fischer mpIMGWidthIconH[3] = Image(SVX_RES(IMG_WIDTH4_ICON_H)); 2858dcb2a10SAndre Fischer mpIMGWidthIconH[4] = Image(SVX_RES(IMG_WIDTH5_ICON_H)); 2868dcb2a10SAndre Fischer mpIMGWidthIconH[5] = Image(SVX_RES(IMG_WIDTH6_ICON_H)); 2878dcb2a10SAndre Fischer mpIMGWidthIconH[6] = Image(SVX_RES(IMG_WIDTH7_ICON_H)); 2888dcb2a10SAndre Fischer mpIMGWidthIconH[7] = Image(SVX_RES(IMG_WIDTH8_ICON_H)); 2898dcb2a10SAndre Fischer 2908dcb2a10SAndre Fischer meMapUnit = maWidthControl.GetCoreMetric(); 2918dcb2a10SAndre Fischer 2928dcb2a10SAndre Fischer mpTBColor->SetItemImage(TBI_COLOR, maIMGColor); 2938dcb2a10SAndre Fischer Size aTbxSize( mpTBColor->CalcWindowSizePixel() ); 2948dcb2a10SAndre Fischer mpTBColor->SetOutputSizePixel( aTbxSize ); 2958dcb2a10SAndre Fischer mpTBColor->SetItemBits( TBI_COLOR, mpTBColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY ); 2968dcb2a10SAndre Fischer mpTBColor->SetQuickHelpText(TBI_COLOR,String(SVX_RES(STR_QH_TB_COLOR))); //Add 2978dcb2a10SAndre Fischer mpTBColor->SetBackground(Wallpaper()); 2988dcb2a10SAndre Fischer mpTBColor->SetPaintTransparent(true); 2998dcb2a10SAndre Fischer Link aLink = LINK(this, LinePropertyPanel, ToolboxColorSelectHdl); 3008dcb2a10SAndre Fischer mpTBColor->SetDropdownClickHdl ( aLink ); 3018dcb2a10SAndre Fischer mpTBColor->SetSelectHdl ( aLink ); 3028dcb2a10SAndre Fischer 30397e8a929SArmin Le Grand FillLineStyleList(); 30497e8a929SArmin Le Grand SelectLineStyle(); 30597e8a929SArmin Le Grand aLink = LINK( this, LinePropertyPanel, ChangeLineStyleHdl ); 30697e8a929SArmin Le Grand mpLBStyle->SetSelectHdl( aLink ); 30797e8a929SArmin Le Grand mpLBStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Style"))); 30897e8a929SArmin Le Grand mpLBStyle->SetDropDownLineCount(std::min(sal_uInt16(20), mpLBStyle->GetEntryCount())); 3098dcb2a10SAndre Fischer 3108dcb2a10SAndre Fischer mpTBWidth->SetItemImage(TBI_WIDTH, mpIMGWidthIcon[0]); 3118dcb2a10SAndre Fischer aTbxSize = mpTBWidth->CalcWindowSizePixel() ; 3128dcb2a10SAndre Fischer mpTBWidth->SetOutputSizePixel( aTbxSize ); 3138dcb2a10SAndre Fischer mpTBWidth->SetItemBits( TBI_WIDTH, mpTBWidth->GetItemBits( TBI_WIDTH ) | TIB_DROPDOWNONLY ); 3148dcb2a10SAndre Fischer mpTBWidth->SetQuickHelpText(TBI_WIDTH,String(SVX_RES(STR_QH_TB_WIDTH))); //Add 3158dcb2a10SAndre Fischer mpTBWidth->SetBackground(Wallpaper()); 3168dcb2a10SAndre Fischer mpTBWidth->SetPaintTransparent(true); 3178dcb2a10SAndre Fischer aLink = LINK(this, LinePropertyPanel, ToolboxWidthSelectHdl); 3188dcb2a10SAndre Fischer mpTBWidth->SetDropdownClickHdl ( aLink ); 3198dcb2a10SAndre Fischer mpTBWidth->SetSelectHdl ( aLink ); 3208dcb2a10SAndre Fischer 3218dcb2a10SAndre Fischer FillLineEndList(); 3228dcb2a10SAndre Fischer SelectEndStyle(true); 3238dcb2a10SAndre Fischer SelectEndStyle(false); 3248dcb2a10SAndre Fischer aLink = LINK( this, LinePropertyPanel, ChangeStartHdl ); 3258dcb2a10SAndre Fischer mpLBStart->SetSelectHdl( aLink ); 3268dcb2a10SAndre Fischer mpLBStart->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Beginning Style"))); //wj acc 327df46ddf6SArmin Le Grand mpLBStart->SetDropDownLineCount(std::min(sal_uInt16(20), mpLBStart->GetEntryCount())); 3288dcb2a10SAndre Fischer aLink = LINK( this, LinePropertyPanel, ChangeEndHdl ); 3298dcb2a10SAndre Fischer mpLBEnd->SetSelectHdl( aLink ); 3308dcb2a10SAndre Fischer mpLBEnd->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Ending Style"))); //wj acc 331df46ddf6SArmin Le Grand mpLBEnd->SetDropDownLineCount(std::min(sal_uInt16(20), mpLBEnd->GetEntryCount())); 3328dcb2a10SAndre Fischer 3338dcb2a10SAndre Fischer aLink = LINK(this, LinePropertyPanel, ChangeTransparentHdl); 3348dcb2a10SAndre Fischer mpMFTransparent->SetModifyHdl(aLink); 3358dcb2a10SAndre Fischer mpMFTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); //wj acc 3368dcb2a10SAndre Fischer 3378dcb2a10SAndre Fischer mpTBWidth->SetAccessibleRelationLabeledBy(mpFTWidth.get()); 3388dcb2a10SAndre Fischer mpTBColor->SetAccessibleRelationLabeledBy(mpFTColor.get()); 33997e8a929SArmin Le Grand mpLBStyle->SetAccessibleRelationLabeledBy(mpFTStyle.get()); 3408dcb2a10SAndre Fischer mpMFTransparent->SetAccessibleRelationLabeledBy(mpFTTrancparency.get()); 3418dcb2a10SAndre Fischer mpLBStart->SetAccessibleRelationLabeledBy(mpFTArrow.get()); 3428dcb2a10SAndre Fischer mpLBEnd->SetAccessibleRelationLabeledBy(mpLBEnd.get()); 3438dcb2a10SAndre Fischer 3448dcb2a10SAndre Fischer aLink = LINK( this, LinePropertyPanel, ChangeEdgeStyleHdl ); 3458dcb2a10SAndre Fischer mpLBEdgeStyle->SetSelectHdl( aLink ); 3468dcb2a10SAndre Fischer mpLBEdgeStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Corner Style"))); 3478dcb2a10SAndre Fischer 3488dcb2a10SAndre Fischer aLink = LINK( this, LinePropertyPanel, ChangeCapStyleHdl ); 3498dcb2a10SAndre Fischer mpLBCapStyle->SetSelectHdl( aLink ); 3508dcb2a10SAndre Fischer mpLBCapStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Cap Style"))); 3518dcb2a10SAndre Fischer } 3528dcb2a10SAndre Fischer 3538dcb2a10SAndre Fischer 3548dcb2a10SAndre Fischer 3558dcb2a10SAndre Fischer void LinePropertyPanel::SetupIcons(void) 3568dcb2a10SAndre Fischer { 3578dcb2a10SAndre Fischer if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons)) 3588dcb2a10SAndre Fischer { 3598dcb2a10SAndre Fischer // todo 3608dcb2a10SAndre Fischer } 3618dcb2a10SAndre Fischer else 3628dcb2a10SAndre Fischer { 3638dcb2a10SAndre Fischer // todo 3648dcb2a10SAndre Fischer } 3658dcb2a10SAndre Fischer } 3668dcb2a10SAndre Fischer 3678dcb2a10SAndre Fischer 3688dcb2a10SAndre Fischer 3698dcb2a10SAndre Fischer LinePropertyPanel* LinePropertyPanel::Create ( 3708dcb2a10SAndre Fischer Window* pParent, 3718dcb2a10SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame, 3728dcb2a10SAndre Fischer SfxBindings* pBindings) 3738dcb2a10SAndre Fischer { 3748dcb2a10SAndre Fischer if (pParent == NULL) 3758dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no parent Window given to LinePropertyPanel::Create"), NULL, 0); 3768dcb2a10SAndre Fischer if ( ! rxFrame.is()) 3778dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no XFrame given to LinePropertyPanel::Create"), NULL, 1); 3788dcb2a10SAndre Fischer if (pBindings == NULL) 3798dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no SfxBindings given to LinePropertyPanel::Create"), NULL, 2); 3808dcb2a10SAndre Fischer 3818dcb2a10SAndre Fischer return new LinePropertyPanel( 3828dcb2a10SAndre Fischer pParent, 3838dcb2a10SAndre Fischer rxFrame, 3848dcb2a10SAndre Fischer pBindings); 3858dcb2a10SAndre Fischer } 3868dcb2a10SAndre Fischer 3878dcb2a10SAndre Fischer 3888dcb2a10SAndre Fischer 38937fee4fdSAndre Fischer 3908dcb2a10SAndre Fischer void LinePropertyPanel::DataChanged( 3918dcb2a10SAndre Fischer const DataChangedEvent& rEvent) 3928dcb2a10SAndre Fischer { 3938dcb2a10SAndre Fischer (void)rEvent; 3948dcb2a10SAndre Fischer 3958dcb2a10SAndre Fischer SetupIcons(); 3968dcb2a10SAndre Fischer } 3978dcb2a10SAndre Fischer 3988dcb2a10SAndre Fischer 3998dcb2a10SAndre Fischer 4008dcb2a10SAndre Fischer 4018dcb2a10SAndre Fischer void LinePropertyPanel::NotifyItemUpdate( 4028dcb2a10SAndre Fischer sal_uInt16 nSID, 4038dcb2a10SAndre Fischer SfxItemState eState, 4048dcb2a10SAndre Fischer const SfxPoolItem* pState) 4058dcb2a10SAndre Fischer { 4068dcb2a10SAndre Fischer switch(nSID) 4078dcb2a10SAndre Fischer { 4088dcb2a10SAndre Fischer case SID_ATTR_LINE_COLOR: 4098dcb2a10SAndre Fischer { 4108dcb2a10SAndre Fischer if( eState == SFX_ITEM_DISABLED) 4118dcb2a10SAndre Fischer { 4128dcb2a10SAndre Fischer mpFTColor->Disable(); 4138dcb2a10SAndre Fischer mpTBColor->Disable(); 4148dcb2a10SAndre Fischer mbColorAvailable = false; 4158dcb2a10SAndre Fischer mpColorUpdater->Update(COL_WHITE); 4168dcb2a10SAndre Fischer } 4178dcb2a10SAndre Fischer else 4188dcb2a10SAndre Fischer { 4198dcb2a10SAndre Fischer mpFTColor->Enable(); 4208dcb2a10SAndre Fischer mpTBColor->Enable(); 4218dcb2a10SAndre Fischer const XLineColorItem* pItem = dynamic_cast< const XLineColorItem* >(pState); 4228dcb2a10SAndre Fischer 4238dcb2a10SAndre Fischer if(eState >= SFX_ITEM_DEFAULT && pItem) 4248dcb2a10SAndre Fischer { 4258dcb2a10SAndre Fischer maColor = pItem->GetColorValue(); 4268dcb2a10SAndre Fischer mbColorAvailable = true; 4278dcb2a10SAndre Fischer mpColorUpdater->Update(maColor); 4288dcb2a10SAndre Fischer } 4298dcb2a10SAndre Fischer else 4308dcb2a10SAndre Fischer { 4318dcb2a10SAndre Fischer mbColorAvailable = false; 4328dcb2a10SAndre Fischer mpColorUpdater->Update(COL_WHITE); 4338dcb2a10SAndre Fischer } 4348dcb2a10SAndre Fischer } 4358dcb2a10SAndre Fischer break; 4368dcb2a10SAndre Fischer } 4378dcb2a10SAndre Fischer case SID_ATTR_LINE_DASH: 43897e8a929SArmin Le Grand case SID_ATTR_LINE_STYLE: 4398dcb2a10SAndre Fischer { 4408dcb2a10SAndre Fischer if( eState == SFX_ITEM_DISABLED) 4418dcb2a10SAndre Fischer { 4428dcb2a10SAndre Fischer mpFTStyle->Disable(); 44397e8a929SArmin Le Grand mpLBStyle->Disable(); 4448dcb2a10SAndre Fischer } 4458dcb2a10SAndre Fischer else 4468dcb2a10SAndre Fischer { 4478dcb2a10SAndre Fischer mpFTStyle->Enable(); 44897e8a929SArmin Le Grand mpLBStyle->Enable(); 4498dcb2a10SAndre Fischer if( eState >= SFX_ITEM_DEFAULT ) 4508dcb2a10SAndre Fischer { 4518dcb2a10SAndre Fischer if(nSID == SID_ATTR_LINE_STYLE) 4528dcb2a10SAndre Fischer { 4538dcb2a10SAndre Fischer const XLineStyleItem* pItem = dynamic_cast< const XLineStyleItem* >(pState); 4548dcb2a10SAndre Fischer 4558dcb2a10SAndre Fischer if(pItem) 4568dcb2a10SAndre Fischer { 4578dcb2a10SAndre Fischer mbStyleAvailable =true; 4588dcb2a10SAndre Fischer mpStyleItem.reset(pState ? (XLineStyleItem*)pItem->Clone() : 0); 4598dcb2a10SAndre Fischer } 4608dcb2a10SAndre Fischer } 4618dcb2a10SAndre Fischer else if(nSID == SID_ATTR_LINE_DASH) 4628dcb2a10SAndre Fischer { 4638dcb2a10SAndre Fischer const XLineDashItem* pItem = dynamic_cast< const XLineDashItem* >(pState); 4648dcb2a10SAndre Fischer 4658dcb2a10SAndre Fischer if(pItem) 4668dcb2a10SAndre Fischer { 4678dcb2a10SAndre Fischer mbDashAvailable = true; 4688dcb2a10SAndre Fischer mpDashItem.reset(pState ? (XLineDashItem*)pItem->Clone() : 0); 4698dcb2a10SAndre Fischer } 4708dcb2a10SAndre Fischer } 4718dcb2a10SAndre Fischer } 4728dcb2a10SAndre Fischer else 4738dcb2a10SAndre Fischer { 4748dcb2a10SAndre Fischer if(nSID == SID_ATTR_LINE_STYLE) 4758dcb2a10SAndre Fischer mbStyleAvailable = false; 4768dcb2a10SAndre Fischer else 4778dcb2a10SAndre Fischer mbDashAvailable = false; 4788dcb2a10SAndre Fischer } 47997e8a929SArmin Le Grand 48097e8a929SArmin Le Grand SelectLineStyle(); 4818dcb2a10SAndre Fischer } 4828dcb2a10SAndre Fischer break; 4838dcb2a10SAndre Fischer } 4848dcb2a10SAndre Fischer case SID_ATTR_LINE_TRANSPARENCE: 4858dcb2a10SAndre Fischer { 4868dcb2a10SAndre Fischer if( eState == SFX_ITEM_DISABLED ) 4878dcb2a10SAndre Fischer { 4888dcb2a10SAndre Fischer mpFTTrancparency->Disable(); 4898dcb2a10SAndre Fischer mpMFTransparent->Disable(); 4908dcb2a10SAndre Fischer mpMFTransparent->SetValue(0);//add 4918dcb2a10SAndre Fischer mpMFTransparent->SetText(String()); 4928dcb2a10SAndre Fischer mbTransAvailable = false; 4938dcb2a10SAndre Fischer } 4948dcb2a10SAndre Fischer else 4958dcb2a10SAndre Fischer { 4968dcb2a10SAndre Fischer mpFTTrancparency->Enable(); 4978dcb2a10SAndre Fischer mpMFTransparent->Enable(); 4988dcb2a10SAndre Fischer mbTransAvailable = true; 4998dcb2a10SAndre Fischer const XLineTransparenceItem* pItem = dynamic_cast< const XLineTransparenceItem* >(pState); 5008dcb2a10SAndre Fischer 5018dcb2a10SAndre Fischer if(eState != SFX_ITEM_DONTCARE && pItem) 5028dcb2a10SAndre Fischer { 5038dcb2a10SAndre Fischer mnTrans = pItem->GetValue(); 5048dcb2a10SAndre Fischer mpMFTransparent->SetValue(mnTrans); 5058dcb2a10SAndre Fischer } 5068dcb2a10SAndre Fischer else 5078dcb2a10SAndre Fischer { 5088dcb2a10SAndre Fischer mpMFTransparent->SetValue(0);//add 5098dcb2a10SAndre Fischer mpMFTransparent->SetText(String()); 5108dcb2a10SAndre Fischer } 5118dcb2a10SAndre Fischer } 5128dcb2a10SAndre Fischer break; 5138dcb2a10SAndre Fischer } 5148dcb2a10SAndre Fischer case SID_ATTR_LINE_WIDTH: 5158dcb2a10SAndre Fischer { 5168dcb2a10SAndre Fischer if(eState == SFX_ITEM_DISABLED) 5178dcb2a10SAndre Fischer { 5188dcb2a10SAndre Fischer mpTBWidth->Disable(); 5198dcb2a10SAndre Fischer mpFTWidth->Disable(); 5208dcb2a10SAndre Fischer } 5218dcb2a10SAndre Fischer else 5228dcb2a10SAndre Fischer { 5238dcb2a10SAndre Fischer //enable 5248dcb2a10SAndre Fischer mpTBWidth->Enable(); 5258dcb2a10SAndre Fischer mpFTWidth->Enable(); 5268dcb2a10SAndre Fischer const XLineWidthItem* pItem = dynamic_cast< const XLineWidthItem* >(pState); 5278dcb2a10SAndre Fischer 5288dcb2a10SAndre Fischer if(eState >= SFX_ITEM_AVAILABLE && pItem) 5298dcb2a10SAndre Fischer { 5308dcb2a10SAndre Fischer mnWidthCoreValue = pItem->GetValue(); 5318dcb2a10SAndre Fischer mbWidthValuable = true; 5328dcb2a10SAndre Fischer } 5338dcb2a10SAndre Fischer else 5348dcb2a10SAndre Fischer { 5358dcb2a10SAndre Fischer mbWidthValuable = false; 5368dcb2a10SAndre Fischer } 5378dcb2a10SAndre Fischer } 5388dcb2a10SAndre Fischer SetWidthIcon(); 5398dcb2a10SAndre Fischer break; 5408dcb2a10SAndre Fischer } 5418dcb2a10SAndre Fischer case SID_ATTR_LINE_START: 5428dcb2a10SAndre Fischer { 543a567bdc8SArmin Le Grand mpFTArrow->Enable(); 544a567bdc8SArmin Le Grand mpLBStart->Enable(); 5458dcb2a10SAndre Fischer 546a567bdc8SArmin Le Grand if(eState != SFX_ITEM_DONTCARE) 5478dcb2a10SAndre Fischer { 548a567bdc8SArmin Le Grand const XLineStartItem* pItem = dynamic_cast< const XLineStartItem* >(pState); 549a567bdc8SArmin Le Grand 550a567bdc8SArmin Le Grand if(pItem) 551a567bdc8SArmin Le Grand { 552a567bdc8SArmin Le Grand mbStartAvailable = true; //add 553a567bdc8SArmin Le Grand mpStartItem.reset(pItem ? (XLineStartItem*)pItem->Clone() : 0); 554a567bdc8SArmin Le Grand SelectEndStyle(true); 555a567bdc8SArmin Le Grand break; 556a567bdc8SArmin Le Grand } 5578dcb2a10SAndre Fischer } 558a567bdc8SArmin Le Grand 559a567bdc8SArmin Le Grand mpLBStart->SetNoSelection(); 560a567bdc8SArmin Le Grand mbStartAvailable = false; //add 5618dcb2a10SAndre Fischer break; 5628dcb2a10SAndre Fischer } 5638dcb2a10SAndre Fischer case SID_ATTR_LINE_END: 5648dcb2a10SAndre Fischer { 5658dcb2a10SAndre Fischer mpFTArrow->Enable(); 5668dcb2a10SAndre Fischer mpLBEnd->Enable(); 5678dcb2a10SAndre Fischer 568a567bdc8SArmin Le Grand if(eState != SFX_ITEM_DONTCARE) 5698dcb2a10SAndre Fischer { 570a567bdc8SArmin Le Grand const XLineEndItem* pItem = dynamic_cast< const XLineEndItem* >(pState); 571a567bdc8SArmin Le Grand 572a567bdc8SArmin Le Grand if(pItem) 573a567bdc8SArmin Le Grand { 574a567bdc8SArmin Le Grand mbEndAvailable = true; //add 575a567bdc8SArmin Le Grand mpEndItem.reset(pItem ? (XLineEndItem*)pItem->Clone() : 0); 576a567bdc8SArmin Le Grand SelectEndStyle(false); 577a567bdc8SArmin Le Grand break; 578a567bdc8SArmin Le Grand } 5798dcb2a10SAndre Fischer } 580a567bdc8SArmin Le Grand 581a567bdc8SArmin Le Grand mpLBEnd->SetNoSelection(); 582a567bdc8SArmin Le Grand mbEndAvailable = false; //add 5838dcb2a10SAndre Fischer break; 5848dcb2a10SAndre Fischer } 5858dcb2a10SAndre Fischer case SID_LINEEND_LIST: 5868dcb2a10SAndre Fischer { 5878dcb2a10SAndre Fischer FillLineEndList(); 5888dcb2a10SAndre Fischer SelectEndStyle(true); 5898dcb2a10SAndre Fischer SelectEndStyle(false); 5908dcb2a10SAndre Fischer break; 5918dcb2a10SAndre Fischer } 59297e8a929SArmin Le Grand case SID_DASH_LIST: 59397e8a929SArmin Le Grand { 59497e8a929SArmin Le Grand FillLineStyleList(); 59597e8a929SArmin Le Grand SelectLineStyle(); 59697e8a929SArmin Le Grand break; 59797e8a929SArmin Le Grand } 5988dcb2a10SAndre Fischer case SID_ATTR_LINE_JOINT: 5998dcb2a10SAndre Fischer { 6008dcb2a10SAndre Fischer if(eState == SFX_ITEM_DISABLED) 6018dcb2a10SAndre Fischer { 6028dcb2a10SAndre Fischer mpLBEdgeStyle->Disable(); 6038dcb2a10SAndre Fischer } 6048dcb2a10SAndre Fischer else 6058dcb2a10SAndre Fischer { 6068dcb2a10SAndre Fischer mpLBEdgeStyle->Enable(); 6078dcb2a10SAndre Fischer const XLineJointItem* pItem = dynamic_cast< const XLineJointItem* >(pState); 6088dcb2a10SAndre Fischer sal_uInt16 nEntryPos(0); 6098dcb2a10SAndre Fischer 6108dcb2a10SAndre Fischer if(eState >= SFX_ITEM_AVAILABLE && pItem) 6118dcb2a10SAndre Fischer { 6128dcb2a10SAndre Fischer switch(pItem->GetValue()) 6138dcb2a10SAndre Fischer { 6148dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_MIDDLE: 6158dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_ROUND: 6168dcb2a10SAndre Fischer { 6178dcb2a10SAndre Fischer nEntryPos = 1; 6188dcb2a10SAndre Fischer break; 6198dcb2a10SAndre Fischer } 6208dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_NONE: 6218dcb2a10SAndre Fischer { 6228dcb2a10SAndre Fischer nEntryPos = 2; 6238dcb2a10SAndre Fischer break; 6248dcb2a10SAndre Fischer } 6258dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_MITER: 6268dcb2a10SAndre Fischer { 6278dcb2a10SAndre Fischer nEntryPos = 3; 6288dcb2a10SAndre Fischer break; 6298dcb2a10SAndre Fischer } 6308dcb2a10SAndre Fischer case com::sun::star::drawing::LineJoint_BEVEL: 6318dcb2a10SAndre Fischer { 6328dcb2a10SAndre Fischer nEntryPos = 4; 6338dcb2a10SAndre Fischer break; 6348dcb2a10SAndre Fischer } 6358dcb2a10SAndre Fischer 6368dcb2a10SAndre Fischer default: 6378dcb2a10SAndre Fischer break; 6388dcb2a10SAndre Fischer } 6398dcb2a10SAndre Fischer } 6408dcb2a10SAndre Fischer 6418dcb2a10SAndre Fischer if(nEntryPos) 6428dcb2a10SAndre Fischer { 6438dcb2a10SAndre Fischer mpLBEdgeStyle->SelectEntryPos(nEntryPos - 1); 6448dcb2a10SAndre Fischer } 6458dcb2a10SAndre Fischer else 6468dcb2a10SAndre Fischer { 6478dcb2a10SAndre Fischer mpLBEdgeStyle->SetNoSelection(); 6488dcb2a10SAndre Fischer } 6498dcb2a10SAndre Fischer } 6508dcb2a10SAndre Fischer break; 6518dcb2a10SAndre Fischer } 6528dcb2a10SAndre Fischer case SID_ATTR_LINE_CAP: 6538dcb2a10SAndre Fischer { 6548dcb2a10SAndre Fischer if(eState == SFX_ITEM_DISABLED) 6558dcb2a10SAndre Fischer { 6568dcb2a10SAndre Fischer mpLBCapStyle->Disable(); 6578dcb2a10SAndre Fischer } 6588dcb2a10SAndre Fischer else 6598dcb2a10SAndre Fischer { 6608dcb2a10SAndre Fischer mpLBCapStyle->Enable(); 6618dcb2a10SAndre Fischer const XLineCapItem* pItem = dynamic_cast< const XLineCapItem* >(pState); 6628dcb2a10SAndre Fischer sal_uInt16 nEntryPos(0); 6638dcb2a10SAndre Fischer 6648dcb2a10SAndre Fischer if(eState >= SFX_ITEM_AVAILABLE && pItem) 6658dcb2a10SAndre Fischer { 6668dcb2a10SAndre Fischer switch(pItem->GetValue()) 6678dcb2a10SAndre Fischer { 6688dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_BUTT: 6698dcb2a10SAndre Fischer { 6708dcb2a10SAndre Fischer nEntryPos = 1; 6718dcb2a10SAndre Fischer break; 6728dcb2a10SAndre Fischer } 6738dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_ROUND: 6748dcb2a10SAndre Fischer { 6758dcb2a10SAndre Fischer nEntryPos = 2; 6768dcb2a10SAndre Fischer break; 6778dcb2a10SAndre Fischer } 6788dcb2a10SAndre Fischer case com::sun::star::drawing::LineCap_SQUARE: 6798dcb2a10SAndre Fischer { 6808dcb2a10SAndre Fischer nEntryPos = 3; 6818dcb2a10SAndre Fischer break; 6828dcb2a10SAndre Fischer } 6838dcb2a10SAndre Fischer 6848dcb2a10SAndre Fischer default: 6858dcb2a10SAndre Fischer break; 6868dcb2a10SAndre Fischer } 6878dcb2a10SAndre Fischer } 6888dcb2a10SAndre Fischer 6898dcb2a10SAndre Fischer if(nEntryPos) 6908dcb2a10SAndre Fischer { 6918dcb2a10SAndre Fischer mpLBCapStyle->SelectEntryPos(nEntryPos - 1); 6928dcb2a10SAndre Fischer } 6938dcb2a10SAndre Fischer else 6948dcb2a10SAndre Fischer { 6958dcb2a10SAndre Fischer mpLBCapStyle->SetNoSelection(); 6968dcb2a10SAndre Fischer } 6978dcb2a10SAndre Fischer } 6988dcb2a10SAndre Fischer break; 6998dcb2a10SAndre Fischer } 7008dcb2a10SAndre Fischer } 7018dcb2a10SAndre Fischer } 7028dcb2a10SAndre Fischer 7038dcb2a10SAndre Fischer 7048dcb2a10SAndre Fischer 7058dcb2a10SAndre Fischer SfxBindings* LinePropertyPanel::GetBindings() 7068dcb2a10SAndre Fischer { 7078dcb2a10SAndre Fischer return mpBindings; 7088dcb2a10SAndre Fischer } 7098dcb2a10SAndre Fischer 7108dcb2a10SAndre Fischer 7118dcb2a10SAndre Fischer 7128dcb2a10SAndre Fischer IMPL_LINK( LinePropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG ) 7138dcb2a10SAndre Fischer { 7148dcb2a10SAndre Fischer return 0; 7158dcb2a10SAndre Fischer } 7168dcb2a10SAndre Fischer 7178dcb2a10SAndre Fischer 7188dcb2a10SAndre Fischer 7198dcb2a10SAndre Fischer 7208dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ToolboxColorSelectHdl,ToolBox*, pToolBox) 7218dcb2a10SAndre Fischer { 7228dcb2a10SAndre Fischer sal_uInt16 nId = pToolBox->GetCurItemId(); 7238dcb2a10SAndre Fischer if(nId == TBI_COLOR) 7248dcb2a10SAndre Fischer { 7258dcb2a10SAndre Fischer maColorPopup.Show(*pToolBox); 7268dcb2a10SAndre Fischer maColorPopup.SetCurrentColor(maColor, mbColorAvailable); 7278dcb2a10SAndre Fischer } 7288dcb2a10SAndre Fischer return 0; 7298dcb2a10SAndre Fischer } 7308dcb2a10SAndre Fischer 7318dcb2a10SAndre Fischer 7328dcb2a10SAndre Fischer 7338dcb2a10SAndre Fischer 7347134ea5bSPavel Janík IMPL_LINK(LinePropertyPanel, ChangeLineStyleHdl, ToolBox*, /* pToolBox */) 7358dcb2a10SAndre Fischer { 73697e8a929SArmin Le Grand const sal_uInt16 nPos(mpLBStyle->GetSelectEntryPos()); 7378dcb2a10SAndre Fischer 73897e8a929SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBStyle->GetSavedValue()) 73997e8a929SArmin Le Grand { 74097e8a929SArmin Le Grand if(0 == nPos) 74197e8a929SArmin Le Grand { 74297e8a929SArmin Le Grand // XLINE_NONE 74397e8a929SArmin Le Grand const XLineStyleItem aItem(XLINE_NONE); 74497e8a929SArmin Le Grand 74597e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L); 74697e8a929SArmin Le Grand } 74797e8a929SArmin Le Grand else if(1 == nPos) 74897e8a929SArmin Le Grand { 74997e8a929SArmin Le Grand // XLINE_SOLID 75097e8a929SArmin Le Grand const XLineStyleItem aItem(XLINE_SOLID); 75197e8a929SArmin Le Grand 75297e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L); 75397e8a929SArmin Le Grand } 75497e8a929SArmin Le Grand else if(mpLineStyleList && mpLineStyleList->Count() > (long)(nPos - 2)) 75597e8a929SArmin Le Grand { 75697e8a929SArmin Le Grand // XLINE_DASH 75797e8a929SArmin Le Grand const XLineStyleItem aItemA(XLINE_DASH); 758c3c0ed1bSArmin Le Grand const XDashEntry* pDashEntry = mpLineStyleList->GetDash(nPos - 2); 759c3c0ed1bSArmin Le Grand OSL_ENSURE(pDashEntry, "OOps, got empty XDash from XDashList (!)"); 760c3c0ed1bSArmin Le Grand const XLineDashItem aItemB( 761c3c0ed1bSArmin Le Grand pDashEntry ? pDashEntry->GetName() : String(), 762c3c0ed1bSArmin Le Grand pDashEntry ? pDashEntry->GetDash() : XDash()); 76397e8a929SArmin Le Grand 76497e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItemA, 0L); 76597e8a929SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_DASH, SFX_CALLMODE_RECORD, &aItemB, 0L); 76697e8a929SArmin Le Grand } 76797e8a929SArmin Le Grand } 76897e8a929SArmin Le Grand 76997e8a929SArmin Le Grand return 0; 77097e8a929SArmin Le Grand } 7718dcb2a10SAndre Fischer 7728dcb2a10SAndre Fischer 7738dcb2a10SAndre Fischer 7748dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeStartHdl, void*, EMPTYARG) 7758dcb2a10SAndre Fischer { 7768dcb2a10SAndre Fischer sal_uInt16 nPos = mpLBStart->GetSelectEntryPos(); 7778dcb2a10SAndre Fischer if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != mpLBStart->GetSavedValue() ) 7788dcb2a10SAndre Fischer { 7798dcb2a10SAndre Fischer XLineStartItem* pItem = NULL; 7808dcb2a10SAndre Fischer if( nPos == 0 ) 7818dcb2a10SAndre Fischer pItem = new XLineStartItem(); 7828dcb2a10SAndre Fischer else if( mpLineEndList && mpLineEndList->Count() > (long) ( nPos - 1 ) ) 7838dcb2a10SAndre Fischer pItem = new XLineStartItem( mpLBStart->GetSelectEntry(),mpLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ); 7848dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINEEND_STYLE, SFX_CALLMODE_RECORD, pItem, 0L); 7858dcb2a10SAndre Fischer delete pItem; 7868dcb2a10SAndre Fischer } 7878dcb2a10SAndre Fischer return 0; 7888dcb2a10SAndre Fischer } 7898dcb2a10SAndre Fischer 7908dcb2a10SAndre Fischer 7918dcb2a10SAndre Fischer 7928dcb2a10SAndre Fischer 7938dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeEndHdl, void*, EMPTYARG) 7948dcb2a10SAndre Fischer { 7958dcb2a10SAndre Fischer sal_uInt16 nPos = mpLBEnd->GetSelectEntryPos(); 7968dcb2a10SAndre Fischer if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != mpLBEnd->GetSavedValue() ) 7978dcb2a10SAndre Fischer { 7988dcb2a10SAndre Fischer XLineEndItem* pItem = NULL; 7998dcb2a10SAndre Fischer if( nPos == 0 ) 8008dcb2a10SAndre Fischer pItem = new XLineEndItem(); 8018dcb2a10SAndre Fischer else if( mpLineEndList && mpLineEndList->Count() > (long) ( nPos - 1 ) ) 8028dcb2a10SAndre Fischer pItem = new XLineEndItem( mpLBEnd->GetSelectEntry(), mpLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ); 8038dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINEEND_STYLE, SFX_CALLMODE_RECORD, pItem, 0L); 8048dcb2a10SAndre Fischer delete pItem; 8058dcb2a10SAndre Fischer } 8068dcb2a10SAndre Fischer return 0; 8078dcb2a10SAndre Fischer } 8088dcb2a10SAndre Fischer 8098dcb2a10SAndre Fischer 8108dcb2a10SAndre Fischer 8118dcb2a10SAndre Fischer 8128dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeEdgeStyleHdl, void*, EMPTYARG) 8138dcb2a10SAndre Fischer { 8148dcb2a10SAndre Fischer const sal_uInt16 nPos(mpLBEdgeStyle->GetSelectEntryPos()); 8158dcb2a10SAndre Fischer 8168dcb2a10SAndre Fischer if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBEdgeStyle->GetSavedValue()) 8178dcb2a10SAndre Fischer { 8188dcb2a10SAndre Fischer XLineJointItem* pItem = 0; 8198dcb2a10SAndre Fischer 8208dcb2a10SAndre Fischer switch(nPos) 8218dcb2a10SAndre Fischer { 8228dcb2a10SAndre Fischer case 0: // rounded 8238dcb2a10SAndre Fischer { 8248dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_ROUND); 8258dcb2a10SAndre Fischer break; 8268dcb2a10SAndre Fischer } 8278dcb2a10SAndre Fischer case 1: // none 8288dcb2a10SAndre Fischer { 8298dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_NONE); 8308dcb2a10SAndre Fischer break; 8318dcb2a10SAndre Fischer } 8328dcb2a10SAndre Fischer case 2: // mitered 8338dcb2a10SAndre Fischer { 8348dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_MITER); 8358dcb2a10SAndre Fischer break; 8368dcb2a10SAndre Fischer } 8378dcb2a10SAndre Fischer case 3: // beveled 8388dcb2a10SAndre Fischer { 8398dcb2a10SAndre Fischer pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_BEVEL); 8408dcb2a10SAndre Fischer break; 8418dcb2a10SAndre Fischer } 8428dcb2a10SAndre Fischer } 8438dcb2a10SAndre Fischer 8448dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_JOINT, SFX_CALLMODE_RECORD, pItem, 0L); 8458dcb2a10SAndre Fischer delete pItem; 8468dcb2a10SAndre Fischer } 8478dcb2a10SAndre Fischer return 0; 8488dcb2a10SAndre Fischer } 8498dcb2a10SAndre Fischer 8508dcb2a10SAndre Fischer 8518dcb2a10SAndre Fischer 8528dcb2a10SAndre Fischer 8538dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeCapStyleHdl, void*, EMPTYARG) 8548dcb2a10SAndre Fischer { 8558dcb2a10SAndre Fischer const sal_uInt16 nPos(mpLBCapStyle->GetSelectEntryPos()); 8568dcb2a10SAndre Fischer 8578dcb2a10SAndre Fischer if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBCapStyle->GetSavedValue()) 8588dcb2a10SAndre Fischer { 8598dcb2a10SAndre Fischer XLineCapItem* pItem = 0; 8608dcb2a10SAndre Fischer 8618dcb2a10SAndre Fischer switch(nPos) 8628dcb2a10SAndre Fischer { 8638dcb2a10SAndre Fischer case 0: // flat 8648dcb2a10SAndre Fischer { 8658dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_BUTT); 8668dcb2a10SAndre Fischer break; 8678dcb2a10SAndre Fischer } 8688dcb2a10SAndre Fischer case 1: // round 8698dcb2a10SAndre Fischer { 8708dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_ROUND); 8718dcb2a10SAndre Fischer break; 8728dcb2a10SAndre Fischer } 8738dcb2a10SAndre Fischer case 2: // square 8748dcb2a10SAndre Fischer { 8758dcb2a10SAndre Fischer pItem = new XLineCapItem(com::sun::star::drawing::LineCap_SQUARE); 8768dcb2a10SAndre Fischer break; 8778dcb2a10SAndre Fischer } 8788dcb2a10SAndre Fischer } 8798dcb2a10SAndre Fischer 8808dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_CAP, SFX_CALLMODE_RECORD, pItem, 0L); 8818dcb2a10SAndre Fischer delete pItem; 8828dcb2a10SAndre Fischer } 8838dcb2a10SAndre Fischer return 0; 8848dcb2a10SAndre Fischer } 8858dcb2a10SAndre Fischer 8868dcb2a10SAndre Fischer 8878dcb2a10SAndre Fischer 8888dcb2a10SAndre Fischer 8898dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ToolboxWidthSelectHdl,ToolBox*, pToolBox) 8908dcb2a10SAndre Fischer { 8918dcb2a10SAndre Fischer if (pToolBox->GetCurItemId() == TBI_WIDTH) 8928dcb2a10SAndre Fischer { 8938dcb2a10SAndre Fischer maLineWidthPopup.SetWidthSelect(mnWidthCoreValue, mbWidthValuable, meMapUnit); 8948dcb2a10SAndre Fischer maLineWidthPopup.Show(*pToolBox); 8958dcb2a10SAndre Fischer } 8968dcb2a10SAndre Fischer return 0; 8978dcb2a10SAndre Fischer } 8988dcb2a10SAndre Fischer 8998dcb2a10SAndre Fischer 9008dcb2a10SAndre Fischer 9018dcb2a10SAndre Fischer 9028dcb2a10SAndre Fischer IMPL_LINK( LinePropertyPanel, ChangeTransparentHdl, void *, EMPTYARG ) 9038dcb2a10SAndre Fischer { 9048dcb2a10SAndre Fischer sal_uInt16 nVal = (sal_uInt16)mpMFTransparent->GetValue(); 9058dcb2a10SAndre Fischer XLineTransparenceItem aItem( nVal ); 9068dcb2a10SAndre Fischer 9078dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L); 9088dcb2a10SAndre Fischer return( 0L ); 9098dcb2a10SAndre Fischer } 9108dcb2a10SAndre Fischer 9118dcb2a10SAndre Fischer 9128dcb2a10SAndre Fischer 9138dcb2a10SAndre Fischer 914*b7a56e95SArmin Le Grand namespace 915*b7a56e95SArmin Le Grand { 916*b7a56e95SArmin Le Grand Color GetTransparentColor (void) 917*b7a56e95SArmin Le Grand { 918*b7a56e95SArmin Le Grand return COL_TRANSPARENT; 919*b7a56e95SArmin Le Grand } 920*b7a56e95SArmin Le Grand } // end of anonymous namespace 921*b7a56e95SArmin Le Grand 9228dcb2a10SAndre Fischer PopupControl* LinePropertyPanel::CreateColorPopupControl (PopupContainer* pParent) 9238dcb2a10SAndre Fischer { 9248dcb2a10SAndre Fischer return new ColorControl( 9258dcb2a10SAndre Fischer pParent, 9268dcb2a10SAndre Fischer mpBindings, 9278dcb2a10SAndre Fischer SVX_RES(RID_POPUPPANEL_LINEPAGE_COLOR), 9288dcb2a10SAndre Fischer SVX_RES(VS_COLOR), 9298dcb2a10SAndre Fischer ::boost::bind(GetTransparentColor), 9308dcb2a10SAndre Fischer ::boost::bind(&LinePropertyPanel::SetColor, this, _1, _2), 9318dcb2a10SAndre Fischer pParent, 932*b7a56e95SArmin Le Grand 0); 9338dcb2a10SAndre Fischer } 9348dcb2a10SAndre Fischer 9358dcb2a10SAndre Fischer 9368dcb2a10SAndre Fischer 9378dcb2a10SAndre Fischer 9388dcb2a10SAndre Fischer PopupControl* LinePropertyPanel::CreateLineWidthPopupControl (PopupContainer* pParent) 9398dcb2a10SAndre Fischer { 9408dcb2a10SAndre Fischer return new LineWidthControl(pParent, *this); 9418dcb2a10SAndre Fischer } 9428dcb2a10SAndre Fischer 9438dcb2a10SAndre Fischer 9448dcb2a10SAndre Fischer 9458dcb2a10SAndre Fischer 9468dcb2a10SAndre Fischer void LinePropertyPanel::EndLineWidthPopupMode (void) 9478dcb2a10SAndre Fischer { 9488dcb2a10SAndre Fischer maLineWidthPopup.Hide(); 9498dcb2a10SAndre Fischer } 9508dcb2a10SAndre Fischer 9518dcb2a10SAndre Fischer 9528dcb2a10SAndre Fischer 9538dcb2a10SAndre Fischer 9548dcb2a10SAndre Fischer void LinePropertyPanel::SetWidthIcon(int n) 9558dcb2a10SAndre Fischer { 9568dcb2a10SAndre Fischer if(n==0) 9578dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, maIMGNone); 9588dcb2a10SAndre Fischer else 9598dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[n-1] : mpIMGWidthIcon[n-1]); 9608dcb2a10SAndre Fischer } 9618dcb2a10SAndre Fischer 9628dcb2a10SAndre Fischer 9638dcb2a10SAndre Fischer 9648dcb2a10SAndre Fischer void LinePropertyPanel::SetWidthIcon() 9658dcb2a10SAndre Fischer { 9668dcb2a10SAndre Fischer if(!mbWidthValuable) 9678dcb2a10SAndre Fischer { 9688dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, maIMGNone); 9698dcb2a10SAndre Fischer return; 9708dcb2a10SAndre Fischer } 9718dcb2a10SAndre Fischer 9728dcb2a10SAndre Fischer long nVal = LogicToLogic(mnWidthCoreValue * 10,(MapUnit)meMapUnit , MAP_POINT); 9738dcb2a10SAndre Fischer 9748dcb2a10SAndre Fischer if(nVal <= 6) 9758dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[0] : mpIMGWidthIcon[0]); 9768dcb2a10SAndre Fischer else if(nVal > 6 && nVal <= 9) 9778dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[1] : mpIMGWidthIcon[1]); 9788dcb2a10SAndre Fischer else if(nVal > 9 && nVal <= 12) 9798dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[2] : mpIMGWidthIcon[2]); 9808dcb2a10SAndre Fischer else if(nVal > 12 && nVal <= 19) 9818dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[3] : mpIMGWidthIcon[3]); 9828dcb2a10SAndre Fischer else if(nVal > 19 && nVal <= 26) 9838dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[4] : mpIMGWidthIcon[4]); 9848dcb2a10SAndre Fischer else if(nVal > 26 && nVal <= 37) 9858dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[5] : mpIMGWidthIcon[5]); 9868dcb2a10SAndre Fischer else if(nVal > 37 && nVal <=52) 9878dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[6] : mpIMGWidthIcon[6]); 9888dcb2a10SAndre Fischer else if(nVal > 52) 9898dcb2a10SAndre Fischer mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[7] : mpIMGWidthIcon[7]); 9908dcb2a10SAndre Fischer 9918dcb2a10SAndre Fischer } 9928dcb2a10SAndre Fischer 9938dcb2a10SAndre Fischer 9948dcb2a10SAndre Fischer 9958dcb2a10SAndre Fischer void LinePropertyPanel::SetColor ( 9968dcb2a10SAndre Fischer const String& rsColorName, 9978dcb2a10SAndre Fischer const Color aColor) 9988dcb2a10SAndre Fischer { 9998dcb2a10SAndre Fischer XLineColorItem aColorItem(rsColorName, aColor); 10008dcb2a10SAndre Fischer mpBindings->GetDispatcher()->Execute(SID_ATTR_LINE_COLOR, SFX_CALLMODE_RECORD, &aColorItem, 0L); 10018dcb2a10SAndre Fischer maColor = aColor; 10028dcb2a10SAndre Fischer } 10038dcb2a10SAndre Fischer 10048dcb2a10SAndre Fischer 10058dcb2a10SAndre Fischer 10068dcb2a10SAndre Fischer void LinePropertyPanel::SetWidth(long nWidth) 10078dcb2a10SAndre Fischer { 10088dcb2a10SAndre Fischer mnWidthCoreValue = nWidth; 10098dcb2a10SAndre Fischer mbWidthValuable = true; 10108dcb2a10SAndre Fischer } 10118dcb2a10SAndre Fischer 10128dcb2a10SAndre Fischer 10138dcb2a10SAndre Fischer 10148dcb2a10SAndre Fischer void LinePropertyPanel::FillLineEndList() 10158dcb2a10SAndre Fischer { 10168dcb2a10SAndre Fischer SfxObjectShell* pSh = SfxObjectShell::Current(); 10178dcb2a10SAndre Fischer if ( pSh && pSh->GetItem( SID_LINEEND_LIST ) ) 10188dcb2a10SAndre Fischer { 10198dcb2a10SAndre Fischer mpLBStart->Enable(); 10208dcb2a10SAndre Fischer SvxLineEndListItem aItem( *(const SvxLineEndListItem*)(pSh->GetItem( SID_LINEEND_LIST ) ) ); 10218dcb2a10SAndre Fischer mpLineEndList = aItem.GetLineEndList(); 1022a567bdc8SArmin Le Grand 10238dcb2a10SAndre Fischer if(mpLineEndList) 10248dcb2a10SAndre Fischer { 1025a567bdc8SArmin Le Grand FillLineEndListBox(*mpLBStart, *mpLBEnd, *mpLineEndList); 10268dcb2a10SAndre Fischer } 1027a567bdc8SArmin Le Grand 1028a567bdc8SArmin Le Grand mpLBStart->SelectEntryPos(0); 1029a567bdc8SArmin Le Grand mpLBEnd->SelectEntryPos(0); 10308dcb2a10SAndre Fischer } 10318dcb2a10SAndre Fischer else 10328dcb2a10SAndre Fischer { 10338dcb2a10SAndre Fischer mpLBStart->Disable(); 10348dcb2a10SAndre Fischer mpLBEnd->Disable(); 10358dcb2a10SAndre Fischer } 10368dcb2a10SAndre Fischer } 10378dcb2a10SAndre Fischer 10388dcb2a10SAndre Fischer 10398dcb2a10SAndre Fischer 104097e8a929SArmin Le Grand void LinePropertyPanel::FillLineStyleList() 104197e8a929SArmin Le Grand { 104297e8a929SArmin Le Grand SfxObjectShell* pSh = SfxObjectShell::Current(); 104397e8a929SArmin Le Grand if ( pSh && pSh->GetItem( SID_DASH_LIST ) ) 104497e8a929SArmin Le Grand { 104597e8a929SArmin Le Grand mpLBStyle->Enable(); 104697e8a929SArmin Le Grand SvxDashListItem aItem( *(const SvxDashListItem*)(pSh->GetItem( SID_DASH_LIST ) ) ); 104797e8a929SArmin Le Grand mpLineStyleList = aItem.GetDashList(); 104897e8a929SArmin Le Grand 104997e8a929SArmin Le Grand if(mpLineStyleList) 105097e8a929SArmin Le Grand { 105197e8a929SArmin Le Grand FillLineStyleListBox(*mpLBStyle, *mpLineStyleList); 105297e8a929SArmin Le Grand } 105397e8a929SArmin Le Grand 105497e8a929SArmin Le Grand mpLBStyle->SelectEntryPos(0); 105597e8a929SArmin Le Grand } 105697e8a929SArmin Le Grand else 105797e8a929SArmin Le Grand { 105897e8a929SArmin Le Grand mpLBStyle->Disable(); 105997e8a929SArmin Le Grand } 106097e8a929SArmin Le Grand } 106197e8a929SArmin Le Grand 106297e8a929SArmin Le Grand 106397e8a929SArmin Le Grand 106497e8a929SArmin Le Grand void LinePropertyPanel::SelectLineStyle() 106597e8a929SArmin Le Grand { 106697e8a929SArmin Le Grand if( !mbStyleAvailable || !mbDashAvailable ) 106797e8a929SArmin Le Grand { 106897e8a929SArmin Le Grand mpLBStyle->SetNoSelection(); 106997e8a929SArmin Le Grand return; 107097e8a929SArmin Le Grand } 107197e8a929SArmin Le Grand 107297e8a929SArmin Le Grand const XLineStyle eXLS(mpStyleItem ? (XLineStyle)mpStyleItem->GetValue() : XLINE_NONE); 107397e8a929SArmin Le Grand bool bSelected(false); 107497e8a929SArmin Le Grand 107597e8a929SArmin Le Grand switch(eXLS) 107697e8a929SArmin Le Grand { 107797e8a929SArmin Le Grand case XLINE_NONE: 107897e8a929SArmin Le Grand break; 107997e8a929SArmin Le Grand case XLINE_SOLID: 108097e8a929SArmin Le Grand mpLBStyle->SelectEntryPos(1); 108197e8a929SArmin Le Grand bSelected = true; 108297e8a929SArmin Le Grand break; 108397e8a929SArmin Le Grand default: 108497e8a929SArmin Le Grand if(mpDashItem && mpLineStyleList) 108597e8a929SArmin Le Grand { 108697e8a929SArmin Le Grand const XDash& rDash = mpDashItem->GetDashValue(); 108797e8a929SArmin Le Grand for(sal_Int32 a(0);!bSelected && a < mpLineStyleList->Count(); a++) 108897e8a929SArmin Le Grand { 108997e8a929SArmin Le Grand XDashEntry* pEntry = mpLineStyleList->GetDash(a); 109097e8a929SArmin Le Grand const XDash& rEntry = pEntry->GetDash(); 109197e8a929SArmin Le Grand if(rDash == rEntry) 109297e8a929SArmin Le Grand { 109397e8a929SArmin Le Grand mpLBStyle->SelectEntryPos((sal_uInt16)a + 2); 109497e8a929SArmin Le Grand bSelected = true; 109597e8a929SArmin Le Grand } 109697e8a929SArmin Le Grand } 109797e8a929SArmin Le Grand } 109897e8a929SArmin Le Grand break; 109997e8a929SArmin Le Grand } 110097e8a929SArmin Le Grand 110197e8a929SArmin Le Grand if(!bSelected) 110297e8a929SArmin Le Grand mpLBStyle->SelectEntryPos( 0 ); 110397e8a929SArmin Le Grand } 110497e8a929SArmin Le Grand 11058dcb2a10SAndre Fischer void LinePropertyPanel::SelectEndStyle(bool bStart) 11068dcb2a10SAndre Fischer { 11078dcb2a10SAndre Fischer sal_Bool bSelected(false); 11088dcb2a10SAndre Fischer 11098dcb2a10SAndre Fischer if(bStart) 11108dcb2a10SAndre Fischer { 11118dcb2a10SAndre Fischer //<<add 11128dcb2a10SAndre Fischer if( !mbStartAvailable ) 11138dcb2a10SAndre Fischer { 11148dcb2a10SAndre Fischer mpLBStart->SetNoSelection(); 11158dcb2a10SAndre Fischer return; 11168dcb2a10SAndre Fischer } 11178dcb2a10SAndre Fischer //add end>> 11188dcb2a10SAndre Fischer if(mpStartItem && mpLineEndList) 11198dcb2a10SAndre Fischer { 11208dcb2a10SAndre Fischer const basegfx::B2DPolyPolygon& rItemPolygon = mpStartItem->GetLineStartValue(); 11218dcb2a10SAndre Fischer for(sal_Int32 a(0);!bSelected && a < mpLineEndList->Count(); a++) 11228dcb2a10SAndre Fischer { 11238dcb2a10SAndre Fischer XLineEndEntry* pEntry = mpLineEndList->GetLineEnd(a); 11248dcb2a10SAndre Fischer const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd(); 11258dcb2a10SAndre Fischer if(rItemPolygon == rEntryPolygon) 11268dcb2a10SAndre Fischer { 11278dcb2a10SAndre Fischer mpLBStart->SelectEntryPos((sal_uInt16)a + 1); 11288dcb2a10SAndre Fischer bSelected = true; 11298dcb2a10SAndre Fischer } 11308dcb2a10SAndre Fischer } 11318dcb2a10SAndre Fischer } 11328dcb2a10SAndre Fischer if(!bSelected) 11338dcb2a10SAndre Fischer mpLBStart->SelectEntryPos( 0 ); 11348dcb2a10SAndre Fischer } 11358dcb2a10SAndre Fischer else 11368dcb2a10SAndre Fischer { 11378dcb2a10SAndre Fischer //<<add 11388dcb2a10SAndre Fischer if( !mbEndAvailable ) 11398dcb2a10SAndre Fischer { 11408dcb2a10SAndre Fischer mpLBEnd->SetNoSelection(); 11418dcb2a10SAndre Fischer return; 11428dcb2a10SAndre Fischer } 11438dcb2a10SAndre Fischer //add end>> 11448dcb2a10SAndre Fischer if(mpEndItem && mpLineEndList) 11458dcb2a10SAndre Fischer { 11468dcb2a10SAndre Fischer const basegfx::B2DPolyPolygon& rItemPolygon = mpEndItem->GetLineEndValue(); 11478dcb2a10SAndre Fischer for(sal_Int32 a(0);!bSelected && a < mpLineEndList->Count(); a++) 11488dcb2a10SAndre Fischer { 11498dcb2a10SAndre Fischer XLineEndEntry* pEntry = mpLineEndList->GetLineEnd(a); 11508dcb2a10SAndre Fischer const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd(); 11518dcb2a10SAndre Fischer if(rItemPolygon == rEntryPolygon) 11528dcb2a10SAndre Fischer { 11538dcb2a10SAndre Fischer mpLBEnd->SelectEntryPos((sal_uInt16)a + 1); 11548dcb2a10SAndre Fischer bSelected = true; 11558dcb2a10SAndre Fischer } 11568dcb2a10SAndre Fischer } 11578dcb2a10SAndre Fischer } 11588dcb2a10SAndre Fischer if(!bSelected) 11598dcb2a10SAndre Fischer mpLBEnd->SelectEntryPos( 0 ); 11608dcb2a10SAndre Fischer } 11618dcb2a10SAndre Fischer } 11628dcb2a10SAndre Fischer 11638dcb2a10SAndre Fischer 11648dcb2a10SAndre Fischer } } // end of namespace svx::sidebar 11654e8031e0SArmin Le Grand 11664e8031e0SArmin Le Grand // eof 1167