1*facb16e7SArmin Le Grand /************************************************************** 2*facb16e7SArmin Le Grand * 3*facb16e7SArmin Le Grand * Licensed to the Apache Software Foundation (ASF) under one 4*facb16e7SArmin Le Grand * or more contributor license agreements. See the NOTICE file 5*facb16e7SArmin Le Grand * distributed with this work for additional information 6*facb16e7SArmin Le Grand * regarding copyright ownership. The ASF licenses this file 7*facb16e7SArmin Le Grand * to you under the Apache License, Version 2.0 (the 8*facb16e7SArmin Le Grand * "License"); you may not use this file except in compliance 9*facb16e7SArmin Le Grand * with the License. You may obtain a copy of the License at 10*facb16e7SArmin Le Grand * 11*facb16e7SArmin Le Grand * http://www.apache.org/licenses/LICENSE-2.0 12*facb16e7SArmin Le Grand * 13*facb16e7SArmin Le Grand * Unless required by applicable law or agreed to in writing, 14*facb16e7SArmin Le Grand * software distributed under the License is distributed on an 15*facb16e7SArmin Le Grand * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*facb16e7SArmin Le Grand * KIND, either express or implied. See the License for the 17*facb16e7SArmin Le Grand * specific language governing permissions and limitations 18*facb16e7SArmin Le Grand * under the License. 19*facb16e7SArmin Le Grand * 20*facb16e7SArmin Le Grand *************************************************************/ 21*facb16e7SArmin Le Grand 22*facb16e7SArmin Le Grand #include "precompiled_sc.hxx" 23*facb16e7SArmin Le Grand 24*facb16e7SArmin Le Grand #include <sfx2/sidebar/propertypanel.hrc> 25*facb16e7SArmin Le Grand #include <sfx2/sidebar/Theme.hxx> 26*facb16e7SArmin Le Grand #include <sfx2/sidebar/ControlFactory.hxx> 27*facb16e7SArmin Le Grand #include <AlignmentPropertyPanel.hxx> 28*facb16e7SArmin Le Grand #include <AlignmentPropertyPanel.hrc> 29*facb16e7SArmin Le Grand #include <svx/dialmgr.hxx> 30*facb16e7SArmin Le Grand #include "sc.hrc" 31*facb16e7SArmin Le Grand #include "scresid.hxx" 32*facb16e7SArmin Le Grand #include <sfx2/bindings.hxx> 33*facb16e7SArmin Le Grand #include <sfx2/dispatch.hxx> 34*facb16e7SArmin Le Grand #include <svx/algitem.hxx> 35*facb16e7SArmin Le Grand #include <svx/dlgutil.hxx> 36*facb16e7SArmin Le Grand #include <vcl/toolbox.hxx> 37*facb16e7SArmin Le Grand #include <svx/sidebar/SidebarDialControl.hxx> 38*facb16e7SArmin Le Grand 39*facb16e7SArmin Le Grand using namespace css; 40*facb16e7SArmin Le Grand using namespace cssu; 41*facb16e7SArmin Le Grand 42*facb16e7SArmin Le Grand #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) 43*facb16e7SArmin Le Grand 44*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 45*facb16e7SArmin Le Grand // namespace open 46*facb16e7SArmin Le Grand 47*facb16e7SArmin Le Grand namespace sc { namespace sidebar { 48*facb16e7SArmin Le Grand 49*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 50*facb16e7SArmin Le Grand 51*facb16e7SArmin Le Grand AlignmentPropertyPanel::AlignmentPropertyPanel( 52*facb16e7SArmin Le Grand Window* pParent, 53*facb16e7SArmin Le Grand const cssu::Reference<css::frame::XFrame>& rxFrame, 54*facb16e7SArmin Le Grand SfxBindings* pBindings) 55*facb16e7SArmin Le Grand : Control( 56*facb16e7SArmin Le Grand pParent, 57*facb16e7SArmin Le Grand ScResId(RID_PROPERTYPANEL_SC_ALIGNMENT)), 58*facb16e7SArmin Le Grand mpTBHorizontal(new ToolBox(this, ScResId(TBX_HORIZONTAL_ALIGNMENT))), 59*facb16e7SArmin Le Grand mpTBVertical(new ToolBox(this, ScResId(TBX_VERTICAL_ALIGN))), 60*facb16e7SArmin Le Grand mpFTLeftIndent(new FixedText(this, ScResId(FT_LEFT_INDENT))), 61*facb16e7SArmin Le Grand mpMFLeftIndent(new MetricField(this, ScResId(MF_LEFT_INDENT))), 62*facb16e7SArmin Le Grand mpCBXWrapText(new CheckBox(this, ScResId(CBX_WRAP))), 63*facb16e7SArmin Le Grand mpCBXMergeCell(new CheckBox(this, ScResId(CBX_MERGE))), 64*facb16e7SArmin Le Grand mpFtRotate(new FixedText(this, ScResId(FT_ORIENT))), 65*facb16e7SArmin Le Grand mpCtrlDial(new svx::sidebar::SidebarDialControl(this, ScResId(DIAL_CONTROL))), // , true)), 66*facb16e7SArmin Le Grand mpMtrAngle(new MetricBox(this, ScResId(CBOX_ANGLE))), 67*facb16e7SArmin Le Grand mpCbStacked(new CheckBox(this, ScResId(CBX_VERT))), 68*facb16e7SArmin Le Grand maAlignHorControl(SID_H_ALIGNCELL, *pBindings, *this), 69*facb16e7SArmin Le Grand maAlignVerControl(SID_V_ALIGNCELL, *pBindings, *this), 70*facb16e7SArmin Le Grand maLeftIndentControl(SID_ATTR_ALIGN_INDENT, *pBindings, *this), 71*facb16e7SArmin Le Grand maMergeCellControl(FID_MERGE_TOGGLE, *pBindings, *this), 72*facb16e7SArmin Le Grand maWrapTextControl(SID_ATTR_ALIGN_LINEBREAK, *pBindings, *this), 73*facb16e7SArmin Le Grand maAngleControl(SID_ATTR_ALIGN_DEGREES, *pBindings, *this), 74*facb16e7SArmin Le Grand maStackControl(SID_ATTR_ALIGN_STACKED, *pBindings, *this), 75*facb16e7SArmin Le Grand maIMGAlignLeft(ScResId(IMG_ALIGN_LEFT)), 76*facb16e7SArmin Le Grand maIMGAlignCenter(ScResId(IMG_ALIGN_CENTER)), 77*facb16e7SArmin Le Grand maIMGAlignRight(ScResId(IMG_ALIGN_RIGHT)), 78*facb16e7SArmin Le Grand maIMGAlignJust(ScResId(IMG_ALIGN_JUST)), 79*facb16e7SArmin Le Grand maIMGAlignTop(ScResId(IMG_ALIGN_TOP)), 80*facb16e7SArmin Le Grand maIMGAlignCenterV(ScResId(IMG_ALIGN_CENTER_V)), 81*facb16e7SArmin Le Grand maIMGAlignBottom(ScResId(IMG_ALIGN_BOTTOM)), 82*facb16e7SArmin Le Grand meHorAlignState(SVX_HOR_JUSTIFY_STANDARD), 83*facb16e7SArmin Le Grand meVerAlignState(SVX_VER_JUSTIFY_STANDARD), 84*facb16e7SArmin Le Grand mbMultiDisable(false), 85*facb16e7SArmin Le Grand mxFrame(rxFrame), 86*facb16e7SArmin Le Grand maContext(), 87*facb16e7SArmin Le Grand mpBindings(pBindings) 88*facb16e7SArmin Le Grand { 89*facb16e7SArmin Le Grand Initialize(); 90*facb16e7SArmin Le Grand FreeResource(); 91*facb16e7SArmin Le Grand } 92*facb16e7SArmin Le Grand 93*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 94*facb16e7SArmin Le Grand 95*facb16e7SArmin Le Grand AlignmentPropertyPanel::~AlignmentPropertyPanel() 96*facb16e7SArmin Le Grand { 97*facb16e7SArmin Le Grand } 98*facb16e7SArmin Le Grand 99*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 100*facb16e7SArmin Le Grand 101*facb16e7SArmin Le Grand void AlignmentPropertyPanel::Initialize() 102*facb16e7SArmin Le Grand { 103*facb16e7SArmin Le Grand mpTBHorizontal->SetItemImage(ID_SUBSTLEFT, maIMGAlignLeft); 104*facb16e7SArmin Le Grand mpTBHorizontal->SetItemImage(ID_SUBSTCENTER, maIMGAlignCenter); 105*facb16e7SArmin Le Grand mpTBHorizontal->SetItemImage(ID_SUBSTRIGHT, maIMGAlignRight); 106*facb16e7SArmin Le Grand mpTBHorizontal->SetItemImage(ID_SUBSTJUSTIFY, maIMGAlignJust); 107*facb16e7SArmin Le Grand Size aTbxSize( mpTBHorizontal->CalcWindowSizePixel() ); 108*facb16e7SArmin Le Grand mpTBHorizontal->SetOutputSizePixel( aTbxSize ); 109*facb16e7SArmin Le Grand mpTBHorizontal->SetBackground(Wallpaper()); 110*facb16e7SArmin Le Grand mpTBHorizontal->SetPaintTransparent(true); 111*facb16e7SArmin Le Grand Link aLink = LINK(this, AlignmentPropertyPanel, TbxHorAlignSelectHdl); 112*facb16e7SArmin Le Grand mpTBHorizontal->SetSelectHdl ( aLink ); 113*facb16e7SArmin Le Grand 114*facb16e7SArmin Le Grand mpTBVertical->SetItemImage(IID_VERT_TOP, maIMGAlignTop); 115*facb16e7SArmin Le Grand mpTBVertical->SetItemImage(IID_VERT_CENTER, maIMGAlignCenterV); 116*facb16e7SArmin Le Grand mpTBVertical->SetItemImage(IID_VERT_BOTTOM, maIMGAlignBottom); 117*facb16e7SArmin Le Grand Size aTbxSize2( mpTBVertical->CalcWindowSizePixel() ); 118*facb16e7SArmin Le Grand mpTBVertical->SetOutputSizePixel( aTbxSize2 ); 119*facb16e7SArmin Le Grand mpTBVertical->SetBackground(Wallpaper()); 120*facb16e7SArmin Le Grand mpTBVertical->SetPaintTransparent(true); 121*facb16e7SArmin Le Grand aLink = LINK(this, AlignmentPropertyPanel, TbxVerAlignSelectHdl); 122*facb16e7SArmin Le Grand mpTBVertical->SetSelectHdl ( aLink ); 123*facb16e7SArmin Le Grand 124*facb16e7SArmin Le Grand mpFTLeftIndent->Disable(); 125*facb16e7SArmin Le Grand mpMFLeftIndent->Disable(); 126*facb16e7SArmin Le Grand mpMFLeftIndent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Left Indent"))); //wj acc 127*facb16e7SArmin Le Grand aLink = LINK(this, AlignmentPropertyPanel, MFLeftIndentMdyHdl); 128*facb16e7SArmin Le Grand mpMFLeftIndent->SetModifyHdl ( aLink ); 129*facb16e7SArmin Le Grand 130*facb16e7SArmin Le Grand aLink = LINK(this, AlignmentPropertyPanel, CBOXMergnCellClkHdl); 131*facb16e7SArmin Le Grand mpCBXMergeCell->SetClickHdl ( aLink ); 132*facb16e7SArmin Le Grand 133*facb16e7SArmin Le Grand aLink = LINK(this, AlignmentPropertyPanel, CBOXWrapTextClkHdl); 134*facb16e7SArmin Le Grand mpCBXWrapText->SetClickHdl ( aLink ); 135*facb16e7SArmin Le Grand 136*facb16e7SArmin Le Grand //rotation control 137*facb16e7SArmin Le Grand mpCtrlDial->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Text Orientation"))); //wj acc 138*facb16e7SArmin Le Grand mpCtrlDial->SetModifyHdl(LINK( this, AlignmentPropertyPanel, RotationHdl)); 139*facb16e7SArmin Le Grand //rotation: 140*facb16e7SArmin Le Grand mpMtrAngle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Text Orientation"))); //wj acc 141*facb16e7SArmin Le Grand mpMtrAngle->SetModifyHdl(LINK( this, AlignmentPropertyPanel, AngleModifiedHdl)); 142*facb16e7SArmin Le Grand mpMtrAngle->EnableAutocomplete( false ); 143*facb16e7SArmin Le Grand //Vertical stacked 144*facb16e7SArmin Le Grand mpCbStacked->SetClickHdl( LINK( this, AlignmentPropertyPanel, ClickStackHdl ) ); 145*facb16e7SArmin Le Grand 146*facb16e7SArmin Le Grand //wj 147*facb16e7SArmin Le Grand mpMtrAngle->InsertValue(0, FUNIT_CUSTOM); 148*facb16e7SArmin Le Grand mpMtrAngle->InsertValue(45, FUNIT_CUSTOM); 149*facb16e7SArmin Le Grand mpMtrAngle->InsertValue(90, FUNIT_CUSTOM); 150*facb16e7SArmin Le Grand mpMtrAngle->InsertValue(135, FUNIT_CUSTOM); 151*facb16e7SArmin Le Grand mpMtrAngle->InsertValue(180, FUNIT_CUSTOM); 152*facb16e7SArmin Le Grand mpMtrAngle->InsertValue(225, FUNIT_CUSTOM); 153*facb16e7SArmin Le Grand mpMtrAngle->InsertValue(270, FUNIT_CUSTOM); 154*facb16e7SArmin Le Grand mpMtrAngle->InsertValue(315, FUNIT_CUSTOM); 155*facb16e7SArmin Le Grand 156*facb16e7SArmin Le Grand // 157*facb16e7SArmin Le Grand mpTBHorizontal->SetAccessibleRelationLabeledBy(mpTBHorizontal.get()); 158*facb16e7SArmin Le Grand mpTBVertical->SetAccessibleRelationLabeledBy(mpTBVertical.get()); 159*facb16e7SArmin Le Grand mpMFLeftIndent->SetAccessibleRelationLabeledBy(mpFTLeftIndent.get()); 160*facb16e7SArmin Le Grand mpMtrAngle->SetAccessibleRelationLabeledBy(mpFtRotate.get()); 161*facb16e7SArmin Le Grand #ifdef HAS_IA2 162*facb16e7SArmin Le Grand mpMtrAngle->SetMpSubEditAccLableBy(mpFtRotate.get()); 163*facb16e7SArmin Le Grand #endif 164*facb16e7SArmin Le Grand } 165*facb16e7SArmin Le Grand 166*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 167*facb16e7SArmin Le Grand 168*facb16e7SArmin Le Grand IMPL_LINK( AlignmentPropertyPanel, AngleModifiedHdl, void *, EMPTYARG ) 169*facb16e7SArmin Le Grand { 170*facb16e7SArmin Le Grand String sTmp = mpMtrAngle->GetText(); 171*facb16e7SArmin Le Grand 172*facb16e7SArmin Le Grand sal_Unicode nChar = sTmp.GetChar( 0 ); 173*facb16e7SArmin Le Grand if((sTmp.Len()== 1 && nChar == '-') || 174*facb16e7SArmin Le Grand (nChar != '-' && ((nChar < '0') || (nChar > '9') ) )) ////modify 175*facb16e7SArmin Le Grand return 0; 176*facb16e7SArmin Le Grand 177*facb16e7SArmin Le Grand double dTmp = sTmp.ToDouble(); 178*facb16e7SArmin Le Grand FormatDegrees(dTmp); 179*facb16e7SArmin Le Grand 180*facb16e7SArmin Le Grand sal_Int64 nTmp = (sal_Int64)dTmp*100; 181*facb16e7SArmin Le Grand SfxInt32Item aAngleItem( SID_ATTR_ALIGN_DEGREES,(sal_uInt32) nTmp); 182*facb16e7SArmin Le Grand 183*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute( 184*facb16e7SArmin Le Grand SID_ATTR_ALIGN_DEGREES, SFX_CALLMODE_RECORD, &aAngleItem, 0L ); 185*facb16e7SArmin Le Grand return 0; 186*facb16e7SArmin Le Grand } 187*facb16e7SArmin Le Grand 188*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 189*facb16e7SArmin Le Grand 190*facb16e7SArmin Le Grand IMPL_LINK( AlignmentPropertyPanel, RotationHdl, void *, EMPTYARG ) 191*facb16e7SArmin Le Grand { 192*facb16e7SArmin Le Grand sal_Int32 nTmp = mpCtrlDial->GetRotation(); 193*facb16e7SArmin Le Grand SfxInt32Item aAngleItem( SID_ATTR_ALIGN_DEGREES,(sal_uInt32) nTmp); 194*facb16e7SArmin Le Grand 195*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute( 196*facb16e7SArmin Le Grand SID_ATTR_ALIGN_DEGREES, SFX_CALLMODE_RECORD, &aAngleItem, 0L ); 197*facb16e7SArmin Le Grand 198*facb16e7SArmin Le Grand return 0; 199*facb16e7SArmin Le Grand } 200*facb16e7SArmin Le Grand 201*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 202*facb16e7SArmin Le Grand 203*facb16e7SArmin Le Grand IMPL_LINK( AlignmentPropertyPanel, ClickStackHdl, void *, EMPTYARG ) 204*facb16e7SArmin Le Grand { 205*facb16e7SArmin Le Grand bool bVertical = mpCbStacked->IsChecked() ? true : false; 206*facb16e7SArmin Le Grand SfxBoolItem aStackItem( SID_ATTR_ALIGN_STACKED, bVertical ); 207*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute( 208*facb16e7SArmin Le Grand SID_ATTR_ALIGN_STACKED, SFX_CALLMODE_RECORD, &aStackItem, 0L ); 209*facb16e7SArmin Le Grand return 0; 210*facb16e7SArmin Le Grand } 211*facb16e7SArmin Le Grand 212*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 213*facb16e7SArmin Le Grand 214*facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, TbxHorAlignSelectHdl, ToolBox*, pToolBox) 215*facb16e7SArmin Le Grand { 216*facb16e7SArmin Le Grand sal_uInt16 nId = pToolBox->GetCurItemId(); 217*facb16e7SArmin Le Grand 218*facb16e7SArmin Le Grand if(nId == ID_SUBSTLEFT) 219*facb16e7SArmin Le Grand { 220*facb16e7SArmin Le Grand if(meHorAlignState != SVX_HOR_JUSTIFY_LEFT) 221*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_LEFT; 222*facb16e7SArmin Le Grand else 223*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 224*facb16e7SArmin Le Grand } 225*facb16e7SArmin Le Grand else if( nId == ID_SUBSTCENTER ) 226*facb16e7SArmin Le Grand { 227*facb16e7SArmin Le Grand if(meHorAlignState != SVX_HOR_JUSTIFY_CENTER) 228*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_CENTER; 229*facb16e7SArmin Le Grand else 230*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 231*facb16e7SArmin Le Grand } 232*facb16e7SArmin Le Grand else if( nId == ID_SUBSTRIGHT ) 233*facb16e7SArmin Le Grand { 234*facb16e7SArmin Le Grand if(meHorAlignState != SVX_HOR_JUSTIFY_RIGHT) 235*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_RIGHT; 236*facb16e7SArmin Le Grand else 237*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 238*facb16e7SArmin Le Grand } 239*facb16e7SArmin Le Grand else if( nId == ID_SUBSTJUSTIFY ) 240*facb16e7SArmin Le Grand { 241*facb16e7SArmin Le Grand if(meHorAlignState != SVX_HOR_JUSTIFY_BLOCK) 242*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_BLOCK; 243*facb16e7SArmin Le Grand else 244*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 245*facb16e7SArmin Le Grand } 246*facb16e7SArmin Le Grand SvxHorJustifyItem aHorItem(meHorAlignState, SID_H_ALIGNCELL); 247*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_H_ALIGNCELL, SFX_CALLMODE_RECORD, &aHorItem, 0L); 248*facb16e7SArmin Le Grand UpdateHorAlign(); 249*facb16e7SArmin Le Grand return 0; 250*facb16e7SArmin Le Grand } 251*facb16e7SArmin Le Grand 252*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 253*facb16e7SArmin Le Grand 254*facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, TbxVerAlignSelectHdl, ToolBox*, pToolBox) 255*facb16e7SArmin Le Grand { 256*facb16e7SArmin Le Grand sal_uInt16 nId = pToolBox->GetCurItemId(); 257*facb16e7SArmin Le Grand 258*facb16e7SArmin Le Grand //Bold 259*facb16e7SArmin Le Grand if(nId == IID_VERT_TOP) 260*facb16e7SArmin Le Grand { 261*facb16e7SArmin Le Grand if(meVerAlignState != SVX_VER_JUSTIFY_TOP) 262*facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_TOP; 263*facb16e7SArmin Le Grand else 264*facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_STANDARD; 265*facb16e7SArmin Le Grand } 266*facb16e7SArmin Le Grand else if( nId == IID_VERT_CENTER ) 267*facb16e7SArmin Le Grand { 268*facb16e7SArmin Le Grand if(meVerAlignState != SVX_VER_JUSTIFY_CENTER) 269*facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_CENTER; 270*facb16e7SArmin Le Grand else 271*facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_STANDARD; 272*facb16e7SArmin Le Grand } 273*facb16e7SArmin Le Grand else if( nId == IID_VERT_BOTTOM ) 274*facb16e7SArmin Le Grand { 275*facb16e7SArmin Le Grand if(meVerAlignState != SVX_VER_JUSTIFY_BOTTOM) 276*facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_BOTTOM; 277*facb16e7SArmin Le Grand else 278*facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_STANDARD; 279*facb16e7SArmin Le Grand } 280*facb16e7SArmin Le Grand SvxVerJustifyItem aVerItem(meVerAlignState, SID_V_ALIGNCELL); 281*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_V_ALIGNCELL, SFX_CALLMODE_RECORD, &aVerItem, 0L); 282*facb16e7SArmin Le Grand UpdateVerAlign(); 283*facb16e7SArmin Le Grand return 0; 284*facb16e7SArmin Le Grand } 285*facb16e7SArmin Le Grand 286*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 287*facb16e7SArmin Le Grand 288*facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, MFLeftIndentMdyHdl, void*, EMPTYARG) 289*facb16e7SArmin Le Grand { 290*facb16e7SArmin Le Grand mpCBXWrapText->EnableTriState(false); 291*facb16e7SArmin Le Grand sal_uInt16 nVal = (sal_uInt16)mpMFLeftIndent->GetValue(); 292*facb16e7SArmin Le Grand SfxUInt16Item aItem( SID_ATTR_ALIGN_INDENT, (sal_uInt16)CalcToUnit( nVal, SFX_MAPUNIT_TWIP ) ); 293*facb16e7SArmin Le Grand 294*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_ALIGN_INDENT, SFX_CALLMODE_RECORD, &aItem, 0L); 295*facb16e7SArmin Le Grand return( 0L ); 296*facb16e7SArmin Le Grand } 297*facb16e7SArmin Le Grand 298*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 299*facb16e7SArmin Le Grand 300*facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, CBOXMergnCellClkHdl, void*, EMPTYARG) 301*facb16e7SArmin Le Grand { 302*facb16e7SArmin Le Grand bool bState = mpCBXMergeCell->IsChecked(); 303*facb16e7SArmin Le Grand 304*facb16e7SArmin Le Grand //Modified 305*facb16e7SArmin Le Grand //SfxBoolItem aItem( FID_MERGE_TOGGLE , bState); 306*facb16e7SArmin Le Grand //GetBindings()->GetDispatcher()->Execute(FID_MERGE_TOGGLE, SFX_CALLMODE_RECORD, &aItem, false, 0L); 307*facb16e7SArmin Le Grand if(bState) 308*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(FID_MERGE_ON, SFX_CALLMODE_RECORD); 309*facb16e7SArmin Le Grand else 310*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(FID_MERGE_OFF, SFX_CALLMODE_RECORD); 311*facb16e7SArmin Le Grand GetBindings()->Invalidate(FID_MERGE_TOGGLE,true,false); 312*facb16e7SArmin Le Grand //modified end 313*facb16e7SArmin Le Grand 314*facb16e7SArmin Le Grand return 0; 315*facb16e7SArmin Le Grand } 316*facb16e7SArmin Le Grand 317*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 318*facb16e7SArmin Le Grand 319*facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, CBOXWrapTextClkHdl, void*, EMPTYARG) 320*facb16e7SArmin Le Grand { 321*facb16e7SArmin Le Grand bool bState = mpCBXWrapText->IsChecked(); 322*facb16e7SArmin Le Grand SfxBoolItem aItem( SID_ATTR_ALIGN_LINEBREAK , bState); 323*facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_ALIGN_LINEBREAK, SFX_CALLMODE_RECORD, &aItem, 0L); 324*facb16e7SArmin Le Grand return 0; 325*facb16e7SArmin Le Grand } 326*facb16e7SArmin Le Grand 327*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 328*facb16e7SArmin Le Grand 329*facb16e7SArmin Le Grand AlignmentPropertyPanel* AlignmentPropertyPanel::Create ( 330*facb16e7SArmin Le Grand Window* pParent, 331*facb16e7SArmin Le Grand const cssu::Reference<css::frame::XFrame>& rxFrame, 332*facb16e7SArmin Le Grand SfxBindings* pBindings) 333*facb16e7SArmin Le Grand { 334*facb16e7SArmin Le Grand if (pParent == NULL) 335*facb16e7SArmin Le Grand throw lang::IllegalArgumentException(A2S("no parent Window given to AlignmentPropertyPanel::Create"), NULL, 0); 336*facb16e7SArmin Le Grand if ( ! rxFrame.is()) 337*facb16e7SArmin Le Grand throw lang::IllegalArgumentException(A2S("no XFrame given to AlignmentPropertyPanel::Create"), NULL, 1); 338*facb16e7SArmin Le Grand if (pBindings == NULL) 339*facb16e7SArmin Le Grand throw lang::IllegalArgumentException(A2S("no SfxBindings given to AlignmentPropertyPanel::Create"), NULL, 2); 340*facb16e7SArmin Le Grand 341*facb16e7SArmin Le Grand return new AlignmentPropertyPanel( 342*facb16e7SArmin Le Grand pParent, 343*facb16e7SArmin Le Grand rxFrame, 344*facb16e7SArmin Le Grand pBindings); 345*facb16e7SArmin Le Grand } 346*facb16e7SArmin Le Grand 347*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 348*facb16e7SArmin Le Grand 349*facb16e7SArmin Le Grand void AlignmentPropertyPanel::DataChanged( 350*facb16e7SArmin Le Grand const DataChangedEvent& rEvent) 351*facb16e7SArmin Le Grand { 352*facb16e7SArmin Le Grand (void)rEvent; 353*facb16e7SArmin Le Grand } 354*facb16e7SArmin Le Grand 355*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 356*facb16e7SArmin Le Grand 357*facb16e7SArmin Le Grand void AlignmentPropertyPanel::HandleContextChange( 358*facb16e7SArmin Le Grand const ::sfx2::sidebar::EnumContext aContext) 359*facb16e7SArmin Le Grand { 360*facb16e7SArmin Le Grand if(maContext == aContext) 361*facb16e7SArmin Le Grand { 362*facb16e7SArmin Le Grand // Nothing to do. 363*facb16e7SArmin Le Grand return; 364*facb16e7SArmin Le Grand } 365*facb16e7SArmin Le Grand 366*facb16e7SArmin Le Grand maContext = aContext; 367*facb16e7SArmin Le Grand 368*facb16e7SArmin Le Grand 369*facb16e7SArmin Le Grand 370*facb16e7SArmin Le Grand // todo 371*facb16e7SArmin Le Grand } 372*facb16e7SArmin Le Grand 373*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 374*facb16e7SArmin Le Grand 375*facb16e7SArmin Le Grand void AlignmentPropertyPanel::NotifyItemUpdate( 376*facb16e7SArmin Le Grand sal_uInt16 nSID, 377*facb16e7SArmin Le Grand SfxItemState eState, 378*facb16e7SArmin Le Grand const SfxPoolItem* pState) 379*facb16e7SArmin Le Grand { 380*facb16e7SArmin Le Grand switch(nSID) 381*facb16e7SArmin Le Grand { 382*facb16e7SArmin Le Grand case SID_H_ALIGNCELL: 383*facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SvxHorJustifyItem) ) 384*facb16e7SArmin Le Grand { 385*facb16e7SArmin Le Grand const SvxHorJustifyItem* pItem = (const SvxHorJustifyItem*)pState; 386*facb16e7SArmin Le Grand meHorAlignState = (SvxCellHorJustify)pItem->GetValue(); 387*facb16e7SArmin Le Grand } 388*facb16e7SArmin Le Grand else 389*facb16e7SArmin Le Grand { 390*facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 391*facb16e7SArmin Le Grand } 392*facb16e7SArmin Le Grand UpdateHorAlign(); 393*facb16e7SArmin Le Grand break; 394*facb16e7SArmin Le Grand case SID_V_ALIGNCELL: 395*facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SvxVerJustifyItem) ) 396*facb16e7SArmin Le Grand { 397*facb16e7SArmin Le Grand const SvxVerJustifyItem* pItem = (const SvxVerJustifyItem*)pState; 398*facb16e7SArmin Le Grand meVerAlignState = (SvxCellVerJustify)pItem->GetValue(); 399*facb16e7SArmin Le Grand } 400*facb16e7SArmin Le Grand else 401*facb16e7SArmin Le Grand { 402*facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_STANDARD; 403*facb16e7SArmin Le Grand } 404*facb16e7SArmin Le Grand UpdateVerAlign(); 405*facb16e7SArmin Le Grand break; 406*facb16e7SArmin Le Grand case SID_ATTR_ALIGN_INDENT: 407*facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SfxUInt16Item) ) 408*facb16e7SArmin Le Grand { 409*facb16e7SArmin Le Grand const SfxUInt16Item* pItem = (const SfxUInt16Item*)pState; 410*facb16e7SArmin Le Grand sal_uInt16 nVal = pItem->GetValue(); 411*facb16e7SArmin Le Grand mpMFLeftIndent->SetValue( CalcToPoint(nVal, SFX_MAPUNIT_TWIP, 1) ); 412*facb16e7SArmin Le Grand } 413*facb16e7SArmin Le Grand else 414*facb16e7SArmin Le Grand { 415*facb16e7SArmin Le Grand mpMFLeftIndent->SetValue(0); 416*facb16e7SArmin Le Grand mpMFLeftIndent->SetText(String()); 417*facb16e7SArmin Le Grand } 418*facb16e7SArmin Le Grand break; 419*facb16e7SArmin Le Grand case FID_MERGE_TOGGLE: 420*facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SfxBoolItem) ) 421*facb16e7SArmin Le Grand { 422*facb16e7SArmin Le Grand mpCBXMergeCell->Enable(); 423*facb16e7SArmin Le Grand const SfxBoolItem* pItem = (const SfxBoolItem*)pState; 424*facb16e7SArmin Le Grand bool bVal = pItem->GetValue(); 425*facb16e7SArmin Le Grand if(bVal) 426*facb16e7SArmin Le Grand mpCBXMergeCell->Check(true); 427*facb16e7SArmin Le Grand else 428*facb16e7SArmin Le Grand mpCBXMergeCell->Check(false); 429*facb16e7SArmin Le Grand } 430*facb16e7SArmin Le Grand else 431*facb16e7SArmin Le Grand { 432*facb16e7SArmin Le Grand mpCBXMergeCell->Check(false); 433*facb16e7SArmin Le Grand mpCBXMergeCell->Disable(); 434*facb16e7SArmin Le Grand } 435*facb16e7SArmin Le Grand break; 436*facb16e7SArmin Le Grand 437*facb16e7SArmin Le Grand case SID_ATTR_ALIGN_LINEBREAK: 438*facb16e7SArmin Le Grand if(eState == SFX_ITEM_DISABLED) 439*facb16e7SArmin Le Grand { 440*facb16e7SArmin Le Grand mpCBXWrapText->EnableTriState(false); 441*facb16e7SArmin Le Grand mpCBXWrapText->Check(false); 442*facb16e7SArmin Le Grand mpCBXWrapText->Disable(); 443*facb16e7SArmin Le Grand } 444*facb16e7SArmin Le Grand else 445*facb16e7SArmin Le Grand { 446*facb16e7SArmin Le Grand mpCBXWrapText->Enable(); 447*facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SfxBoolItem) ) 448*facb16e7SArmin Le Grand { 449*facb16e7SArmin Le Grand mpCBXWrapText->EnableTriState(false); 450*facb16e7SArmin Le Grand const SfxBoolItem* pItem = (const SfxBoolItem*)pState; 451*facb16e7SArmin Le Grand bool bVal = pItem->GetValue(); 452*facb16e7SArmin Le Grand if(bVal) 453*facb16e7SArmin Le Grand mpCBXWrapText->Check(true); 454*facb16e7SArmin Le Grand else 455*facb16e7SArmin Le Grand mpCBXWrapText->Check(false); 456*facb16e7SArmin Le Grand } 457*facb16e7SArmin Le Grand else if(eState == SFX_ITEM_DONTCARE) 458*facb16e7SArmin Le Grand { 459*facb16e7SArmin Le Grand mpCBXWrapText->EnableTriState(true); 460*facb16e7SArmin Le Grand mpCBXWrapText->SetState(STATE_DONTKNOW); 461*facb16e7SArmin Le Grand } 462*facb16e7SArmin Le Grand } 463*facb16e7SArmin Le Grand break; 464*facb16e7SArmin Le Grand case SID_ATTR_ALIGN_DEGREES: 465*facb16e7SArmin Le Grand if (eState >= SFX_ITEM_AVAILABLE) 466*facb16e7SArmin Le Grand { 467*facb16e7SArmin Le Grand long nTmp = ((const SfxInt32Item*)pState)->GetValue(); 468*facb16e7SArmin Le Grand mpMtrAngle->SetValue( nTmp / 100); //wj 469*facb16e7SArmin Le Grand mpCtrlDial->SetRotation( nTmp ); 470*facb16e7SArmin Le Grand switch(nTmp) 471*facb16e7SArmin Le Grand { 472*facb16e7SArmin Le Grand case 0: 473*facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(0); 474*facb16e7SArmin Le Grand break; 475*facb16e7SArmin Le Grand case 4500: 476*facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(1); 477*facb16e7SArmin Le Grand break; 478*facb16e7SArmin Le Grand case 9000: 479*facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(2); 480*facb16e7SArmin Le Grand break; 481*facb16e7SArmin Le Grand case 13500: 482*facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(3); 483*facb16e7SArmin Le Grand break; 484*facb16e7SArmin Le Grand case 18000: 485*facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(4); 486*facb16e7SArmin Le Grand break; 487*facb16e7SArmin Le Grand case 22500: 488*facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(5); 489*facb16e7SArmin Le Grand break; 490*facb16e7SArmin Le Grand case 27000: 491*facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(6); 492*facb16e7SArmin Le Grand break; 493*facb16e7SArmin Le Grand case 31500: 494*facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(7); 495*facb16e7SArmin Le Grand } 496*facb16e7SArmin Le Grand } 497*facb16e7SArmin Le Grand else 498*facb16e7SArmin Le Grand { 499*facb16e7SArmin Le Grand mpMtrAngle->SetText( String() ); 500*facb16e7SArmin Le Grand mpCtrlDial->SetRotation( 0 ); 501*facb16e7SArmin Le Grand } 502*facb16e7SArmin Le Grand break; 503*facb16e7SArmin Le Grand case SID_ATTR_ALIGN_STACKED: 504*facb16e7SArmin Le Grand if (eState >= SFX_ITEM_AVAILABLE) 505*facb16e7SArmin Le Grand { 506*facb16e7SArmin Le Grand mpCbStacked->EnableTriState(false); 507*facb16e7SArmin Le Grand const SfxBoolItem* aStackItem = (const SfxBoolItem*)pState; 508*facb16e7SArmin Le Grand bool IsChecked = (bool)aStackItem->GetValue(); 509*facb16e7SArmin Le Grand if(IsChecked) 510*facb16e7SArmin Le Grand { 511*facb16e7SArmin Le Grand mpCbStacked->Check(IsChecked); 512*facb16e7SArmin Le Grand mpFtRotate->Disable(); 513*facb16e7SArmin Le Grand mpMtrAngle->Disable(); 514*facb16e7SArmin Le Grand mpCtrlDial->Disable(); 515*facb16e7SArmin Le Grand mbMultiDisable = true; 516*facb16e7SArmin Le Grand } 517*facb16e7SArmin Le Grand else 518*facb16e7SArmin Le Grand { 519*facb16e7SArmin Le Grand mpCbStacked->Check(IsChecked); 520*facb16e7SArmin Le Grand mpFtRotate->Enable(); 521*facb16e7SArmin Le Grand mpMtrAngle->Enable(); 522*facb16e7SArmin Le Grand mpCtrlDial->Enable(); 523*facb16e7SArmin Le Grand mbMultiDisable = false; 524*facb16e7SArmin Le Grand } 525*facb16e7SArmin Le Grand } 526*facb16e7SArmin Le Grand else 527*facb16e7SArmin Le Grand { 528*facb16e7SArmin Le Grand mbMultiDisable = true; 529*facb16e7SArmin Le Grand mpFtRotate->Disable(); 530*facb16e7SArmin Le Grand mpMtrAngle->Disable(); 531*facb16e7SArmin Le Grand mpCtrlDial->Disable(); 532*facb16e7SArmin Le Grand mpCbStacked->EnableTriState(true); 533*facb16e7SArmin Le Grand mpCbStacked->SetState(STATE_DONTKNOW); 534*facb16e7SArmin Le Grand } 535*facb16e7SArmin Le Grand } 536*facb16e7SArmin Le Grand } 537*facb16e7SArmin Le Grand 538*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 539*facb16e7SArmin Le Grand 540*facb16e7SArmin Le Grand SfxBindings* AlignmentPropertyPanel::GetBindings() 541*facb16e7SArmin Le Grand { 542*facb16e7SArmin Le Grand return mpBindings; 543*facb16e7SArmin Le Grand } 544*facb16e7SArmin Le Grand 545*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 546*facb16e7SArmin Le Grand 547*facb16e7SArmin Le Grand void AlignmentPropertyPanel::FormatDegrees(double& dTmp) 548*facb16e7SArmin Le Grand { 549*facb16e7SArmin Le Grand while(dTmp<0) 550*facb16e7SArmin Le Grand dTmp += 360; 551*facb16e7SArmin Le Grand while (dTmp > 359) //modify 552*facb16e7SArmin Le Grand dTmp = 359; 553*facb16e7SArmin Le Grand } 554*facb16e7SArmin Le Grand 555*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 556*facb16e7SArmin Le Grand 557*facb16e7SArmin Le Grand void AlignmentPropertyPanel::UpdateHorAlign() 558*facb16e7SArmin Le Grand { 559*facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTLEFT, STATE_NOCHECK); 560*facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTCENTER, STATE_NOCHECK); 561*facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTRIGHT, STATE_NOCHECK); 562*facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTJUSTIFY,STATE_NOCHECK); 563*facb16e7SArmin Le Grand mpFTLeftIndent->Disable(); 564*facb16e7SArmin Le Grand mpMFLeftIndent->Disable(); 565*facb16e7SArmin Le Grand if(meHorAlignState==SVX_HOR_JUSTIFY_REPEAT) 566*facb16e7SArmin Le Grand { 567*facb16e7SArmin Le Grand mpFtRotate->Disable(); 568*facb16e7SArmin Le Grand mpCtrlDial->Disable(); 569*facb16e7SArmin Le Grand mpMtrAngle->Disable(); 570*facb16e7SArmin Le Grand mpCbStacked->Disable(); 571*facb16e7SArmin Le Grand } 572*facb16e7SArmin Le Grand else 573*facb16e7SArmin Le Grand { 574*facb16e7SArmin Le Grand if(!mbMultiDisable) 575*facb16e7SArmin Le Grand { 576*facb16e7SArmin Le Grand mpFtRotate->Enable(); 577*facb16e7SArmin Le Grand mpCtrlDial->Enable(); 578*facb16e7SArmin Le Grand mpMtrAngle->Enable(); 579*facb16e7SArmin Le Grand } 580*facb16e7SArmin Le Grand else 581*facb16e7SArmin Le Grand { 582*facb16e7SArmin Le Grand mpFtRotate->Disable(); 583*facb16e7SArmin Le Grand mpCtrlDial->Disable(); 584*facb16e7SArmin Le Grand mpMtrAngle->Disable(); 585*facb16e7SArmin Le Grand } 586*facb16e7SArmin Le Grand mpCbStacked->Enable(); 587*facb16e7SArmin Le Grand } 588*facb16e7SArmin Le Grand switch(meHorAlignState) 589*facb16e7SArmin Le Grand { 590*facb16e7SArmin Le Grand case SVX_HOR_JUSTIFY_LEFT: 591*facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTLEFT, STATE_CHECK); 592*facb16e7SArmin Le Grand mpFTLeftIndent->Enable(); 593*facb16e7SArmin Le Grand mpMFLeftIndent->Enable(); 594*facb16e7SArmin Le Grand break; 595*facb16e7SArmin Le Grand case SVX_HOR_JUSTIFY_CENTER:mpTBHorizontal->SetItemState(ID_SUBSTCENTER, STATE_CHECK);break; 596*facb16e7SArmin Le Grand case SVX_HOR_JUSTIFY_RIGHT: mpTBHorizontal->SetItemState(ID_SUBSTRIGHT, STATE_CHECK);break; 597*facb16e7SArmin Le Grand case SVX_HOR_JUSTIFY_BLOCK: mpTBHorizontal->SetItemState(ID_SUBSTJUSTIFY,STATE_CHECK);break; 598*facb16e7SArmin Le Grand default:; 599*facb16e7SArmin Le Grand } 600*facb16e7SArmin Le Grand } 601*facb16e7SArmin Le Grand 602*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 603*facb16e7SArmin Le Grand 604*facb16e7SArmin Le Grand void AlignmentPropertyPanel::UpdateVerAlign() 605*facb16e7SArmin Le Grand { 606*facb16e7SArmin Le Grand mpTBVertical->SetItemState(IID_VERT_TOP, STATE_NOCHECK); 607*facb16e7SArmin Le Grand mpTBVertical->SetItemState(IID_VERT_CENTER, STATE_NOCHECK); 608*facb16e7SArmin Le Grand mpTBVertical->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK); 609*facb16e7SArmin Le Grand 610*facb16e7SArmin Le Grand switch(meVerAlignState) 611*facb16e7SArmin Le Grand { 612*facb16e7SArmin Le Grand case SVX_VER_JUSTIFY_TOP: mpTBVertical->SetItemState(IID_VERT_TOP, STATE_CHECK);break; 613*facb16e7SArmin Le Grand case SVX_VER_JUSTIFY_CENTER:mpTBVertical->SetItemState(IID_VERT_CENTER, STATE_CHECK);break; 614*facb16e7SArmin Le Grand case SVX_VER_JUSTIFY_BOTTOM: mpTBVertical->SetItemState(IID_VERT_BOTTOM, STATE_CHECK);break; 615*facb16e7SArmin Le Grand default:; 616*facb16e7SArmin Le Grand } 617*facb16e7SArmin Le Grand } 618*facb16e7SArmin Le Grand 619*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 620*facb16e7SArmin Le Grand // namespace close 621*facb16e7SArmin Le Grand 622*facb16e7SArmin Le Grand }} // end of namespace ::sc::sidebar 623*facb16e7SArmin Le Grand 624*facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 625*facb16e7SArmin Le Grand // eof 626