Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include <editeng/sizeitem.hxx>
30 : : #include <tools/shl.hxx>
31 : : #include <tools/urlobj.hxx>
32 : : #include <sfx2/app.hxx>
33 : : #include <sfx2/module.hxx>
34 : :
35 : : #define _SVX_TPLINE_CXX
36 : :
37 : : #include <cuires.hrc>
38 : : #include "tabline.hrc"
39 : : #include "svx/xattr.hxx"
40 : : #include <svx/xpool.hxx>
41 : : #include <svx/xtable.hxx>
42 : : #include "svx/drawitem.hxx"
43 : : #include "cuitabline.hxx"
44 : : #include "dlgname.hxx"
45 : : #include <dialmgr.hxx>
46 : : #include "svx/dlgutil.hxx"
47 : : #include "svx/svxgrahicitem.hxx"
48 : : #include <sfx2/request.hxx>
49 : : #include "svx/ofaitem.hxx"
50 : : #include <svx/svdobj.hxx>
51 : : #include <svx/svdview.hxx>
52 : : #include <svx/svdmodel.hxx>
53 : : #include <svx/numvset.hxx>
54 : : #include <vcl/msgbox.hxx>
55 : : #include <editeng/numitem.hxx>
56 : : #include <editeng/svxenum.hxx>
57 : : #include <sfx2/objsh.hxx>
58 : : #include <editeng/brshitem.hxx>
59 : : #include <svx/gallery.hxx>
60 : : #include <svx/xbitmap.hxx>
61 : : #include <unotools/localfilehelper.hxx>
62 : : #include "paragrph.hrc"
63 : : #include "sfx2/opengrf.hxx"
64 : : #include <svx/dialmgr.hxx>
65 : : #include <svx/dialogs.hrc>
66 : :
67 : : #define MAX_BMP_WIDTH 16
68 : : #define MAX_BMP_HEIGHT 16
69 : :
70 : : // static ----------------------------------------------------------------
71 : :
72 : : static sal_uInt16 pLineRanges[] =
73 : : {
74 : : XATTR_LINETRANSPARENCE,
75 : : XATTR_LINETRANSPARENCE,
76 : : SID_ATTR_LINE_STYLE,
77 : : SID_ATTR_LINE_ENDCENTER,
78 : : 0
79 : : };
80 : :
81 : 0 : SvxLineTabPage::SvxLineTabPage
82 : : (
83 : : Window* pParent,
84 : : const SfxItemSet& rInAttrs
85 : : ) :
86 : 0 : SvxTabPage ( pParent, CUI_RES( RID_SVXPAGE_LINE ), rInAttrs ),
87 [ # # ]: 0 : aFlLine ( this, CUI_RES( FL_LINE ) ),
88 [ # # ]: 0 : aFtLineStyle ( this, CUI_RES( FT_LINE_STYLE ) ),
89 [ # # ]: 0 : aLbLineStyle ( this, CUI_RES( LB_LINE_STYLE ) ),
90 [ # # ]: 0 : aFtColor ( this, CUI_RES( FT_COLOR ) ),
91 [ # # ]: 0 : aLbColor ( this, CUI_RES( LB_COLOR ) ),
92 [ # # ]: 0 : aFtLineWidth ( this, CUI_RES( FT_LINE_WIDTH ) ),
93 [ # # ]: 0 : aMtrLineWidth ( this, CUI_RES( MTR_FLD_LINE_WIDTH ) ),
94 [ # # ]: 0 : aFtTransparent ( this, CUI_RES( FT_TRANSPARENT ) ),
95 [ # # ]: 0 : aMtrTransparent ( this, CUI_RES( MTR_LINE_TRANSPARENT ) ),
96 [ # # ]: 0 : aFlLineEnds ( this, CUI_RES( FL_LINE_ENDS ) ),
97 [ # # ]: 0 : aLbStartStyle ( this, CUI_RES( LB_START_STYLE ) ),
98 [ # # ]: 0 : aMtrStartWidth ( this, CUI_RES( MTR_FLD_START_WIDTH ) ),
99 [ # # ]: 0 : aTsbCenterStart ( this, CUI_RES( TSB_CENTER_START ) ),
100 [ # # ]: 0 : aFtLineEndsStyle ( this, CUI_RES( FT_LINE_ENDS_STYLE ) ),
101 [ # # ]: 0 : aLbEndStyle ( this, CUI_RES( LB_END_STYLE ) ),
102 [ # # ]: 0 : aFtLineEndsWidth ( this, CUI_RES( FT_LINE_ENDS_WIDTH ) ),
103 [ # # ]: 0 : aMtrEndWidth ( this, CUI_RES( MTR_FLD_END_WIDTH ) ),
104 [ # # ]: 0 : aTsbCenterEnd ( this, CUI_RES( TSB_CENTER_END ) ),
105 [ # # ]: 0 : aCbxSynchronize ( this, CUI_RES( CBX_SYNCHRONIZE ) ),
106 [ # # ]: 0 : aFLSeparator ( this, CUI_RES( FL_SEPARATOR ) ),
107 [ # # ]: 0 : aCtlPreview ( this, CUI_RES( CTL_PREVIEW ) ),
108 : :
109 : : // #116827#
110 [ # # ]: 0 : maFLEdgeStyle ( this, CUI_RES( FL_EDGE_STYLE ) ),
111 [ # # ]: 0 : maFTEdgeStyle ( this, CUI_RES( FT_EDGE_STYLE ) ),
112 [ # # ]: 0 : maLBEdgeStyle ( this, CUI_RES( LB_EDGE_STYLE ) ),
113 : :
114 : : pSymbolList(NULL),
115 : : bNewSize(false),
116 : : nNumMenuGalleryItems(0),
117 : : nSymbolType(SVX_SYMBOLTYPE_UNKNOWN), // unknown respectively unchanged
118 : : pSymbolAttr(NULL),
119 : : //#58425# Symbols on a line (e.g. StarChart)
120 [ # # ]: 0 : aFlSymbol ( this, CUI_RES(FL_SYMBOL_FORMAT)),
121 [ # # ]: 0 : aSymbolMB ( this, CUI_RES(MB_SYMBOL_BITMAP)),
122 [ # # ]: 0 : aSymbolWidthFT ( this, CUI_RES(FT_SYMBOL_WIDTH)),
123 [ # # ]: 0 : aSymbolWidthMF ( this, CUI_RES(MF_SYMBOL_WIDTH)),
124 [ # # ]: 0 : aSymbolHeightFT ( this, CUI_RES(FT_SYMBOL_HEIGHT)),
125 [ # # ]: 0 : aSymbolHeightMF ( this, CUI_RES(MF_SYMBOL_HEIGHT)),
126 [ # # ]: 0 : aSymbolRatioCB ( this, CUI_RES(CB_SYMBOL_RATIO)),
127 : :
128 : : bLastWidthModified(sal_False),
129 : : aSymbolLastSize(Size(0,0)),
130 : : bSymbols(sal_False),
131 : :
132 : : rOutAttrs ( rInAttrs ),
133 : : bObjSelected( sal_False ),
134 : :
135 : 0 : pXPool ( (XOutdevItemPool*) rInAttrs.GetPool() ),
136 : : aXLStyle ( XLINE_DASH ),
137 : : aXWidth ( 1 ),
138 : : aXDash ( String(), XDash( XDASH_RECT, 3, 7, 2, 40, 15 ) ),
139 : : aXColor ( String(), COL_LIGHTRED ),
140 : : aXLineAttr ( pXPool ),
141 : 0 : rXLSet ( aXLineAttr.GetItemSet() ),
142 : : pnLineEndListState( 0 ),
143 : : pnDashListState( 0 ),
144 : : pnColorListState( 0 ),
145 [ # # ][ # # ]: 0 : nPageType ( 0 )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
146 : : {
147 [ # # ][ # # ]: 0 : aLbEndStyle.SetAccessibleName(String(CUI_RES(STR_STYLE)));
[ # # ][ # # ]
148 [ # # ][ # # ]: 0 : aLbStartStyle.SetAccessibleName(String(CUI_RES( STR_LB_START_STYLE ) ) );
[ # # ][ # # ]
149 [ # # ][ # # ]: 0 : aMtrStartWidth.SetAccessibleName(String(CUI_RES( STR_MTR_FLD_START_WIDTH ) ) );
[ # # ][ # # ]
150 [ # # ][ # # ]: 0 : aLbEndStyle.SetAccessibleName(String(CUI_RES( STR_LB_END_STYLE ) ) );
[ # # ][ # # ]
151 [ # # ][ # # ]: 0 : aMtrEndWidth.SetAccessibleName(String(CUI_RES( STR_MTR_FLD_END_WIDTH ) ) );
[ # # ][ # # ]
152 [ # # ][ # # ]: 0 : aTsbCenterStart.SetAccessibleName(String(CUI_RES( STR_CENTER_START ) ) );
[ # # ][ # # ]
153 [ # # ][ # # ]: 0 : aTsbCenterEnd.SetAccessibleName(String(CUI_RES( STR_CENTER_END ) ) );
[ # # ][ # # ]
154 : :
155 [ # # ]: 0 : FreeResource();
156 : :
157 [ # # ][ # # ]: 0 : aCtlPreview.SetAccessibleName(String(CUI_RES(STR_EXAMPLE)));
[ # # ][ # # ]
158 : :
159 : : // This Page requires ExchangeSupport
160 : 0 : SetExchangeSupport();
161 : :
162 : : // Metric set
163 [ # # ]: 0 : FieldUnit eFUnit = GetModuleFieldUnit( rInAttrs );
164 : :
165 [ # # # # ]: 0 : switch ( eFUnit )
166 : : {
167 : : case FUNIT_M:
168 : : case FUNIT_KM:
169 : 0 : eFUnit = FUNIT_MM;
170 : : // no break -> we now have mm
171 : : case FUNIT_MM:
172 : 0 : aMtrLineWidth.SetSpinSize( 50 );
173 : 0 : aMtrStartWidth.SetSpinSize( 50 );
174 : 0 : aMtrEndWidth.SetSpinSize( 50 );
175 : 0 : break;
176 : :
177 : : case FUNIT_INCH:
178 : 0 : aMtrLineWidth.SetSpinSize( 2 );
179 : 0 : aMtrStartWidth.SetSpinSize( 2 );
180 : 0 : aMtrEndWidth.SetSpinSize( 2 );
181 : 0 : break;
182 : : default: ;// prevent warning
183 : : }
184 [ # # ]: 0 : SetFieldUnit( aMtrLineWidth, eFUnit );
185 [ # # ]: 0 : SetFieldUnit( aMtrStartWidth, eFUnit );
186 [ # # ]: 0 : SetFieldUnit( aMtrEndWidth, eFUnit );
187 : :
188 : : // determine PoolUnit
189 : 0 : SfxItemPool* pPool = rOutAttrs.GetPool();
190 : : DBG_ASSERT( pPool, "Where is the pool?" );
191 [ # # ]: 0 : ePoolUnit = pPool->GetMetric( SID_ATTR_LINE_WIDTH );
192 : :
193 : : aLbLineStyle.SetSelectHdl(
194 [ # # ]: 0 : LINK( this, SvxLineTabPage, ClickInvisibleHdl_Impl ) );
195 : : aLbColor.SetSelectHdl(
196 [ # # ]: 0 : LINK( this, SvxLineTabPage, ChangePreviewHdl_Impl ) );
197 : : aMtrLineWidth.SetModifyHdl(
198 [ # # ]: 0 : LINK( this, SvxLineTabPage, ChangePreviewHdl_Impl ) );
199 : : aMtrTransparent.SetModifyHdl(
200 [ # # ]: 0 : LINK( this, SvxLineTabPage, ChangeTransparentHdl_Impl ) );
201 : :
202 [ # # ]: 0 : Link aStart = LINK( this, SvxLineTabPage, ChangeStartHdl_Impl );
203 [ # # ]: 0 : Link aEnd = LINK( this, SvxLineTabPage, ChangeEndHdl_Impl );
204 : 0 : aLbStartStyle.SetSelectHdl( aStart );
205 : 0 : aLbEndStyle.SetSelectHdl( aEnd );
206 : 0 : aMtrStartWidth.SetModifyHdl( aStart );
207 : 0 : aMtrEndWidth.SetModifyHdl( aEnd );
208 : 0 : aTsbCenterStart.SetClickHdl( aStart );
209 : 0 : aTsbCenterEnd.SetClickHdl( aEnd );
210 : :
211 : : // #116827#
212 [ # # ]: 0 : Link aEdgeStyle = LINK( this, SvxLineTabPage, ChangeEdgeStyleHdl_Impl );
213 : 0 : maLBEdgeStyle.SetSelectHdl( aEdgeStyle );
214 : :
215 : : // Symbols on a line (eg star charts), MB-handler set
216 [ # # ]: 0 : aSymbolMB.SetSelectHdl(LINK(this, SvxLineTabPage, GraphicHdl_Impl));
217 [ # # ]: 0 : aSymbolMB.SetActivateHdl(LINK(this, SvxLineTabPage, MenuCreateHdl_Impl));
218 [ # # ]: 0 : aSymbolWidthMF.SetModifyHdl(LINK(this, SvxLineTabPage, SizeHdl_Impl));
219 [ # # ]: 0 : aSymbolHeightMF.SetModifyHdl(LINK(this, SvxLineTabPage, SizeHdl_Impl));
220 [ # # ]: 0 : aSymbolRatioCB.SetClickHdl(LINK(this, SvxLineTabPage, RatioHdl_Impl));
221 : :
222 [ # # ]: 0 : aSymbolRatioCB.Check(sal_True);
223 [ # # ]: 0 : ShowSymbolControls(sal_False);
224 : :
225 : 0 : nActLineWidth = -1;
226 : 0 : }
227 : :
228 : 0 : void SvxLineTabPage::ShowSymbolControls(sal_Bool bOn)
229 : : {
230 : : // Symbols on a line (e.g. StarCharts), symbol-enable controls
231 : :
232 : 0 : bSymbols=bOn;
233 : 0 : aSymbolWidthFT.Show(bOn);
234 : 0 : aSymbolWidthMF.Show(bOn);
235 : 0 : aSymbolHeightFT.Show(bOn);
236 : 0 : aSymbolHeightMF.Show(bOn);
237 : 0 : aFlSymbol.Show(bOn);
238 : 0 : aSymbolRatioCB.Show(bOn);
239 : 0 : aSymbolMB.Show(bOn);
240 : 0 : aCtlPreview.ShowSymbol(bOn);
241 : 0 : }
242 : :
243 [ # # ][ # # ]: 0 : SvxLineTabPage::~SvxLineTabPage()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
244 : : {
245 : : // Symbols on a line (e.g. StarCharts), dtor new!
246 : :
247 [ # # ][ # # ]: 0 : delete aSymbolMB.GetPopupMenu()->GetPopupMenu( MN_GALLERY );
[ # # ]
248 : :
249 [ # # ]: 0 : if(pSymbolList)
250 [ # # ][ # # ]: 0 : delete aSymbolMB.GetPopupMenu()->GetPopupMenu( MN_SYMBOLS );
[ # # ]
251 : :
252 [ # # ]: 0 : for ( size_t i = 0, n = aGrfBrushItems.size(); i < n; ++i )
253 : : {
254 : 0 : SvxBmpItemInfo* pInfo = aGrfBrushItems[ i ];
255 [ # # ][ # # ]: 0 : delete pInfo->pBrushItem;
256 : 0 : delete pInfo;
257 : : }
258 [ # # ]: 0 : }
259 : 0 : void SvxLineTabPage::Construct()
260 : : {
261 : : // Color chart
262 : 0 : aLbColor.Fill( pColorList );
263 : 0 : FillListboxes();
264 : 0 : }
265 : :
266 : 0 : void SvxLineTabPage::InitSymbols(MenuButton* pButton)
267 : : {
268 : : // Initialize popup
269 [ # # ]: 0 : if(!pButton->GetPopupMenu()->GetPopupMenu( MN_GALLERY ))
270 : : {
271 : : // Get gallery entries
272 [ # # ]: 0 : GalleryExplorer::FillObjList(GALLERY_THEME_BULLETS, aGrfNames);
273 : :
274 [ # # ][ # # ]: 0 : PopupMenu* pPopup = new PopupMenu;
275 : 0 : rtl::OUString aEmptyStr;
276 : 0 : const rtl::OUString *pUIName = NULL;
277 : 0 : sal_uInt32 i = 0;
278 : 0 : nNumMenuGalleryItems = aGrfNames.size();
279 [ # # ][ # # ]: 0 : for(std::vector<rtl::OUString>::iterator it = aGrfNames.begin(); it != aGrfNames.end(); ++it, ++i)
280 : : {
281 : 0 : pUIName = &(*it);
282 : :
283 : : // Convert URL encodings to UI characters (e.g. %20 for spaces)
284 : 0 : rtl::OUString aPhysicalName;
285 [ # # ][ # # ]: 0 : if (utl::LocalFileHelper::ConvertURLToPhysicalName(*it, aPhysicalName))
286 : : {
287 : 0 : pUIName = &aPhysicalName;
288 : : }
289 : :
290 [ # # ][ # # ]: 0 : SvxBrushItem* pBrushItem = new SvxBrushItem(*it, aEmptyStr, GPOS_AREA, SID_ATTR_BRUSH);
[ # # ][ # # ]
[ # # ][ # # ]
291 [ # # ][ # # ]: 0 : pBrushItem->SetDoneLink(STATIC_LINK(this, SvxLineTabPage, GraphicArrivedHdl_Impl));
292 : :
293 [ # # ]: 0 : SvxBmpItemInfo* pInfo = new SvxBmpItemInfo();
294 : 0 : pInfo->pBrushItem = pBrushItem;
295 : 0 : pInfo->nItemId = (sal_uInt16)(MN_GALLERY_ENTRY + i);
296 [ # # ]: 0 : if ( i < aGrfBrushItems.size() ) {
297 [ # # ][ # # ]: 0 : aGrfBrushItems.insert( aGrfBrushItems.begin() + i, pInfo );
298 : : } else {
299 [ # # ]: 0 : aGrfBrushItems.push_back( pInfo );
300 : : }
301 [ # # ]: 0 : const Graphic* pGraphic = pBrushItem->GetGraphic();
302 : :
303 [ # # ]: 0 : if(pGraphic)
304 : : {
305 [ # # ]: 0 : Bitmap aBitmap(pGraphic->GetBitmap());
306 [ # # ]: 0 : Size aSize(aBitmap.GetSizePixel());
307 [ # # # # ]: 0 : if(aSize.Width() > MAX_BMP_WIDTH ||
[ # # ]
308 : 0 : aSize.Height() > MAX_BMP_HEIGHT)
309 : : {
310 : 0 : sal_Bool bWidth = aSize.Width() > aSize.Height();
311 : : double nScale = bWidth ?
312 : 0 : (double)MAX_BMP_WIDTH / (double)aSize.Width():
313 [ # # ]: 0 : (double)MAX_BMP_HEIGHT / (double)aSize.Height();
314 [ # # ]: 0 : aBitmap.Scale(nScale, nScale);
315 : :
316 : : }
317 [ # # ]: 0 : Image aImage(aBitmap);
318 [ # # ][ # # ]: 0 : pPopup->InsertItem(pInfo->nItemId, *pUIName, aImage );
[ # # ][ # # ]
[ # # ]
319 : : }
320 : : else
321 : : {
322 [ # # ]: 0 : Image aImage;
323 [ # # ][ # # ]: 0 : pPopup->InsertItem(pInfo->nItemId, *pUIName, aImage );
[ # # ][ # # ]
324 : : }
325 : 0 : }
326 [ # # ]: 0 : aSymbolMB.GetPopupMenu()->SetPopupMenu( MN_GALLERY, pPopup );
327 : :
328 [ # # ]: 0 : if(aGrfNames.empty())
329 [ # # ]: 0 : aSymbolMB.GetPopupMenu()->EnableItem(MN_GALLERY, sal_False);
330 : : }
331 : :
332 [ # # ][ # # ]: 0 : if(!pButton->GetPopupMenu()->GetPopupMenu( MN_SYMBOLS ) && pSymbolList)
[ # # ]
333 : : {
334 [ # # ]: 0 : VirtualDevice aVDev;
335 [ # # ][ # # ]: 0 : aVDev.SetMapMode(MapMode(MAP_100TH_MM));
[ # # ]
336 [ # # ][ # # ]: 0 : SdrModel* pModel = new SdrModel(NULL, NULL, LOADREFCOUNTS);
337 [ # # ]: 0 : pModel->GetItemPool().FreezeIdRanges();
338 : : // Page
339 [ # # ][ # # ]: 0 : SdrPage* pPage = new SdrPage( *pModel, sal_False );
340 [ # # ]: 0 : pPage->SetSize(Size(1000,1000));
341 [ # # ]: 0 : pModel->InsertPage( pPage, 0 );
342 : : // 3D View
343 [ # # ][ # # ]: 0 : SdrView* pView = new SdrView( pModel, &aVDev );
344 [ # # ]: 0 : pView->hideMarkHandles();
345 [ # # ]: 0 : pView->ShowSdrPage(pPage);
346 : :
347 [ # # ][ # # ]: 0 : PopupMenu* pPopup = new PopupMenu;
348 : 0 : rtl::OUString aEmptyStr;
349 : :
350 : : // Generate invisible square to give all symbols a
351 : : // bitmap size, which is independent from specific glyph
352 [ # # ]: 0 : SdrObject *pInvisibleSquare=pSymbolList->GetObj(0);
353 [ # # ]: 0 : pInvisibleSquare=pInvisibleSquare->Clone();
354 [ # # ]: 0 : pPage->NbcInsertObject(pInvisibleSquare);
355 [ # # ][ # # ]: 0 : pInvisibleSquare->SetMergedItem(XFillTransparenceItem(100));
[ # # ]
356 [ # # ][ # # ]: 0 : pInvisibleSquare->SetMergedItem(XLineTransparenceItem(100));
[ # # ]
357 : :
358 : 0 : for(long i=0;; ++i)
359 : : {
360 [ # # ]: 0 : SdrObject *pObj=pSymbolList->GetObj(i);
361 [ # # ]: 0 : if(pObj==NULL)
362 : : break;
363 [ # # ]: 0 : pObj=pObj->Clone();
364 [ # # ]: 0 : aGrfNames.push_back(aEmptyStr);
365 [ # # ]: 0 : pPage->NbcInsertObject(pObj);
366 [ # # ]: 0 : if(pSymbolAttr)
367 : : {
368 [ # # ]: 0 : pObj->SetMergedItemSet(*pSymbolAttr);
369 : : }
370 : : else
371 : : {
372 [ # # ]: 0 : pObj->SetMergedItemSet(rOutAttrs);
373 : : }
374 [ # # ]: 0 : pView->MarkAll();
375 [ # # ]: 0 : Bitmap aBitmap(pView->GetAllMarkedBitmap());
376 [ # # ]: 0 : GDIMetaFile aMeta(pView->GetAllMarkedMetaFile());
377 [ # # ]: 0 : pView->UnmarkAll();
378 [ # # ]: 0 : pObj=pPage->RemoveObject(1);
379 [ # # ]: 0 : SdrObject::Free(pObj);
380 : :
381 [ # # ][ # # ]: 0 : SvxBrushItem* pBrushItem = new SvxBrushItem(Graphic(aMeta), GPOS_AREA, SID_ATTR_BRUSH);
[ # # ][ # # ]
382 [ # # ][ # # ]: 0 : pBrushItem->SetDoneLink(STATIC_LINK(this, SvxLineTabPage, GraphicArrivedHdl_Impl));
383 : :
384 [ # # ]: 0 : SvxBmpItemInfo* pInfo = new SvxBmpItemInfo();
385 : 0 : pInfo->pBrushItem = pBrushItem;
386 : 0 : pInfo->nItemId = (sal_uInt16)(MN_GALLERY_ENTRY + i + nNumMenuGalleryItems);
387 [ # # ]: 0 : if ( (size_t)(nNumMenuGalleryItems + i) < aGrfBrushItems.size() ) {
388 [ # # ][ # # ]: 0 : aGrfBrushItems.insert( aGrfBrushItems.begin() + nNumMenuGalleryItems + i, pInfo );
[ # # ]
389 : : } else {
390 [ # # ]: 0 : aGrfBrushItems.push_back( pInfo );
391 : : }
392 : :
393 [ # # ]: 0 : Size aSize(aBitmap.GetSizePixel());
394 [ # # ][ # # ]: 0 : if(aSize.Width() > MAX_BMP_WIDTH || aSize.Height() > MAX_BMP_HEIGHT)
[ # # ]
395 : : {
396 : 0 : sal_Bool bWidth = aSize.Width() > aSize.Height();
397 : : double nScale = bWidth ?
398 : 0 : (double)MAX_BMP_WIDTH / (double)aSize.Width():
399 [ # # ]: 0 : (double)MAX_BMP_HEIGHT / (double)aSize.Height();
400 [ # # ]: 0 : aBitmap.Scale(nScale, nScale);
401 : : }
402 [ # # ]: 0 : Image aImage(aBitmap);
403 [ # # ][ # # ]: 0 : pPopup->InsertItem(pInfo->nItemId,aEmptyStr,aImage);
[ # # ]
404 [ # # ][ # # ]: 0 : }
[ # # ]
405 [ # # ]: 0 : pInvisibleSquare=pPage->RemoveObject(0);
406 [ # # ]: 0 : SdrObject::Free(pInvisibleSquare);
407 : :
408 [ # # ]: 0 : aSymbolMB.GetPopupMenu()->SetPopupMenu( MN_SYMBOLS, pPopup );
409 : :
410 [ # # ]: 0 : if(aGrfNames.empty())
411 [ # # ]: 0 : aSymbolMB.GetPopupMenu()->EnableItem(MN_SYMBOLS, sal_False);
412 : :
413 [ # # ][ # # ]: 0 : delete pView;
414 [ # # ][ # # ]: 0 : delete pModel;
[ # # ]
415 : : }
416 : 0 : }
417 : :
418 : 0 : void SvxLineTabPage::SymbolSelected(MenuButton* pButton)
419 : : {
420 : 0 : sal_uInt16 nItemId = pButton->GetCurItemId();
421 : 0 : const Graphic* pGraphic = 0;
422 [ # # ]: 0 : Graphic aGraphic;
423 : 0 : bool bResetSize = false;
424 : 0 : bool bEnable = true;
425 : 0 : long nPreviousSymbolType = nSymbolType;
426 : :
427 [ # # ]: 0 : if(nItemId >= MN_GALLERY_ENTRY)
428 : : {
429 [ # # ]: 0 : if( (nItemId-MN_GALLERY_ENTRY) >= nNumMenuGalleryItems)
430 : : {
431 : 0 : nSymbolType=nItemId-MN_GALLERY_ENTRY-nNumMenuGalleryItems; // List's index
432 : : }
433 : : else
434 : : {
435 : 0 : nSymbolType=SVX_SYMBOLTYPE_BRUSHITEM;
436 : 0 : bResetSize = true;
437 : : }
438 : 0 : SvxBmpItemInfo* pInfo = aGrfBrushItems[ nItemId - MN_GALLERY_ENTRY ];
439 [ # # ]: 0 : pGraphic = pInfo->pBrushItem->GetGraphic();
440 : : }
441 [ # # # ]: 0 : else switch(nItemId)
442 : : {
443 : : case MN_SYMBOLS_AUTO:
444 : : {
445 : 0 : pGraphic=&aAutoSymbolGraphic;
446 [ # # ]: 0 : aAutoSymbolGraphic.SetPrefSize( Size(253,253) );
447 : 0 : nSymbolType=SVX_SYMBOLTYPE_AUTO;
448 : : }
449 : 0 : break;
450 : :
451 : : case MN_SYMBOLS_NONE:
452 : : {
453 : 0 : nSymbolType=SVX_SYMBOLTYPE_NONE;
454 : 0 : pGraphic=NULL;
455 : 0 : bEnable = false;
456 : : }
457 : 0 : break;
458 : : default:
459 : : {
460 [ # # ][ # # ]: 0 : SvxOpenGraphicDialog aGrfDlg(CUI_RES(RID_STR_EDIT_GRAPHIC));
[ # # ][ # # ]
461 [ # # ]: 0 : aGrfDlg.EnableLink(false);
462 [ # # ]: 0 : aGrfDlg.AsLink(false);
463 [ # # ][ # # ]: 0 : if( !aGrfDlg.Execute() )
464 : : {
465 : : // Remember selected filters
466 [ # # ][ # # ]: 0 : if( !aGrfDlg.GetGraphic(aGraphic) )
467 : : {
468 : 0 : nSymbolType=SVX_SYMBOLTYPE_BRUSHITEM;
469 : 0 : pGraphic = &aGraphic;
470 : 0 : bResetSize = true;
471 : : }
472 : : }
473 [ # # ]: 0 : if( !pGraphic )
474 [ # # ][ # # ]: 0 : return;
475 : : }
476 : 0 : break;
477 : : }
478 : :
479 [ # # ]: 0 : if(pGraphic)
480 : : {
481 [ # # ]: 0 : Size aSize = SvxNumberFormat::GetGraphicSizeMM100(pGraphic);
482 [ # # ][ # # ]: 0 : aSize = OutputDevice::LogicToLogic(aSize, MAP_100TH_MM, (MapUnit)ePoolUnit);
[ # # ][ # # ]
[ # # ]
483 [ # # ]: 0 : aSymbolGraphic=*pGraphic;
484 [ # # ]: 0 : if( bResetSize )
485 : : {
486 : 0 : aSymbolSize=aSize;
487 : : }
488 [ # # ]: 0 : else if( nPreviousSymbolType == SVX_SYMBOLTYPE_BRUSHITEM )
489 : : { //#i31097# Data Point Symbol size changes when a different symbol is choosen(maoyg)
490 [ # # ]: 0 : if( aSymbolSize.Width() != aSymbolSize.Height() )
491 : : {
492 : 0 : aSize.setWidth( (long)( aSymbolSize.Width() + aSymbolSize.Height() )/2 );
493 : 0 : aSize.setHeight( (long)( aSymbolSize.Width() + aSymbolSize.Height() )/2 );
494 : 0 : aSymbolSize = aSize;
495 : : }
496 : : }
497 [ # # ]: 0 : aCtlPreview.SetSymbol(&aSymbolGraphic,aSymbolSize);
498 : : }
499 : : else
500 : : {
501 [ # # ][ # # ]: 0 : aSymbolGraphic=Graphic();
[ # # ]
502 [ # # ]: 0 : aCtlPreview.SetSymbol(NULL,aSymbolSize);
503 : 0 : bEnable = false;
504 : : }
505 : 0 : aSymbolLastSize=aSymbolSize;
506 [ # # ]: 0 : SetMetricValue(aSymbolWidthMF, aSymbolSize.Width(), ePoolUnit);
507 [ # # ]: 0 : SetMetricValue(aSymbolHeightMF, aSymbolSize.Height(), ePoolUnit);
508 [ # # ]: 0 : aSymbolRatioCB.Enable(bEnable);
509 [ # # ]: 0 : aSymbolHeightFT.Enable(bEnable);
510 [ # # ]: 0 : aSymbolWidthFT.Enable(bEnable);
511 [ # # ]: 0 : aSymbolWidthMF.Enable(bEnable);
512 [ # # ]: 0 : aSymbolHeightMF.Enable(bEnable);
513 [ # # ][ # # ]: 0 : aCtlPreview.Invalidate();
[ # # ]
514 : : }
515 : :
516 : 0 : void SvxLineTabPage::FillListboxes()
517 : : {
518 : : // Line styles
519 [ # # ]: 0 : sal_uInt16 nOldSelect = aLbLineStyle.GetSelectEntryPos();
520 [ # # ]: 0 : aLbLineStyle.FillStyles();
521 [ # # ]: 0 : aLbLineStyle.Fill( pDashList );
522 [ # # ]: 0 : aLbLineStyle.SelectEntryPos( nOldSelect );
523 : :
524 : : // Line end style
525 [ # # ][ # # ]: 0 : String sNone( SVX_RES( RID_SVXSTR_NONE ) );
526 [ # # ]: 0 : nOldSelect = aLbStartStyle.GetSelectEntryPos();
527 [ # # ]: 0 : aLbStartStyle.Clear();
528 [ # # ]: 0 : aLbStartStyle.InsertEntry( sNone );
529 [ # # ]: 0 : aLbStartStyle.Fill( pLineEndList );
530 [ # # ]: 0 : aLbStartStyle.SelectEntryPos( nOldSelect );
531 [ # # ]: 0 : nOldSelect = aLbEndStyle.GetSelectEntryPos();
532 [ # # ]: 0 : aLbEndStyle.Clear();
533 [ # # ]: 0 : aLbEndStyle.InsertEntry( sNone );
534 [ # # ]: 0 : aLbEndStyle.Fill( pLineEndList, sal_False );
535 [ # # ][ # # ]: 0 : aLbEndStyle.SelectEntryPos( nOldSelect );
536 : 0 : }
537 : :
538 : : // -----------------------------------------------------------------------
539 : :
540 : 0 : void SvxLineTabPage::ActivatePage( const SfxItemSet& rSet )
541 : : {
542 : 0 : SFX_ITEMSET_ARG (&rSet,pPageTypeItem,CntUInt16Item,SID_PAGE_TYPE,sal_False);
543 [ # # ]: 0 : if (pPageTypeItem)
544 : 0 : SetPageType(pPageTypeItem->GetValue());
545 [ # # ][ # # ]: 0 : if( nDlgType == 0 && pDashList.is() )
[ # # ]
546 : : {
547 : : sal_uInt16 nPos;
548 : : sal_uInt16 nCount;
549 : :
550 : : // Dash list
551 [ # # ][ # # ]: 0 : if( ( *pnDashListState & CT_MODIFIED ) ||
552 : : ( *pnDashListState & CT_CHANGED ) )
553 : : {
554 [ # # ]: 0 : if( *pnDashListState & CT_CHANGED )
555 [ # # ]: 0 : pDashList = ( (SvxLineTabDialog*) GetParentDialog() )->
556 [ # # ][ # # ]: 0 : GetNewDashList();
557 : 0 : *pnDashListState = CT_NONE;
558 : :
559 : : // Style list
560 [ # # ]: 0 : nPos = aLbLineStyle.GetSelectEntryPos();
561 : :
562 [ # # ]: 0 : aLbLineStyle.Clear();
563 : : aLbLineStyle.InsertEntry(
564 [ # # ][ # # ]: 0 : SVX_RESSTR( RID_SVXSTR_INVISIBLE ) );
[ # # ][ # # ]
[ # # ]
565 : : aLbLineStyle.InsertEntry(
566 [ # # ][ # # ]: 0 : SVX_RESSTR( RID_SVXSTR_SOLID ) );
[ # # ][ # # ]
[ # # ]
567 [ # # ]: 0 : aLbLineStyle.Fill( pDashList );
568 [ # # ]: 0 : nCount = aLbLineStyle.GetEntryCount();
569 : :
570 [ # # ]: 0 : if ( nCount == 0 )
571 : : ; // This case should never occur
572 [ # # ]: 0 : else if( nCount <= nPos )
573 [ # # ]: 0 : aLbLineStyle.SelectEntryPos( 0 );
574 : : else
575 [ # # ]: 0 : aLbLineStyle.SelectEntryPos( nPos );
576 : : // SelectStyleHdl_Impl( this );
577 : : }
578 : :
579 [ # # ][ # # ]: 0 : INetURLObject aDashURL( pDashList->GetPath() );
580 : :
581 [ # # ][ # # ]: 0 : aDashURL.Append( pDashList->GetName() );
582 : : DBG_ASSERT( aDashURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
583 : : // LineEnd list
584 [ # # ][ # # ]: 0 : if( ( *pnLineEndListState & CT_MODIFIED ) ||
585 : : ( *pnLineEndListState & CT_CHANGED ) )
586 : : {
587 [ # # ]: 0 : if( *pnLineEndListState & CT_CHANGED )
588 [ # # ]: 0 : pLineEndList = ( (SvxLineTabDialog*) GetParentDialog() )->
589 [ # # ][ # # ]: 0 : GetNewLineEndList();
590 : 0 : *pnLineEndListState = CT_NONE;
591 : :
592 [ # # ]: 0 : nPos = aLbLineStyle.GetSelectEntryPos();
593 [ # # ][ # # ]: 0 : String sNone( SVX_RES( RID_SVXSTR_NONE ) );
594 [ # # ]: 0 : aLbStartStyle.Clear();
595 [ # # ]: 0 : aLbStartStyle.InsertEntry( sNone );
596 : :
597 [ # # ]: 0 : aLbStartStyle.Fill( pLineEndList );
598 [ # # ]: 0 : nCount = aLbStartStyle.GetEntryCount();
599 [ # # ]: 0 : if( nCount == 0 )
600 : : ; // This case should never occur
601 [ # # ]: 0 : else if( nCount <= nPos )
602 [ # # ]: 0 : aLbStartStyle.SelectEntryPos( 0 );
603 : : else
604 [ # # ]: 0 : aLbStartStyle.SelectEntryPos( nPos );
605 : :
606 [ # # ]: 0 : aLbEndStyle.Clear();
607 [ # # ]: 0 : aLbEndStyle.InsertEntry( sNone );
608 : :
609 [ # # ]: 0 : aLbEndStyle.Fill( pLineEndList, sal_False );
610 [ # # ]: 0 : nCount = aLbEndStyle.GetEntryCount();
611 : :
612 [ # # ]: 0 : if( nCount == 0 )
613 : : ; // This case should never occur
614 [ # # ]: 0 : else if( nCount <= nPos )
615 [ # # ]: 0 : aLbEndStyle.SelectEntryPos( 0 );
616 : : else
617 [ # # ][ # # ]: 0 : aLbEndStyle.SelectEntryPos( nPos );
618 : : }
619 [ # # ][ # # ]: 0 : INetURLObject aLineURL( pLineEndList->GetPath() );
620 : :
621 [ # # ][ # # ]: 0 : aLineURL.Append( pLineEndList->GetName() );
622 : : DBG_ASSERT( aLineURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
623 : : // Evaluate if another TabPage set another fill type
624 [ # # ][ # # ]: 0 : if( aLbLineStyle.GetSelectEntryPos() != 0 )
625 : : {
626 [ # # ]: 0 : if( nPageType == 2 ) // 1
627 : : {
628 [ # # ]: 0 : aLbLineStyle.SelectEntryPos( *pPosDashLb + 2 ); // +2 due to SOLID and INVLISIBLE
629 [ # # ]: 0 : ChangePreviewHdl_Impl( this );
630 : : }
631 [ # # ]: 0 : if( nPageType == 3 )
632 : : {
633 [ # # ]: 0 : aLbStartStyle.SelectEntryPos( *pPosLineEndLb + 1 );// +1 due to SOLID
634 [ # # ]: 0 : aLbEndStyle.SelectEntryPos( *pPosLineEndLb + 1 );// +1 due to SOLID
635 [ # # ]: 0 : ChangePreviewHdl_Impl( this );
636 : : }
637 : : }
638 : :
639 : : // ColorList
640 [ # # ]: 0 : if( *pnColorListState )
641 : : {
642 [ # # ]: 0 : if( *pnColorListState & CT_CHANGED )
643 [ # # ][ # # ]: 0 : pColorList = ( (SvxLineTabDialog*) GetParentDialog() )->GetNewColorList();
[ # # ]
644 : : // aLbColor
645 [ # # ]: 0 : sal_uInt16 nColorPos = aLbColor.GetSelectEntryPos();
646 [ # # ]: 0 : aLbColor.Clear();
647 [ # # ]: 0 : aLbColor.Fill( pColorList );
648 [ # # ]: 0 : nCount = aLbColor.GetEntryCount();
649 [ # # ]: 0 : if( nCount == 0 )
650 : : ; // This case should never occur
651 [ # # ]: 0 : else if( nCount <= nColorPos )
652 [ # # ]: 0 : aLbColor.SelectEntryPos( 0 );
653 : : else
654 [ # # ]: 0 : aLbColor.SelectEntryPos( nColorPos );
655 : :
656 [ # # ]: 0 : ChangePreviewHdl_Impl( this );
657 : : }
658 : :
659 [ # # ][ # # ]: 0 : nPageType = 0;
660 : : }
661 : : // Page does not yet exist in the ctor, that's why we do it here!
662 : :
663 [ # # ][ # # ]: 0 : else if ( nDlgType == 1100 ||
664 : : nDlgType == 1101 )
665 : : {
666 : 0 : aFtLineEndsStyle.Hide();
667 : 0 : aFtLineEndsWidth.Hide();
668 : 0 : aLbStartStyle.Hide();
669 : 0 : aMtrStartWidth.Hide();
670 : 0 : aTsbCenterStart.Hide();
671 : 0 : aLbEndStyle.Hide();
672 : 0 : aMtrEndWidth.Hide();
673 : 0 : aTsbCenterEnd.Hide();
674 : 0 : aCbxSynchronize.Hide();
675 : 0 : aFlLineEnds.Hide();
676 : :
677 : : // #116827#
678 : 0 : maFLEdgeStyle.Hide();
679 : 0 : maFTEdgeStyle.Hide();
680 : 0 : maLBEdgeStyle.Hide();
681 : : }
682 : 0 : }
683 : :
684 : : // -----------------------------------------------------------------------
685 : :
686 : 0 : int SvxLineTabPage::DeactivatePage( SfxItemSet* _pSet )
687 : : {
688 [ # # ]: 0 : if( nDlgType == 0 ) // Line dialog
689 : : {
690 : 0 : nPageType = 1; // possibly for extensions
691 : 0 : *pPosDashLb = aLbLineStyle.GetSelectEntryPos() - 2;// First entry SOLID!!!
692 : 0 : sal_uInt16 nPos = aLbStartStyle.GetSelectEntryPos();
693 [ # # ]: 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND )
694 : 0 : nPos--;
695 : 0 : *pPosLineEndLb = nPos;
696 : : }
697 : :
698 [ # # ]: 0 : if( _pSet )
699 : 0 : FillItemSet( *_pSet );
700 : :
701 : 0 : return( LEAVE_PAGE );
702 : : }
703 : :
704 : : // -----------------------------------------------------------------------
705 : :
706 : 0 : sal_Bool SvxLineTabPage::FillItemSet( SfxItemSet& rAttrs )
707 : : {
708 : 0 : const SfxPoolItem* pOld = NULL;
709 : : sal_uInt16 nPos;
710 : 0 : sal_Bool bModified = sal_False;
711 : :
712 : : // To prevent modifications to the list, we do not set other page's items.
713 [ # # ][ # # ]: 0 : if( nDlgType != 0 || nPageType != 2 )
714 : : {
715 : 0 : nPos = aLbLineStyle.GetSelectEntryPos();
716 [ # # ]: 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND &&
[ # # # # ]
717 : 0 : nPos != aLbLineStyle.GetSavedValue() )
718 : : {
719 : 0 : XLineStyleItem* pStyleItem = NULL;
720 : :
721 [ # # ]: 0 : if( nPos == 0 )
722 [ # # ]: 0 : pStyleItem = new XLineStyleItem( XLINE_NONE );
723 [ # # ]: 0 : else if( nPos == 1 )
724 [ # # ]: 0 : pStyleItem = new XLineStyleItem( XLINE_SOLID );
725 : : else
726 : : {
727 [ # # ]: 0 : pStyleItem = new XLineStyleItem( XLINE_DASH );
728 : :
729 : : // For added security
730 [ # # ]: 0 : if( pDashList->Count() > (long) ( nPos - 2 ) )
731 : : {
732 : : XLineDashItem aDashItem( aLbLineStyle.GetSelectEntry(),
733 [ # # ][ # # ]: 0 : pDashList->GetDash( nPos - 2 )->GetDash() );
[ # # ][ # # ]
734 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINEDASH );
735 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineDashItem*)pOld == aDashItem ) )
[ # # ][ # # ]
736 : : {
737 [ # # ]: 0 : rAttrs.Put( aDashItem );
738 : 0 : bModified = sal_True;
739 [ # # ]: 0 : }
740 : : }
741 : : }
742 : 0 : pOld = GetOldItem( rAttrs, XATTR_LINESTYLE );
743 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineStyleItem*)pOld == *pStyleItem ) )
[ # # ]
744 : : {
745 : 0 : rAttrs.Put( *pStyleItem );
746 : 0 : bModified = sal_True;
747 : : }
748 [ # # ]: 0 : delete pStyleItem;
749 : : }
750 : : }
751 : : // Line width
752 : : // GetSavedValue() returns String!
753 [ # # ][ # # ]: 0 : if( aMtrLineWidth.GetText() != aMtrLineWidth.GetSavedValue() )
754 : : {
755 [ # # ][ # # ]: 0 : XLineWidthItem aItem( GetCoreValue( aMtrLineWidth, ePoolUnit ) );
756 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINEWIDTH );
757 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineWidthItem*)pOld == aItem ) )
[ # # ][ # # ]
758 : : {
759 [ # # ]: 0 : rAttrs.Put( aItem );
760 : 0 : bModified = sal_True;
761 [ # # ]: 0 : }
762 : : }
763 : : // Width line start
764 [ # # ][ # # ]: 0 : if( aMtrStartWidth.GetText() != aMtrStartWidth.GetSavedValue() )
765 : : {
766 [ # # ][ # # ]: 0 : XLineStartWidthItem aItem( GetCoreValue( aMtrStartWidth, ePoolUnit ) );
767 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINESTARTWIDTH );
768 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineStartWidthItem*)pOld == aItem ) )
[ # # ][ # # ]
769 : : {
770 [ # # ]: 0 : rAttrs.Put( aItem );
771 : 0 : bModified = sal_True;
772 [ # # ]: 0 : }
773 : : }
774 : : // Width line end
775 [ # # ][ # # ]: 0 : if( aMtrEndWidth.GetText() != aMtrEndWidth.GetSavedValue() )
776 : : {
777 [ # # ][ # # ]: 0 : XLineEndWidthItem aItem( GetCoreValue( aMtrEndWidth, ePoolUnit ) );
778 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINEENDWIDTH );
779 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineEndWidthItem*)pOld == aItem ) )
[ # # ][ # # ]
780 : : {
781 [ # # ]: 0 : rAttrs.Put( aItem );
782 : 0 : bModified = sal_True;
783 [ # # ]: 0 : }
784 : : }
785 : :
786 : : // Line color
787 [ # # ]: 0 : if( aLbColor.GetSelectEntryPos() != aLbColor.GetSavedValue() )
788 : : {
789 : : XLineColorItem aItem( aLbColor.GetSelectEntry(),
790 [ # # ][ # # ]: 0 : aLbColor.GetSelectEntryColor() );
[ # # ][ # # ]
791 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINECOLOR );
792 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineColorItem*)pOld == aItem ) )
[ # # ][ # # ]
793 : : {
794 [ # # ]: 0 : rAttrs.Put( aItem );
795 : 0 : bModified = sal_True;
796 [ # # ]: 0 : }
797 : : }
798 : :
799 [ # # ][ # # ]: 0 : if( nDlgType != 0 || nPageType != 3 )
800 : : {
801 : : // Line start
802 : 0 : nPos = aLbStartStyle.GetSelectEntryPos();
803 [ # # ]: 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND &&
[ # # # # ]
804 : 0 : nPos != aLbStartStyle.GetSavedValue() )
805 : : {
806 : 0 : XLineStartItem* pItem = NULL;
807 [ # # ]: 0 : if( nPos == 0 )
808 [ # # ]: 0 : pItem = new XLineStartItem();
809 [ # # ]: 0 : else if( pLineEndList->Count() > (long) ( nPos - 1 ) )
810 : : pItem = new XLineStartItem( aLbStartStyle.GetSelectEntry(),
811 [ # # ][ # # ]: 0 : pLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() );
[ # # ]
812 : 0 : pOld = GetOldItem( rAttrs, XATTR_LINESTART );
813 [ # # # # ]: 0 : if( pItem &&
[ # # ][ # # ]
814 : 0 : ( !pOld || !( *(const XLineEndItem*)pOld == *pItem ) ) )
815 : : {
816 : 0 : rAttrs.Put( *pItem );
817 : 0 : bModified = sal_True;
818 : : }
819 [ # # ]: 0 : delete pItem;
820 : : }
821 : : // Line end
822 : 0 : nPos = aLbEndStyle.GetSelectEntryPos();
823 [ # # ]: 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND &&
[ # # # # ]
824 : 0 : nPos != aLbEndStyle.GetSavedValue() )
825 : : {
826 : 0 : XLineEndItem* pItem = NULL;
827 [ # # ]: 0 : if( nPos == 0 )
828 [ # # ]: 0 : pItem = new XLineEndItem();
829 [ # # ]: 0 : else if( pLineEndList->Count() > (long) ( nPos - 1 ) )
830 : : pItem = new XLineEndItem( aLbEndStyle.GetSelectEntry(),
831 [ # # ][ # # ]: 0 : pLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() );
[ # # ]
832 : 0 : pOld = GetOldItem( rAttrs, XATTR_LINEEND );
833 [ # # # # ]: 0 : if( pItem &&
[ # # ][ # # ]
834 : 0 : ( !pOld || !( *(const XLineEndItem*)pOld == *pItem ) ) )
835 : : {
836 : 0 : rAttrs.Put( *pItem );
837 : 0 : bModified = sal_True;
838 : : }
839 [ # # ]: 0 : delete pItem;
840 : : }
841 : : }
842 : :
843 : : // Centered line end
844 : 0 : TriState eState = aTsbCenterStart.GetState();
845 [ # # ]: 0 : if( eState != aTsbCenterStart.GetSavedValue() )
846 : : {
847 [ # # ]: 0 : XLineStartCenterItem aItem( sal::static_int_cast< sal_Bool >( eState ) );
848 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINESTARTCENTER );
849 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineStartCenterItem*)pOld == aItem ) )
[ # # ][ # # ]
850 : : {
851 [ # # ]: 0 : rAttrs.Put( aItem );
852 : 0 : bModified = sal_True;
853 [ # # ]: 0 : }
854 : : }
855 : 0 : eState = aTsbCenterEnd.GetState();
856 [ # # ]: 0 : if( eState != aTsbCenterEnd.GetSavedValue() )
857 : : {
858 [ # # ]: 0 : XLineEndCenterItem aItem( sal::static_int_cast< sal_Bool >( eState ) );
859 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINEENDCENTER );
860 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineEndCenterItem*)pOld == aItem ) )
[ # # ][ # # ]
861 : : {
862 [ # # ]: 0 : rAttrs.Put( aItem );
863 : 0 : bModified = sal_True;
864 [ # # ]: 0 : }
865 : : }
866 : :
867 : : // Width line start
868 [ # # ][ # # ]: 0 : if( aMtrStartWidth.GetText() != aMtrStartWidth.GetSavedValue() )
869 : : {
870 [ # # ][ # # ]: 0 : XLineStartWidthItem aItem( GetCoreValue( aMtrStartWidth, ePoolUnit ) );
871 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINESTARTWIDTH );
872 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineStartWidthItem*)pOld == aItem ) )
[ # # ][ # # ]
873 : : {
874 [ # # ]: 0 : rAttrs.Put( aItem );
875 : 0 : bModified = sal_True;
876 [ # # ]: 0 : }
877 : : }
878 : : // Width line end
879 [ # # ][ # # ]: 0 : if( aMtrEndWidth.GetText() != aMtrEndWidth.GetSavedValue() )
880 : : {
881 [ # # ][ # # ]: 0 : XLineEndWidthItem aItem( GetCoreValue( aMtrEndWidth, ePoolUnit ) );
882 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINEENDWIDTH );
883 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineEndWidthItem*)pOld == aItem ) )
[ # # ][ # # ]
884 : : {
885 [ # # ]: 0 : rAttrs.Put( aItem );
886 : 0 : bModified = sal_True;
887 [ # # ]: 0 : }
888 : : }
889 : :
890 : : // Transparency
891 : 0 : sal_uInt16 nVal = (sal_uInt16)aMtrTransparent.GetValue();
892 [ # # ]: 0 : if( nVal != (sal_uInt16)aMtrTransparent.GetSavedValue().ToInt32() )
893 : : {
894 [ # # ]: 0 : XLineTransparenceItem aItem( nVal );
895 [ # # ]: 0 : pOld = GetOldItem( rAttrs, XATTR_LINETRANSPARENCE );
896 [ # # ][ # # ]: 0 : if ( !pOld || !( *(const XLineTransparenceItem*)pOld == aItem ) )
[ # # ][ # # ]
897 : : {
898 [ # # ]: 0 : rAttrs.Put( aItem );
899 : 0 : bModified = sal_True;
900 [ # # ]: 0 : }
901 : : }
902 : :
903 : : // #116827#
904 : 0 : nPos = maLBEdgeStyle.GetSelectEntryPos();
905 [ # # ][ # # ]: 0 : if( LISTBOX_ENTRY_NOTFOUND != nPos && nPos != maLBEdgeStyle.GetSavedValue() )
[ # # ]
906 : : {
907 : 0 : XLineJointItem* pNew = 0L;
908 : :
909 [ # # # # : 0 : switch(nPos)
# ]
910 : : {
911 : : case 0: // Rounded, default
912 : : {
913 [ # # ]: 0 : pNew = new XLineJointItem(XLINEJOINT_ROUND);
914 : 0 : break;
915 : : }
916 : : case 1: // - none -
917 : : {
918 [ # # ]: 0 : pNew = new XLineJointItem(XLINEJOINT_NONE);
919 : 0 : break;
920 : : }
921 : : case 2: // Miter
922 : : {
923 [ # # ]: 0 : pNew = new XLineJointItem(XLINEJOINT_MITER);
924 : 0 : break;
925 : : }
926 : : case 3: // Bevel
927 : : {
928 [ # # ]: 0 : pNew = new XLineJointItem(XLINEJOINT_BEVEL);
929 : 0 : break;
930 : : }
931 : : }
932 : :
933 [ # # ]: 0 : if(pNew)
934 : : {
935 : 0 : pOld = GetOldItem( rAttrs, XATTR_LINEJOINT );
936 : :
937 [ # # ][ # # ]: 0 : if(!pOld || !(*(const XLineJointItem*)pOld == *pNew))
[ # # ]
938 : : {
939 : 0 : rAttrs.Put( *pNew );
940 : 0 : bModified = sal_True;
941 : : }
942 : :
943 [ # # ]: 0 : delete pNew;
944 : : }
945 : : }
946 : :
947 [ # # ][ # # ]: 0 : if(nSymbolType!=SVX_SYMBOLTYPE_UNKNOWN || bNewSize)
948 : : {
949 : : // Was set by selection or the size is different
950 [ # # ][ # # ]: 0 : SvxSizeItem aSItem(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLSIZE),aSymbolSize);
951 [ # # ][ # # ]: 0 : const SfxPoolItem* pSOld = GetOldItem( rAttrs, rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLSIZE) );
952 [ # # ][ # # ]: 0 : bNewSize = pSOld ? *(const SvxSizeItem *)pSOld != aSItem : bNewSize ;
953 [ # # ]: 0 : if(bNewSize)
954 : : {
955 [ # # ]: 0 : rAttrs.Put(aSItem);
956 : 0 : bModified=sal_True;
957 : : }
958 : :
959 [ # # ][ # # ]: 0 : SfxInt32Item aTItem(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLTYPE),nSymbolType);
960 [ # # ][ # # ]: 0 : const SfxPoolItem* pTOld = GetOldItem( rAttrs, rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLTYPE) );
961 [ # # ][ # # ]: 0 : bool bNewType = pTOld == NULL || *(const SfxInt32Item*)pTOld != aTItem;
[ # # ]
962 [ # # ][ # # ]: 0 : if(bNewType && nSymbolType==SVX_SYMBOLTYPE_UNKNOWN)
963 : 0 : bNewType=false; // a small fix, type wasn't set -> don't create a type item after all!
964 [ # # ]: 0 : if(bNewType)
965 : : {
966 [ # # ]: 0 : rAttrs.Put(aTItem);
967 : 0 : bModified=sal_True;
968 : : }
969 : :
970 [ # # ]: 0 : if(nSymbolType!=SVX_SYMBOLTYPE_NONE)
971 : : {
972 [ # # ][ # # ]: 0 : SvxBrushItem aBItem(aSymbolGraphic,GPOS_MM,rAttrs.GetPool()->GetWhich(SID_ATTR_BRUSH));
973 [ # # ][ # # ]: 0 : const SfxPoolItem* pBOld = GetOldItem( rAttrs, rAttrs.GetPool()->GetWhich(SID_ATTR_BRUSH) );
974 : : bool bNewBrush =
975 [ # # ][ # # ]: 0 : pBOld == NULL || *(const SvxBrushItem*)pBOld != aBItem;
[ # # ]
976 [ # # ]: 0 : if(bNewBrush)
977 : : {
978 [ # # ]: 0 : rAttrs.Put(aBItem);
979 : 0 : bModified=sal_True;
980 [ # # ]: 0 : }
981 [ # # ][ # # ]: 0 : }
982 : : }
983 [ # # ]: 0 : rAttrs.Put (CntUInt16Item(SID_PAGE_TYPE,nPageType));
984 : 0 : return( bModified );
985 : : }
986 : :
987 : : // -----------------------------------------------------------------------
988 : :
989 : 0 : sal_Bool SvxLineTabPage::FillXLSet_Impl()
990 : : {
991 : : sal_uInt16 nPos;
992 : :
993 [ # # ]: 0 : if( aLbLineStyle.GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND )
994 : : {
995 [ # # ]: 0 : rXLSet.Put( XLineStyleItem( XLINE_NONE ) );
996 : : }
997 [ # # ]: 0 : else if( aLbLineStyle.IsEntryPosSelected( 0 ) )
998 [ # # ]: 0 : rXLSet.Put( XLineStyleItem( XLINE_NONE ) );
999 [ # # ]: 0 : else if( aLbLineStyle.IsEntryPosSelected( 1 ) )
1000 [ # # ]: 0 : rXLSet.Put( XLineStyleItem( XLINE_SOLID ) );
1001 : : else
1002 : : {
1003 [ # # ]: 0 : rXLSet.Put( XLineStyleItem( XLINE_DASH ) );
1004 : :
1005 : 0 : nPos = aLbLineStyle.GetSelectEntryPos();
1006 [ # # ]: 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND )
1007 : : {
1008 : : rXLSet.Put( XLineDashItem( aLbLineStyle.GetSelectEntry(),
1009 [ # # ][ # # ]: 0 : pDashList->GetDash( nPos - 2 )->GetDash() ) );
[ # # ]
1010 : : }
1011 : : }
1012 : :
1013 : 0 : nPos = aLbStartStyle.GetSelectEntryPos();
1014 [ # # ]: 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND )
1015 : : {
1016 [ # # ]: 0 : if( nPos == 0 )
1017 [ # # ]: 0 : rXLSet.Put( XLineStartItem() );
1018 : : else
1019 : : rXLSet.Put( XLineStartItem( aLbStartStyle.GetSelectEntry(),
1020 [ # # ][ # # ]: 0 : pLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ) );
[ # # ]
1021 : : }
1022 : 0 : nPos = aLbEndStyle.GetSelectEntryPos();
1023 [ # # ]: 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND )
1024 : : {
1025 [ # # ]: 0 : if( nPos == 0 )
1026 [ # # ]: 0 : rXLSet.Put( XLineEndItem() );
1027 : : else
1028 : : rXLSet.Put( XLineEndItem( aLbEndStyle.GetSelectEntry(),
1029 [ # # ][ # # ]: 0 : pLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() ) );
[ # # ]
1030 : : }
1031 : :
1032 : : // #116827#
1033 : 0 : nPos = maLBEdgeStyle.GetSelectEntryPos();
1034 [ # # ]: 0 : if(LISTBOX_ENTRY_NOTFOUND != nPos)
1035 : : {
1036 [ # # # # : 0 : switch(nPos)
# ]
1037 : : {
1038 : : case 0: // Rounded, default
1039 : : {
1040 [ # # ]: 0 : rXLSet.Put(XLineJointItem(XLINEJOINT_ROUND));
1041 : 0 : break;
1042 : : }
1043 : : case 1: // - none -
1044 : : {
1045 [ # # ]: 0 : rXLSet.Put(XLineJointItem(XLINEJOINT_NONE));
1046 : 0 : break;
1047 : : }
1048 : : case 2: // Miter
1049 : : {
1050 [ # # ]: 0 : rXLSet.Put(XLineJointItem(XLINEJOINT_MITER));
1051 : 0 : break;
1052 : : }
1053 : : case 3: // Bevel
1054 : : {
1055 [ # # ]: 0 : rXLSet.Put(XLineJointItem(XLINEJOINT_BEVEL));
1056 : 0 : break;
1057 : : }
1058 : : }
1059 : : }
1060 : :
1061 [ # # ]: 0 : rXLSet.Put( XLineStartWidthItem( GetCoreValue( aMtrStartWidth, ePoolUnit ) ) );
1062 [ # # ]: 0 : rXLSet.Put( XLineEndWidthItem( GetCoreValue( aMtrEndWidth, ePoolUnit ) ) );
1063 : :
1064 [ # # ]: 0 : rXLSet.Put( XLineWidthItem( GetCoreValue( aMtrLineWidth, ePoolUnit ) ) );
1065 : : rXLSet.Put( XLineColorItem( aLbColor.GetSelectEntry(),
1066 [ # # ][ # # ]: 0 : aLbColor.GetSelectEntryColor() ) );
[ # # ][ # # ]
[ # # ]
1067 : :
1068 : : // Centered line end
1069 [ # # ]: 0 : if( aTsbCenterStart.GetState() == STATE_CHECK )
1070 [ # # ]: 0 : rXLSet.Put( XLineStartCenterItem( sal_True ) );
1071 [ # # ]: 0 : else if( aTsbCenterStart.GetState() == STATE_NOCHECK )
1072 [ # # ]: 0 : rXLSet.Put( XLineStartCenterItem( sal_False ) );
1073 : :
1074 [ # # ]: 0 : if( aTsbCenterEnd.GetState() == STATE_CHECK )
1075 [ # # ]: 0 : rXLSet.Put( XLineEndCenterItem( sal_True ) );
1076 [ # # ]: 0 : else if( aTsbCenterEnd.GetState() == STATE_NOCHECK )
1077 [ # # ]: 0 : rXLSet.Put( XLineEndCenterItem( sal_False ) );
1078 : :
1079 : : // Transparency
1080 : 0 : sal_uInt16 nVal = (sal_uInt16)aMtrTransparent.GetValue();
1081 [ # # ]: 0 : rXLSet.Put( XLineTransparenceItem( nVal ) );
1082 : :
1083 : : // #116827#
1084 : 0 : aCtlPreview.SetLineAttributes(aXLineAttr.GetItemSet());
1085 : :
1086 : 0 : return( sal_True );
1087 : : }
1088 : :
1089 : : // -----------------------------------------------------------------------
1090 : :
1091 : 0 : void SvxLineTabPage::Reset( const SfxItemSet& rAttrs )
1092 : : {
1093 [ # # ]: 0 : String aString;
1094 : : XLineStyle eXLS; // XLINE_NONE, XLINE_SOLID, XLINE_DASH
1095 : :
1096 : : // Line style
1097 : : const SfxPoolItem *pPoolItem;
1098 : 0 : long nSymType=SVX_SYMBOLTYPE_UNKNOWN;
1099 : 0 : sal_Bool bPrevSym=sal_False;
1100 : 0 : sal_Bool bEnable=sal_True;
1101 : 0 : sal_Bool bIgnoreGraphic=sal_False;
1102 : 0 : sal_Bool bIgnoreSize=sal_False;
1103 [ # # ][ # # ]: 0 : if(rAttrs.GetItemState(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLTYPE),sal_True,&pPoolItem) == SFX_ITEM_SET)
[ # # ]
1104 : : {
1105 : 0 : nSymType=((const SfxInt32Item *)pPoolItem)->GetValue();
1106 : : }
1107 : :
1108 [ # # ]: 0 : if(nSymType == SVX_SYMBOLTYPE_AUTO)
1109 : : {
1110 [ # # ]: 0 : aSymbolGraphic=aAutoSymbolGraphic;
1111 [ # # ]: 0 : aSymbolSize=aSymbolLastSize=aAutoSymbolGraphic.GetPrefSize();
1112 : 0 : bPrevSym=sal_True;
1113 : : }
1114 [ # # ]: 0 : else if(nSymType == SVX_SYMBOLTYPE_NONE)
1115 : : {
1116 : 0 : bEnable=sal_False;
1117 : 0 : bIgnoreGraphic=sal_True;
1118 : 0 : bIgnoreSize=sal_True;
1119 : : }
1120 [ # # ]: 0 : else if(nSymType >= 0)
1121 : : {
1122 [ # # ]: 0 : VirtualDevice aVDev;
1123 [ # # ][ # # ]: 0 : aVDev.SetMapMode(MapMode(MAP_100TH_MM));
[ # # ]
1124 : :
1125 [ # # ][ # # ]: 0 : SdrModel* pModel = new SdrModel(NULL, NULL, LOADREFCOUNTS);
1126 [ # # ]: 0 : pModel->GetItemPool().FreezeIdRanges();
1127 [ # # ][ # # ]: 0 : SdrPage* pPage = new SdrPage( *pModel, sal_False );
1128 [ # # ]: 0 : pPage->SetSize(Size(1000,1000));
1129 [ # # ]: 0 : pModel->InsertPage( pPage, 0 );
1130 [ # # ][ # # ]: 0 : SdrView* pView = new SdrView( pModel, &aVDev );
1131 [ # # ]: 0 : pView->hideMarkHandles();
1132 [ # # ]: 0 : pView->ShowSdrPage(pPage);
1133 : 0 : SdrObject *pObj=NULL;
1134 : 0 : long nSymTmp=nSymType;
1135 [ # # ]: 0 : if(pSymbolList)
1136 : : {
1137 [ # # ][ # # ]: 0 : if(pSymbolList->GetObjCount())
1138 : : {
1139 [ # # ]: 0 : nSymTmp=nSymTmp%pSymbolList->GetObjCount(); // Treat list as cyclic!
1140 [ # # ]: 0 : pObj=pSymbolList->GetObj(nSymTmp);
1141 [ # # ]: 0 : if(pObj)
1142 : : {
1143 [ # # ]: 0 : pObj=pObj->Clone();
1144 [ # # ]: 0 : if(pSymbolAttr)
1145 : : {
1146 [ # # ]: 0 : pObj->SetMergedItemSet(*pSymbolAttr);
1147 : : }
1148 : : else
1149 : : {
1150 [ # # ]: 0 : pObj->SetMergedItemSet(rOutAttrs);
1151 : : }
1152 : :
1153 [ # # ]: 0 : pPage->NbcInsertObject(pObj);
1154 : :
1155 : : // Generate invisible square to give all symbol types a
1156 : : // bitmap size, which is indepedent from specific glyph
1157 [ # # ]: 0 : SdrObject *pInvisibleSquare=pSymbolList->GetObj(0);
1158 [ # # ]: 0 : pInvisibleSquare=pInvisibleSquare->Clone();
1159 [ # # ]: 0 : pPage->NbcInsertObject(pInvisibleSquare);
1160 [ # # ][ # # ]: 0 : pInvisibleSquare->SetMergedItem(XFillTransparenceItem(100));
[ # # ]
1161 [ # # ][ # # ]: 0 : pInvisibleSquare->SetMergedItem(XLineTransparenceItem(100));
[ # # ]
1162 : :
1163 [ # # ]: 0 : pView->MarkAll();
1164 [ # # ]: 0 : GDIMetaFile aMeta(pView->GetAllMarkedMetaFile());
1165 : :
1166 [ # # ][ # # ]: 0 : aSymbolGraphic=Graphic(aMeta);
[ # # ]
1167 [ # # ][ # # ]: 0 : aSymbolSize=pObj->GetSnapRect().GetSize();
1168 [ # # ][ # # ]: 0 : aSymbolGraphic.SetPrefSize(pInvisibleSquare->GetSnapRect().GetSize());
[ # # ]
1169 [ # # ][ # # ]: 0 : aSymbolGraphic.SetPrefMapMode(MAP_100TH_MM);
[ # # ]
1170 : 0 : bPrevSym=sal_True;
1171 : 0 : bEnable=sal_True;
1172 : 0 : bIgnoreGraphic=sal_True;
1173 : :
1174 [ # # ]: 0 : pView->UnmarkAll();
1175 [ # # ]: 0 : pInvisibleSquare=pPage->RemoveObject(1);
1176 [ # # ]: 0 : SdrObject::Free( pInvisibleSquare);
1177 [ # # ]: 0 : pObj=pPage->RemoveObject(0);
1178 [ # # ][ # # ]: 0 : SdrObject::Free( pObj );
1179 : : }
1180 : : }
1181 : : }
1182 [ # # ][ # # ]: 0 : delete pView;
1183 [ # # ][ # # ]: 0 : delete pModel;
[ # # ]
1184 : : }
1185 [ # # ][ # # ]: 0 : if(rAttrs.GetItemState(rAttrs.GetPool()->GetWhich(SID_ATTR_BRUSH),sal_True,&pPoolItem) == SFX_ITEM_SET)
[ # # ]
1186 : : {
1187 [ # # ]: 0 : const Graphic* pGraphic = ((const SvxBrushItem *)pPoolItem)->GetGraphic();
1188 [ # # ]: 0 : if( pGraphic )
1189 : : {
1190 [ # # ]: 0 : if(!bIgnoreGraphic)
1191 : : {
1192 [ # # ]: 0 : aSymbolGraphic=*pGraphic;
1193 : : }
1194 [ # # ]: 0 : if(!bIgnoreSize)
1195 : : {
1196 : : aSymbolSize=OutputDevice::LogicToLogic( pGraphic->GetPrefSize(),
1197 : : pGraphic->GetPrefMapMode(),
1198 [ # # ][ # # ]: 0 : MAP_100TH_MM );
[ # # ][ # # ]
[ # # ][ # # ]
1199 : : }
1200 : 0 : bPrevSym=sal_True;
1201 : : }
1202 : : }
1203 : :
1204 [ # # ][ # # ]: 0 : if(rAttrs.GetItemState(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLSIZE),sal_True,&pPoolItem) == SFX_ITEM_SET)
[ # # ]
1205 : : {
1206 : 0 : aSymbolSize = ((const SvxSizeItem *)pPoolItem)->GetSize();
1207 : : }
1208 : :
1209 [ # # ]: 0 : aSymbolRatioCB.Enable(bEnable);
1210 [ # # ]: 0 : aSymbolHeightFT.Enable(bEnable);
1211 [ # # ]: 0 : aSymbolWidthFT.Enable(bEnable);
1212 [ # # ]: 0 : aSymbolWidthMF.Enable(bEnable);
1213 [ # # ]: 0 : aSymbolHeightMF.Enable(bEnable);
1214 [ # # ]: 0 : if(bPrevSym)
1215 : : {
1216 [ # # ]: 0 : SetMetricValue(aSymbolWidthMF, aSymbolSize.Width(), ePoolUnit);
1217 [ # # ]: 0 : SetMetricValue(aSymbolHeightMF, aSymbolSize.Height(),ePoolUnit);
1218 [ # # ]: 0 : aCtlPreview.SetSymbol(&aSymbolGraphic,aSymbolSize);
1219 : 0 : aSymbolLastSize=aSymbolSize;
1220 : : }
1221 : :
1222 [ # # ][ # # ]: 0 : if( rAttrs.GetItemState( XATTR_LINESTYLE ) != SFX_ITEM_DONTCARE )
1223 : : {
1224 [ # # ]: 0 : eXLS = (XLineStyle) ( ( const XLineStyleItem& ) rAttrs.Get( XATTR_LINESTYLE ) ).GetValue();
1225 : :
1226 [ # # # # ]: 0 : switch( eXLS )
1227 : : {
1228 : : case XLINE_NONE:
1229 [ # # ]: 0 : aLbLineStyle.SelectEntryPos( 0 );
1230 : 0 : break;
1231 : : case XLINE_SOLID:
1232 [ # # ]: 0 : aLbLineStyle.SelectEntryPos( 1 );
1233 : 0 : break;
1234 : :
1235 : : case XLINE_DASH:
1236 [ # # ]: 0 : aLbLineStyle.SetNoSelection();
1237 : : aLbLineStyle.SelectEntry( ( ( const XLineDashItem& ) rAttrs.
1238 [ # # ][ # # ]: 0 : Get( XATTR_LINEDASH ) ).GetName() );
[ # # ][ # # ]
1239 : 0 : break;
1240 : :
1241 : : default:
1242 : 0 : break;
1243 : : }
1244 : : }
1245 : : else
1246 : : {
1247 [ # # ]: 0 : aLbLineStyle.SetNoSelection();
1248 : : }
1249 : :
1250 : : // Line strength
1251 [ # # ][ # # ]: 0 : if( rAttrs.GetItemState( XATTR_LINEWIDTH ) != SFX_ITEM_DONTCARE )
1252 : : {
1253 : : SetMetricValue( aMtrLineWidth, ( ( const XLineWidthItem& ) rAttrs.
1254 [ # # ][ # # ]: 0 : Get( XATTR_LINEWIDTH ) ).GetValue(), ePoolUnit );
1255 : : }
1256 : : else
1257 [ # # ][ # # ]: 0 : aMtrLineWidth.SetText( String() );
[ # # ]
1258 : :
1259 : : // Line color
1260 [ # # ]: 0 : aLbColor.SetNoSelection();
1261 : :
1262 [ # # ][ # # ]: 0 : if ( rAttrs.GetItemState( XATTR_LINECOLOR ) != SFX_ITEM_DONTCARE )
1263 : : {
1264 [ # # ][ # # ]: 0 : Color aCol = ( ( const XLineColorItem& ) rAttrs.Get( XATTR_LINECOLOR ) ).GetColorValue();
1265 [ # # ]: 0 : aLbColor.SelectEntry( aCol );
1266 [ # # ][ # # ]: 0 : if( aLbColor.GetSelectEntryCount() == 0 )
1267 : : {
1268 [ # # ][ # # ]: 0 : aLbColor.InsertEntry( aCol, String() );
[ # # ]
1269 [ # # ]: 0 : aLbColor.SelectEntry( aCol );
1270 : : }
1271 : : }
1272 : :
1273 : : // Line start
1274 [ # # ][ # # ]: 0 : if( bObjSelected &&
[ # # ]
1275 [ # # ]: 0 : rAttrs.GetItemState( XATTR_LINESTART ) == SFX_ITEM_DEFAULT )
1276 : : {
1277 [ # # ]: 0 : aLbStartStyle.Disable();
1278 : : }
1279 [ # # ][ # # ]: 0 : else if( rAttrs.GetItemState( XATTR_LINESTART ) != SFX_ITEM_DONTCARE )
1280 : : {
1281 : : // #86265# select entry using list and polygon, not string
1282 : 0 : sal_Bool bSelected(sal_False);
1283 [ # # ][ # # ]: 0 : const basegfx::B2DPolyPolygon& rItemPolygon = ((const XLineStartItem&)rAttrs.Get(XATTR_LINESTART)).GetLineStartValue();
1284 : :
1285 [ # # ][ # # ]: 0 : for(sal_Int32 a(0);!bSelected && a < pLineEndList->Count(); a++)
[ # # ][ # # ]
1286 : : {
1287 [ # # ]: 0 : XLineEndEntry* pEntry = pLineEndList->GetLineEnd(a);
1288 : 0 : const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd();
1289 : :
1290 [ # # ][ # # ]: 0 : if(rItemPolygon == rEntryPolygon)
1291 : : {
1292 : : // select this entry
1293 [ # # ]: 0 : aLbStartStyle.SelectEntryPos((sal_uInt16)a + 1);
1294 : 0 : bSelected = sal_True;
1295 : : }
1296 : : }
1297 : :
1298 [ # # ]: 0 : if(!bSelected)
1299 [ # # ][ # # ]: 0 : aLbStartStyle.SelectEntryPos( 0 );
1300 : : }
1301 : : else
1302 : : {
1303 [ # # ]: 0 : aLbStartStyle.SetNoSelection();
1304 : : }
1305 : :
1306 : : // Line end
1307 [ # # ][ # # ]: 0 : if( bObjSelected &&
[ # # ]
1308 [ # # ]: 0 : rAttrs.GetItemState( XATTR_LINEEND ) == SFX_ITEM_DEFAULT )
1309 : : {
1310 [ # # ]: 0 : aLbEndStyle.Disable();
1311 : : }
1312 [ # # ][ # # ]: 0 : else if( rAttrs.GetItemState( XATTR_LINEEND ) != SFX_ITEM_DONTCARE )
1313 : : {
1314 : : // #86265# select entry using list and polygon, not string
1315 : 0 : sal_Bool bSelected(sal_False);
1316 [ # # ][ # # ]: 0 : const basegfx::B2DPolyPolygon& rItemPolygon = ((const XLineEndItem&)rAttrs.Get(XATTR_LINEEND)).GetLineEndValue();
1317 : :
1318 [ # # ][ # # ]: 0 : for(sal_Int32 a(0);!bSelected && a < pLineEndList->Count(); a++)
[ # # ][ # # ]
1319 : : {
1320 [ # # ]: 0 : XLineEndEntry* pEntry = pLineEndList->GetLineEnd(a);
1321 : 0 : const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd();
1322 : :
1323 [ # # ][ # # ]: 0 : if(rItemPolygon == rEntryPolygon)
1324 : : {
1325 : : // select this entry
1326 [ # # ]: 0 : aLbEndStyle.SelectEntryPos((sal_uInt16)a + 1);
1327 : 0 : bSelected = sal_True;
1328 : : }
1329 : : }
1330 : :
1331 [ # # ]: 0 : if(!bSelected)
1332 [ # # ][ # # ]: 0 : aLbEndStyle.SelectEntryPos( 0 );
1333 : : }
1334 : : else
1335 : : {
1336 [ # # ]: 0 : aLbEndStyle.SetNoSelection();
1337 : : }
1338 : :
1339 : : // Line start strength
1340 [ # # ][ # # ]: 0 : if( bObjSelected &&
[ # # ]
1341 [ # # ]: 0 : rAttrs.GetItemState( XATTR_LINESTARTWIDTH ) == SFX_ITEM_DEFAULT )
1342 : : {
1343 [ # # ]: 0 : aMtrStartWidth.Disable();
1344 : : }
1345 [ # # ][ # # ]: 0 : else if( rAttrs.GetItemState( XATTR_LINESTARTWIDTH ) != SFX_ITEM_DONTCARE )
1346 : : {
1347 : : SetMetricValue( aMtrStartWidth, ( ( const XLineStartWidthItem& ) rAttrs.
1348 [ # # ][ # # ]: 0 : Get( XATTR_LINESTARTWIDTH ) ).GetValue(), ePoolUnit );
1349 : : }
1350 : : else
1351 [ # # ][ # # ]: 0 : aMtrStartWidth.SetText( String() );
[ # # ]
1352 : :
1353 : : // Line end strength
1354 [ # # ][ # # ]: 0 : if( bObjSelected &&
[ # # ]
1355 [ # # ]: 0 : rAttrs.GetItemState( XATTR_LINEENDWIDTH ) == SFX_ITEM_DEFAULT )
1356 : : {
1357 [ # # ]: 0 : aMtrEndWidth.Disable();
1358 : : }
1359 [ # # ][ # # ]: 0 : else if( rAttrs.GetItemState( XATTR_LINEENDWIDTH ) != SFX_ITEM_DONTCARE )
1360 : : {
1361 : : SetMetricValue( aMtrEndWidth, ( ( const XLineEndWidthItem& ) rAttrs.
1362 [ # # ][ # # ]: 0 : Get( XATTR_LINEENDWIDTH ) ).GetValue(), ePoolUnit );
1363 : : }
1364 : : else
1365 [ # # ][ # # ]: 0 : aMtrEndWidth.SetText( String() );
[ # # ]
1366 : :
1367 : : // Centered line end (start)
1368 [ # # ][ # # ]: 0 : if( bObjSelected &&
[ # # ]
1369 [ # # ]: 0 : rAttrs.GetItemState( XATTR_LINESTARTCENTER ) == SFX_ITEM_DEFAULT )
1370 : : {
1371 [ # # ]: 0 : aTsbCenterStart.Disable();
1372 : : }
1373 [ # # ][ # # ]: 0 : else if( rAttrs.GetItemState( XATTR_LINESTARTCENTER ) != SFX_ITEM_DONTCARE )
1374 : : {
1375 [ # # ]: 0 : aTsbCenterStart.EnableTriState( sal_False );
1376 : :
1377 [ # # ][ # # ]: 0 : if( ( ( const XLineStartCenterItem& ) rAttrs.Get( XATTR_LINESTARTCENTER ) ).GetValue() )
1378 [ # # ]: 0 : aTsbCenterStart.SetState( STATE_CHECK );
1379 : : else
1380 [ # # ]: 0 : aTsbCenterStart.SetState( STATE_NOCHECK );
1381 : : }
1382 : : else
1383 : : {
1384 [ # # ]: 0 : aTsbCenterStart.SetState( STATE_DONTKNOW );
1385 : : }
1386 : :
1387 : : // Centered line end (end)
1388 [ # # ][ # # ]: 0 : if( bObjSelected &&
[ # # ]
1389 [ # # ]: 0 : rAttrs.GetItemState( XATTR_LINEENDCENTER ) == SFX_ITEM_DEFAULT )
1390 : : {
1391 [ # # ]: 0 : aTsbCenterEnd.Disable();
1392 : : }
1393 [ # # ][ # # ]: 0 : else if( rAttrs.GetItemState( XATTR_LINEENDCENTER ) != SFX_ITEM_DONTCARE )
1394 : : {
1395 [ # # ]: 0 : aTsbCenterEnd.EnableTriState( sal_False );
1396 : :
1397 [ # # ][ # # ]: 0 : if( ( ( const XLineEndCenterItem& ) rAttrs.Get( XATTR_LINEENDCENTER ) ).GetValue() )
1398 [ # # ]: 0 : aTsbCenterEnd.SetState( STATE_CHECK );
1399 : : else
1400 [ # # ]: 0 : aTsbCenterEnd.SetState( STATE_NOCHECK );
1401 : : }
1402 : : else
1403 : : {
1404 [ # # ]: 0 : aTsbCenterEnd.SetState( STATE_DONTKNOW );
1405 : : }
1406 : :
1407 : : // Transparency
1408 [ # # ][ # # ]: 0 : if( rAttrs.GetItemState( XATTR_LINETRANSPARENCE ) != SFX_ITEM_DONTCARE )
1409 : : {
1410 : : sal_uInt16 nTransp = ( ( const XLineTransparenceItem& ) rAttrs.
1411 [ # # ]: 0 : Get( XATTR_LINETRANSPARENCE ) ).GetValue();
1412 [ # # ]: 0 : aMtrTransparent.SetValue( nTransp );
1413 [ # # ]: 0 : ChangeTransparentHdl_Impl( NULL );
1414 : : }
1415 : : else
1416 [ # # ][ # # ]: 0 : aMtrTransparent.SetText( String() );
[ # # ]
1417 : :
1418 [ # # ][ # # ]: 0 : if( !aLbStartStyle.IsEnabled() &&
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
1419 [ # # ]: 0 : !aLbEndStyle.IsEnabled() &&
1420 [ # # ]: 0 : !aMtrStartWidth.IsEnabled() &&
1421 [ # # ]: 0 : !aMtrEndWidth.IsEnabled() &&
1422 [ # # ]: 0 : !aTsbCenterStart.IsEnabled()&&
1423 [ # # ]: 0 : !aTsbCenterEnd.IsEnabled() )
1424 : : {
1425 [ # # ]: 0 : aCbxSynchronize.Disable();
1426 [ # # ]: 0 : aFtLineEndsStyle.Disable();
1427 [ # # ]: 0 : aFtLineEndsWidth.Disable();
1428 [ # # ]: 0 : aFlLineEnds.Disable();
1429 : : }
1430 : :
1431 : : // Synchronize
1432 : : // We get the value from the INI file now
1433 [ # # ]: 0 : String aStr = GetUserData();
1434 [ # # ][ # # ]: 0 : aCbxSynchronize.Check( (sal_Bool)aStr.ToInt32() );
1435 : :
1436 : : // #116827#
1437 [ # # ][ # # ]: 0 : if(bObjSelected && SFX_ITEM_DEFAULT == rAttrs.GetItemState(XATTR_LINEJOINT))
[ # # ][ # # ]
1438 : : {
1439 [ # # ]: 0 : maFTEdgeStyle.Disable();
1440 [ # # ]: 0 : maLBEdgeStyle.Disable();
1441 : : }
1442 [ # # ][ # # ]: 0 : else if(SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_LINEJOINT))
1443 : : {
1444 [ # # ]: 0 : XLineJoint eLineJoint = ((const XLineJointItem&)(rAttrs.Get(XATTR_LINEJOINT))).GetValue();
1445 : :
1446 [ # # # # : 0 : switch(eLineJoint)
# # ]
1447 : : {
1448 [ # # ]: 0 : case XLINEJOINT_ROUND : maLBEdgeStyle.SelectEntryPos(0); break;
1449 [ # # ]: 0 : case XLINEJOINT_NONE : maLBEdgeStyle.SelectEntryPos(1); break;
1450 [ # # ]: 0 : case XLINEJOINT_MITER : maLBEdgeStyle.SelectEntryPos(2); break;
1451 [ # # ]: 0 : case XLINEJOINT_BEVEL : maLBEdgeStyle.SelectEntryPos(3); break;
1452 : 0 : case XLINEJOINT_MIDDLE : break;
1453 : : }
1454 : : }
1455 : : else
1456 : : {
1457 [ # # ]: 0 : maLBEdgeStyle.SetNoSelection();
1458 : : }
1459 : :
1460 : : // Save values
1461 [ # # ]: 0 : aLbLineStyle.SaveValue();
1462 [ # # ]: 0 : aMtrLineWidth.SaveValue();
1463 [ # # ]: 0 : aLbColor.SaveValue();
1464 [ # # ]: 0 : aLbStartStyle.SaveValue();
1465 [ # # ]: 0 : aLbEndStyle.SaveValue();
1466 [ # # ]: 0 : aMtrStartWidth.SaveValue();
1467 [ # # ]: 0 : aMtrEndWidth.SaveValue();
1468 : 0 : aTsbCenterStart.SaveValue();
1469 : 0 : aTsbCenterEnd.SaveValue();
1470 [ # # ]: 0 : aMtrTransparent.SaveValue();
1471 : :
1472 : : // #116827#
1473 [ # # ]: 0 : maLBEdgeStyle.SaveValue();
1474 : :
1475 [ # # ]: 0 : ClickInvisibleHdl_Impl( this );
1476 : :
1477 [ # # ][ # # ]: 0 : ChangePreviewHdl_Impl( NULL );
[ # # ]
1478 : 0 : }
1479 : :
1480 : : // -----------------------------------------------------------------------
1481 : :
1482 : 0 : SfxTabPage* SvxLineTabPage::Create( Window* pWindow,
1483 : : const SfxItemSet& rAttrs )
1484 : : {
1485 [ # # ]: 0 : return( new SvxLineTabPage( pWindow, rAttrs ) );
1486 : : }
1487 : :
1488 : : //------------------------------------------------------------------------
1489 : :
1490 : 0 : sal_uInt16* SvxLineTabPage::GetRanges()
1491 : : {
1492 : 0 : return pLineRanges;
1493 : : }
1494 : :
1495 : : //------------------------------------------------------------------------
1496 : :
1497 : 0 : IMPL_LINK( SvxLineTabPage, ChangePreviewHdl_Impl, void *, pCntrl )
1498 : : {
1499 [ # # ]: 0 : if(pCntrl == &aMtrLineWidth)
1500 : : {
1501 : : // Line width and start end width
1502 : 0 : sal_Int32 nNewLineWidth = GetCoreValue( aMtrLineWidth, ePoolUnit );
1503 [ # # ]: 0 : if(nActLineWidth == -1)
1504 : : {
1505 : : // Don't initialize yet, get the start value
1506 : 0 : const SfxPoolItem* pOld = GetOldItem( rXLSet, XATTR_LINEWIDTH );
1507 : 0 : sal_Int32 nStartLineWidth = 0;
1508 [ # # ]: 0 : if(pOld)
1509 : 0 : nStartLineWidth = (( const XLineWidthItem *)pOld)->GetValue();
1510 : 0 : nActLineWidth = nStartLineWidth;
1511 : : }
1512 : :
1513 [ # # ]: 0 : if(nActLineWidth != nNewLineWidth)
1514 : : {
1515 : : // Adapt start/end width
1516 : 0 : sal_Int32 nValAct = GetCoreValue( aMtrStartWidth, ePoolUnit );
1517 : 0 : sal_Int32 nValNew = nValAct + (((nNewLineWidth - nActLineWidth) * 15) / 10);
1518 [ # # ]: 0 : if(nValNew < 0)
1519 : 0 : nValNew = 0;
1520 : 0 : SetMetricValue( aMtrStartWidth, nValNew, ePoolUnit );
1521 : :
1522 : 0 : nValAct = GetCoreValue( aMtrEndWidth, ePoolUnit );
1523 : 0 : nValNew = nValAct + (((nNewLineWidth - nActLineWidth) * 15) / 10);
1524 [ # # ]: 0 : if(nValNew < 0)
1525 : 0 : nValNew = 0;
1526 : 0 : SetMetricValue( aMtrEndWidth, nValNew, ePoolUnit );
1527 : : }
1528 : :
1529 : : // Remember current value
1530 : 0 : nActLineWidth = nNewLineWidth;
1531 : : }
1532 : :
1533 : 0 : FillXLSet_Impl();
1534 : 0 : aCtlPreview.Invalidate();
1535 : :
1536 : : // Make transparency accessible accordingly
1537 [ # # ]: 0 : if( aLbLineStyle.GetSelectEntryPos() == 0 ) // invisible
1538 : : {
1539 : 0 : aFtTransparent.Disable();
1540 : 0 : aMtrTransparent.Disable();
1541 : : }
1542 : : else
1543 : : {
1544 : 0 : aFtTransparent.Enable();
1545 : 0 : aMtrTransparent.Enable();
1546 : : }
1547 : :
1548 : 0 : const bool bHasLineStart = aLbStartStyle.GetSelectEntryPos() != 0;
1549 : 0 : const bool bHasLineEnd = aLbEndStyle.GetSelectEntryPos() != 0;
1550 : :
1551 [ # # ][ # # ]: 0 : aFtLineEndsWidth.Enable( bHasLineStart || bHasLineEnd );
1552 : 0 : aMtrStartWidth.Enable( bHasLineStart );
1553 : 0 : aTsbCenterStart.Enable( bHasLineStart );
1554 : 0 : aMtrEndWidth.Enable( bHasLineEnd );
1555 : 0 : aTsbCenterEnd.Enable( bHasLineEnd );
1556 : :
1557 : 0 : return( 0L );
1558 : : }
1559 : :
1560 : : //------------------------------------------------------------------------
1561 : :
1562 : 0 : IMPL_LINK( SvxLineTabPage, ChangeStartHdl_Impl, void *, p )
1563 : : {
1564 [ # # ]: 0 : if( aCbxSynchronize.IsChecked() )
1565 : : {
1566 [ # # ]: 0 : if( p == &aMtrStartWidth )
1567 : 0 : aMtrEndWidth.SetValue( aMtrStartWidth.GetValue() );
1568 [ # # ]: 0 : if( p == &aLbStartStyle )
1569 : 0 : aLbEndStyle.SelectEntryPos( aLbStartStyle.GetSelectEntryPos() );
1570 [ # # ]: 0 : if( p == &aTsbCenterStart )
1571 : 0 : aTsbCenterEnd.SetState( aTsbCenterStart.GetState() );
1572 : : }
1573 : :
1574 : 0 : ChangePreviewHdl_Impl( this );
1575 : :
1576 : 0 : return( 0L );
1577 : : }
1578 : :
1579 : : //------------------------------------------------------------------------
1580 : : // #116827#
1581 : :
1582 : 0 : IMPL_LINK_NOARG(SvxLineTabPage, ChangeEdgeStyleHdl_Impl)
1583 : : {
1584 : 0 : ChangePreviewHdl_Impl( this );
1585 : :
1586 : 0 : return( 0L );
1587 : : }
1588 : :
1589 : : //------------------------------------------------------------------------
1590 : :
1591 : 0 : IMPL_LINK_NOARG(SvxLineTabPage, ClickInvisibleHdl_Impl)
1592 : : {
1593 [ # # ]: 0 : if( aLbLineStyle.GetSelectEntryPos() == 0 ) // invisible
1594 : : {
1595 : 0 : aFtColor.Disable();
1596 [ # # ]: 0 : if(!bSymbols)
1597 : 0 : aLbColor.Disable();
1598 : 0 : aFtLineWidth.Disable();
1599 : 0 : aMtrLineWidth.Disable();
1600 : :
1601 [ # # ]: 0 : if( aFlLineEnds.IsEnabled() )
1602 : : {
1603 : 0 : aFtLineEndsStyle.Disable();
1604 : 0 : aFtLineEndsWidth.Disable();
1605 : 0 : aLbStartStyle.Disable();
1606 : 0 : aMtrStartWidth.Disable();
1607 : 0 : aTsbCenterStart.Disable();
1608 : 0 : aLbEndStyle.Disable();
1609 : 0 : aMtrEndWidth.Disable();
1610 : 0 : aTsbCenterEnd.Disable();
1611 : 0 : aCbxSynchronize.Disable();
1612 : :
1613 : : // #116827#
1614 : 0 : maFTEdgeStyle.Disable();
1615 : 0 : maLBEdgeStyle.Disable();
1616 : : }
1617 : : }
1618 : : else
1619 : : {
1620 : 0 : aFtColor.Enable();
1621 : 0 : aLbColor.Enable();
1622 : 0 : aFtLineWidth.Enable();
1623 : 0 : aMtrLineWidth.Enable();
1624 : :
1625 [ # # ]: 0 : if( aFlLineEnds.IsEnabled() )
1626 : : {
1627 : 0 : aFtLineEndsStyle.Enable();
1628 : 0 : aFtLineEndsWidth.Enable();
1629 : 0 : aLbStartStyle.Enable();
1630 : 0 : aMtrStartWidth.Enable();
1631 : 0 : aTsbCenterStart.Enable();
1632 : 0 : aLbEndStyle.Enable();
1633 : 0 : aMtrEndWidth.Enable();
1634 : 0 : aTsbCenterEnd.Enable();
1635 : 0 : aCbxSynchronize.Enable();
1636 : :
1637 : : // #116827#
1638 : 0 : maFTEdgeStyle.Enable();
1639 : 0 : maLBEdgeStyle.Enable();
1640 : : }
1641 : : }
1642 : 0 : ChangePreviewHdl_Impl( NULL );
1643 : :
1644 : 0 : return( 0L );
1645 : : }
1646 : :
1647 : : //------------------------------------------------------------------------
1648 : :
1649 : 0 : IMPL_LINK( SvxLineTabPage, ChangeEndHdl_Impl, void *, p )
1650 : : {
1651 [ # # ]: 0 : if( aCbxSynchronize.IsChecked() )
1652 : : {
1653 [ # # ]: 0 : if( p == &aMtrEndWidth )
1654 : 0 : aMtrStartWidth.SetValue( aMtrEndWidth.GetValue() );
1655 [ # # ]: 0 : if( p == &aLbEndStyle )
1656 : 0 : aLbStartStyle.SelectEntryPos( aLbEndStyle.GetSelectEntryPos() );
1657 [ # # ]: 0 : if( p == &aTsbCenterEnd )
1658 : 0 : aTsbCenterStart.SetState( aTsbCenterEnd.GetState() );
1659 : : }
1660 : :
1661 : 0 : ChangePreviewHdl_Impl( this );
1662 : :
1663 : 0 : return( 0L );
1664 : : }
1665 : :
1666 : : //------------------------------------------------------------------------
1667 : :
1668 : 0 : IMPL_LINK_NOARG(SvxLineTabPage, ChangeTransparentHdl_Impl)
1669 : : {
1670 [ # # ]: 0 : sal_uInt16 nVal = (sal_uInt16)aMtrTransparent.GetValue();
1671 [ # # ]: 0 : XLineTransparenceItem aItem( nVal );
1672 : :
1673 [ # # ][ # # ]: 0 : rXLSet.Put( XLineTransparenceItem( aItem ) );
[ # # ]
1674 : :
1675 : : // #116827#
1676 [ # # ]: 0 : FillXLSet_Impl();
1677 : :
1678 [ # # ]: 0 : aCtlPreview.Invalidate();
1679 : :
1680 [ # # ]: 0 : return( 0L );
1681 : : }
1682 : :
1683 : : //------------------------------------------------------------------------
1684 : :
1685 : 0 : void SvxLineTabPage::PointChanged( Window*, RECT_POINT eRcPt )
1686 : : {
1687 : 0 : eRP = eRcPt;
1688 : 0 : }
1689 : :
1690 : : //------------------------------------------------------------------------
1691 : :
1692 : 0 : void SvxLineTabPage::FillUserData()
1693 : : {
1694 : : // Write the synched value to the INI file
1695 [ # # ][ # # ]: 0 : UniString aStrUserData = UniString::CreateFromInt32( (sal_Int32) aCbxSynchronize.IsChecked() );
1696 [ # # ][ # # ]: 0 : SetUserData( aStrUserData );
1697 : 0 : }
1698 : :
1699 : :
1700 : : // #58425# Symbols on a list (e.g. StarChart)
1701 : : // Handler for the symbol selection's popup menu (NumMenueButton)
1702 : : // The following link originates from SvxNumOptionsTabPage
1703 : 0 : IMPL_LINK( SvxLineTabPage, MenuCreateHdl_Impl, MenuButton *, pButton )
1704 : : {
1705 : 0 : InitSymbols(pButton);
1706 : 0 : return 0;
1707 : : }
1708 : : // #58425# Symbols on a list (e.g. StarChart)
1709 : : // Handler for the symbol selection's popup menu (NumMenueButton)
1710 : : // The following link originates from SvxNumOptionsTabPage
1711 : 0 : IMPL_STATIC_LINK(SvxLineTabPage, GraphicArrivedHdl_Impl, SvxBrushItem*, pItem)
1712 : : {
1713 : 0 : PopupMenu* pPopup = pThis->aSymbolMB.GetPopupMenu()->GetPopupMenu( MN_GALLERY );
1714 : :
1715 : 0 : SvxBmpItemInfo* pBmpInfo = 0;
1716 [ # # ]: 0 : for ( size_t i = 0; i < pThis->aGrfBrushItems.size(); i++ )
1717 : : {
1718 : 0 : SvxBmpItemInfo* pInfo = pThis->aGrfBrushItems[ i ];
1719 [ # # ]: 0 : if( pInfo->pBrushItem == pItem )
1720 : : {
1721 : 0 : pBmpInfo = pInfo; break;
1722 : : }
1723 : : }
1724 [ # # ]: 0 : if( pBmpInfo )
1725 : : {
1726 [ # # ]: 0 : if( pItem->GetGraphic() )
1727 : : {
1728 [ # # ][ # # ]: 0 : Bitmap aBitmap(pItem->GetGraphic()->GetBitmap());
1729 [ # # ]: 0 : Size aSize(aBitmap.GetSizePixel());
1730 [ # # # # ]: 0 : if(aSize.Width() > MAX_BMP_WIDTH ||
[ # # ]
1731 : 0 : aSize.Height() > MAX_BMP_HEIGHT)
1732 : : {
1733 : 0 : sal_Bool bWidth = aSize.Width() > aSize.Height();
1734 : : double nScale = bWidth ?
1735 : 0 : (double)MAX_BMP_WIDTH / (double)aSize.Width():
1736 [ # # ]: 0 : (double)MAX_BMP_HEIGHT / (double)aSize.Height();
1737 [ # # ]: 0 : aBitmap.Scale(nScale, nScale);
1738 : : }
1739 [ # # ]: 0 : Image aImage(aBitmap);
1740 [ # # ][ # # ]: 0 : pPopup->SetItemImage( pBmpInfo->nItemId, aImage );
[ # # ]
1741 : : }
1742 : : }
1743 : :
1744 : 0 : return 0;
1745 : : }
1746 : :
1747 : : // #58425# Symbols on a list (e.g. StarChart)
1748 : : // Handler for menu button
1749 : 0 : IMPL_LINK( SvxLineTabPage, GraphicHdl_Impl, MenuButton *, pButton )
1750 : : {
1751 : 0 : SymbolSelected(pButton);
1752 : 0 : return 0;
1753 : : }
1754 : 0 : IMPL_LINK( SvxLineTabPage, SizeHdl_Impl, MetricField *, pField)
1755 : : {
1756 : 0 : bNewSize=true;
1757 : 0 : sal_Bool bWidth = (sal_Bool)(pField == &aSymbolWidthMF);
1758 : 0 : bLastWidthModified = bWidth;
1759 : 0 : sal_Bool bRatio = aSymbolRatioCB.IsChecked();
1760 : 0 : long nWidthVal = static_cast<long>(aSymbolWidthMF.Denormalize(aSymbolWidthMF.GetValue(FUNIT_100TH_MM)));
1761 : 0 : long nHeightVal= static_cast<long>(aSymbolHeightMF.Denormalize(aSymbolHeightMF.GetValue(FUNIT_100TH_MM)));
1762 : 0 : nWidthVal = OutputDevice::LogicToLogic(nWidthVal,MAP_100TH_MM,(MapUnit)ePoolUnit );
1763 : 0 : nHeightVal = OutputDevice::LogicToLogic(nHeightVal,MAP_100TH_MM,(MapUnit)ePoolUnit);
1764 : 0 : aSymbolSize=Size(nWidthVal,nHeightVal);
1765 : 0 : double fSizeRatio = (double)1;
1766 : :
1767 [ # # ]: 0 : if(bRatio)
1768 : : {
1769 [ # # ][ # # ]: 0 : if (aSymbolLastSize.Height() && aSymbolLastSize.Width())
[ # # ]
1770 : 0 : fSizeRatio = (double)aSymbolLastSize.Width() / aSymbolLastSize.Height();
1771 : : }
1772 : :
1773 : : //Size aSymbolSize(aSymbolLastSize);
1774 : :
1775 [ # # ]: 0 : if(bWidth)
1776 : : {
1777 : 0 : long nDelta = nWidthVal - aSymbolLastSize.Width();
1778 : 0 : aSymbolSize.Width() = nWidthVal;
1779 [ # # ]: 0 : if (bRatio)
1780 : : {
1781 : 0 : aSymbolSize.Height() = aSymbolLastSize.Height() + (long)((double)nDelta / fSizeRatio);
1782 : 0 : aSymbolSize.Height() = OutputDevice::LogicToLogic( aSymbolSize.Height(),(MapUnit)ePoolUnit, MAP_100TH_MM );
1783 : 0 : aSymbolHeightMF.SetUserValue(aSymbolHeightMF.Normalize(aSymbolSize.Height()), FUNIT_100TH_MM);
1784 : : }
1785 : : }
1786 : : else
1787 : : {
1788 : 0 : long nDelta = nHeightVal - aSymbolLastSize.Height();
1789 : 0 : aSymbolSize.Height() = nHeightVal;
1790 [ # # ]: 0 : if (bRatio)
1791 : : {
1792 : 0 : aSymbolSize.Width() = aSymbolLastSize.Width() + (long)((double)nDelta * fSizeRatio);
1793 : 0 : aSymbolSize.Width() = OutputDevice::LogicToLogic( aSymbolSize.Width(),
1794 : 0 : (MapUnit)ePoolUnit, MAP_100TH_MM );
1795 : 0 : aSymbolWidthMF.SetUserValue(aSymbolWidthMF.Normalize(aSymbolSize.Width()), FUNIT_100TH_MM);
1796 : : }
1797 : : }
1798 : 0 : aCtlPreview.ResizeSymbol(aSymbolSize);
1799 : 0 : aSymbolLastSize=aSymbolSize;
1800 : 0 : return 0;
1801 : : }
1802 : 0 : IMPL_LINK( SvxLineTabPage, RatioHdl_Impl, CheckBox *, pBox )
1803 : : {
1804 [ # # ]: 0 : if (pBox->IsChecked())
1805 : : {
1806 [ # # ]: 0 : if (bLastWidthModified)
1807 : 0 : SizeHdl_Impl(&aSymbolWidthMF);
1808 : : else
1809 : 0 : SizeHdl_Impl(&aSymbolHeightMF);
1810 : : }
1811 : 0 : return 0;
1812 : : }
1813 : :
1814 : :
1815 : 0 : void SvxLineTabPage::DataChanged( const DataChangedEvent& rDCEvt )
1816 : : {
1817 : 0 : SvxTabPage::DataChanged( rDCEvt );
1818 : :
1819 [ # # ][ # # ]: 0 : if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
[ # # ]
1820 : : {
1821 : 0 : FillListboxes();
1822 : : }
1823 : 0 : }
1824 : :
1825 : 0 : void SvxLineTabPage::PageCreated (SfxAllItemSet aSet)
1826 : : {
1827 : 0 : SFX_ITEMSET_ARG (&aSet,pColorListItem,SvxColorListItem,SID_COLOR_TABLE,sal_False);
1828 : 0 : SFX_ITEMSET_ARG (&aSet,pDashListItem,SvxDashListItem,SID_DASH_LIST,sal_False);
1829 : 0 : SFX_ITEMSET_ARG (&aSet,pLineEndListItem,SvxLineEndListItem,SID_LINEEND_LIST,sal_False);
1830 : 0 : SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False);
1831 : 0 : SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False);
1832 : 0 : SFX_ITEMSET_ARG (&aSet,pSdrObjListItem,OfaPtrItem,SID_OBJECT_LIST,sal_False);
1833 : 0 : SFX_ITEMSET_ARG (&aSet,pSymbolAttrItem,SfxTabDialogItem,SID_ATTR_SET,sal_False);
1834 : 0 : SFX_ITEMSET_ARG (&aSet,pGraphicItem,SvxGraphicItem,SID_GRAPHIC,sal_False);
1835 : :
1836 [ # # ]: 0 : if (pColorListItem)
1837 [ # # ]: 0 : SetColorList(pColorListItem->GetColorList());
1838 [ # # ]: 0 : if (pDashListItem)
1839 [ # # ]: 0 : SetDashList(pDashListItem->GetDashList());
1840 [ # # ]: 0 : if (pLineEndListItem)
1841 [ # # ]: 0 : SetLineEndList(pLineEndListItem->GetLineEndList());
1842 [ # # ]: 0 : if (pPageTypeItem)
1843 : 0 : SetPageType(pPageTypeItem->GetValue());
1844 [ # # ]: 0 : if (pDlgTypeItem)
1845 : 0 : SetDlgType(pDlgTypeItem->GetValue());
1846 : 0 : Construct();
1847 : :
1848 [ # # ]: 0 : if(pSdrObjListItem) //symbols
1849 : : {
1850 : 0 : ShowSymbolControls(sal_True);
1851 : 0 : pSymbolList = static_cast<SdrObjList*>(pSdrObjListItem->GetValue());
1852 [ # # ]: 0 : if (pSymbolAttrItem)
1853 [ # # ]: 0 : pSymbolAttr = new SfxItemSet(pSymbolAttrItem->GetItemSet());
1854 [ # # ]: 0 : if(pGraphicItem)
1855 [ # # ]: 0 : aAutoSymbolGraphic = pGraphicItem->GetGraphic();
1856 : : }
1857 : 0 : }
1858 : :
1859 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|