12ee96f1cSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 32ee96f1cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 42ee96f1cSAndrew Rist * or more contributor license agreements. See the NOTICE file 52ee96f1cSAndrew Rist * distributed with this work for additional information 62ee96f1cSAndrew Rist * regarding copyright ownership. The ASF licenses this file 72ee96f1cSAndrew Rist * to you under the Apache License, Version 2.0 (the 82ee96f1cSAndrew Rist * "License"); you may not use this file except in compliance 92ee96f1cSAndrew Rist * with the License. You may obtain a copy of the License at 102ee96f1cSAndrew Rist * 112ee96f1cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 122ee96f1cSAndrew Rist * 132ee96f1cSAndrew Rist * Unless required by applicable law or agreed to in writing, 142ee96f1cSAndrew Rist * software distributed under the License is distributed on an 152ee96f1cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 162ee96f1cSAndrew Rist * KIND, either express or implied. See the License for the 172ee96f1cSAndrew Rist * specific language governing permissions and limitations 182ee96f1cSAndrew Rist * under the License. 192ee96f1cSAndrew Rist * 202ee96f1cSAndrew Rist *************************************************************/ 212ee96f1cSAndrew Rist 222ee96f1cSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_cui.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir // include --------------------------------------------------------------- 28cdf0e10cSrcweir 29cdf0e10cSrcweir #ifndef _SVX_SIZEITEM_HXX //autogen 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include <editeng/sizeitem.hxx> 32cdf0e10cSrcweir #endif 33cdf0e10cSrcweir #include <tools/shl.hxx> 34cdf0e10cSrcweir #include <tools/urlobj.hxx> 35cdf0e10cSrcweir #include <sfx2/app.hxx> 36cdf0e10cSrcweir #include <sfx2/module.hxx> 37cdf0e10cSrcweir 38cdf0e10cSrcweir #define _SVX_TPLINE_CXX 39cdf0e10cSrcweir 40cdf0e10cSrcweir #include <cuires.hrc> 41cdf0e10cSrcweir #include "tabline.hrc" 42cdf0e10cSrcweir #include "svx/xattr.hxx" 43cdf0e10cSrcweir #include <svx/xpool.hxx> 44cdf0e10cSrcweir #include <svx/xtable.hxx> 45cdf0e10cSrcweir #include "svx/drawitem.hxx" 46cdf0e10cSrcweir #include "cuitabline.hxx" 47cdf0e10cSrcweir #include "dlgname.hxx" 48cdf0e10cSrcweir #include <dialmgr.hxx> 49cdf0e10cSrcweir #include "svx/dlgutil.hxx" 50cdf0e10cSrcweir #include <svx/svdmodel.hxx> 51cdf0e10cSrcweir #include "svx/svxgrahicitem.hxx" 52cdf0e10cSrcweir //#include "linectrl.hrc" 53cdf0e10cSrcweir #include <sfx2/request.hxx> 54cdf0e10cSrcweir #include "svx/ofaitem.hxx" 55cdf0e10cSrcweir #include <svx/svdobj.hxx> 56cdf0e10cSrcweir #include <svx/svdview.hxx> 57cdf0e10cSrcweir #include <svx/svdmodel.hxx> 58cdf0e10cSrcweir #include <svx/numvset.hxx> 59cdf0e10cSrcweir #include <vcl/msgbox.hxx> 60cdf0e10cSrcweir #include <editeng/numitem.hxx> 61cdf0e10cSrcweir #include <editeng/svxenum.hxx> 62cdf0e10cSrcweir #include <sfx2/objsh.hxx> 63cdf0e10cSrcweir #include <editeng/brshitem.hxx> 64cdf0e10cSrcweir #include <svx/gallery.hxx> 65cdf0e10cSrcweir #include <svx/xbitmap.hxx> 66cdf0e10cSrcweir #include <unotools/localfilehelper.hxx> 67cdf0e10cSrcweir #include "paragrph.hrc" 68cdf0e10cSrcweir #include "sfx2/opengrf.hxx" 69cdf0e10cSrcweir #include <svx/dialmgr.hxx> 70cdf0e10cSrcweir #include <svx/dialogs.hrc> 71cdf0e10cSrcweir 72cdf0e10cSrcweir #define MAX_BMP_WIDTH 16 73cdf0e10cSrcweir #define MAX_BMP_HEIGHT 16 74cdf0e10cSrcweir // define ---------------------------------------------------------------- 75cdf0e10cSrcweir 76cdf0e10cSrcweir #define DLGWIN this->GetParent()->GetParent() 77cdf0e10cSrcweir 78cdf0e10cSrcweir #define BITMAP_WIDTH 32 79cdf0e10cSrcweir #define BITMAP_HEIGHT 12 80cdf0e10cSrcweir #define XOUT_WIDTH 150 81cdf0e10cSrcweir 82cdf0e10cSrcweir // static ---------------------------------------------------------------- 83cdf0e10cSrcweir 84cdf0e10cSrcweir static sal_uInt16 pLineRanges[] = 85cdf0e10cSrcweir { 86cdf0e10cSrcweir XATTR_LINETRANSPARENCE, 87cdf0e10cSrcweir XATTR_LINETRANSPARENCE, 88cdf0e10cSrcweir SID_ATTR_LINE_STYLE, 89cdf0e10cSrcweir SID_ATTR_LINE_ENDCENTER, 90cdf0e10cSrcweir 0 91cdf0e10cSrcweir }; 92cdf0e10cSrcweir 93cdf0e10cSrcweir /************************************************************************* 94cdf0e10cSrcweir |* 95cdf0e10cSrcweir |* Dialog zum Aendern der Linien 96cdf0e10cSrcweir |* 97cdf0e10cSrcweir \************************************************************************/ 98cdf0e10cSrcweir 99cdf0e10cSrcweir SvxLineTabPage::SvxLineTabPage 100cdf0e10cSrcweir ( 101cdf0e10cSrcweir Window* pParent, 102cdf0e10cSrcweir const SfxItemSet& rInAttrs 103cdf0e10cSrcweir ) : 104cdf0e10cSrcweir SvxTabPage ( pParent, CUI_RES( RID_SVXPAGE_LINE ), rInAttrs ), 105cdf0e10cSrcweir aFlLine ( this, CUI_RES( FL_LINE ) ), 106cdf0e10cSrcweir aFtLineStyle ( this, CUI_RES( FT_LINE_STYLE ) ), 107cdf0e10cSrcweir aLbLineStyle ( this, CUI_RES( LB_LINE_STYLE ) ), 108cdf0e10cSrcweir aFtColor ( this, CUI_RES( FT_COLOR ) ), 109cdf0e10cSrcweir aLbColor ( this, CUI_RES( LB_COLOR ) ), 110cdf0e10cSrcweir aFtLineWidth ( this, CUI_RES( FT_LINE_WIDTH ) ), 111cdf0e10cSrcweir aMtrLineWidth ( this, CUI_RES( MTR_FLD_LINE_WIDTH ) ), 112cdf0e10cSrcweir aFtTransparent ( this, CUI_RES( FT_TRANSPARENT ) ), 113cdf0e10cSrcweir aMtrTransparent ( this, CUI_RES( MTR_LINE_TRANSPARENT ) ), 114cdf0e10cSrcweir aFlLineEnds ( this, CUI_RES( FL_LINE_ENDS ) ), 115cdf0e10cSrcweir aLbStartStyle ( this, CUI_RES( LB_START_STYLE ) ), 116cdf0e10cSrcweir aMtrStartWidth ( this, CUI_RES( MTR_FLD_START_WIDTH ) ), 117cdf0e10cSrcweir aTsbCenterStart ( this, CUI_RES( TSB_CENTER_START ) ), 118cdf0e10cSrcweir aFtLineEndsStyle ( this, CUI_RES( FT_LINE_ENDS_STYLE ) ), 119cdf0e10cSrcweir aLbEndStyle ( this, CUI_RES( LB_END_STYLE ) ), 120cdf0e10cSrcweir aFtLineEndsWidth ( this, CUI_RES( FT_LINE_ENDS_WIDTH ) ), 121cdf0e10cSrcweir aMtrEndWidth ( this, CUI_RES( MTR_FLD_END_WIDTH ) ), 122cdf0e10cSrcweir aTsbCenterEnd ( this, CUI_RES( TSB_CENTER_END ) ), 123cdf0e10cSrcweir aCbxSynchronize ( this, CUI_RES( CBX_SYNCHRONIZE ) ), 124cdf0e10cSrcweir aFLSeparator ( this, CUI_RES( FL_SEPARATOR ) ), 125cdf0e10cSrcweir aCtlPreview ( this, CUI_RES( CTL_PREVIEW ) ), 126cdf0e10cSrcweir 127cdf0e10cSrcweir // #116827# 128cdf0e10cSrcweir maFLEdgeStyle ( this, CUI_RES( FL_EDGE_STYLE ) ), 129cdf0e10cSrcweir maFTEdgeStyle ( this, CUI_RES( FT_EDGE_STYLE ) ), 130cdf0e10cSrcweir maLBEdgeStyle ( this, CUI_RES( LB_EDGE_STYLE ) ), 131cdf0e10cSrcweir 132*5aaf853bSArmin Le Grand // LineCaps 133*5aaf853bSArmin Le Grand maFTCapStyle ( this, CUI_RES( FT_CAP_STYLE ) ), 134*5aaf853bSArmin Le Grand maLBCapStyle ( this, CUI_RES( LB_CAP_STYLE ) ), 135*5aaf853bSArmin Le Grand 136cdf0e10cSrcweir pSymbolList(NULL), 137cdf0e10cSrcweir bNewSize(false), 138cdf0e10cSrcweir nNumMenuGalleryItems(0), 139cdf0e10cSrcweir nSymbolType(SVX_SYMBOLTYPE_UNKNOWN), //unbekannt bzw. unchanged 140cdf0e10cSrcweir pSymbolAttr(NULL), 141cdf0e10cSrcweir //#58425# Symbole auf einer Linie (z.B. StarChart) 142cdf0e10cSrcweir aFlSymbol ( this, CUI_RES(FL_SYMBOL_FORMAT)), 143cdf0e10cSrcweir aSymbolMB ( this, CUI_RES(MB_SYMBOL_BITMAP)), 144cdf0e10cSrcweir aSymbolWidthFT ( this, CUI_RES(FT_SYMBOL_WIDTH)), 145cdf0e10cSrcweir aSymbolWidthMF ( this, CUI_RES(MF_SYMBOL_WIDTH)), 146cdf0e10cSrcweir aSymbolHeightFT ( this, CUI_RES(FT_SYMBOL_HEIGHT)), 147cdf0e10cSrcweir aSymbolHeightMF ( this, CUI_RES(MF_SYMBOL_HEIGHT)), 148cdf0e10cSrcweir aSymbolRatioCB ( this, CUI_RES(CB_SYMBOL_RATIO)), 149cdf0e10cSrcweir 150cdf0e10cSrcweir bLastWidthModified(sal_False), 151cdf0e10cSrcweir aSymbolLastSize(Size(0,0)), 152cdf0e10cSrcweir bSymbols(sal_False), 153cdf0e10cSrcweir 154cdf0e10cSrcweir rOutAttrs ( rInAttrs ), 155cdf0e10cSrcweir bObjSelected( sal_False ), 156cdf0e10cSrcweir 157cdf0e10cSrcweir pXPool ( (XOutdevItemPool*) rInAttrs.GetPool() ), 158cdf0e10cSrcweir aXLStyle ( XLINE_DASH ), 159cdf0e10cSrcweir aXWidth ( 1 ), 160cdf0e10cSrcweir aXDash ( String(), XDash( XDASH_RECT, 3, 7, 2, 40, 15 ) ), 161cdf0e10cSrcweir aXColor ( String(), COL_LIGHTRED ), 162cdf0e10cSrcweir aXLineAttr ( pXPool ), 163cdf0e10cSrcweir rXLSet ( aXLineAttr.GetItemSet() ), 164cdf0e10cSrcweir pnLineEndListState( 0 ), 165cdf0e10cSrcweir pnDashListState( 0 ), 166cdf0e10cSrcweir pnColorTableState( 0 ), 167cdf0e10cSrcweir nPageType ( 0 )//CHINA001 pPageType ( NULL ), 168cdf0e10cSrcweir { 169cdf0e10cSrcweir aLbEndStyle.SetAccessibleName(String(CUI_RES(STR_STYLE))); 170cdf0e10cSrcweir aLbStartStyle.SetAccessibleName(String(CUI_RES( STR_LB_START_STYLE ) ) ); 171cdf0e10cSrcweir aMtrStartWidth.SetAccessibleName(String(CUI_RES( STR_MTR_FLD_START_WIDTH ) ) ); 172cdf0e10cSrcweir aLbEndStyle.SetAccessibleName(String(CUI_RES( STR_LB_END_STYLE ) ) ); 173cdf0e10cSrcweir aMtrEndWidth.SetAccessibleName(String(CUI_RES( STR_MTR_FLD_END_WIDTH ) ) ); 174cdf0e10cSrcweir aTsbCenterStart.SetAccessibleName(String(CUI_RES( STR_CENTER_START ) ) ); 175cdf0e10cSrcweir aTsbCenterEnd.SetAccessibleName(String(CUI_RES( STR_CENTER_END ) ) ); 176cdf0e10cSrcweir 177cdf0e10cSrcweir FreeResource(); 178cdf0e10cSrcweir 179cdf0e10cSrcweir aCtlPreview.SetAccessibleName(String(CUI_RES(STR_EXAMPLE))); 180cdf0e10cSrcweir 181cdf0e10cSrcweir // diese Page braucht ExchangeSupport 182cdf0e10cSrcweir SetExchangeSupport(); 183cdf0e10cSrcweir 184cdf0e10cSrcweir // Metrik einstellen 185cdf0e10cSrcweir FieldUnit eFUnit = GetModuleFieldUnit( rInAttrs ); 186cdf0e10cSrcweir 187cdf0e10cSrcweir switch ( eFUnit ) 188cdf0e10cSrcweir { 189cdf0e10cSrcweir case FUNIT_M: 190cdf0e10cSrcweir case FUNIT_KM: 191cdf0e10cSrcweir eFUnit = FUNIT_MM; 192cdf0e10cSrcweir // no break -> we now have mm 193cdf0e10cSrcweir case FUNIT_MM: 194cdf0e10cSrcweir aMtrLineWidth.SetSpinSize( 50 ); 195cdf0e10cSrcweir aMtrStartWidth.SetSpinSize( 50 ); 196cdf0e10cSrcweir aMtrEndWidth.SetSpinSize( 50 ); 197cdf0e10cSrcweir break; 198cdf0e10cSrcweir 199cdf0e10cSrcweir case FUNIT_INCH: 200cdf0e10cSrcweir aMtrLineWidth.SetSpinSize( 2 ); 201cdf0e10cSrcweir aMtrStartWidth.SetSpinSize( 2 ); 202cdf0e10cSrcweir aMtrEndWidth.SetSpinSize( 2 ); 203cdf0e10cSrcweir break; 204cdf0e10cSrcweir default: ;//prevent warning 205cdf0e10cSrcweir } 206cdf0e10cSrcweir SetFieldUnit( aMtrLineWidth, eFUnit ); 207cdf0e10cSrcweir SetFieldUnit( aMtrStartWidth, eFUnit ); 208cdf0e10cSrcweir SetFieldUnit( aMtrEndWidth, eFUnit ); 209cdf0e10cSrcweir 210cdf0e10cSrcweir // PoolUnit ermitteln 211cdf0e10cSrcweir SfxItemPool* pPool = rOutAttrs.GetPool(); 212cdf0e10cSrcweir DBG_ASSERT( pPool, "Wo ist der Pool?" ); 213cdf0e10cSrcweir ePoolUnit = pPool->GetMetric( SID_ATTR_LINE_WIDTH ); 214cdf0e10cSrcweir 215cdf0e10cSrcweir aLbLineStyle.SetSelectHdl( 216cdf0e10cSrcweir LINK( this, SvxLineTabPage, ClickInvisibleHdl_Impl ) ); 217cdf0e10cSrcweir aLbColor.SetSelectHdl( 218cdf0e10cSrcweir LINK( this, SvxLineTabPage, ChangePreviewHdl_Impl ) ); 219cdf0e10cSrcweir aMtrLineWidth.SetModifyHdl( 220cdf0e10cSrcweir LINK( this, SvxLineTabPage, ChangePreviewHdl_Impl ) ); 221cdf0e10cSrcweir aMtrTransparent.SetModifyHdl( 222cdf0e10cSrcweir LINK( this, SvxLineTabPage, ChangeTransparentHdl_Impl ) ); 223cdf0e10cSrcweir 224cdf0e10cSrcweir Link aStart = LINK( this, SvxLineTabPage, ChangeStartHdl_Impl ); 225cdf0e10cSrcweir Link aEnd = LINK( this, SvxLineTabPage, ChangeEndHdl_Impl ); 226cdf0e10cSrcweir aLbStartStyle.SetSelectHdl( aStart ); 227cdf0e10cSrcweir aLbEndStyle.SetSelectHdl( aEnd ); 228cdf0e10cSrcweir aMtrStartWidth.SetModifyHdl( aStart ); 229cdf0e10cSrcweir aMtrEndWidth.SetModifyHdl( aEnd ); 230cdf0e10cSrcweir aTsbCenterStart.SetClickHdl( aStart ); 231cdf0e10cSrcweir aTsbCenterEnd.SetClickHdl( aEnd ); 232cdf0e10cSrcweir 233cdf0e10cSrcweir pColorTab = NULL; 234cdf0e10cSrcweir pDashList = NULL; 235cdf0e10cSrcweir pLineEndList = NULL; 236cdf0e10cSrcweir 237cdf0e10cSrcweir // #116827# 238cdf0e10cSrcweir Link aEdgeStyle = LINK( this, SvxLineTabPage, ChangeEdgeStyleHdl_Impl ); 239cdf0e10cSrcweir maLBEdgeStyle.SetSelectHdl( aEdgeStyle ); 240cdf0e10cSrcweir 241*5aaf853bSArmin Le Grand // LineCaps 242*5aaf853bSArmin Le Grand Link aCapStyle = LINK( this, SvxLineTabPage, ChangeCapStyleHdl_Impl ); 243*5aaf853bSArmin Le Grand maLBCapStyle.SetSelectHdl( aCapStyle ); 244*5aaf853bSArmin Le Grand 245cdf0e10cSrcweir //#58425# Symbole auf einer Linie (z.B. StarChart) , MB-Handler setzen 246cdf0e10cSrcweir aSymbolMB.SetSelectHdl(LINK(this, SvxLineTabPage, GraphicHdl_Impl)); 247cdf0e10cSrcweir aSymbolMB.SetActivateHdl(LINK(this, SvxLineTabPage, MenuCreateHdl_Impl)); 248cdf0e10cSrcweir aSymbolWidthMF.SetModifyHdl(LINK(this, SvxLineTabPage, SizeHdl_Impl)); 249cdf0e10cSrcweir aSymbolHeightMF.SetModifyHdl(LINK(this, SvxLineTabPage, SizeHdl_Impl)); 250cdf0e10cSrcweir aSymbolRatioCB.SetClickHdl(LINK(this, SvxLineTabPage, RatioHdl_Impl)); 251cdf0e10cSrcweir 252cdf0e10cSrcweir aSymbolRatioCB.Check(sal_True); 253cdf0e10cSrcweir ShowSymbolControls(sal_False); 254cdf0e10cSrcweir 255cdf0e10cSrcweir // #63083# 256cdf0e10cSrcweir nActLineWidth = -1; 257cdf0e10cSrcweir } 258cdf0e10cSrcweir //#58425# Symbole auf einer Linie (z.B. StarChart) , Symbol-Controls aktivieren 259cdf0e10cSrcweir void SvxLineTabPage::ShowSymbolControls(sal_Bool bOn) 260cdf0e10cSrcweir { 261cdf0e10cSrcweir bSymbols=bOn; 262cdf0e10cSrcweir aSymbolWidthFT.Show(bOn); 263cdf0e10cSrcweir aSymbolWidthMF.Show(bOn); 264cdf0e10cSrcweir aSymbolHeightFT.Show(bOn); 265cdf0e10cSrcweir aSymbolHeightMF.Show(bOn); 266cdf0e10cSrcweir aFlSymbol.Show(bOn); 267cdf0e10cSrcweir aSymbolRatioCB.Show(bOn); 268cdf0e10cSrcweir aSymbolMB.Show(bOn); 269cdf0e10cSrcweir aCtlPreview.ShowSymbol(bOn); 270cdf0e10cSrcweir } 271cdf0e10cSrcweir // ----------------------------------------------------------------------- 272cdf0e10cSrcweir //#58425# Symbole auf einer Linie (z.B. StarChart) , dtor neu! 273cdf0e10cSrcweir SvxLineTabPage::~SvxLineTabPage() 274cdf0e10cSrcweir { 275cdf0e10cSrcweir delete aSymbolMB.GetPopupMenu()->GetPopupMenu( MN_GALLERY ); 276cdf0e10cSrcweir 277cdf0e10cSrcweir if(pSymbolList) 278cdf0e10cSrcweir delete aSymbolMB.GetPopupMenu()->GetPopupMenu( MN_SYMBOLS ); 279cdf0e10cSrcweir 280cdf0e10cSrcweir String* pStr = (String*)aGrfNames.First(); 281cdf0e10cSrcweir while( pStr ) 282cdf0e10cSrcweir { 283cdf0e10cSrcweir delete pStr; 284cdf0e10cSrcweir pStr = (String*)aGrfNames.Next(); 285cdf0e10cSrcweir } 286cdf0e10cSrcweir SvxBmpItemInfo* pInfo = (SvxBmpItemInfo*)aGrfBrushItems.First(); 287cdf0e10cSrcweir while( pInfo ) 288cdf0e10cSrcweir { 289cdf0e10cSrcweir delete pInfo->pBrushItem; 290cdf0e10cSrcweir delete pInfo; 291cdf0e10cSrcweir pInfo = (SvxBmpItemInfo*)aGrfBrushItems.Next(); 292cdf0e10cSrcweir } 293cdf0e10cSrcweir } 294cdf0e10cSrcweir void SvxLineTabPage::Construct() 295cdf0e10cSrcweir { 296cdf0e10cSrcweir // Farbtabelle 297cdf0e10cSrcweir aLbColor.Fill( pColorTab ); 298cdf0e10cSrcweir FillListboxes(); 299cdf0e10cSrcweir } 300cdf0e10cSrcweir 301cdf0e10cSrcweir void SvxLineTabPage::FillListboxes() 302cdf0e10cSrcweir { 303cdf0e10cSrcweir // Linienstile 304cdf0e10cSrcweir sal_uInt16 nOldSelect = aLbLineStyle.GetSelectEntryPos(); 305cdf0e10cSrcweir aLbLineStyle.FillStyles(); 306cdf0e10cSrcweir aLbLineStyle.Fill( pDashList ); 307cdf0e10cSrcweir aLbLineStyle.SelectEntryPos( nOldSelect ); 308cdf0e10cSrcweir 309cdf0e10cSrcweir // LinienEndenStile 310cdf0e10cSrcweir String sNone( SVX_RES( RID_SVXSTR_NONE ) ); 311cdf0e10cSrcweir nOldSelect = aLbStartStyle.GetSelectEntryPos(); 312cdf0e10cSrcweir aLbStartStyle.Clear(); 313cdf0e10cSrcweir aLbStartStyle.InsertEntry( sNone ); 314cdf0e10cSrcweir aLbStartStyle.Fill( pLineEndList ); 315cdf0e10cSrcweir aLbStartStyle.SelectEntryPos( nOldSelect ); 316cdf0e10cSrcweir nOldSelect = aLbEndStyle.GetSelectEntryPos(); 317cdf0e10cSrcweir aLbEndStyle.Clear(); 318cdf0e10cSrcweir aLbEndStyle.InsertEntry( sNone ); 319cdf0e10cSrcweir aLbEndStyle.Fill( pLineEndList, sal_False ); 320cdf0e10cSrcweir aLbEndStyle.SelectEntryPos( nOldSelect ); 321cdf0e10cSrcweir } 322cdf0e10cSrcweir 323cdf0e10cSrcweir // ----------------------------------------------------------------------- 324cdf0e10cSrcweir 325cdf0e10cSrcweir void SvxLineTabPage::ActivatePage( const SfxItemSet& rSet ) 326cdf0e10cSrcweir { 327cdf0e10cSrcweir SFX_ITEMSET_ARG (&rSet,pPageTypeItem,CntUInt16Item,SID_PAGE_TYPE,sal_False); //add CHINA001 begin 328cdf0e10cSrcweir if (pPageTypeItem) 329cdf0e10cSrcweir SetPageType(pPageTypeItem->GetValue()); //add CHINA001 end 330cdf0e10cSrcweir if( nDlgType == 0 && pDashList ) //CHINA001 if( *pDlgType == 0 && pDashList ) // Linien-Dialog 331cdf0e10cSrcweir { 332cdf0e10cSrcweir sal_uInt16 nPos; 333cdf0e10cSrcweir sal_uInt16 nCount; 334cdf0e10cSrcweir 335cdf0e10cSrcweir // Dashliste 336cdf0e10cSrcweir if( ( *pnDashListState & CT_MODIFIED ) || 337cdf0e10cSrcweir ( *pnDashListState & CT_CHANGED ) ) 338cdf0e10cSrcweir { 339cdf0e10cSrcweir if( *pnDashListState & CT_CHANGED ) 340cdf0e10cSrcweir pDashList = ( (SvxLineTabDialog*) DLGWIN )-> 341cdf0e10cSrcweir GetNewDashList(); 342cdf0e10cSrcweir *pnDashListState = CT_NONE; 343cdf0e10cSrcweir 344cdf0e10cSrcweir // Styleliste 345cdf0e10cSrcweir nPos = aLbLineStyle.GetSelectEntryPos(); 346cdf0e10cSrcweir 347cdf0e10cSrcweir aLbLineStyle.Clear(); 348cdf0e10cSrcweir aLbLineStyle.InsertEntry( 349cdf0e10cSrcweir SVX_RESSTR( RID_SVXSTR_INVISIBLE ) ); 350cdf0e10cSrcweir aLbLineStyle.InsertEntry( 351cdf0e10cSrcweir SVX_RESSTR( RID_SVXSTR_SOLID ) ); 352cdf0e10cSrcweir aLbLineStyle.Fill( pDashList ); 353cdf0e10cSrcweir nCount = aLbLineStyle.GetEntryCount(); 354cdf0e10cSrcweir 355cdf0e10cSrcweir if ( nCount == 0 ) 356cdf0e10cSrcweir ; // Dieser Fall sollte nicht auftreten 357cdf0e10cSrcweir else if( nCount <= nPos ) 358cdf0e10cSrcweir aLbLineStyle.SelectEntryPos( 0 ); 359cdf0e10cSrcweir else 360cdf0e10cSrcweir aLbLineStyle.SelectEntryPos( nPos ); 361cdf0e10cSrcweir // SelectStyleHdl_Impl( this ); 362cdf0e10cSrcweir } 363cdf0e10cSrcweir 364cdf0e10cSrcweir INetURLObject aDashURL( pDashList->GetPath() ); 365cdf0e10cSrcweir 366cdf0e10cSrcweir aDashURL.Append( pDashList->GetName() ); 367cdf0e10cSrcweir DBG_ASSERT( aDashURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" ); 368cdf0e10cSrcweir /* // Ermitteln (evtl. abschneiden) des Namens und in 369cdf0e10cSrcweir // der GroupBox darstellen 370cdf0e10cSrcweir String aString( ResId( RID_SVXSTR_TABLE, pMgr ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 371cdf0e10cSrcweir 372cdf0e10cSrcweir if ( aDashURL.getBase().Len() > 18 ) 373cdf0e10cSrcweir { 374cdf0e10cSrcweir aString += aDashURL.getBase().Copy( 0, 15 ); 375cdf0e10cSrcweir aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 376cdf0e10cSrcweir } 377cdf0e10cSrcweir else 378cdf0e10cSrcweir aString += aDashURL.getBase(); 379cdf0e10cSrcweir 380cdf0e10cSrcweir aGrpLine.SetText( aString ); 381cdf0e10cSrcweir */ 382cdf0e10cSrcweir // LineEndliste 383cdf0e10cSrcweir if( ( *pnLineEndListState & CT_MODIFIED ) || 384cdf0e10cSrcweir ( *pnLineEndListState & CT_CHANGED ) ) 385cdf0e10cSrcweir { 386cdf0e10cSrcweir if( *pnLineEndListState & CT_CHANGED ) 387cdf0e10cSrcweir pLineEndList = ( (SvxLineTabDialog*) DLGWIN )-> 388cdf0e10cSrcweir GetNewLineEndList(); 389cdf0e10cSrcweir *pnLineEndListState = CT_NONE; 390cdf0e10cSrcweir 391cdf0e10cSrcweir nPos = aLbLineStyle.GetSelectEntryPos(); 392cdf0e10cSrcweir String sNone( SVX_RES( RID_SVXSTR_NONE ) ); 393cdf0e10cSrcweir aLbStartStyle.Clear(); 394cdf0e10cSrcweir aLbStartStyle.InsertEntry( sNone ); 395cdf0e10cSrcweir 396cdf0e10cSrcweir aLbStartStyle.Fill( pLineEndList ); 397cdf0e10cSrcweir nCount = aLbStartStyle.GetEntryCount(); 398cdf0e10cSrcweir if( nCount == 0 ) 399cdf0e10cSrcweir ; // Dieser Fall sollte nicht auftreten 400cdf0e10cSrcweir else if( nCount <= nPos ) 401cdf0e10cSrcweir aLbStartStyle.SelectEntryPos( 0 ); 402cdf0e10cSrcweir else 403cdf0e10cSrcweir aLbStartStyle.SelectEntryPos( nPos ); 404cdf0e10cSrcweir 405cdf0e10cSrcweir aLbEndStyle.Clear(); 406cdf0e10cSrcweir aLbEndStyle.InsertEntry( sNone ); 407cdf0e10cSrcweir 408cdf0e10cSrcweir aLbEndStyle.Fill( pLineEndList, sal_False ); 409cdf0e10cSrcweir nCount = aLbEndStyle.GetEntryCount(); 410cdf0e10cSrcweir 411cdf0e10cSrcweir if( nCount == 0 ) 412cdf0e10cSrcweir ; // Dieser Fall sollte nicht auftreten 413cdf0e10cSrcweir else if( nCount <= nPos ) 414cdf0e10cSrcweir aLbEndStyle.SelectEntryPos( 0 ); 415cdf0e10cSrcweir else 416cdf0e10cSrcweir aLbEndStyle.SelectEntryPos( nPos ); 417cdf0e10cSrcweir } 418cdf0e10cSrcweir INetURLObject aLineURL( pLineEndList->GetPath() ); 419cdf0e10cSrcweir 420cdf0e10cSrcweir aLineURL.Append( pLineEndList->GetName() ); 421cdf0e10cSrcweir DBG_ASSERT( aLineURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" ); 422cdf0e10cSrcweir /* // Ermitteln (evtl. abschneiden) des Namens und in 423cdf0e10cSrcweir // der GroupBox darstellen 424cdf0e10cSrcweir aString = String( ResId( RID_SVXSTR_TABLE, pMgr ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 425cdf0e10cSrcweir 426cdf0e10cSrcweir if ( aLineURL.getBase().Len() > 18 ) 427cdf0e10cSrcweir { 428cdf0e10cSrcweir aString += aLineURL.getBase().Copy( 0, 15 ); 429cdf0e10cSrcweir aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 430cdf0e10cSrcweir } 431cdf0e10cSrcweir else 432cdf0e10cSrcweir aString += aLineURL.getBase(); 433cdf0e10cSrcweir 434cdf0e10cSrcweir aGrpLineEnds.SetText( aString ); 435cdf0e10cSrcweir */ 436cdf0e10cSrcweir // Auswertung, ob von einer anderen TabPage ein anderer Fuelltyp gesetzt wurde 437cdf0e10cSrcweir if( aLbLineStyle.GetSelectEntryPos() != 0 ) 438cdf0e10cSrcweir { 439cdf0e10cSrcweir if( nPageType == 2 ) // 1//CHINA001 if( *pPageType == 2 ) // 1 440cdf0e10cSrcweir { 441cdf0e10cSrcweir aLbLineStyle.SelectEntryPos( *pPosDashLb + 2 ); // +2 wegen SOLID und INVLISIBLE 442cdf0e10cSrcweir ChangePreviewHdl_Impl( this ); 443cdf0e10cSrcweir } 444cdf0e10cSrcweir if( nPageType == 3 )//CHINA001 if( *pPageType == 3 ) 445cdf0e10cSrcweir { 446cdf0e10cSrcweir aLbStartStyle.SelectEntryPos( *pPosLineEndLb + 1 );// +1 wegen SOLID 447cdf0e10cSrcweir aLbEndStyle.SelectEntryPos( *pPosLineEndLb + 1 );// +1 wegen SOLID 448cdf0e10cSrcweir ChangePreviewHdl_Impl( this ); 449cdf0e10cSrcweir } 450cdf0e10cSrcweir } 451cdf0e10cSrcweir 452cdf0e10cSrcweir // ColorTable 453cdf0e10cSrcweir if( *pnColorTableState ) 454cdf0e10cSrcweir { 455cdf0e10cSrcweir if( *pnColorTableState & CT_CHANGED ) 456cdf0e10cSrcweir pColorTab = ( (SvxLineTabDialog*) DLGWIN )-> 457cdf0e10cSrcweir GetNewColorTable(); 458cdf0e10cSrcweir // aLbColor 459cdf0e10cSrcweir sal_uInt16 nColorPos = aLbColor.GetSelectEntryPos(); 460cdf0e10cSrcweir aLbColor.Clear(); 461cdf0e10cSrcweir aLbColor.Fill( pColorTab ); 462cdf0e10cSrcweir nCount = aLbColor.GetEntryCount(); 463cdf0e10cSrcweir if( nCount == 0 ) 464cdf0e10cSrcweir ; // This case should never occur 465cdf0e10cSrcweir else if( nCount <= nColorPos ) 466cdf0e10cSrcweir aLbColor.SelectEntryPos( 0 ); 467cdf0e10cSrcweir else 468cdf0e10cSrcweir aLbColor.SelectEntryPos( nColorPos ); 469cdf0e10cSrcweir 470cdf0e10cSrcweir ChangePreviewHdl_Impl( this ); 471cdf0e10cSrcweir } 472cdf0e10cSrcweir 473cdf0e10cSrcweir nPageType = 0;//CHINA001 *pPageType = 0; 474cdf0e10cSrcweir } 475cdf0e10cSrcweir // Seite existiert im Ctor noch nicht, deswegen hier! 476cdf0e10cSrcweir 477cdf0e10cSrcweir else if ( nDlgType == 1100 || // Chart-Dialog//CHINA001 else if ( *pDlgType == 1100 || // Chart-Dialog 478cdf0e10cSrcweir nDlgType == 1101 )//CHINA001 *pDlgType == 1101 ) 479cdf0e10cSrcweir { 480cdf0e10cSrcweir aFtLineEndsStyle.Hide(); 481cdf0e10cSrcweir aFtLineEndsWidth.Hide(); 482cdf0e10cSrcweir aLbStartStyle.Hide(); 483cdf0e10cSrcweir aMtrStartWidth.Hide(); 484cdf0e10cSrcweir aTsbCenterStart.Hide(); 485cdf0e10cSrcweir aLbEndStyle.Hide(); 486cdf0e10cSrcweir aMtrEndWidth.Hide(); 487cdf0e10cSrcweir aTsbCenterEnd.Hide(); 488cdf0e10cSrcweir aCbxSynchronize.Hide(); 489cdf0e10cSrcweir aFlLineEnds.Hide(); 490cdf0e10cSrcweir 491cdf0e10cSrcweir // #116827# 492cdf0e10cSrcweir maFLEdgeStyle.Hide(); 493cdf0e10cSrcweir maFTEdgeStyle.Hide(); 494cdf0e10cSrcweir maLBEdgeStyle.Hide(); 495*5aaf853bSArmin Le Grand 496*5aaf853bSArmin Le Grand // LineCaps 497*5aaf853bSArmin Le Grand maFTCapStyle.Hide(); 498*5aaf853bSArmin Le Grand maLBCapStyle.Hide(); 499cdf0e10cSrcweir } 500cdf0e10cSrcweir } 501cdf0e10cSrcweir 502cdf0e10cSrcweir // ----------------------------------------------------------------------- 503cdf0e10cSrcweir 504cdf0e10cSrcweir int SvxLineTabPage::DeactivatePage( SfxItemSet* _pSet ) 505cdf0e10cSrcweir { 506cdf0e10cSrcweir if( nDlgType == 0 ) // Linien-Dialog//CHINA001 if( *pDlgType == 0 ) // Linien-Dialog 507cdf0e10cSrcweir { 508cdf0e10cSrcweir nPageType = 1; // evtl. fuer Erweiterungen//CHINA001 *pPageType = 1; // evtl. fuer Erweiterungen 509cdf0e10cSrcweir *pPosDashLb = aLbLineStyle.GetSelectEntryPos() - 2;// erster Eintrag SOLID !!! 510cdf0e10cSrcweir sal_uInt16 nPos = aLbStartStyle.GetSelectEntryPos(); 511cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 512cdf0e10cSrcweir nPos--; 513cdf0e10cSrcweir *pPosLineEndLb = nPos; 514cdf0e10cSrcweir } 515cdf0e10cSrcweir 516cdf0e10cSrcweir if( _pSet ) 517cdf0e10cSrcweir FillItemSet( *_pSet ); 518cdf0e10cSrcweir 519cdf0e10cSrcweir return( LEAVE_PAGE ); 520cdf0e10cSrcweir } 521cdf0e10cSrcweir 522cdf0e10cSrcweir // ----------------------------------------------------------------------- 523cdf0e10cSrcweir 524cdf0e10cSrcweir sal_Bool SvxLineTabPage::FillItemSet( SfxItemSet& rAttrs ) 525cdf0e10cSrcweir { 526cdf0e10cSrcweir const SfxPoolItem* pOld = NULL; 527cdf0e10cSrcweir sal_uInt16 nPos; 528cdf0e10cSrcweir sal_Bool bModified = sal_False; 529cdf0e10cSrcweir 530cdf0e10cSrcweir // Um evtl. Modifikationen der Liste vorzubeugen 531cdf0e10cSrcweir // werden Items anderer Seiten nicht gesetzt 532cdf0e10cSrcweir if( nDlgType != 0 || nPageType != 2 )//CHINA001 if( *pDlgType != 0 || *pPageType != 2 ) 533cdf0e10cSrcweir { 534cdf0e10cSrcweir nPos = aLbLineStyle.GetSelectEntryPos(); 535cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND && 536cdf0e10cSrcweir nPos != aLbLineStyle.GetSavedValue() ) 537cdf0e10cSrcweir { 538cdf0e10cSrcweir XLineStyleItem* pStyleItem = NULL; 539cdf0e10cSrcweir 540cdf0e10cSrcweir if( nPos == 0 ) 541cdf0e10cSrcweir pStyleItem = new XLineStyleItem( XLINE_NONE ); 542cdf0e10cSrcweir else if( nPos == 1 ) 543cdf0e10cSrcweir pStyleItem = new XLineStyleItem( XLINE_SOLID ); 544cdf0e10cSrcweir else 545cdf0e10cSrcweir { 546cdf0e10cSrcweir pStyleItem = new XLineStyleItem( XLINE_DASH ); 547cdf0e10cSrcweir 548cdf0e10cSrcweir // Zusaetzliche Sicherheit 549cdf0e10cSrcweir if( pDashList->Count() > (long) ( nPos - 2 ) ) 550cdf0e10cSrcweir { 551cdf0e10cSrcweir XLineDashItem aDashItem( aLbLineStyle.GetSelectEntry(), 552cdf0e10cSrcweir pDashList->GetDash( nPos - 2 )->GetDash() ); 553cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINEDASH ); 554cdf0e10cSrcweir if ( !pOld || !( *(const XLineDashItem*)pOld == aDashItem ) ) 555cdf0e10cSrcweir { 556cdf0e10cSrcweir rAttrs.Put( aDashItem ); 557cdf0e10cSrcweir bModified = sal_True; 558cdf0e10cSrcweir } 559cdf0e10cSrcweir } 560cdf0e10cSrcweir } 561cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINESTYLE ); 562cdf0e10cSrcweir if ( !pOld || !( *(const XLineStyleItem*)pOld == *pStyleItem ) ) 563cdf0e10cSrcweir { 564cdf0e10cSrcweir rAttrs.Put( *pStyleItem ); 565cdf0e10cSrcweir bModified = sal_True; 566cdf0e10cSrcweir } 567cdf0e10cSrcweir delete pStyleItem; 568cdf0e10cSrcweir } 569cdf0e10cSrcweir } 570cdf0e10cSrcweir // Linienbreite 571cdf0e10cSrcweir // GetSavedValue() liefert String! 572cdf0e10cSrcweir if( aMtrLineWidth.GetText() != aMtrLineWidth.GetSavedValue() ) 573cdf0e10cSrcweir { 574cdf0e10cSrcweir XLineWidthItem aItem( GetCoreValue( aMtrLineWidth, ePoolUnit ) ); 575cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINEWIDTH ); 576cdf0e10cSrcweir if ( !pOld || !( *(const XLineWidthItem*)pOld == aItem ) ) 577cdf0e10cSrcweir { 578cdf0e10cSrcweir rAttrs.Put( aItem ); 579cdf0e10cSrcweir bModified = sal_True; 580cdf0e10cSrcweir } 581cdf0e10cSrcweir } 582cdf0e10cSrcweir //Breite Linienanfang 583cdf0e10cSrcweir if( aMtrStartWidth.GetText() != aMtrStartWidth.GetSavedValue() ) 584cdf0e10cSrcweir { 585cdf0e10cSrcweir XLineStartWidthItem aItem( GetCoreValue( aMtrStartWidth, ePoolUnit ) ); 586cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINESTARTWIDTH ); 587cdf0e10cSrcweir if ( !pOld || !( *(const XLineStartWidthItem*)pOld == aItem ) ) 588cdf0e10cSrcweir { 589cdf0e10cSrcweir rAttrs.Put( aItem ); 590cdf0e10cSrcweir bModified = sal_True; 591cdf0e10cSrcweir } 592cdf0e10cSrcweir } 593cdf0e10cSrcweir //Breite Linienende 594cdf0e10cSrcweir if( aMtrEndWidth.GetText() != aMtrEndWidth.GetSavedValue() ) 595cdf0e10cSrcweir { 596cdf0e10cSrcweir XLineEndWidthItem aItem( GetCoreValue( aMtrEndWidth, ePoolUnit ) ); 597cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINEENDWIDTH ); 598cdf0e10cSrcweir if ( !pOld || !( *(const XLineEndWidthItem*)pOld == aItem ) ) 599cdf0e10cSrcweir { 600cdf0e10cSrcweir rAttrs.Put( aItem ); 601cdf0e10cSrcweir bModified = sal_True; 602cdf0e10cSrcweir } 603cdf0e10cSrcweir } 604cdf0e10cSrcweir 605cdf0e10cSrcweir // Linienfarbe 606cdf0e10cSrcweir if( aLbColor.GetSelectEntryPos() != aLbColor.GetSavedValue() ) 607cdf0e10cSrcweir { 608cdf0e10cSrcweir XLineColorItem aItem( aLbColor.GetSelectEntry(), 609cdf0e10cSrcweir aLbColor.GetSelectEntryColor() ); 610cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINECOLOR ); 611cdf0e10cSrcweir if ( !pOld || !( *(const XLineColorItem*)pOld == aItem ) ) 612cdf0e10cSrcweir { 613cdf0e10cSrcweir rAttrs.Put( aItem ); 614cdf0e10cSrcweir bModified = sal_True; 615cdf0e10cSrcweir } 616cdf0e10cSrcweir } 617cdf0e10cSrcweir 618cdf0e10cSrcweir if( nDlgType != 0 || nPageType != 3 )//CHINA001 if( *pDlgType != 0 || *pPageType != 3 ) 619cdf0e10cSrcweir { 620cdf0e10cSrcweir // Linienanfang 621cdf0e10cSrcweir nPos = aLbStartStyle.GetSelectEntryPos(); 622cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND && 623cdf0e10cSrcweir nPos != aLbStartStyle.GetSavedValue() ) 624cdf0e10cSrcweir { 625cdf0e10cSrcweir XLineStartItem* pItem = NULL; 626cdf0e10cSrcweir if( nPos == 0 ) 627cdf0e10cSrcweir pItem = new XLineStartItem(); 628cdf0e10cSrcweir else if( pLineEndList->Count() > (long) ( nPos - 1 ) ) 629cdf0e10cSrcweir pItem = new XLineStartItem( aLbStartStyle.GetSelectEntry(), 630cdf0e10cSrcweir pLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ); 631cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINESTART ); 632cdf0e10cSrcweir if( pItem && 633cdf0e10cSrcweir ( !pOld || !( *(const XLineEndItem*)pOld == *pItem ) ) ) 634cdf0e10cSrcweir { 635cdf0e10cSrcweir rAttrs.Put( *pItem ); 636cdf0e10cSrcweir bModified = sal_True; 637cdf0e10cSrcweir } 638cdf0e10cSrcweir delete pItem; 639cdf0e10cSrcweir } 640cdf0e10cSrcweir // Linienende 641cdf0e10cSrcweir nPos = aLbEndStyle.GetSelectEntryPos(); 642cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND && 643cdf0e10cSrcweir nPos != aLbEndStyle.GetSavedValue() ) 644cdf0e10cSrcweir { 645cdf0e10cSrcweir XLineEndItem* pItem = NULL; 646cdf0e10cSrcweir if( nPos == 0 ) 647cdf0e10cSrcweir pItem = new XLineEndItem(); 648cdf0e10cSrcweir else if( pLineEndList->Count() > (long) ( nPos - 1 ) ) 649cdf0e10cSrcweir pItem = new XLineEndItem( aLbEndStyle.GetSelectEntry(), 650cdf0e10cSrcweir pLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ); 651cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINEEND ); 652cdf0e10cSrcweir if( pItem && 653cdf0e10cSrcweir ( !pOld || !( *(const XLineEndItem*)pOld == *pItem ) ) ) 654cdf0e10cSrcweir { 655cdf0e10cSrcweir rAttrs.Put( *pItem ); 656cdf0e10cSrcweir bModified = sal_True; 657cdf0e10cSrcweir } 658cdf0e10cSrcweir delete pItem; 659cdf0e10cSrcweir } 660cdf0e10cSrcweir } 661cdf0e10cSrcweir 662cdf0e10cSrcweir // Linienenden zentriert 663cdf0e10cSrcweir TriState eState = aTsbCenterStart.GetState(); 664cdf0e10cSrcweir if( eState != aTsbCenterStart.GetSavedValue() ) 665cdf0e10cSrcweir { 666cdf0e10cSrcweir XLineStartCenterItem aItem( sal::static_int_cast< sal_Bool >( eState ) ); 667cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINESTARTCENTER ); 668cdf0e10cSrcweir if ( !pOld || !( *(const XLineStartCenterItem*)pOld == aItem ) ) 669cdf0e10cSrcweir { 670cdf0e10cSrcweir rAttrs.Put( aItem ); 671cdf0e10cSrcweir bModified = sal_True; 672cdf0e10cSrcweir } 673cdf0e10cSrcweir } 674cdf0e10cSrcweir eState = aTsbCenterEnd.GetState(); 675cdf0e10cSrcweir if( eState != aTsbCenterEnd.GetSavedValue() ) 676cdf0e10cSrcweir { 677cdf0e10cSrcweir XLineEndCenterItem aItem( sal::static_int_cast< sal_Bool >( eState ) ); 678cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINEENDCENTER ); 679cdf0e10cSrcweir if ( !pOld || !( *(const XLineEndCenterItem*)pOld == aItem ) ) 680cdf0e10cSrcweir { 681cdf0e10cSrcweir rAttrs.Put( aItem ); 682cdf0e10cSrcweir bModified = sal_True; 683cdf0e10cSrcweir } 684cdf0e10cSrcweir } 685cdf0e10cSrcweir 686cdf0e10cSrcweir //Breite Linienanfang 687cdf0e10cSrcweir if( aMtrStartWidth.GetText() != aMtrStartWidth.GetSavedValue() ) 688cdf0e10cSrcweir { 689cdf0e10cSrcweir XLineStartWidthItem aItem( GetCoreValue( aMtrStartWidth, ePoolUnit ) ); 690cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINESTARTWIDTH ); 691cdf0e10cSrcweir if ( !pOld || !( *(const XLineStartWidthItem*)pOld == aItem ) ) 692cdf0e10cSrcweir { 693cdf0e10cSrcweir rAttrs.Put( aItem ); 694cdf0e10cSrcweir bModified = sal_True; 695cdf0e10cSrcweir } 696cdf0e10cSrcweir } 697cdf0e10cSrcweir //Breite Linienende 698cdf0e10cSrcweir if( aMtrEndWidth.GetText() != aMtrEndWidth.GetSavedValue() ) 699cdf0e10cSrcweir { 700cdf0e10cSrcweir XLineEndWidthItem aItem( GetCoreValue( aMtrEndWidth, ePoolUnit ) ); 701cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINEENDWIDTH ); 702cdf0e10cSrcweir if ( !pOld || !( *(const XLineEndWidthItem*)pOld == aItem ) ) 703cdf0e10cSrcweir { 704cdf0e10cSrcweir rAttrs.Put( aItem ); 705cdf0e10cSrcweir bModified = sal_True; 706cdf0e10cSrcweir } 707cdf0e10cSrcweir } 708cdf0e10cSrcweir 709cdf0e10cSrcweir // Transparenz 710cdf0e10cSrcweir sal_uInt16 nVal = (sal_uInt16)aMtrTransparent.GetValue(); 711cdf0e10cSrcweir if( nVal != (sal_uInt16)aMtrTransparent.GetSavedValue().ToInt32() ) 712cdf0e10cSrcweir { 713cdf0e10cSrcweir XLineTransparenceItem aItem( nVal ); 714cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINETRANSPARENCE ); 715cdf0e10cSrcweir if ( !pOld || !( *(const XLineTransparenceItem*)pOld == aItem ) ) 716cdf0e10cSrcweir { 717cdf0e10cSrcweir rAttrs.Put( aItem ); 718cdf0e10cSrcweir bModified = sal_True; 719cdf0e10cSrcweir } 720cdf0e10cSrcweir } 721cdf0e10cSrcweir 722cdf0e10cSrcweir // #116827# 723cdf0e10cSrcweir nPos = maLBEdgeStyle.GetSelectEntryPos(); 724cdf0e10cSrcweir if( LISTBOX_ENTRY_NOTFOUND != nPos && nPos != maLBEdgeStyle.GetSavedValue() ) 725cdf0e10cSrcweir { 726cdf0e10cSrcweir XLineJointItem* pNew = 0L; 727cdf0e10cSrcweir 728cdf0e10cSrcweir switch(nPos) 729cdf0e10cSrcweir { 730cdf0e10cSrcweir case 0: // Rounded, default 731cdf0e10cSrcweir { 732cdf0e10cSrcweir pNew = new XLineJointItem(XLINEJOINT_ROUND); 733cdf0e10cSrcweir break; 734cdf0e10cSrcweir } 735cdf0e10cSrcweir case 1: // - none - 736cdf0e10cSrcweir { 737cdf0e10cSrcweir pNew = new XLineJointItem(XLINEJOINT_NONE); 738cdf0e10cSrcweir break; 739cdf0e10cSrcweir } 740cdf0e10cSrcweir case 2: // Miter 741cdf0e10cSrcweir { 742cdf0e10cSrcweir pNew = new XLineJointItem(XLINEJOINT_MITER); 743cdf0e10cSrcweir break; 744cdf0e10cSrcweir } 745cdf0e10cSrcweir case 3: // Bevel 746cdf0e10cSrcweir { 747cdf0e10cSrcweir pNew = new XLineJointItem(XLINEJOINT_BEVEL); 748cdf0e10cSrcweir break; 749cdf0e10cSrcweir } 750cdf0e10cSrcweir } 751cdf0e10cSrcweir 752cdf0e10cSrcweir if(pNew) 753cdf0e10cSrcweir { 754cdf0e10cSrcweir pOld = GetOldItem( rAttrs, XATTR_LINEJOINT ); 755cdf0e10cSrcweir 756cdf0e10cSrcweir if(!pOld || !(*(const XLineJointItem*)pOld == *pNew)) 757cdf0e10cSrcweir { 758cdf0e10cSrcweir rAttrs.Put( *pNew ); 759cdf0e10cSrcweir bModified = sal_True; 760cdf0e10cSrcweir } 761cdf0e10cSrcweir 762cdf0e10cSrcweir delete pNew; 763cdf0e10cSrcweir } 764cdf0e10cSrcweir } 765cdf0e10cSrcweir 766*5aaf853bSArmin Le Grand // LineCaps 767*5aaf853bSArmin Le Grand nPos = maLBCapStyle.GetSelectEntryPos(); 768*5aaf853bSArmin Le Grand if( LISTBOX_ENTRY_NOTFOUND != nPos && nPos != maLBCapStyle.GetSavedValue() ) 769*5aaf853bSArmin Le Grand { 770*5aaf853bSArmin Le Grand XLineCapItem* pNew = 0L; 771*5aaf853bSArmin Le Grand 772*5aaf853bSArmin Le Grand switch(nPos) 773*5aaf853bSArmin Le Grand { 774*5aaf853bSArmin Le Grand case 0: // Butt (=Flat), default 775*5aaf853bSArmin Le Grand { 776*5aaf853bSArmin Le Grand pNew = new XLineCapItem(com::sun::star::drawing::LineCap_BUTT); 777*5aaf853bSArmin Le Grand break; 778*5aaf853bSArmin Le Grand } 779*5aaf853bSArmin Le Grand case 1: // Round 780*5aaf853bSArmin Le Grand { 781*5aaf853bSArmin Le Grand pNew = new XLineCapItem(com::sun::star::drawing::LineCap_ROUND); 782*5aaf853bSArmin Le Grand break; 783*5aaf853bSArmin Le Grand } 784*5aaf853bSArmin Le Grand case 2: // Square 785*5aaf853bSArmin Le Grand { 786*5aaf853bSArmin Le Grand pNew = new XLineCapItem(com::sun::star::drawing::LineCap_SQUARE); 787*5aaf853bSArmin Le Grand break; 788*5aaf853bSArmin Le Grand } 789*5aaf853bSArmin Le Grand } 790*5aaf853bSArmin Le Grand 791*5aaf853bSArmin Le Grand if(pNew) 792*5aaf853bSArmin Le Grand { 793*5aaf853bSArmin Le Grand pOld = GetOldItem( rAttrs, XATTR_LINECAP ); 794*5aaf853bSArmin Le Grand 795*5aaf853bSArmin Le Grand if(!pOld || !(*(const XLineCapItem*)pOld == *pNew)) 796*5aaf853bSArmin Le Grand { 797*5aaf853bSArmin Le Grand rAttrs.Put( *pNew ); 798*5aaf853bSArmin Le Grand bModified = sal_True; 799*5aaf853bSArmin Le Grand } 800*5aaf853bSArmin Le Grand 801*5aaf853bSArmin Le Grand delete pNew; 802*5aaf853bSArmin Le Grand } 803*5aaf853bSArmin Le Grand } 804*5aaf853bSArmin Le Grand 805cdf0e10cSrcweir if(nSymbolType!=SVX_SYMBOLTYPE_UNKNOWN || bNewSize) 806cdf0e10cSrcweir { 807cdf0e10cSrcweir //wurde also per Auswahl gesetzt oder Gr��e ist anders 808cdf0e10cSrcweir SvxSizeItem aSItem(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLSIZE),aSymbolSize); 809cdf0e10cSrcweir const SfxPoolItem* pSOld = GetOldItem( rAttrs, rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLSIZE) ); 810cdf0e10cSrcweir bNewSize = pSOld ? *(const SvxSizeItem *)pSOld != aSItem : bNewSize ; 811cdf0e10cSrcweir if(bNewSize) 812cdf0e10cSrcweir { 813cdf0e10cSrcweir rAttrs.Put(aSItem); 814cdf0e10cSrcweir bModified=sal_True; 815cdf0e10cSrcweir } 816cdf0e10cSrcweir 817cdf0e10cSrcweir SfxInt32Item aTItem(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLTYPE),nSymbolType); 818cdf0e10cSrcweir const SfxPoolItem* pTOld = GetOldItem( rAttrs, rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLTYPE) ); 819cdf0e10cSrcweir bool bNewType = pTOld == NULL || *(const SfxInt32Item*)pTOld != aTItem; 820cdf0e10cSrcweir if(bNewType && nSymbolType==SVX_SYMBOLTYPE_UNKNOWN) 821cdf0e10cSrcweir bNewType=false;//kleine Korrektur, Typ wurde garnicht gesetzt -> kein Type-Item erzeugen! 822cdf0e10cSrcweir if(bNewType) 823cdf0e10cSrcweir { 824cdf0e10cSrcweir rAttrs.Put(aTItem); 825cdf0e10cSrcweir bModified=sal_True; 826cdf0e10cSrcweir } 827cdf0e10cSrcweir 828cdf0e10cSrcweir if(nSymbolType!=SVX_SYMBOLTYPE_NONE) 829cdf0e10cSrcweir { 830cdf0e10cSrcweir SvxBrushItem aBItem(aSymbolGraphic,GPOS_MM,rAttrs.GetPool()->GetWhich(SID_ATTR_BRUSH)); 831cdf0e10cSrcweir const SfxPoolItem* pBOld = GetOldItem( rAttrs, rAttrs.GetPool()->GetWhich(SID_ATTR_BRUSH) ); 832cdf0e10cSrcweir bool bNewBrush = 833cdf0e10cSrcweir pBOld == NULL || *(const SvxBrushItem*)pBOld != aBItem; 834cdf0e10cSrcweir if(bNewBrush) 835cdf0e10cSrcweir { 836cdf0e10cSrcweir rAttrs.Put(aBItem); 837cdf0e10cSrcweir bModified=sal_True; 838cdf0e10cSrcweir } 839cdf0e10cSrcweir } 840cdf0e10cSrcweir } 841cdf0e10cSrcweir rAttrs.Put (CntUInt16Item(SID_PAGE_TYPE,nPageType));//add CHINA001 842cdf0e10cSrcweir return( bModified ); 843cdf0e10cSrcweir } 844cdf0e10cSrcweir 845cdf0e10cSrcweir // ----------------------------------------------------------------------- 846cdf0e10cSrcweir 847cdf0e10cSrcweir sal_Bool SvxLineTabPage::FillXLSet_Impl() 848cdf0e10cSrcweir { 849cdf0e10cSrcweir sal_uInt16 nPos; 850cdf0e10cSrcweir 851cdf0e10cSrcweir if( aLbLineStyle.GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND ) 852cdf0e10cSrcweir { 853cdf0e10cSrcweir //rXLSet.Put( XLineDashItem ( rOutAttrs.Get( GetWhich( XATTR_LINEDASH ) ) ) ); 854cdf0e10cSrcweir rXLSet.Put( XLineStyleItem( XLINE_NONE ) ); 855cdf0e10cSrcweir } 856cdf0e10cSrcweir else if( aLbLineStyle.IsEntryPosSelected( 0 ) ) 857cdf0e10cSrcweir rXLSet.Put( XLineStyleItem( XLINE_NONE ) ); 858cdf0e10cSrcweir else if( aLbLineStyle.IsEntryPosSelected( 1 ) ) 859cdf0e10cSrcweir rXLSet.Put( XLineStyleItem( XLINE_SOLID ) ); 860cdf0e10cSrcweir else 861cdf0e10cSrcweir { 862cdf0e10cSrcweir rXLSet.Put( XLineStyleItem( XLINE_DASH ) ); 863cdf0e10cSrcweir 864cdf0e10cSrcweir nPos = aLbLineStyle.GetSelectEntryPos(); 865cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 866cdf0e10cSrcweir { 867cdf0e10cSrcweir rXLSet.Put( XLineDashItem( aLbLineStyle.GetSelectEntry(), 868cdf0e10cSrcweir pDashList->GetDash( nPos - 2 )->GetDash() ) ); 869cdf0e10cSrcweir } 870cdf0e10cSrcweir } 871cdf0e10cSrcweir 872cdf0e10cSrcweir nPos = aLbStartStyle.GetSelectEntryPos(); 873cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 874cdf0e10cSrcweir { 875cdf0e10cSrcweir if( nPos == 0 ) 876cdf0e10cSrcweir rXLSet.Put( XLineStartItem() ); 877cdf0e10cSrcweir else 878cdf0e10cSrcweir rXLSet.Put( XLineStartItem( aLbStartStyle.GetSelectEntry(), 879cdf0e10cSrcweir pLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ) ); 880cdf0e10cSrcweir } 881cdf0e10cSrcweir nPos = aLbEndStyle.GetSelectEntryPos(); 882cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 883cdf0e10cSrcweir { 884cdf0e10cSrcweir if( nPos == 0 ) 885cdf0e10cSrcweir rXLSet.Put( XLineEndItem() ); 886cdf0e10cSrcweir else 887cdf0e10cSrcweir rXLSet.Put( XLineEndItem( aLbEndStyle.GetSelectEntry(), 888cdf0e10cSrcweir pLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ) ); 889cdf0e10cSrcweir } 890cdf0e10cSrcweir 891cdf0e10cSrcweir // #116827# 892cdf0e10cSrcweir nPos = maLBEdgeStyle.GetSelectEntryPos(); 893cdf0e10cSrcweir if(LISTBOX_ENTRY_NOTFOUND != nPos) 894cdf0e10cSrcweir { 895cdf0e10cSrcweir switch(nPos) 896cdf0e10cSrcweir { 897cdf0e10cSrcweir case 0: // Rounded, default 898cdf0e10cSrcweir { 899cdf0e10cSrcweir rXLSet.Put(XLineJointItem(XLINEJOINT_ROUND)); 900cdf0e10cSrcweir break; 901cdf0e10cSrcweir } 902cdf0e10cSrcweir case 1: // - none - 903cdf0e10cSrcweir { 904cdf0e10cSrcweir rXLSet.Put(XLineJointItem(XLINEJOINT_NONE)); 905cdf0e10cSrcweir break; 906cdf0e10cSrcweir } 907cdf0e10cSrcweir case 2: // Miter 908cdf0e10cSrcweir { 909cdf0e10cSrcweir rXLSet.Put(XLineJointItem(XLINEJOINT_MITER)); 910cdf0e10cSrcweir break; 911cdf0e10cSrcweir } 912cdf0e10cSrcweir case 3: // Bevel 913cdf0e10cSrcweir { 914cdf0e10cSrcweir rXLSet.Put(XLineJointItem(XLINEJOINT_BEVEL)); 915cdf0e10cSrcweir break; 916cdf0e10cSrcweir } 917cdf0e10cSrcweir } 918cdf0e10cSrcweir } 919cdf0e10cSrcweir 920*5aaf853bSArmin Le Grand // LineCaps 921*5aaf853bSArmin Le Grand nPos = maLBCapStyle.GetSelectEntryPos(); 922*5aaf853bSArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos) 923*5aaf853bSArmin Le Grand { 924*5aaf853bSArmin Le Grand switch(nPos) 925*5aaf853bSArmin Le Grand { 926*5aaf853bSArmin Le Grand case 0: // Butt (=Flat), default 927*5aaf853bSArmin Le Grand { 928*5aaf853bSArmin Le Grand rXLSet.Put(XLineCapItem(com::sun::star::drawing::LineCap_BUTT)); 929*5aaf853bSArmin Le Grand break; 930*5aaf853bSArmin Le Grand } 931*5aaf853bSArmin Le Grand case 1: // Round 932*5aaf853bSArmin Le Grand { 933*5aaf853bSArmin Le Grand rXLSet.Put(XLineCapItem(com::sun::star::drawing::LineCap_ROUND)); 934*5aaf853bSArmin Le Grand break; 935*5aaf853bSArmin Le Grand } 936*5aaf853bSArmin Le Grand case 2: // Square 937*5aaf853bSArmin Le Grand { 938*5aaf853bSArmin Le Grand rXLSet.Put(XLineCapItem(com::sun::star::drawing::LineCap_SQUARE)); 939*5aaf853bSArmin Le Grand break; 940*5aaf853bSArmin Le Grand } 941*5aaf853bSArmin Le Grand } 942*5aaf853bSArmin Le Grand } 943*5aaf853bSArmin Le Grand 944cdf0e10cSrcweir rXLSet.Put( XLineStartWidthItem( GetCoreValue( aMtrStartWidth, ePoolUnit ) ) ); 945cdf0e10cSrcweir rXLSet.Put( XLineEndWidthItem( GetCoreValue( aMtrEndWidth, ePoolUnit ) ) ); 946cdf0e10cSrcweir 947cdf0e10cSrcweir rXLSet.Put( XLineWidthItem( GetCoreValue( aMtrLineWidth, ePoolUnit ) ) ); 948cdf0e10cSrcweir rXLSet.Put( XLineColorItem( aLbColor.GetSelectEntry(), 949cdf0e10cSrcweir aLbColor.GetSelectEntryColor() ) ); 950cdf0e10cSrcweir 951cdf0e10cSrcweir // Linienenden zentriert 952cdf0e10cSrcweir if( aTsbCenterStart.GetState() == STATE_CHECK ) 953cdf0e10cSrcweir rXLSet.Put( XLineStartCenterItem( sal_True ) ); 954cdf0e10cSrcweir else if( aTsbCenterStart.GetState() == STATE_NOCHECK ) 955cdf0e10cSrcweir rXLSet.Put( XLineStartCenterItem( sal_False ) ); 956cdf0e10cSrcweir 957cdf0e10cSrcweir if( aTsbCenterEnd.GetState() == STATE_CHECK ) 958cdf0e10cSrcweir rXLSet.Put( XLineEndCenterItem( sal_True ) ); 959cdf0e10cSrcweir else if( aTsbCenterEnd.GetState() == STATE_NOCHECK ) 960cdf0e10cSrcweir rXLSet.Put( XLineEndCenterItem( sal_False ) ); 961cdf0e10cSrcweir 962cdf0e10cSrcweir // Transparenz 963cdf0e10cSrcweir sal_uInt16 nVal = (sal_uInt16)aMtrTransparent.GetValue(); 964cdf0e10cSrcweir rXLSet.Put( XLineTransparenceItem( nVal ) ); 965cdf0e10cSrcweir 966cdf0e10cSrcweir // #116827# 967cdf0e10cSrcweir aCtlPreview.SetLineAttributes(aXLineAttr.GetItemSet()); 968cdf0e10cSrcweir 969cdf0e10cSrcweir return( sal_True ); 970cdf0e10cSrcweir } 971cdf0e10cSrcweir 972cdf0e10cSrcweir // ----------------------------------------------------------------------- 973cdf0e10cSrcweir 974cdf0e10cSrcweir void SvxLineTabPage::Reset( const SfxItemSet& rAttrs ) 975cdf0e10cSrcweir { 976cdf0e10cSrcweir String aString; 977cdf0e10cSrcweir XLineStyle eXLS; // XLINE_NONE, XLINE_SOLID, XLINE_DASH 978cdf0e10cSrcweir 979cdf0e10cSrcweir // Linienstil 980cdf0e10cSrcweir /* 981cdf0e10cSrcweir if( bObjSelected && 982cdf0e10cSrcweir rAttrs.GetItemState( GetWhich( XATTR_LINESTYLE ) ) == SFX_ITEM_DEFAULT ) 983cdf0e10cSrcweir { 984cdf0e10cSrcweir aLbLineStyle.Disable(); 985cdf0e10cSrcweir } 986cdf0e10cSrcweir */ 987cdf0e10cSrcweir const SfxPoolItem *pPoolItem; 988cdf0e10cSrcweir long nSymType=SVX_SYMBOLTYPE_UNKNOWN; 989cdf0e10cSrcweir sal_Bool bPrevSym=sal_False; 990cdf0e10cSrcweir sal_Bool bEnable=sal_True; 991cdf0e10cSrcweir sal_Bool bIgnoreGraphic=sal_False; 992cdf0e10cSrcweir sal_Bool bIgnoreSize=sal_False; 993cdf0e10cSrcweir if(rAttrs.GetItemState(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLTYPE),sal_True,&pPoolItem) == SFX_ITEM_SET) 994cdf0e10cSrcweir { 995cdf0e10cSrcweir nSymType=((const SfxInt32Item *)pPoolItem)->GetValue(); 996cdf0e10cSrcweir } 997cdf0e10cSrcweir 998cdf0e10cSrcweir if(nSymType == SVX_SYMBOLTYPE_AUTO) 999cdf0e10cSrcweir { 1000cdf0e10cSrcweir aSymbolGraphic=aAutoSymbolGraphic; 1001cdf0e10cSrcweir aSymbolSize=aSymbolLastSize=aAutoSymbolGraphic.GetPrefSize(); 1002cdf0e10cSrcweir bPrevSym=sal_True; 1003cdf0e10cSrcweir } 1004cdf0e10cSrcweir else if(nSymType == SVX_SYMBOLTYPE_NONE) 1005cdf0e10cSrcweir { 1006cdf0e10cSrcweir bEnable=sal_False; 1007cdf0e10cSrcweir bIgnoreGraphic=sal_True; 1008cdf0e10cSrcweir bIgnoreSize=sal_True; 1009cdf0e10cSrcweir } 1010cdf0e10cSrcweir else if(nSymType >= 0) 1011cdf0e10cSrcweir { 1012cdf0e10cSrcweir VirtualDevice aVDev; 1013cdf0e10cSrcweir aVDev.SetMapMode(MapMode(MAP_100TH_MM)); 1014cdf0e10cSrcweir 1015cdf0e10cSrcweir SdrModel* pModel = new SdrModel(NULL, NULL, LOADREFCOUNTS); 1016cdf0e10cSrcweir pModel->GetItemPool().FreezeIdRanges(); 1017cdf0e10cSrcweir SdrPage* pPage = new SdrPage( *pModel, sal_False ); 1018cdf0e10cSrcweir pPage->SetSize(Size(1000,1000)); 1019cdf0e10cSrcweir pModel->InsertPage( pPage, 0 ); 1020cdf0e10cSrcweir SdrView* pView = new SdrView( pModel, &aVDev ); 1021cdf0e10cSrcweir pView->hideMarkHandles(); 1022cdf0e10cSrcweir SdrPageView* pPageView = pView->ShowSdrPage(pPage); 1023cdf0e10cSrcweir // SdrPageView* pPageView = pView->ShowSdrPage(pPage, Point()); 1024cdf0e10cSrcweir SdrObject *pObj=NULL; 1025cdf0e10cSrcweir long nSymTmp=nSymType; 1026cdf0e10cSrcweir if(pSymbolList) 1027cdf0e10cSrcweir { 1028cdf0e10cSrcweir if(pSymbolList->GetObjCount()) 1029cdf0e10cSrcweir { 1030cdf0e10cSrcweir nSymTmp=nSymTmp%pSymbolList->GetObjCount(); //Liste wird als cyclisch betrachtet!!! 1031cdf0e10cSrcweir pObj=pSymbolList->GetObj(nSymTmp); 1032cdf0e10cSrcweir if(pObj) 1033cdf0e10cSrcweir { 1034cdf0e10cSrcweir pObj=pObj->Clone(); 1035cdf0e10cSrcweir pPage->NbcInsertObject(pObj); 1036cdf0e10cSrcweir pView->MarkObj(pObj,pPageView); 1037cdf0e10cSrcweir if(pSymbolAttr) 1038cdf0e10cSrcweir { 1039cdf0e10cSrcweir pObj->SetMergedItemSet(*pSymbolAttr); 1040cdf0e10cSrcweir } 1041cdf0e10cSrcweir else 1042cdf0e10cSrcweir { 1043cdf0e10cSrcweir pObj->SetMergedItemSet(rOutAttrs); 1044cdf0e10cSrcweir } 1045cdf0e10cSrcweir GDIMetaFile aMeta(pView->GetAllMarkedMetaFile()); 1046cdf0e10cSrcweir 1047cdf0e10cSrcweir aSymbolGraphic=Graphic(aMeta); 1048cdf0e10cSrcweir aSymbolSize=pObj->GetSnapRect().GetSize(); 1049cdf0e10cSrcweir aSymbolGraphic.SetPrefSize(aSymbolSize); 1050cdf0e10cSrcweir aSymbolGraphic.SetPrefMapMode(MAP_100TH_MM); 1051cdf0e10cSrcweir bPrevSym=sal_True; 1052cdf0e10cSrcweir bEnable=sal_True; 1053cdf0e10cSrcweir bIgnoreGraphic=sal_True; 1054cdf0e10cSrcweir 1055cdf0e10cSrcweir pView->UnmarkAll(); 1056cdf0e10cSrcweir pObj=pPage->RemoveObject(0); 1057cdf0e10cSrcweir SdrObject::Free( pObj ); 1058cdf0e10cSrcweir } 1059cdf0e10cSrcweir } 1060cdf0e10cSrcweir } 1061cdf0e10cSrcweir delete pView; 1062cdf0e10cSrcweir delete pModel; 1063cdf0e10cSrcweir } 1064cdf0e10cSrcweir if(rAttrs.GetItemState(rAttrs.GetPool()->GetWhich(SID_ATTR_BRUSH),sal_True,&pPoolItem) == SFX_ITEM_SET) 1065cdf0e10cSrcweir { 1066cdf0e10cSrcweir const Graphic* pGraphic = ((const SvxBrushItem *)pPoolItem)->GetGraphic(); 1067cdf0e10cSrcweir if( pGraphic ) 1068cdf0e10cSrcweir { 1069cdf0e10cSrcweir if(!bIgnoreGraphic) 1070cdf0e10cSrcweir { 1071cdf0e10cSrcweir aSymbolGraphic=*pGraphic; 1072cdf0e10cSrcweir } 1073cdf0e10cSrcweir if(!bIgnoreSize) 1074cdf0e10cSrcweir { 1075cdf0e10cSrcweir aSymbolSize=OutputDevice::LogicToLogic( pGraphic->GetPrefSize(), 1076cdf0e10cSrcweir pGraphic->GetPrefMapMode(), 1077cdf0e10cSrcweir MAP_100TH_MM ); 1078cdf0e10cSrcweir } 1079cdf0e10cSrcweir bPrevSym=sal_True; 1080cdf0e10cSrcweir } 1081cdf0e10cSrcweir } 1082cdf0e10cSrcweir if(rAttrs.GetItemState(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLSIZE),sal_True,&pPoolItem) == SFX_ITEM_SET) 1083cdf0e10cSrcweir { 1084cdf0e10cSrcweir aSymbolSize = ((const SvxSizeItem *)pPoolItem)->GetSize(); 1085cdf0e10cSrcweir } 1086cdf0e10cSrcweir 1087cdf0e10cSrcweir 1088cdf0e10cSrcweir aSymbolRatioCB.Enable(bEnable); 1089cdf0e10cSrcweir aSymbolHeightFT.Enable(bEnable); 1090cdf0e10cSrcweir aSymbolWidthFT.Enable(bEnable); 1091cdf0e10cSrcweir aSymbolWidthMF.Enable(bEnable); 1092cdf0e10cSrcweir aSymbolHeightMF.Enable(bEnable); 1093cdf0e10cSrcweir if(bPrevSym) 1094cdf0e10cSrcweir { 1095cdf0e10cSrcweir SetMetricValue(aSymbolWidthMF, aSymbolSize.Width(), ePoolUnit); 1096cdf0e10cSrcweir SetMetricValue(aSymbolHeightMF, aSymbolSize.Height(),ePoolUnit); 1097cdf0e10cSrcweir aCtlPreview.SetSymbol(&aSymbolGraphic,aSymbolSize); 1098cdf0e10cSrcweir aSymbolLastSize=aSymbolSize; 1099cdf0e10cSrcweir } 1100cdf0e10cSrcweir 1101cdf0e10cSrcweir if( rAttrs.GetItemState( XATTR_LINESTYLE ) != SFX_ITEM_DONTCARE ) 1102cdf0e10cSrcweir { 1103cdf0e10cSrcweir eXLS = (XLineStyle) ( ( const XLineStyleItem& ) rAttrs.Get( XATTR_LINESTYLE ) ).GetValue(); 1104cdf0e10cSrcweir 1105cdf0e10cSrcweir switch( eXLS ) 1106cdf0e10cSrcweir { 1107cdf0e10cSrcweir case XLINE_NONE: 1108cdf0e10cSrcweir aLbLineStyle.SelectEntryPos( 0 ); 1109cdf0e10cSrcweir break; 1110cdf0e10cSrcweir case XLINE_SOLID: 1111cdf0e10cSrcweir aLbLineStyle.SelectEntryPos( 1 ); 1112cdf0e10cSrcweir break; 1113cdf0e10cSrcweir 1114cdf0e10cSrcweir case XLINE_DASH: 1115cdf0e10cSrcweir aLbLineStyle.SetNoSelection(); 1116cdf0e10cSrcweir aLbLineStyle.SelectEntry( ( ( const XLineDashItem& ) rAttrs. 1117cdf0e10cSrcweir Get( XATTR_LINEDASH ) ).GetName() ); 1118cdf0e10cSrcweir break; 1119cdf0e10cSrcweir 1120cdf0e10cSrcweir default: 1121cdf0e10cSrcweir break; 1122cdf0e10cSrcweir } 1123cdf0e10cSrcweir } 1124cdf0e10cSrcweir else 1125cdf0e10cSrcweir { 1126cdf0e10cSrcweir aLbLineStyle.SetNoSelection(); 1127cdf0e10cSrcweir } 1128cdf0e10cSrcweir 1129cdf0e10cSrcweir // Linienstaerke 1130cdf0e10cSrcweir /* 1131cdf0e10cSrcweir if( bObjSelected && 1132cdf0e10cSrcweir rAttrs.GetItemState( GetWhich( XATTR_LINEWIDTH ) ) == SFX_ITEM_DEFAULT ) 1133cdf0e10cSrcweir { 1134cdf0e10cSrcweir aMtrLineWidth.Disable(); 1135cdf0e10cSrcweir } 1136cdf0e10cSrcweir */ 1137cdf0e10cSrcweir if( rAttrs.GetItemState( XATTR_LINEWIDTH ) != SFX_ITEM_DONTCARE ) 1138cdf0e10cSrcweir { 1139cdf0e10cSrcweir SetMetricValue( aMtrLineWidth, ( ( const XLineWidthItem& ) rAttrs. 1140cdf0e10cSrcweir Get( XATTR_LINEWIDTH ) ).GetValue(), ePoolUnit ); 1141cdf0e10cSrcweir } 1142cdf0e10cSrcweir else 1143cdf0e10cSrcweir aMtrLineWidth.SetText( String() ); 1144cdf0e10cSrcweir 1145cdf0e10cSrcweir // Linienfarbe 1146cdf0e10cSrcweir /* 1147cdf0e10cSrcweir if( bObjSelected && 1148cdf0e10cSrcweir rAttrs.GetItemState( GetWhich( XATTR_LINECOLOR ) ) == SFX_ITEM_DEFAULT ) 1149cdf0e10cSrcweir { 1150cdf0e10cSrcweir aLbColor.Disable(); 1151cdf0e10cSrcweir } 1152cdf0e10cSrcweir */ 1153cdf0e10cSrcweir aLbColor.SetNoSelection(); 1154cdf0e10cSrcweir 1155cdf0e10cSrcweir if ( rAttrs.GetItemState( XATTR_LINECOLOR ) != SFX_ITEM_DONTCARE ) 1156cdf0e10cSrcweir { 1157cdf0e10cSrcweir Color aCol = ( ( const XLineColorItem& ) rAttrs.Get( XATTR_LINECOLOR ) ).GetColorValue(); 1158cdf0e10cSrcweir aLbColor.SelectEntry( aCol ); 1159cdf0e10cSrcweir if( aLbColor.GetSelectEntryCount() == 0 ) 1160cdf0e10cSrcweir { 1161cdf0e10cSrcweir aLbColor.InsertEntry( aCol, String() ); 1162cdf0e10cSrcweir aLbColor.SelectEntry( aCol ); 1163cdf0e10cSrcweir } 1164cdf0e10cSrcweir } 1165cdf0e10cSrcweir 1166cdf0e10cSrcweir // LinienAnfang 1167cdf0e10cSrcweir if( bObjSelected && 1168cdf0e10cSrcweir rAttrs.GetItemState( XATTR_LINESTART ) == SFX_ITEM_DEFAULT ) 1169cdf0e10cSrcweir { 1170cdf0e10cSrcweir aLbStartStyle.Disable(); 1171cdf0e10cSrcweir } 1172cdf0e10cSrcweir else if( rAttrs.GetItemState( XATTR_LINESTART ) != SFX_ITEM_DONTCARE ) 1173cdf0e10cSrcweir { 1174cdf0e10cSrcweir // #86265# select entry using list and polygon, not string 1175cdf0e10cSrcweir sal_Bool bSelected(sal_False); 1176cdf0e10cSrcweir const basegfx::B2DPolyPolygon& rItemPolygon = ((const XLineStartItem&)rAttrs.Get(XATTR_LINESTART)).GetLineStartValue(); 1177cdf0e10cSrcweir 1178cdf0e10cSrcweir for(sal_Int32 a(0);!bSelected && a < pLineEndList->Count(); a++) 1179cdf0e10cSrcweir { 1180cdf0e10cSrcweir XLineEndEntry* pEntry = pLineEndList->GetLineEnd(a); 1181cdf0e10cSrcweir const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd(); 1182cdf0e10cSrcweir 1183cdf0e10cSrcweir if(rItemPolygon == rEntryPolygon) 1184cdf0e10cSrcweir { 1185cdf0e10cSrcweir // select this entry 1186cdf0e10cSrcweir aLbStartStyle.SelectEntryPos((sal_uInt16)a + 1); 1187cdf0e10cSrcweir bSelected = sal_True; 1188cdf0e10cSrcweir } 1189cdf0e10cSrcweir } 1190cdf0e10cSrcweir 1191cdf0e10cSrcweir if(!bSelected) 1192cdf0e10cSrcweir aLbStartStyle.SelectEntryPos( 0 ); 1193cdf0e10cSrcweir } 1194cdf0e10cSrcweir else 1195cdf0e10cSrcweir { 1196cdf0e10cSrcweir aLbStartStyle.SetNoSelection(); 1197cdf0e10cSrcweir } 1198cdf0e10cSrcweir 1199cdf0e10cSrcweir // LinienEnde 1200cdf0e10cSrcweir if( bObjSelected && 1201cdf0e10cSrcweir rAttrs.GetItemState( XATTR_LINEEND ) == SFX_ITEM_DEFAULT ) 1202cdf0e10cSrcweir { 1203cdf0e10cSrcweir aLbEndStyle.Disable(); 1204cdf0e10cSrcweir } 1205cdf0e10cSrcweir else if( rAttrs.GetItemState( XATTR_LINEEND ) != SFX_ITEM_DONTCARE ) 1206cdf0e10cSrcweir { 1207cdf0e10cSrcweir // #86265# select entry using list and polygon, not string 1208cdf0e10cSrcweir sal_Bool bSelected(sal_False); 1209cdf0e10cSrcweir const basegfx::B2DPolyPolygon& rItemPolygon = ((const XLineEndItem&)rAttrs.Get(XATTR_LINEEND)).GetLineEndValue(); 1210cdf0e10cSrcweir 1211cdf0e10cSrcweir for(sal_Int32 a(0);!bSelected && a < pLineEndList->Count(); a++) 1212cdf0e10cSrcweir { 1213cdf0e10cSrcweir XLineEndEntry* pEntry = pLineEndList->GetLineEnd(a); 1214cdf0e10cSrcweir const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd(); 1215cdf0e10cSrcweir 1216cdf0e10cSrcweir if(rItemPolygon == rEntryPolygon) 1217cdf0e10cSrcweir { 1218cdf0e10cSrcweir // select this entry 1219cdf0e10cSrcweir aLbEndStyle.SelectEntryPos((sal_uInt16)a + 1); 1220cdf0e10cSrcweir bSelected = sal_True; 1221cdf0e10cSrcweir } 1222cdf0e10cSrcweir } 1223cdf0e10cSrcweir 1224cdf0e10cSrcweir if(!bSelected) 1225cdf0e10cSrcweir aLbEndStyle.SelectEntryPos( 0 ); 1226cdf0e10cSrcweir } 1227cdf0e10cSrcweir else 1228cdf0e10cSrcweir { 1229cdf0e10cSrcweir aLbEndStyle.SetNoSelection(); 1230cdf0e10cSrcweir } 1231cdf0e10cSrcweir 1232cdf0e10cSrcweir // LinienAnfang St"arke 1233cdf0e10cSrcweir if( bObjSelected && 1234cdf0e10cSrcweir rAttrs.GetItemState( XATTR_LINESTARTWIDTH ) == SFX_ITEM_DEFAULT ) 1235cdf0e10cSrcweir { 1236cdf0e10cSrcweir aMtrStartWidth.Disable(); 1237cdf0e10cSrcweir } 1238cdf0e10cSrcweir else if( rAttrs.GetItemState( XATTR_LINESTARTWIDTH ) != SFX_ITEM_DONTCARE ) 1239cdf0e10cSrcweir { 1240cdf0e10cSrcweir SetMetricValue( aMtrStartWidth, ( ( const XLineStartWidthItem& ) rAttrs. 1241cdf0e10cSrcweir Get( XATTR_LINESTARTWIDTH ) ).GetValue(), ePoolUnit ); 1242cdf0e10cSrcweir } 1243cdf0e10cSrcweir else 1244cdf0e10cSrcweir aMtrStartWidth.SetText( String() ); 1245cdf0e10cSrcweir 1246cdf0e10cSrcweir // LinienEnde St"arke 1247cdf0e10cSrcweir if( bObjSelected && 1248cdf0e10cSrcweir rAttrs.GetItemState( XATTR_LINEENDWIDTH ) == SFX_ITEM_DEFAULT ) 1249cdf0e10cSrcweir { 1250cdf0e10cSrcweir aMtrEndWidth.Disable(); 1251cdf0e10cSrcweir } 1252cdf0e10cSrcweir else if( rAttrs.GetItemState( XATTR_LINEENDWIDTH ) != SFX_ITEM_DONTCARE ) 1253cdf0e10cSrcweir { 1254cdf0e10cSrcweir SetMetricValue( aMtrEndWidth, ( ( const XLineEndWidthItem& ) rAttrs. 1255cdf0e10cSrcweir Get( XATTR_LINEENDWIDTH ) ).GetValue(), ePoolUnit ); 1256cdf0e10cSrcweir } 1257cdf0e10cSrcweir else 1258cdf0e10cSrcweir aMtrEndWidth.SetText( String() ); 1259cdf0e10cSrcweir 1260cdf0e10cSrcweir // Linienenden zentriert (Start) 1261cdf0e10cSrcweir if( bObjSelected && 1262cdf0e10cSrcweir rAttrs.GetItemState( XATTR_LINESTARTCENTER ) == SFX_ITEM_DEFAULT ) 1263cdf0e10cSrcweir { 1264cdf0e10cSrcweir aTsbCenterStart.Disable(); 1265cdf0e10cSrcweir } 1266cdf0e10cSrcweir else if( rAttrs.GetItemState( XATTR_LINESTARTCENTER ) != SFX_ITEM_DONTCARE ) 1267cdf0e10cSrcweir { 1268cdf0e10cSrcweir aTsbCenterStart.EnableTriState( sal_False ); 1269cdf0e10cSrcweir 1270cdf0e10cSrcweir if( ( ( const XLineStartCenterItem& ) rAttrs.Get( XATTR_LINESTARTCENTER ) ).GetValue() ) 1271cdf0e10cSrcweir aTsbCenterStart.SetState( STATE_CHECK ); 1272cdf0e10cSrcweir else 1273cdf0e10cSrcweir aTsbCenterStart.SetState( STATE_NOCHECK ); 1274cdf0e10cSrcweir } 1275cdf0e10cSrcweir else 1276cdf0e10cSrcweir { 1277cdf0e10cSrcweir aTsbCenterStart.SetState( STATE_DONTKNOW ); 1278cdf0e10cSrcweir } 1279cdf0e10cSrcweir 1280cdf0e10cSrcweir // Linienenden zentriert (Ende) 1281cdf0e10cSrcweir if( bObjSelected && 1282cdf0e10cSrcweir rAttrs.GetItemState( XATTR_LINEENDCENTER ) == SFX_ITEM_DEFAULT ) 1283cdf0e10cSrcweir { 1284cdf0e10cSrcweir aTsbCenterEnd.Disable(); 1285cdf0e10cSrcweir } 1286cdf0e10cSrcweir else if( rAttrs.GetItemState( XATTR_LINEENDCENTER ) != SFX_ITEM_DONTCARE ) 1287cdf0e10cSrcweir { 1288cdf0e10cSrcweir aTsbCenterEnd.EnableTriState( sal_False ); 1289cdf0e10cSrcweir 1290cdf0e10cSrcweir if( ( ( const XLineEndCenterItem& ) rAttrs.Get( XATTR_LINEENDCENTER ) ).GetValue() ) 1291cdf0e10cSrcweir aTsbCenterEnd.SetState( STATE_CHECK ); 1292cdf0e10cSrcweir else 1293cdf0e10cSrcweir aTsbCenterEnd.SetState( STATE_NOCHECK ); 1294cdf0e10cSrcweir } 1295cdf0e10cSrcweir else 1296cdf0e10cSrcweir { 1297cdf0e10cSrcweir aTsbCenterEnd.SetState( STATE_DONTKNOW ); 1298cdf0e10cSrcweir } 1299cdf0e10cSrcweir 1300cdf0e10cSrcweir // Transparenz 1301cdf0e10cSrcweir if( rAttrs.GetItemState( XATTR_LINETRANSPARENCE ) != SFX_ITEM_DONTCARE ) 1302cdf0e10cSrcweir { 1303cdf0e10cSrcweir sal_uInt16 nTransp = ( ( const XLineTransparenceItem& ) rAttrs. 1304cdf0e10cSrcweir Get( XATTR_LINETRANSPARENCE ) ).GetValue(); 1305cdf0e10cSrcweir aMtrTransparent.SetValue( nTransp ); 1306cdf0e10cSrcweir ChangeTransparentHdl_Impl( NULL ); 1307cdf0e10cSrcweir } 1308cdf0e10cSrcweir else 1309cdf0e10cSrcweir aMtrTransparent.SetText( String() ); 1310cdf0e10cSrcweir 1311cdf0e10cSrcweir if( !aLbStartStyle.IsEnabled() && 1312cdf0e10cSrcweir !aLbEndStyle.IsEnabled() && 1313cdf0e10cSrcweir !aMtrStartWidth.IsEnabled() && 1314cdf0e10cSrcweir !aMtrEndWidth.IsEnabled() && 1315cdf0e10cSrcweir !aTsbCenterStart.IsEnabled()&& 1316cdf0e10cSrcweir !aTsbCenterEnd.IsEnabled() ) 1317cdf0e10cSrcweir { 1318cdf0e10cSrcweir aCbxSynchronize.Disable(); 1319cdf0e10cSrcweir aFtLineEndsStyle.Disable(); 1320cdf0e10cSrcweir aFtLineEndsWidth.Disable(); 1321cdf0e10cSrcweir aFlLineEnds.Disable(); 1322cdf0e10cSrcweir } 1323cdf0e10cSrcweir 1324cdf0e10cSrcweir // Synchronisieren 1325cdf0e10cSrcweir // Jetzt wird der Wert aus der INI-Datei geholt (#42258#) 1326cdf0e10cSrcweir String aStr = GetUserData(); 1327cdf0e10cSrcweir aCbxSynchronize.Check( (sal_Bool)aStr.ToInt32() ); 1328cdf0e10cSrcweir 1329cdf0e10cSrcweir // #116827# 1330cdf0e10cSrcweir if(bObjSelected && SFX_ITEM_DEFAULT == rAttrs.GetItemState(XATTR_LINEJOINT)) 1331cdf0e10cSrcweir { 1332cdf0e10cSrcweir maFTEdgeStyle.Disable(); 1333cdf0e10cSrcweir maLBEdgeStyle.Disable(); 1334cdf0e10cSrcweir } 1335cdf0e10cSrcweir else if(SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_LINEJOINT)) 1336cdf0e10cSrcweir { 1337cdf0e10cSrcweir XLineJoint eLineJoint = ((const XLineJointItem&)(rAttrs.Get(XATTR_LINEJOINT))).GetValue(); 1338cdf0e10cSrcweir 1339cdf0e10cSrcweir switch(eLineJoint) 1340cdf0e10cSrcweir { 1341cdf0e10cSrcweir case XLINEJOINT_ROUND : maLBEdgeStyle.SelectEntryPos(0); break; 1342cdf0e10cSrcweir case XLINEJOINT_NONE : maLBEdgeStyle.SelectEntryPos(1); break; 1343cdf0e10cSrcweir case XLINEJOINT_MITER : maLBEdgeStyle.SelectEntryPos(2); break; 1344cdf0e10cSrcweir case XLINEJOINT_BEVEL : maLBEdgeStyle.SelectEntryPos(3); break; 1345cdf0e10cSrcweir case XLINEJOINT_MIDDLE : break; 1346cdf0e10cSrcweir } 1347cdf0e10cSrcweir } 1348cdf0e10cSrcweir else 1349cdf0e10cSrcweir { 1350cdf0e10cSrcweir maLBEdgeStyle.SetNoSelection(); 1351cdf0e10cSrcweir } 1352cdf0e10cSrcweir 1353cdf0e10cSrcweir /* 1354cdf0e10cSrcweir if( aLbStartStyle.GetSelectEntryPos() == aLbEndStyle.GetSelectEntryPos() && 1355cdf0e10cSrcweir aMtrStartWidth.GetValue() == aMtrEndWidth.GetValue() && 1356cdf0e10cSrcweir aTsbCenterStart.GetState() == aTsbCenterEnd.GetState() ) 1357cdf0e10cSrcweir { 1358cdf0e10cSrcweir aCbxSynchronize.Check(); 1359cdf0e10cSrcweir } 1360cdf0e10cSrcweir */ 1361cdf0e10cSrcweir 1362*5aaf853bSArmin Le Grand // fdo#43209 1363*5aaf853bSArmin Le Grand if(bObjSelected && SFX_ITEM_DEFAULT == rAttrs.GetItemState(XATTR_LINECAP)) 1364*5aaf853bSArmin Le Grand { 1365*5aaf853bSArmin Le Grand maFTCapStyle.Disable(); 1366*5aaf853bSArmin Le Grand maLBCapStyle.Disable(); 1367*5aaf853bSArmin Le Grand } 1368*5aaf853bSArmin Le Grand else if(SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_LINECAP)) 1369*5aaf853bSArmin Le Grand { 1370*5aaf853bSArmin Le Grand const com::sun::star::drawing::LineCap eLineCap(((const XLineCapItem&)(rAttrs.Get(XATTR_LINECAP))).GetValue()); 1371*5aaf853bSArmin Le Grand 1372*5aaf853bSArmin Le Grand switch(eLineCap) 1373*5aaf853bSArmin Le Grand { 1374*5aaf853bSArmin Le Grand case com::sun::star::drawing::LineCap_ROUND: maLBCapStyle.SelectEntryPos(1); break; 1375*5aaf853bSArmin Le Grand case com::sun::star::drawing::LineCap_SQUARE : maLBCapStyle.SelectEntryPos(2); break; 1376*5aaf853bSArmin Le Grand default /*com::sun::star::drawing::LineCap_BUTT*/: maLBCapStyle.SelectEntryPos(0); break; 1377*5aaf853bSArmin Le Grand } 1378*5aaf853bSArmin Le Grand } 1379*5aaf853bSArmin Le Grand else 1380*5aaf853bSArmin Le Grand { 1381*5aaf853bSArmin Le Grand maLBCapStyle.SetNoSelection(); 1382*5aaf853bSArmin Le Grand } 1383*5aaf853bSArmin Le Grand 1384cdf0e10cSrcweir // Werte sichern 1385cdf0e10cSrcweir aLbLineStyle.SaveValue(); 1386cdf0e10cSrcweir aMtrLineWidth.SaveValue(); 1387cdf0e10cSrcweir aLbColor.SaveValue(); 1388cdf0e10cSrcweir aLbStartStyle.SaveValue(); 1389cdf0e10cSrcweir aLbEndStyle.SaveValue(); 1390cdf0e10cSrcweir aMtrStartWidth.SaveValue(); 1391cdf0e10cSrcweir aMtrEndWidth.SaveValue(); 1392cdf0e10cSrcweir aTsbCenterStart.SaveValue(); 1393cdf0e10cSrcweir aTsbCenterEnd.SaveValue(); 1394cdf0e10cSrcweir aMtrTransparent.SaveValue(); 1395cdf0e10cSrcweir 1396cdf0e10cSrcweir // #116827# 1397cdf0e10cSrcweir maLBEdgeStyle.SaveValue(); 1398cdf0e10cSrcweir 1399*5aaf853bSArmin Le Grand // LineCaps 1400*5aaf853bSArmin Le Grand maLBCapStyle.SaveValue(); 1401*5aaf853bSArmin Le Grand 1402cdf0e10cSrcweir ClickInvisibleHdl_Impl( this ); 1403cdf0e10cSrcweir //ClickMeasuringHdl_Impl( this ); 1404cdf0e10cSrcweir //aCtlPosition.Reset(); 1405cdf0e10cSrcweir 1406cdf0e10cSrcweir ChangePreviewHdl_Impl( NULL ); 1407cdf0e10cSrcweir } 1408cdf0e10cSrcweir 1409cdf0e10cSrcweir // ----------------------------------------------------------------------- 1410cdf0e10cSrcweir 1411cdf0e10cSrcweir SfxTabPage* SvxLineTabPage::Create( Window* pWindow, 1412cdf0e10cSrcweir const SfxItemSet& rAttrs ) 1413cdf0e10cSrcweir { 1414cdf0e10cSrcweir return( new SvxLineTabPage( pWindow, rAttrs ) ); 1415cdf0e10cSrcweir } 1416cdf0e10cSrcweir 1417cdf0e10cSrcweir //------------------------------------------------------------------------ 1418cdf0e10cSrcweir 1419cdf0e10cSrcweir sal_uInt16* SvxLineTabPage::GetRanges() 1420cdf0e10cSrcweir { 1421cdf0e10cSrcweir return( pLineRanges ); 1422cdf0e10cSrcweir } 1423cdf0e10cSrcweir 1424cdf0e10cSrcweir //------------------------------------------------------------------------ 1425cdf0e10cSrcweir 1426cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, ChangePreviewHdl_Impl, void *, pCntrl ) 1427cdf0e10cSrcweir { 1428cdf0e10cSrcweir if(pCntrl == &aMtrLineWidth) 1429cdf0e10cSrcweir { 1430cdf0e10cSrcweir // Linienbreite und Start/EndBreite 1431cdf0e10cSrcweir sal_Int32 nNewLineWidth = GetCoreValue( aMtrLineWidth, ePoolUnit ); 1432cdf0e10cSrcweir if(nActLineWidth == -1) 1433cdf0e10cSrcweir { 1434cdf0e10cSrcweir // Noch nicht initialisiert, hole den Startwert 1435cdf0e10cSrcweir const SfxPoolItem* pOld = GetOldItem( rXLSet, XATTR_LINEWIDTH ); 1436cdf0e10cSrcweir sal_Int32 nStartLineWidth = 0; 1437cdf0e10cSrcweir if(pOld) 1438cdf0e10cSrcweir nStartLineWidth = (( const XLineWidthItem *)pOld)->GetValue(); 1439cdf0e10cSrcweir nActLineWidth = nStartLineWidth; 1440cdf0e10cSrcweir } 1441cdf0e10cSrcweir 1442cdf0e10cSrcweir if(nActLineWidth != nNewLineWidth) 1443cdf0e10cSrcweir { 1444cdf0e10cSrcweir // Anpassungen Start/EndWidth #63083# 1445cdf0e10cSrcweir sal_Int32 nValAct = GetCoreValue( aMtrStartWidth, ePoolUnit ); 1446cdf0e10cSrcweir sal_Int32 nValNew = nValAct + (((nNewLineWidth - nActLineWidth) * 15) / 10); 1447cdf0e10cSrcweir if(nValNew < 0) 1448cdf0e10cSrcweir nValNew = 0; 1449cdf0e10cSrcweir SetMetricValue( aMtrStartWidth, nValNew, ePoolUnit ); 1450cdf0e10cSrcweir 1451cdf0e10cSrcweir nValAct = GetCoreValue( aMtrEndWidth, ePoolUnit ); 1452cdf0e10cSrcweir nValNew = nValAct + (((nNewLineWidth - nActLineWidth) * 15) / 10); 1453cdf0e10cSrcweir if(nValNew < 0) 1454cdf0e10cSrcweir nValNew = 0; 1455cdf0e10cSrcweir SetMetricValue( aMtrEndWidth, nValNew, ePoolUnit ); 1456cdf0e10cSrcweir } 1457cdf0e10cSrcweir 1458cdf0e10cSrcweir // Aktuellen Wert merken 1459cdf0e10cSrcweir nActLineWidth = nNewLineWidth; 1460cdf0e10cSrcweir } 1461cdf0e10cSrcweir 1462cdf0e10cSrcweir FillXLSet_Impl(); 1463cdf0e10cSrcweir aCtlPreview.Invalidate(); 1464cdf0e10cSrcweir 1465cdf0e10cSrcweir // Transparenz entspr. zugaenglich machen 1466cdf0e10cSrcweir if( aLbLineStyle.GetSelectEntryPos() == 0 ) // unsichtbar 1467cdf0e10cSrcweir { 1468cdf0e10cSrcweir aFtTransparent.Disable(); 1469cdf0e10cSrcweir aMtrTransparent.Disable(); 1470cdf0e10cSrcweir } 1471cdf0e10cSrcweir else 1472cdf0e10cSrcweir { 1473cdf0e10cSrcweir aFtTransparent.Enable(); 1474cdf0e10cSrcweir aMtrTransparent.Enable(); 1475cdf0e10cSrcweir } 1476cdf0e10cSrcweir 1477cdf0e10cSrcweir const bool bHasLineStart = aLbStartStyle.GetSelectEntryPos() != 0; 1478cdf0e10cSrcweir const bool bHasLineEnd = aLbEndStyle.GetSelectEntryPos() != 0; 1479cdf0e10cSrcweir 1480cdf0e10cSrcweir aFtLineEndsWidth.Enable( bHasLineStart || bHasLineEnd ); 1481cdf0e10cSrcweir aMtrStartWidth.Enable( bHasLineStart ); 1482cdf0e10cSrcweir aTsbCenterStart.Enable( bHasLineStart ); 1483cdf0e10cSrcweir aMtrEndWidth.Enable( bHasLineEnd ); 1484cdf0e10cSrcweir aTsbCenterEnd.Enable( bHasLineEnd ); 1485cdf0e10cSrcweir 1486cdf0e10cSrcweir return( 0L ); 1487cdf0e10cSrcweir } 1488cdf0e10cSrcweir 1489cdf0e10cSrcweir //------------------------------------------------------------------------ 1490cdf0e10cSrcweir 1491cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, ChangeStartHdl_Impl, void *, p ) 1492cdf0e10cSrcweir { 1493cdf0e10cSrcweir if( aCbxSynchronize.IsChecked() ) 1494cdf0e10cSrcweir { 1495cdf0e10cSrcweir if( p == &aMtrStartWidth ) 1496cdf0e10cSrcweir aMtrEndWidth.SetValue( aMtrStartWidth.GetValue() ); 1497cdf0e10cSrcweir if( p == &aLbStartStyle ) 1498cdf0e10cSrcweir aLbEndStyle.SelectEntryPos( aLbStartStyle.GetSelectEntryPos() ); 1499cdf0e10cSrcweir if( p == &aTsbCenterStart ) 1500cdf0e10cSrcweir aTsbCenterEnd.SetState( aTsbCenterStart.GetState() ); 1501cdf0e10cSrcweir } 1502cdf0e10cSrcweir 1503cdf0e10cSrcweir ChangePreviewHdl_Impl( this ); 1504cdf0e10cSrcweir 1505cdf0e10cSrcweir return( 0L ); 1506cdf0e10cSrcweir } 1507cdf0e10cSrcweir 1508cdf0e10cSrcweir //------------------------------------------------------------------------ 1509cdf0e10cSrcweir // #116827# 1510cdf0e10cSrcweir 1511cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, ChangeEdgeStyleHdl_Impl, void *, EMPTYARG ) 1512cdf0e10cSrcweir { 1513cdf0e10cSrcweir ChangePreviewHdl_Impl( this ); 1514cdf0e10cSrcweir 1515cdf0e10cSrcweir return( 0L ); 1516cdf0e10cSrcweir } 1517cdf0e10cSrcweir 1518*5aaf853bSArmin Le Grand //------------------------------------------------------------------------ 1519*5aaf853bSArmin Le Grand // fdo#43209 1520*5aaf853bSArmin Le Grand 1521*5aaf853bSArmin Le Grand IMPL_LINK( SvxLineTabPage, ChangeCapStyleHdl_Impl, void *, EMPTYARG ) 1522*5aaf853bSArmin Le Grand { 1523*5aaf853bSArmin Le Grand ChangePreviewHdl_Impl( this ); 1524*5aaf853bSArmin Le Grand 1525*5aaf853bSArmin Le Grand return( 0L ); 1526*5aaf853bSArmin Le Grand } 1527cdf0e10cSrcweir //------------------------------------------------------------------------ 1528cdf0e10cSrcweir 1529cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, ClickInvisibleHdl_Impl, void *, EMPTYARG ) 1530cdf0e10cSrcweir { 1531cdf0e10cSrcweir if( aLbLineStyle.GetSelectEntryPos() == 0 ) // unsichtbar 1532cdf0e10cSrcweir { 1533cdf0e10cSrcweir aFtColor.Disable(); 1534cdf0e10cSrcweir if(!bSymbols) 1535cdf0e10cSrcweir aLbColor.Disable(); 1536cdf0e10cSrcweir aFtLineWidth.Disable(); 1537cdf0e10cSrcweir aMtrLineWidth.Disable(); 1538cdf0e10cSrcweir 1539cdf0e10cSrcweir if( aFlLineEnds.IsEnabled() ) 1540cdf0e10cSrcweir { 1541cdf0e10cSrcweir aFtLineEndsStyle.Disable(); 1542cdf0e10cSrcweir aFtLineEndsWidth.Disable(); 1543cdf0e10cSrcweir aLbStartStyle.Disable(); 1544cdf0e10cSrcweir aMtrStartWidth.Disable(); 1545cdf0e10cSrcweir aTsbCenterStart.Disable(); 1546cdf0e10cSrcweir aLbEndStyle.Disable(); 1547cdf0e10cSrcweir aMtrEndWidth.Disable(); 1548cdf0e10cSrcweir aTsbCenterEnd.Disable(); 1549cdf0e10cSrcweir aCbxSynchronize.Disable(); 1550cdf0e10cSrcweir 1551cdf0e10cSrcweir // #116827# 1552cdf0e10cSrcweir maFTEdgeStyle.Disable(); 1553cdf0e10cSrcweir maLBEdgeStyle.Disable(); 1554*5aaf853bSArmin Le Grand 1555*5aaf853bSArmin Le Grand // LineCaps 1556*5aaf853bSArmin Le Grand maFTCapStyle.Disable(); 1557*5aaf853bSArmin Le Grand maLBCapStyle.Disable(); 1558cdf0e10cSrcweir } 1559cdf0e10cSrcweir } 1560cdf0e10cSrcweir else 1561cdf0e10cSrcweir { 1562cdf0e10cSrcweir aFtColor.Enable(); 1563cdf0e10cSrcweir aLbColor.Enable(); 1564cdf0e10cSrcweir aFtLineWidth.Enable(); 1565cdf0e10cSrcweir aMtrLineWidth.Enable(); 1566cdf0e10cSrcweir 1567cdf0e10cSrcweir if( aFlLineEnds.IsEnabled() ) 1568cdf0e10cSrcweir { 1569cdf0e10cSrcweir aFtLineEndsStyle.Enable(); 1570cdf0e10cSrcweir aFtLineEndsWidth.Enable(); 1571cdf0e10cSrcweir aLbStartStyle.Enable(); 1572cdf0e10cSrcweir aMtrStartWidth.Enable(); 1573cdf0e10cSrcweir aTsbCenterStart.Enable(); 1574cdf0e10cSrcweir aLbEndStyle.Enable(); 1575cdf0e10cSrcweir aMtrEndWidth.Enable(); 1576cdf0e10cSrcweir aTsbCenterEnd.Enable(); 1577cdf0e10cSrcweir aCbxSynchronize.Enable(); 1578cdf0e10cSrcweir 1579cdf0e10cSrcweir // #116827# 1580cdf0e10cSrcweir maFTEdgeStyle.Enable(); 1581cdf0e10cSrcweir maLBEdgeStyle.Enable(); 1582*5aaf853bSArmin Le Grand 1583*5aaf853bSArmin Le Grand // LineCaps 1584*5aaf853bSArmin Le Grand maFTCapStyle.Enable(); 1585*5aaf853bSArmin Le Grand maLBCapStyle.Enable(); 1586cdf0e10cSrcweir } 1587cdf0e10cSrcweir } 1588cdf0e10cSrcweir ChangePreviewHdl_Impl( NULL ); 1589cdf0e10cSrcweir 1590cdf0e10cSrcweir return( 0L ); 1591cdf0e10cSrcweir } 1592cdf0e10cSrcweir 1593cdf0e10cSrcweir //------------------------------------------------------------------------ 1594cdf0e10cSrcweir 1595cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, ChangeEndHdl_Impl, void *, p ) 1596cdf0e10cSrcweir { 1597cdf0e10cSrcweir if( aCbxSynchronize.IsChecked() ) 1598cdf0e10cSrcweir { 1599cdf0e10cSrcweir if( p == &aMtrEndWidth ) 1600cdf0e10cSrcweir aMtrStartWidth.SetValue( aMtrEndWidth.GetValue() ); 1601cdf0e10cSrcweir if( p == &aLbEndStyle ) 1602cdf0e10cSrcweir aLbStartStyle.SelectEntryPos( aLbEndStyle.GetSelectEntryPos() ); 1603cdf0e10cSrcweir if( p == &aTsbCenterEnd ) 1604cdf0e10cSrcweir aTsbCenterStart.SetState( aTsbCenterEnd.GetState() ); 1605cdf0e10cSrcweir } 1606cdf0e10cSrcweir 1607cdf0e10cSrcweir ChangePreviewHdl_Impl( this ); 1608cdf0e10cSrcweir 1609cdf0e10cSrcweir return( 0L ); 1610cdf0e10cSrcweir } 1611cdf0e10cSrcweir 1612cdf0e10cSrcweir //------------------------------------------------------------------------ 1613cdf0e10cSrcweir /* 1614cdf0e10cSrcweir 1615cdf0e10cSrcweir long SvxLineTabPage::ClickMeasuringHdl_Impl( void* ) 1616cdf0e10cSrcweir { 1617cdf0e10cSrcweir if( aTsbShowMeasuring.GetState() == STATE_NOCHECK ) 1618cdf0e10cSrcweir { 1619cdf0e10cSrcweir aFtPosition.Disable(); 1620cdf0e10cSrcweir aCtlPosition.Disable(); 1621cdf0e10cSrcweir } 1622cdf0e10cSrcweir else 1623cdf0e10cSrcweir { 1624cdf0e10cSrcweir aFtPosition.Enable(); 1625cdf0e10cSrcweir aCtlPosition.Enable(); 1626cdf0e10cSrcweir } 1627cdf0e10cSrcweir aCtlPosition.Invalidate(); 1628cdf0e10cSrcweir 1629cdf0e10cSrcweir return( 0L ); 1630cdf0e10cSrcweir } 1631cdf0e10cSrcweir */ 1632cdf0e10cSrcweir //------------------------------------------------------------------------ 1633cdf0e10cSrcweir 1634cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, ChangeTransparentHdl_Impl, void *, EMPTYARG ) 1635cdf0e10cSrcweir { 1636cdf0e10cSrcweir sal_uInt16 nVal = (sal_uInt16)aMtrTransparent.GetValue(); 1637cdf0e10cSrcweir XLineTransparenceItem aItem( nVal ); 1638cdf0e10cSrcweir 1639cdf0e10cSrcweir rXLSet.Put( XLineTransparenceItem( aItem ) ); 1640cdf0e10cSrcweir 1641cdf0e10cSrcweir // #116827# 1642cdf0e10cSrcweir FillXLSet_Impl(); 1643cdf0e10cSrcweir 1644cdf0e10cSrcweir aCtlPreview.Invalidate(); 1645cdf0e10cSrcweir 1646cdf0e10cSrcweir return( 0L ); 1647cdf0e10cSrcweir } 1648cdf0e10cSrcweir 1649cdf0e10cSrcweir //------------------------------------------------------------------------ 1650cdf0e10cSrcweir 1651cdf0e10cSrcweir void SvxLineTabPage::PointChanged( Window*, RECT_POINT eRcPt ) 1652cdf0e10cSrcweir { 1653cdf0e10cSrcweir eRP = eRcPt; 1654cdf0e10cSrcweir } 1655cdf0e10cSrcweir 1656cdf0e10cSrcweir //------------------------------------------------------------------------ 1657cdf0e10cSrcweir 1658cdf0e10cSrcweir void SvxLineTabPage::FillUserData() 1659cdf0e10cSrcweir { 1660cdf0e10cSrcweir // Abgleich wird in der Ini-Datei festgehalten 1661cdf0e10cSrcweir UniString aStrUserData = UniString::CreateFromInt32( (sal_Int32) aCbxSynchronize.IsChecked() ); 1662cdf0e10cSrcweir SetUserData( aStrUserData ); 1663cdf0e10cSrcweir } 1664cdf0e10cSrcweir 1665cdf0e10cSrcweir 1666cdf0e10cSrcweir //#58425# Symbole auf einer Linie (z.B. StarChart) 1667cdf0e10cSrcweir //Handler f�r Popup-Menue der Symbolauswahl (NumMenueButton) 1668cdf0e10cSrcweir //der folgende Link stammt urspruenglich aus SvxNumOptionsTabPage 1669cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, MenuCreateHdl_Impl, MenuButton *, pButton ) 1670cdf0e10cSrcweir { 1671cdf0e10cSrcweir //Popup initialisieren 1672cdf0e10cSrcweir if(!pButton->GetPopupMenu()->GetPopupMenu( MN_GALLERY )) 1673cdf0e10cSrcweir { 1674cdf0e10cSrcweir // Gallery-Eintraege besorgen 1675cdf0e10cSrcweir GalleryExplorer::FillObjList(GALLERY_THEME_BULLETS, aGrfNames); 1676cdf0e10cSrcweir 1677cdf0e10cSrcweir PopupMenu* pPopup = new PopupMenu; 1678cdf0e10cSrcweir String aEmptyStr; 1679cdf0e10cSrcweir 1680cdf0e10cSrcweir nNumMenuGalleryItems=aGrfNames.Count(); 1681cdf0e10cSrcweir for(long i = 0; i < nNumMenuGalleryItems; i++) 1682cdf0e10cSrcweir { 1683cdf0e10cSrcweir const String* pGrfName = (const String*)aGrfNames.GetObject(i); 1684cdf0e10cSrcweir const String* pUIName = pGrfName; 1685cdf0e10cSrcweir 1686cdf0e10cSrcweir // convert URL encodings to UI characters (eg %20 for spaces) 1687cdf0e10cSrcweir String aPhysicalName; 1688cdf0e10cSrcweir if( ::utl::LocalFileHelper::ConvertURLToPhysicalName( *pGrfName, aPhysicalName )) 1689cdf0e10cSrcweir pUIName = &aPhysicalName; 1690cdf0e10cSrcweir 1691cdf0e10cSrcweir SvxBrushItem* pBrushItem = new SvxBrushItem(*pGrfName, aEmptyStr, GPOS_AREA, SID_ATTR_BRUSH); 1692cdf0e10cSrcweir pBrushItem->SetDoneLink(STATIC_LINK(this, SvxLineTabPage, GraphicArrivedHdl_Impl)); 1693cdf0e10cSrcweir 1694cdf0e10cSrcweir SvxBmpItemInfo* pInfo = new SvxBmpItemInfo(); 1695cdf0e10cSrcweir pInfo->pBrushItem = pBrushItem; 1696cdf0e10cSrcweir pInfo->nItemId = (sal_uInt16)(MN_GALLERY_ENTRY + i); 1697cdf0e10cSrcweir aGrfBrushItems.Insert(pInfo, i); 1698cdf0e10cSrcweir const Graphic* pGraphic = pBrushItem->GetGraphic(); 1699cdf0e10cSrcweir 1700cdf0e10cSrcweir if(pGraphic) 1701cdf0e10cSrcweir { 1702cdf0e10cSrcweir Bitmap aBitmap(pGraphic->GetBitmap()); 1703cdf0e10cSrcweir Size aSize(aBitmap.GetSizePixel()); 1704cdf0e10cSrcweir if(aSize.Width() > MAX_BMP_WIDTH || 1705cdf0e10cSrcweir aSize.Height() > MAX_BMP_HEIGHT) 1706cdf0e10cSrcweir { 1707cdf0e10cSrcweir sal_Bool bWidth = aSize.Width() > aSize.Height(); 1708cdf0e10cSrcweir double nScale = bWidth ? 1709cdf0e10cSrcweir (double)MAX_BMP_WIDTH / (double)aSize.Width(): 1710cdf0e10cSrcweir (double)MAX_BMP_HEIGHT / (double)aSize.Height(); 1711cdf0e10cSrcweir aBitmap.Scale(nScale, nScale); 1712cdf0e10cSrcweir 1713cdf0e10cSrcweir } 1714cdf0e10cSrcweir Image aImage(aBitmap); 1715cdf0e10cSrcweir pPopup->InsertItem(pInfo->nItemId, *pUIName, aImage ); 1716cdf0e10cSrcweir } 1717cdf0e10cSrcweir else 1718cdf0e10cSrcweir { 1719cdf0e10cSrcweir Image aImage; 1720cdf0e10cSrcweir pPopup->InsertItem(pInfo->nItemId, *pUIName, aImage ); 1721cdf0e10cSrcweir } 1722cdf0e10cSrcweir } 1723cdf0e10cSrcweir aSymbolMB.GetPopupMenu()->SetPopupMenu( MN_GALLERY, pPopup ); 1724cdf0e10cSrcweir if(!aGrfNames.Count()) 1725cdf0e10cSrcweir aSymbolMB.GetPopupMenu()->EnableItem(MN_GALLERY, sal_False); 1726cdf0e10cSrcweir } 1727cdf0e10cSrcweir 1728cdf0e10cSrcweir if(!pButton->GetPopupMenu()->GetPopupMenu( MN_SYMBOLS ) && pSymbolList) 1729cdf0e10cSrcweir { 1730cdf0e10cSrcweir VirtualDevice aVDev; 1731cdf0e10cSrcweir aVDev.SetMapMode(MapMode(MAP_100TH_MM)); 1732cdf0e10cSrcweir SdrModel* pModel = new SdrModel(NULL, NULL, LOADREFCOUNTS); 1733cdf0e10cSrcweir pModel->GetItemPool().FreezeIdRanges(); 1734cdf0e10cSrcweir // Page 1735cdf0e10cSrcweir SdrPage* pPage = new SdrPage( *pModel, sal_False ); 1736cdf0e10cSrcweir pPage->SetSize(Size(1000,1000)); 1737cdf0e10cSrcweir pModel->InsertPage( pPage, 0 ); 1738cdf0e10cSrcweir // 3D View 1739cdf0e10cSrcweir SdrView* pView = new SdrView( pModel, &aVDev ); 1740cdf0e10cSrcweir pView->hideMarkHandles(); 1741cdf0e10cSrcweir // SdrPageView* pPageView = pView->ShowSdrPage(pPage, Point()); 1742cdf0e10cSrcweir SdrPageView* pPageView = pView->ShowSdrPage(pPage); 1743cdf0e10cSrcweir 1744cdf0e10cSrcweir PopupMenu* pPopup = new PopupMenu; 1745cdf0e10cSrcweir String aEmptyStr; 1746cdf0e10cSrcweir for(long i=0;; ++i) 1747cdf0e10cSrcweir { 1748cdf0e10cSrcweir SdrObject *pObj=pSymbolList->GetObj(i); 1749cdf0e10cSrcweir if(pObj==NULL) 1750cdf0e10cSrcweir break; 1751cdf0e10cSrcweir pObj=pObj->Clone(); 1752cdf0e10cSrcweir //const String* pGrfName = (const String*)aGrfNames.GetObject(i); 1753cdf0e10cSrcweir String *pStr=new String();//String(i)); 1754cdf0e10cSrcweir aGrfNames.Insert(pStr,LIST_APPEND); 1755cdf0e10cSrcweir //Rectangle aRect(pObj->GetLogicRect()); 1756cdf0e10cSrcweir pPage->NbcInsertObject(pObj); 1757cdf0e10cSrcweir pView->MarkObj(pObj,pPageView); 1758cdf0e10cSrcweir if(pSymbolAttr) 1759cdf0e10cSrcweir { 1760cdf0e10cSrcweir pObj->SetMergedItemSet(*pSymbolAttr); 1761cdf0e10cSrcweir } 1762cdf0e10cSrcweir else 1763cdf0e10cSrcweir { 1764cdf0e10cSrcweir pObj->SetMergedItemSet(rOutAttrs); 1765cdf0e10cSrcweir } 1766cdf0e10cSrcweir 1767cdf0e10cSrcweir Bitmap aBitmap(pView->GetAllMarkedBitmap()); 1768cdf0e10cSrcweir GDIMetaFile aMeta(pView->GetAllMarkedMetaFile()); 1769cdf0e10cSrcweir pView->UnmarkAll(); 1770cdf0e10cSrcweir pObj=pPage->RemoveObject(0); 1771cdf0e10cSrcweir SdrObject::Free(pObj); 1772cdf0e10cSrcweir 1773cdf0e10cSrcweir SvxBrushItem* pBrushItem = new SvxBrushItem(Graphic(aMeta), GPOS_AREA, SID_ATTR_BRUSH); 1774cdf0e10cSrcweir pBrushItem->SetDoneLink(STATIC_LINK(this, SvxLineTabPage, GraphicArrivedHdl_Impl)); 1775cdf0e10cSrcweir 1776cdf0e10cSrcweir SvxBmpItemInfo* pInfo = new SvxBmpItemInfo(); 1777cdf0e10cSrcweir pInfo->pBrushItem = pBrushItem; 1778cdf0e10cSrcweir pInfo->nItemId = (sal_uInt16)(MN_GALLERY_ENTRY + i + nNumMenuGalleryItems); 1779cdf0e10cSrcweir aGrfBrushItems.Insert(pInfo, nNumMenuGalleryItems + i); 1780cdf0e10cSrcweir 1781cdf0e10cSrcweir Size aSize(aBitmap.GetSizePixel()); 1782cdf0e10cSrcweir if(aSize.Width() > MAX_BMP_WIDTH || aSize.Height() > MAX_BMP_HEIGHT) 1783cdf0e10cSrcweir { 1784cdf0e10cSrcweir sal_Bool bWidth = aSize.Width() > aSize.Height(); 1785cdf0e10cSrcweir double nScale = bWidth ? 1786cdf0e10cSrcweir (double)MAX_BMP_WIDTH / (double)aSize.Width(): 1787cdf0e10cSrcweir (double)MAX_BMP_HEIGHT / (double)aSize.Height(); 1788cdf0e10cSrcweir aBitmap.Scale(nScale, nScale); 1789cdf0e10cSrcweir } 1790cdf0e10cSrcweir Image aImage(aBitmap); 1791cdf0e10cSrcweir pPopup->InsertItem(pInfo->nItemId,*pStr,aImage); 1792cdf0e10cSrcweir } 1793cdf0e10cSrcweir aSymbolMB.GetPopupMenu()->SetPopupMenu( MN_SYMBOLS, pPopup ); 1794cdf0e10cSrcweir if(!aGrfNames.Count()) 1795cdf0e10cSrcweir aSymbolMB.GetPopupMenu()->EnableItem(MN_SYMBOLS, sal_False); 1796cdf0e10cSrcweir 1797cdf0e10cSrcweir delete pView; 1798cdf0e10cSrcweir delete pModel; 1799cdf0e10cSrcweir } 1800cdf0e10cSrcweir return 0; 1801cdf0e10cSrcweir } 1802cdf0e10cSrcweir //#58425# Symbole auf einer Linie (z.B. StarChart) 1803cdf0e10cSrcweir //Handler f�r Popup-Menue der Symbolauswahl (NumMenueButton) 1804cdf0e10cSrcweir //der folgende Link stammt urspruenglich aus SvxNumOptionsTabPage: 1805cdf0e10cSrcweir IMPL_STATIC_LINK(SvxLineTabPage, GraphicArrivedHdl_Impl, SvxBrushItem*, pItem) 1806cdf0e10cSrcweir { 1807cdf0e10cSrcweir PopupMenu* pPopup = pThis->aSymbolMB.GetPopupMenu()->GetPopupMenu( MN_GALLERY ); 1808cdf0e10cSrcweir 1809cdf0e10cSrcweir SvxBmpItemInfo* pBmpInfo = 0; 1810cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < pThis->aGrfBrushItems.Count(); i++ ) 1811cdf0e10cSrcweir { 1812cdf0e10cSrcweir SvxBmpItemInfo* pInfo = (SvxBmpItemInfo*)pThis->aGrfBrushItems.GetObject(i); 1813cdf0e10cSrcweir if( pInfo->pBrushItem == pItem ) 1814cdf0e10cSrcweir { 1815cdf0e10cSrcweir pBmpInfo = pInfo; break; 1816cdf0e10cSrcweir } 1817cdf0e10cSrcweir } 1818cdf0e10cSrcweir if( pBmpInfo ) 1819cdf0e10cSrcweir { 1820cdf0e10cSrcweir if( pItem->GetGraphic() ) 1821cdf0e10cSrcweir { 1822cdf0e10cSrcweir Bitmap aBitmap(pItem->GetGraphic()->GetBitmap()); 1823cdf0e10cSrcweir Size aSize(aBitmap.GetSizePixel()); 1824cdf0e10cSrcweir if(aSize.Width() > MAX_BMP_WIDTH || 1825cdf0e10cSrcweir aSize.Height() > MAX_BMP_HEIGHT) 1826cdf0e10cSrcweir { 1827cdf0e10cSrcweir sal_Bool bWidth = aSize.Width() > aSize.Height(); 1828cdf0e10cSrcweir double nScale = bWidth ? 1829cdf0e10cSrcweir (double)MAX_BMP_WIDTH / (double)aSize.Width(): 1830cdf0e10cSrcweir (double)MAX_BMP_HEIGHT / (double)aSize.Height(); 1831cdf0e10cSrcweir aBitmap.Scale(nScale, nScale); 1832cdf0e10cSrcweir } 1833cdf0e10cSrcweir Image aImage(aBitmap); 1834cdf0e10cSrcweir pPopup->SetItemImage( pBmpInfo->nItemId, aImage ); 1835cdf0e10cSrcweir } 1836cdf0e10cSrcweir } 1837cdf0e10cSrcweir 1838cdf0e10cSrcweir return 0; 1839cdf0e10cSrcweir } 1840cdf0e10cSrcweir 1841cdf0e10cSrcweir //#58425# Symbole auf einer Linie (z.B. StarChart) 1842cdf0e10cSrcweir //Handler f�r Menuebutton 1843cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, GraphicHdl_Impl, MenuButton *, pButton ) 1844cdf0e10cSrcweir { 1845cdf0e10cSrcweir sal_uInt16 nItemId = pButton->GetCurItemId(); 1846cdf0e10cSrcweir const Graphic* pGraphic = 0; 1847cdf0e10cSrcweir Graphic aGraphic; 1848cdf0e10cSrcweir String aGrfName; 1849cdf0e10cSrcweir sal_Bool bResetSize = sal_False; 1850cdf0e10cSrcweir sal_Bool bEnable=sal_True; 1851cdf0e10cSrcweir long nPreviousSymbolType = nSymbolType; 1852cdf0e10cSrcweir 1853cdf0e10cSrcweir if(nItemId >= MN_GALLERY_ENTRY) 1854cdf0e10cSrcweir { 1855cdf0e10cSrcweir if( (nItemId-MN_GALLERY_ENTRY) >= nNumMenuGalleryItems) 1856cdf0e10cSrcweir { 1857cdf0e10cSrcweir nSymbolType=nItemId-MN_GALLERY_ENTRY-nNumMenuGalleryItems; //Index der Liste 1858cdf0e10cSrcweir } 1859cdf0e10cSrcweir else 1860cdf0e10cSrcweir { 1861cdf0e10cSrcweir nSymbolType=SVX_SYMBOLTYPE_BRUSHITEM; 1862cdf0e10cSrcweir bResetSize = sal_True; 1863cdf0e10cSrcweir } 1864cdf0e10cSrcweir SvxBmpItemInfo* pInfo = (SvxBmpItemInfo*)aGrfBrushItems.GetObject(nItemId - MN_GALLERY_ENTRY); 1865cdf0e10cSrcweir pGraphic = pInfo->pBrushItem->GetGraphic(); 1866cdf0e10cSrcweir } 1867cdf0e10cSrcweir else switch(nItemId) 1868cdf0e10cSrcweir { 1869cdf0e10cSrcweir case MN_SYMBOLS_AUTO: 1870cdf0e10cSrcweir { 1871cdf0e10cSrcweir pGraphic=&aAutoSymbolGraphic; 1872cdf0e10cSrcweir aAutoSymbolGraphic.SetPrefSize( Size(253,253) ); 1873cdf0e10cSrcweir nSymbolType=SVX_SYMBOLTYPE_AUTO; 1874cdf0e10cSrcweir } 1875cdf0e10cSrcweir break; 1876cdf0e10cSrcweir 1877cdf0e10cSrcweir case MN_SYMBOLS_NONE: 1878cdf0e10cSrcweir { 1879cdf0e10cSrcweir nSymbolType=SVX_SYMBOLTYPE_NONE; 1880cdf0e10cSrcweir pGraphic=NULL; 1881cdf0e10cSrcweir bEnable=sal_False; 1882cdf0e10cSrcweir } 1883cdf0e10cSrcweir break; 1884cdf0e10cSrcweir default: 1885cdf0e10cSrcweir { 1886cdf0e10cSrcweir SvxOpenGraphicDialog aGrfDlg(CUI_RES(RID_STR_EDIT_GRAPHIC)); 1887cdf0e10cSrcweir aGrfDlg.EnableLink(sal_False); 1888cdf0e10cSrcweir aGrfDlg.AsLink(sal_False); 1889cdf0e10cSrcweir if( !aGrfDlg.Execute() ) 1890cdf0e10cSrcweir { 1891cdf0e10cSrcweir // ausgewaehlten Filter merken 1892cdf0e10cSrcweir aGrfName = aGrfDlg.GetPath(); 1893cdf0e10cSrcweir if( !aGrfDlg.GetGraphic(aGraphic) ) 1894cdf0e10cSrcweir { 1895cdf0e10cSrcweir nSymbolType=SVX_SYMBOLTYPE_BRUSHITEM; 1896cdf0e10cSrcweir pGraphic = &aGraphic; 1897cdf0e10cSrcweir bResetSize = sal_True; 1898cdf0e10cSrcweir } 1899cdf0e10cSrcweir } 1900cdf0e10cSrcweir if( !pGraphic ) 1901cdf0e10cSrcweir return 0; 1902cdf0e10cSrcweir } 1903cdf0e10cSrcweir break; 1904cdf0e10cSrcweir } 1905cdf0e10cSrcweir 1906cdf0e10cSrcweir if(pGraphic) 1907cdf0e10cSrcweir { 1908cdf0e10cSrcweir Size aSize = SvxNumberFormat::GetGraphicSizeMM100(pGraphic); 1909cdf0e10cSrcweir aSize = OutputDevice::LogicToLogic(aSize, MAP_100TH_MM, (MapUnit)ePoolUnit); 1910cdf0e10cSrcweir aSymbolGraphic=*pGraphic; 1911cdf0e10cSrcweir if( bResetSize ) 1912cdf0e10cSrcweir { 1913cdf0e10cSrcweir aSymbolSize=aSize; 1914cdf0e10cSrcweir } 1915cdf0e10cSrcweir else if( nPreviousSymbolType == SVX_SYMBOLTYPE_BRUSHITEM ) 1916cdf0e10cSrcweir { //#i31097# Data Point Symbol size changes when a different symbol is choosen(maoyg) 1917cdf0e10cSrcweir if( aSymbolSize.Width() != aSymbolSize.Height() ) 1918cdf0e10cSrcweir { 1919cdf0e10cSrcweir aSize.setWidth( (long)( aSymbolSize.Width() + aSymbolSize.Height() )/2 ); 1920cdf0e10cSrcweir aSize.setHeight( (long)( aSymbolSize.Width() + aSymbolSize.Height() )/2 ); 1921cdf0e10cSrcweir aSymbolSize = aSize; 1922cdf0e10cSrcweir } 1923cdf0e10cSrcweir } 1924cdf0e10cSrcweir aCtlPreview.SetSymbol(&aSymbolGraphic,aSymbolSize); 1925cdf0e10cSrcweir } 1926cdf0e10cSrcweir else 1927cdf0e10cSrcweir { 1928cdf0e10cSrcweir aSymbolGraphic=Graphic(); 1929cdf0e10cSrcweir aCtlPreview.SetSymbol(NULL,aSymbolSize); 1930cdf0e10cSrcweir bEnable=sal_False; 1931cdf0e10cSrcweir } 1932cdf0e10cSrcweir aSymbolLastSize=aSymbolSize; 1933cdf0e10cSrcweir SetMetricValue(aSymbolWidthMF, aSymbolSize.Width(), ePoolUnit); 1934cdf0e10cSrcweir SetMetricValue(aSymbolHeightMF, aSymbolSize.Height(), ePoolUnit); 1935cdf0e10cSrcweir aSymbolRatioCB.Enable(bEnable); 1936cdf0e10cSrcweir aSymbolHeightFT.Enable(bEnable); 1937cdf0e10cSrcweir aSymbolWidthFT.Enable(bEnable); 1938cdf0e10cSrcweir aSymbolWidthMF.Enable(bEnable); 1939cdf0e10cSrcweir aSymbolHeightMF.Enable(bEnable); 1940cdf0e10cSrcweir aCtlPreview.Invalidate(); 1941cdf0e10cSrcweir 1942cdf0e10cSrcweir return 0; 1943cdf0e10cSrcweir } 1944cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, SizeHdl_Impl, MetricField *, pField) 1945cdf0e10cSrcweir { 1946cdf0e10cSrcweir bNewSize=true; 1947cdf0e10cSrcweir sal_Bool bWidth = (sal_Bool)(pField == &aSymbolWidthMF); 1948cdf0e10cSrcweir bLastWidthModified = bWidth; 1949cdf0e10cSrcweir sal_Bool bRatio = aSymbolRatioCB.IsChecked(); 1950cdf0e10cSrcweir long nWidthVal = static_cast<long>(aSymbolWidthMF.Denormalize(aSymbolWidthMF.GetValue(FUNIT_100TH_MM))); 1951cdf0e10cSrcweir long nHeightVal= static_cast<long>(aSymbolHeightMF.Denormalize(aSymbolHeightMF.GetValue(FUNIT_100TH_MM))); 1952cdf0e10cSrcweir nWidthVal = OutputDevice::LogicToLogic(nWidthVal,MAP_100TH_MM,(MapUnit)ePoolUnit ); 1953cdf0e10cSrcweir nHeightVal = OutputDevice::LogicToLogic(nHeightVal,MAP_100TH_MM,(MapUnit)ePoolUnit); 1954cdf0e10cSrcweir aSymbolSize=Size(nWidthVal,nHeightVal); 1955cdf0e10cSrcweir double fSizeRatio = (double)1; 1956cdf0e10cSrcweir 1957cdf0e10cSrcweir if(bRatio) 1958cdf0e10cSrcweir { 1959cdf0e10cSrcweir if (aSymbolLastSize.Height() && aSymbolLastSize.Width()) 1960cdf0e10cSrcweir fSizeRatio = (double)aSymbolLastSize.Width() / aSymbolLastSize.Height(); 1961cdf0e10cSrcweir } 1962cdf0e10cSrcweir 1963cdf0e10cSrcweir //Size aSymbolSize(aSymbolLastSize); 1964cdf0e10cSrcweir 1965cdf0e10cSrcweir if(bWidth) 1966cdf0e10cSrcweir { 1967cdf0e10cSrcweir long nDelta = nWidthVal - aSymbolLastSize.Width(); 1968cdf0e10cSrcweir aSymbolSize.Width() = nWidthVal; 1969cdf0e10cSrcweir if (bRatio) 1970cdf0e10cSrcweir { 1971cdf0e10cSrcweir aSymbolSize.Height() = aSymbolLastSize.Height() + (long)((double)nDelta / fSizeRatio); 1972cdf0e10cSrcweir aSymbolSize.Height() = OutputDevice::LogicToLogic( aSymbolSize.Height(),(MapUnit)ePoolUnit, MAP_100TH_MM ); 1973cdf0e10cSrcweir aSymbolHeightMF.SetUserValue(aSymbolHeightMF.Normalize(aSymbolSize.Height()), FUNIT_100TH_MM); 1974cdf0e10cSrcweir } 1975cdf0e10cSrcweir } 1976cdf0e10cSrcweir else 1977cdf0e10cSrcweir { 1978cdf0e10cSrcweir long nDelta = nHeightVal - aSymbolLastSize.Height(); 1979cdf0e10cSrcweir aSymbolSize.Height() = nHeightVal; 1980cdf0e10cSrcweir if (bRatio) 1981cdf0e10cSrcweir { 1982cdf0e10cSrcweir aSymbolSize.Width() = aSymbolLastSize.Width() + (long)((double)nDelta * fSizeRatio); 1983cdf0e10cSrcweir aSymbolSize.Width() = OutputDevice::LogicToLogic( aSymbolSize.Width(), 1984cdf0e10cSrcweir (MapUnit)ePoolUnit, MAP_100TH_MM ); 1985cdf0e10cSrcweir aSymbolWidthMF.SetUserValue(aSymbolWidthMF.Normalize(aSymbolSize.Width()), FUNIT_100TH_MM); 1986cdf0e10cSrcweir } 1987cdf0e10cSrcweir } 1988cdf0e10cSrcweir aCtlPreview.ResizeSymbol(aSymbolSize); 1989cdf0e10cSrcweir aSymbolLastSize=aSymbolSize; 1990cdf0e10cSrcweir return 0; 1991cdf0e10cSrcweir } 1992cdf0e10cSrcweir IMPL_LINK( SvxLineTabPage, RatioHdl_Impl, CheckBox *, pBox ) 1993cdf0e10cSrcweir { 1994cdf0e10cSrcweir if (pBox->IsChecked()) 1995cdf0e10cSrcweir { 1996cdf0e10cSrcweir if (bLastWidthModified) 1997cdf0e10cSrcweir SizeHdl_Impl(&aSymbolWidthMF); 1998cdf0e10cSrcweir else 1999cdf0e10cSrcweir SizeHdl_Impl(&aSymbolHeightMF); 2000cdf0e10cSrcweir } 2001cdf0e10cSrcweir return 0; 2002cdf0e10cSrcweir } 2003cdf0e10cSrcweir 2004cdf0e10cSrcweir 2005cdf0e10cSrcweir void SvxLineTabPage::DataChanged( const DataChangedEvent& rDCEvt ) 2006cdf0e10cSrcweir { 2007cdf0e10cSrcweir SvxTabPage::DataChanged( rDCEvt ); 2008cdf0e10cSrcweir 2009cdf0e10cSrcweir if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) 2010cdf0e10cSrcweir { 2011cdf0e10cSrcweir FillListboxes(); 2012cdf0e10cSrcweir } 2013cdf0e10cSrcweir } 2014cdf0e10cSrcweir 2015cdf0e10cSrcweir void SvxLineTabPage::PageCreated (SfxAllItemSet aSet) //add CHINA001 2016cdf0e10cSrcweir { 2017cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pColorTabItem,SvxColorTableItem,SID_COLOR_TABLE,sal_False); 2018cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pDashListItem,SvxDashListItem,SID_DASH_LIST,sal_False); 2019cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pLineEndListItem,SvxLineEndListItem,SID_LINEEND_LIST,sal_False); 2020cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False); 2021cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False); 2022cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pSdrObjListItem,OfaPtrItem,SID_OBJECT_LIST,sal_False); 2023cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pSymbolAttrItem,SfxTabDialogItem,SID_ATTR_SET,sal_False); 2024cdf0e10cSrcweir SFX_ITEMSET_ARG (&aSet,pGraphicItem,SvxGraphicItem,SID_GRAPHIC,sal_False); 2025cdf0e10cSrcweir 2026cdf0e10cSrcweir if (pColorTabItem) 2027cdf0e10cSrcweir SetColorTable(pColorTabItem->GetColorTable()); 2028cdf0e10cSrcweir if (pDashListItem) 2029cdf0e10cSrcweir SetDashList(pDashListItem->GetDashList()); 2030cdf0e10cSrcweir if (pLineEndListItem) 2031cdf0e10cSrcweir SetLineEndList(pLineEndListItem->GetLineEndList()); 2032cdf0e10cSrcweir if (pPageTypeItem) 2033cdf0e10cSrcweir SetPageType(pPageTypeItem->GetValue()); 2034cdf0e10cSrcweir if (pDlgTypeItem) 2035cdf0e10cSrcweir SetDlgType(pDlgTypeItem->GetValue()); 2036cdf0e10cSrcweir Construct(); 2037cdf0e10cSrcweir 2038cdf0e10cSrcweir if(pSdrObjListItem) //symbols 2039cdf0e10cSrcweir { 2040cdf0e10cSrcweir ShowSymbolControls(sal_True); 2041cdf0e10cSrcweir pSymbolList = static_cast<SdrObjList*>(pSdrObjListItem->GetValue()); 2042cdf0e10cSrcweir if (pSymbolAttrItem) 2043cdf0e10cSrcweir pSymbolAttr = new SfxItemSet(pSymbolAttrItem->GetItemSet()); 2044cdf0e10cSrcweir if(pGraphicItem) 2045cdf0e10cSrcweir aAutoSymbolGraphic = pGraphicItem->GetGraphic(); 2046cdf0e10cSrcweir } 2047cdf0e10cSrcweir } 2048