Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <comphelper/string.hxx>
21 : #include <tools/shl.hxx>
22 : #include <sfx2/app.hxx>
23 : #include <sfx2/module.hxx>
24 : #include <swpossizetabpage.hxx>
25 : #include <svx/dialogs.hrc>
26 : #define _SVX_LABDLG_CXX
27 :
28 : #include <svx/svdattrx.hxx>
29 : #include <cuires.hrc>
30 : #include <dialmgr.hxx>
31 : #include "svx/dlgutil.hxx"
32 : #include "transfrm.hxx"
33 :
34 : #include "labdlg.hrc"
35 : #include "labdlg.hxx"
36 :
37 : // define ----------------------------------------------------------------
38 :
39 : #define AZ_OPTIMAL 0
40 : #define AZ_VON_OBEN 1
41 : #define AZ_VON_LINKS 2
42 : #define AZ_HORIZONTAL 3
43 : #define AZ_VERTIKAL 4
44 :
45 : #define AT_OBEN 0
46 : #define AT_MITTE 1
47 : #define AT_UNTEN 2
48 :
49 : #define WK_OPTIMAL 0
50 : #define WK_30 1
51 : #define WK_45 2
52 : #define WK_60 3
53 : #define WK_90 4
54 :
55 : // static ----------------------------------------------------------------
56 :
57 : static sal_uInt16 pCaptionRanges[] =
58 : {
59 : SDRATTR_CAPTIONTYPE,
60 : SDRATTR_CAPTIONFIXEDANGLE,
61 : SDRATTR_CAPTIONANGLE,
62 : SDRATTR_CAPTIONGAP,
63 : SDRATTR_CAPTIONESCDIR,
64 : SDRATTR_CAPTIONESCISREL,
65 : SDRATTR_CAPTIONESCREL,
66 : SDRATTR_CAPTIONESCABS,
67 : SDRATTR_CAPTIONLINELEN,
68 : SDRATTR_CAPTIONFITLINELEN,
69 : 0
70 : };
71 :
72 : // -----------------------------------------------------------------------
73 :
74 0 : SvxCaptionTabPage::SvxCaptionTabPage(Window* pParent, const SfxItemSet& rInAttrs)
75 0 : : SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_CAPTION ), rInAttrs ),
76 :
77 0 : aCT_CAPTTYPE( this, CUI_RES( CT_CAPTTYPE ) ),
78 0 : aFT_ABSTAND( this, CUI_RES( FT_ABSTAND ) ),
79 0 : aMF_ABSTAND( this, CUI_RES( MF_ABSTAND ) ),
80 0 : aFT_WINKEL( this, CUI_RES( FT_WINKEL ) ),
81 0 : aLB_WINKEL( this, CUI_RES( LB_WINKEL ) ),
82 0 : aFT_ANSATZ( this, CUI_RES( FT_ANSATZ ) ),
83 0 : aLB_ANSATZ( this, CUI_RES( LB_ANSATZ ) ),
84 0 : aFT_UM( this, CUI_RES( FT_UM ) ),
85 0 : aMF_ANSATZ( this, CUI_RES( MF_ANSATZ ) ),
86 0 : aFT_ANSATZ_REL( this, CUI_RES( FT_ANSATZ_REL ) ),
87 0 : aLB_ANSATZ_REL( this, CUI_RES( LB_ANSATZ_REL ) ),
88 0 : aFT_LAENGE( this, CUI_RES( FT_LAENGE ) ),
89 0 : aMF_LAENGE( this, CUI_RES( MF_LAENGE ) ),
90 0 : aCB_LAENGE( this, CUI_RES( CB_LAENGE ) ),
91 :
92 0 : aStrHorzList( CUI_RES(STR_HORZ_LIST) ),
93 0 : aStrVertList( CUI_RES(STR_VERT_LIST) ),
94 :
95 0 : rOutAttrs ( rInAttrs )
96 : {
97 : //------------NYI-------------------------------------------
98 0 : aFT_WINKEL.Hide();
99 0 : aLB_WINKEL.Hide();
100 :
101 : //------------correct positions-------------------------
102 0 : aFT_ANSATZ_REL.SetPosPixel( aFT_UM.GetPosPixel() );
103 : aLB_ANSATZ_REL.SetPosPixel(
104 : Point(
105 0 : aFT_ANSATZ_REL.GetPosPixel().X()+aFT_ANSATZ_REL.GetSizePixel().Width()+6,
106 0 : aLB_ANSATZ.GetPosPixel().Y() )
107 0 : );
108 :
109 : aMF_ANSATZ.SetPosPixel(
110 : Point(
111 0 : aFT_UM.GetPosPixel().X()+aFT_UM.GetSizePixel().Width()+6,
112 0 : aLB_ANSATZ.GetPosPixel().Y() )
113 0 : );
114 :
115 : sal_uInt16 nBitmap;
116 0 : for( nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; nBitmap++ )
117 0 : mpBmpCapTypes[nBitmap] = new Image(Bitmap(CUI_RES(BMP_CAPTTYPE_1 + nBitmap)), COL_LIGHTMAGENTA );
118 :
119 : //------------install ValueSet--------------------------
120 0 : aCT_CAPTTYPE.SetStyle( aCT_CAPTTYPE.GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD );
121 0 : aCT_CAPTTYPE.SetColCount(5);//XXX
122 0 : aCT_CAPTTYPE.SetLineCount(1);
123 0 : aCT_CAPTTYPE.SetSelectHdl(LINK( this, SvxCaptionTabPage, SelectCaptTypeHdl_Impl));
124 :
125 0 : Image aImage;
126 0 : aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_1, aImage, String(CUI_RES(STR_CAPTTYPE_1)));
127 0 : aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_2, aImage, String(CUI_RES(STR_CAPTTYPE_2)));
128 0 : aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_3, aImage, String(CUI_RES(STR_CAPTTYPE_3)));
129 :
130 0 : FillValueSet();
131 :
132 0 : aLB_ANSATZ.SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzSelectHdl_Impl));
133 0 : aLB_ANSATZ_REL.SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzRelSelectHdl_Impl));
134 0 : aCB_LAENGE.SetClickHdl(LINK(this,SvxCaptionTabPage,LineOptHdl_Impl));
135 :
136 0 : FreeResource();
137 0 : }
138 :
139 : // -----------------------------------------------------------------------
140 :
141 0 : SvxCaptionTabPage::~SvxCaptionTabPage()
142 : {
143 : sal_uInt16 nBitmap;
144 0 : for( nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; nBitmap++ )
145 0 : delete mpBmpCapTypes[nBitmap];
146 0 : }
147 :
148 : // -----------------------------------------------------------------------
149 :
150 0 : void SvxCaptionTabPage::Construct()
151 : {
152 : // set rectangle and working area
153 : DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
154 0 : }
155 :
156 : // -----------------------------------------------------------------------
157 :
158 0 : sal_Bool SvxCaptionTabPage::FillItemSet( SfxItemSet& _rOutAttrs)
159 : {
160 0 : SfxItemPool* pPool = _rOutAttrs.GetPool();
161 : DBG_ASSERT( pPool, "Wo ist der Pool" );
162 :
163 : SfxMapUnit eUnit;
164 :
165 0 : nCaptionType = aCT_CAPTTYPE.GetSelectItemId()-1;
166 :
167 0 : _rOutAttrs.Put( SdrCaptionTypeItem( (SdrCaptionType) nCaptionType ) );
168 :
169 0 : if( aMF_ABSTAND.IsValueModified() )
170 : {
171 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONGAP ) );
172 0 : _rOutAttrs.Put( SdrCaptionGapItem( GetCoreValue(aMF_ABSTAND, eUnit ) ) );
173 : }
174 :
175 : // special treatment!!! XXX
176 0 : if( nCaptionType==SDRCAPT_TYPE1 )
177 : {
178 0 : switch( nEscDir )
179 : {
180 0 : case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break;
181 0 : case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break;
182 : }
183 : }
184 :
185 0 : _rOutAttrs.Put( SdrCaptionEscDirItem( (SdrCaptionEscDir)nEscDir ) );
186 :
187 0 : bEscRel = aLB_ANSATZ_REL.IsVisible();
188 0 : _rOutAttrs.Put( SdrCaptionEscIsRelItem( bEscRel ) );
189 :
190 0 : if( bEscRel )
191 : {
192 0 : long nVal = 0;
193 :
194 0 : switch( aLB_ANSATZ_REL.GetSelectEntryPos() )
195 : {
196 0 : case AT_OBEN: nVal=0;break;
197 0 : case AT_MITTE: nVal=5000;break;
198 0 : case AT_UNTEN: nVal=10000;break;
199 : }
200 0 : _rOutAttrs.Put( SdrCaptionEscRelItem( nVal ) );
201 : }
202 : else
203 : {
204 0 : if( aMF_ANSATZ.IsValueModified() )
205 : {
206 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONESCABS ) );
207 0 : _rOutAttrs.Put( SdrCaptionEscAbsItem( GetCoreValue(aMF_ANSATZ, eUnit ) ) );
208 : }
209 : }
210 :
211 0 : bFitLineLen = aCB_LAENGE.IsChecked();
212 0 : _rOutAttrs.Put( SdrCaptionFitLineLenItem( bFitLineLen ) );
213 :
214 0 : if( ! bFitLineLen )
215 : {
216 0 : if( aMF_LAENGE.IsValueModified() )
217 : {
218 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONLINELEN ) );
219 0 : _rOutAttrs.Put( SdrCaptionLineLenItem( GetCoreValue(aMF_LAENGE, eUnit ) ) );
220 : }
221 : }
222 :
223 : //NYI-------------the angles have to be added here!!! XXX----------------------
224 :
225 0 : return( sal_True );
226 : }
227 :
228 : // -----------------------------------------------------------------------
229 :
230 0 : void SvxCaptionTabPage::Reset( const SfxItemSet& )
231 : {
232 :
233 : //------------set metric-----------------------------
234 :
235 0 : FieldUnit eFUnit = GetModuleFieldUnit( rOutAttrs );
236 :
237 0 : switch ( eFUnit )
238 : {
239 : case FUNIT_CM:
240 : case FUNIT_M:
241 : case FUNIT_KM:
242 0 : eFUnit = FUNIT_MM;
243 0 : break;
244 : default: ;//prevent warning
245 : }
246 0 : SetFieldUnit( aMF_ABSTAND, eFUnit );
247 0 : SetFieldUnit( aMF_ANSATZ, eFUnit );
248 0 : SetFieldUnit( aMF_LAENGE, eFUnit );
249 :
250 0 : SfxItemPool* pPool = rOutAttrs.GetPool();
251 : DBG_ASSERT( pPool, "Wo ist der Pool" );
252 :
253 : sal_uInt16 nWhich;
254 : SfxMapUnit eUnit;
255 :
256 : //------- angle ----------
257 0 : nWhich = GetWhich( SDRATTR_CAPTIONANGLE );
258 0 : nFixedAngle = ( ( const SdrCaptionAngleItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
259 :
260 0 : nWhich = GetWhich( SDRATTR_CAPTIONESCABS );
261 0 : eUnit = pPool->GetMetric( nWhich );
262 0 : nEscAbs = ( ( const SdrCaptionEscAbsItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
263 0 : SetMetricValue( aMF_ANSATZ, nEscAbs, eUnit );
264 0 : nEscAbs = static_cast<long>(aMF_ANSATZ.GetValue());
265 :
266 0 : nWhich = GetWhich( SDRATTR_CAPTIONESCREL );
267 0 : nEscRel = (long)( ( const SdrCaptionEscRelItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
268 :
269 : //------- line length ----------
270 0 : nWhich = GetWhich( SDRATTR_CAPTIONLINELEN );
271 0 : eUnit = pPool->GetMetric( nWhich );
272 0 : nLineLen = ( ( const SdrCaptionLineLenItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
273 0 : SetMetricValue( aMF_LAENGE, nLineLen, eUnit );
274 0 : nLineLen = static_cast<long>(aMF_LAENGE.GetValue());
275 :
276 : //------- distance to box ----------
277 0 : nWhich = GetWhich( SDRATTR_CAPTIONGAP );
278 0 : eUnit = pPool->GetMetric( nWhich );
279 0 : nGap = ( ( const SdrCaptionGapItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
280 0 : SetMetricValue( aMF_ABSTAND, nGap, eUnit );
281 0 : nGap = static_cast<long>(aMF_ABSTAND.GetValue());
282 :
283 0 : nCaptionType = (short)( ( const SdrCaptionTypeItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONTYPE ) ) ).GetValue();
284 0 : bFixedAngle = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFIXEDANGLE ) ) ).GetValue();
285 0 : bFitLineLen = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFITLINELEN ) ) ).GetValue();
286 0 : nEscDir = (short)( ( const SdrCaptionEscDirItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCDIR ) ) ).GetValue();
287 0 : bEscRel = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCISREL ) ) ).GetValue();
288 :
289 : // special treatment!!! XXX
290 0 : if( nCaptionType==SDRCAPT_TYPE1 )
291 : {
292 0 : switch( nEscDir )
293 : {
294 0 : case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break;
295 0 : case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break;
296 : }
297 : }
298 :
299 0 : nAnsatzRelPos=AT_MITTE;
300 0 : nAnsatzTypePos=AZ_OPTIMAL;
301 0 : nWinkelTypePos=WK_OPTIMAL;
302 :
303 0 : aMF_ABSTAND.SetValue( nGap );
304 :
305 0 : if( nEscDir == SDRCAPT_ESCHORIZONTAL )
306 : {
307 0 : if( bEscRel )
308 : {
309 0 : if( nEscRel < 3333 )
310 0 : nAnsatzRelPos = AT_OBEN;
311 0 : if( nEscRel > 6666 )
312 0 : nAnsatzRelPos = AT_UNTEN;
313 0 : nAnsatzTypePos = AZ_HORIZONTAL;
314 : }
315 : else
316 : {
317 0 : nAnsatzTypePos = AZ_VON_OBEN;
318 0 : aMF_ANSATZ.SetValue( nEscAbs );
319 : }
320 : }
321 0 : else if( nEscDir == SDRCAPT_ESCVERTICAL )
322 : {
323 0 : if( bEscRel )
324 : {
325 0 : if( nEscRel < 3333 )
326 0 : nAnsatzRelPos = AT_OBEN;
327 0 : if( nEscRel > 6666 )
328 0 : nAnsatzRelPos = AT_UNTEN;
329 0 : nAnsatzTypePos = AZ_VERTIKAL;
330 : }
331 : else
332 : {
333 0 : nAnsatzTypePos = AZ_VON_LINKS;
334 0 : aMF_ANSATZ.SetValue( nEscAbs );
335 : }
336 : }
337 0 : else if( nEscDir == SDRCAPT_ESCBESTFIT )
338 : {
339 0 : nAnsatzTypePos = AZ_OPTIMAL;
340 : }
341 :
342 0 : if( bFixedAngle )
343 : {
344 0 : if( nFixedAngle <= 3000 )
345 0 : nWinkelTypePos=WK_30;
346 0 : else if( nFixedAngle <= 4500 )
347 0 : nWinkelTypePos=WK_45;
348 0 : else if( nFixedAngle <= 6000 )
349 0 : nWinkelTypePos=WK_60;
350 : else
351 0 : nWinkelTypePos=WK_90;
352 : }
353 :
354 0 : aCB_LAENGE.Check( bFitLineLen );
355 0 : aMF_LAENGE.SetValue( nLineLen );
356 :
357 0 : aLB_ANSATZ.SelectEntryPos( nAnsatzTypePos );
358 0 : aLB_WINKEL.SelectEntryPos( nWinkelTypePos );
359 :
360 0 : SetupAnsatz_Impl( nAnsatzTypePos );
361 0 : aCT_CAPTTYPE.SelectItem( nCaptionType+1 ); // Enum starts at 0!
362 0 : SetupType_Impl( nCaptionType+1 );
363 0 : }
364 :
365 : // -----------------------------------------------------------------------
366 :
367 0 : SfxTabPage* SvxCaptionTabPage::Create( Window* pWindow,
368 : const SfxItemSet& rOutAttrs )
369 : {
370 0 : return( new SvxCaptionTabPage( pWindow, rOutAttrs ) );
371 : }
372 :
373 : //------------------------------------------------------------------------
374 :
375 0 : sal_uInt16* SvxCaptionTabPage::GetRanges()
376 : {
377 0 : return( pCaptionRanges );
378 : }
379 :
380 : //------------------------------------------------------------------------
381 :
382 0 : void SvxCaptionTabPage::SetupAnsatz_Impl( sal_uInt16 nType )
383 : {
384 0 : xub_StrLen nCnt=0, nIdx=0;
385 :
386 0 : switch( nType )
387 : {
388 : case AZ_OPTIMAL:
389 : // aMF_ANSATZ.Hide(); //XXX in case of OPTIMAL also absolute values are taken
390 : // aFT_UM.Hide();
391 0 : aMF_ANSATZ.Show();
392 0 : aFT_UM.Show();
393 0 : aFT_ANSATZ_REL.Hide();
394 0 : aLB_ANSATZ_REL.Hide();
395 0 : nEscDir = SDRCAPT_ESCBESTFIT;
396 0 : break;
397 :
398 : case AZ_VON_OBEN:
399 0 : aMF_ANSATZ.Show();
400 0 : aFT_UM.Show();
401 0 : aFT_ANSATZ_REL.Hide();
402 0 : aLB_ANSATZ_REL.Hide();
403 0 : nEscDir = SDRCAPT_ESCHORIZONTAL;
404 0 : break;
405 :
406 : case AZ_VON_LINKS:
407 0 : aMF_ANSATZ.Show();
408 0 : aFT_UM.Show();
409 0 : aFT_ANSATZ_REL.Hide();
410 0 : aLB_ANSATZ_REL.Hide();
411 0 : nEscDir = SDRCAPT_ESCVERTICAL;
412 0 : break;
413 :
414 : case AZ_HORIZONTAL:
415 0 : aLB_ANSATZ_REL.Clear();
416 0 : nCnt = comphelper::string::getTokenCount(aStrHorzList, ';');
417 0 : for( nIdx=0 ; nIdx<nCnt ; nIdx++ )
418 0 : aLB_ANSATZ_REL.InsertEntry( aStrHorzList.GetToken(nIdx) );
419 0 : aLB_ANSATZ_REL.SelectEntryPos( nAnsatzRelPos );
420 :
421 0 : aMF_ANSATZ.Hide();
422 0 : aFT_UM.Hide();
423 0 : aFT_ANSATZ_REL.Show();
424 0 : aLB_ANSATZ_REL.Show();
425 0 : nEscDir = SDRCAPT_ESCHORIZONTAL;
426 0 : break;
427 :
428 : case AZ_VERTIKAL:
429 0 : aLB_ANSATZ_REL.Clear();
430 0 : nCnt = comphelper::string::getTokenCount(aStrVertList, ';');
431 0 : for( nIdx=0 ; nIdx<nCnt ; nIdx++ )
432 0 : aLB_ANSATZ_REL.InsertEntry( aStrVertList.GetToken(nIdx) );
433 0 : aLB_ANSATZ_REL.SelectEntryPos( nAnsatzRelPos );
434 :
435 0 : aMF_ANSATZ.Hide();
436 0 : aFT_UM.Hide();
437 0 : aFT_ANSATZ_REL.Show();
438 0 : aLB_ANSATZ_REL.Show();
439 0 : nEscDir = SDRCAPT_ESCVERTICAL;
440 0 : break;
441 : }
442 0 : }
443 :
444 : //------------------------------------------------------------------------
445 :
446 0 : IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
447 : {
448 0 : if( pListBox == &aLB_ANSATZ )
449 : {
450 0 : SetupAnsatz_Impl( aLB_ANSATZ.GetSelectEntryPos() );
451 : }
452 0 : return 0;
453 : }
454 0 : IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
455 :
456 : //------------------------------------------------------------------------
457 :
458 0 : IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
459 : {
460 0 : if( pListBox == &aLB_ANSATZ_REL )
461 : {
462 0 : nAnsatzRelPos = aLB_ANSATZ_REL.GetSelectEntryPos();
463 : }
464 0 : return 0;
465 : }
466 0 : IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
467 :
468 : //------------------------------------------------------------------------
469 :
470 0 : IMPL_LINK( SvxCaptionTabPage, LineOptHdl_Impl, Button *, pButton )
471 : {
472 0 : if( pButton == &aCB_LAENGE )
473 : {
474 0 : if( aCB_LAENGE.IsChecked() || ! aCB_LAENGE.IsEnabled() )
475 : {
476 0 : aFT_LAENGE.Disable();
477 0 : aMF_LAENGE.Disable();
478 : }
479 : else
480 : {
481 0 : aFT_LAENGE.Enable();
482 0 : aMF_LAENGE.Enable();
483 : }
484 : }
485 0 : return 0;
486 : }
487 :
488 : //------------------------------------------------------------------------
489 :
490 0 : IMPL_LINK_NOARG_INLINE_START(SvxCaptionTabPage, SelectCaptTypeHdl_Impl)
491 : {
492 0 : SetupType_Impl( aCT_CAPTTYPE.GetSelectItemId() );
493 0 : return 0;
494 : }
495 0 : IMPL_LINK_NOARG_INLINE_END(SvxCaptionTabPage, SelectCaptTypeHdl_Impl)
496 :
497 : //------------------------------------------------------------------------
498 :
499 0 : void SvxCaptionTabPage::SetupType_Impl( sal_uInt16 nType )
500 : {
501 0 : switch( nType-1 )
502 : {
503 : case SDRCAPT_TYPE1:
504 0 : aFT_WINKEL.Disable();
505 0 : aLB_WINKEL.Disable();
506 0 : aFT_LAENGE.Disable();
507 0 : aCB_LAENGE.Disable();
508 0 : LineOptHdl_Impl( &aCB_LAENGE );
509 0 : break;
510 :
511 : case SDRCAPT_TYPE2:
512 0 : aFT_WINKEL.Enable();
513 0 : aLB_WINKEL.Enable();
514 0 : aFT_LAENGE.Disable();
515 0 : aCB_LAENGE.Disable();
516 0 : LineOptHdl_Impl( &aCB_LAENGE );
517 0 : break;
518 :
519 : case SDRCAPT_TYPE3:
520 0 : aFT_WINKEL.Enable();
521 0 : aLB_WINKEL.Enable();
522 0 : aFT_LAENGE.Enable();
523 0 : aCB_LAENGE.Enable();
524 0 : LineOptHdl_Impl( &aCB_LAENGE );
525 0 : break;
526 :
527 : case SDRCAPT_TYPE4:
528 0 : aFT_WINKEL.Enable();
529 0 : aLB_WINKEL.Enable();
530 0 : aFT_LAENGE.Enable();
531 0 : aCB_LAENGE.Enable();
532 0 : LineOptHdl_Impl( &aCB_LAENGE );
533 0 : break;
534 : }
535 0 : }
536 :
537 : // -----------------------------------------------------------------------
538 :
539 0 : void SvxCaptionTabPage::DataChanged( const DataChangedEvent& rDCEvt )
540 : {
541 0 : SfxTabPage::DataChanged( rDCEvt );
542 :
543 0 : if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
544 0 : FillValueSet();
545 0 : }
546 :
547 : // -----------------------------------------------------------------------
548 :
549 0 : void SvxCaptionTabPage::FillValueSet()
550 : {
551 0 : Image** ppBitmaps = mpBmpCapTypes;
552 0 : aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_1, *(ppBitmaps[0]) );
553 0 : aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_2, *(ppBitmaps[1]) );
554 0 : aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_3, *(ppBitmaps[2]) );
555 0 : }
556 :
557 : //========================================================================
558 :
559 :
560 0 : SvxCaptionTabDialog::SvxCaptionTabDialog(Window* pParent, const SdrView* pSdrView, sal_uInt16 nAnchorTypes)
561 0 : : SfxTabDialog( pParent, CUI_RES( RID_SVXDLG_CAPTION ) ),
562 : pView ( pSdrView ),
563 0 : nAnchorCtrls(nAnchorTypes)
564 : {
565 0 : FreeResource();
566 :
567 : DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
568 :
569 : //different positioning page in Writer
570 0 : if(nAnchorCtrls & 0x00ff )
571 : {
572 : AddTabPage( RID_SVXPAGE_SWPOSSIZE, SvxSwPosSizeTabPage::Create,
573 0 : SvxSwPosSizeTabPage::GetRanges );
574 0 : RemoveTabPage( RID_SVXPAGE_POSITION_SIZE);
575 : }
576 : else
577 : {
578 : AddTabPage( RID_SVXPAGE_POSITION_SIZE, SvxPositionSizeTabPage::Create,
579 0 : SvxPositionSizeTabPage::GetRanges );
580 0 : RemoveTabPage( RID_SVXPAGE_SWPOSSIZE );
581 : }
582 : AddTabPage( RID_SVXPAGE_CAPTION, SvxCaptionTabPage::Create,
583 0 : SvxCaptionTabPage::GetRanges );
584 0 : }
585 :
586 : // -----------------------------------------------------------------------
587 :
588 0 : SvxCaptionTabDialog::~SvxCaptionTabDialog()
589 : {
590 0 : }
591 :
592 : // -----------------------------------------------------------------------
593 :
594 0 : void SvxCaptionTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
595 : {
596 0 : switch( nId )
597 : {
598 : case RID_SVXPAGE_POSITION_SIZE:
599 0 : ( (SvxPositionSizeTabPage&) rPage ).SetView( pView );
600 0 : ( (SvxPositionSizeTabPage&) rPage ).Construct();
601 0 : if( nAnchorCtrls & SVX_OBJ_NORESIZE )
602 0 : ( (SvxPositionSizeTabPage&) rPage ).DisableResize();
603 :
604 0 : if( nAnchorCtrls & SVX_OBJ_NOPROTECT )
605 0 : ( (SvxPositionSizeTabPage&) rPage ).DisableProtect();
606 0 : break;
607 : case RID_SVXPAGE_SWPOSSIZE :
608 : {
609 0 : SvxSwPosSizeTabPage& rSwPage = static_cast<SvxSwPosSizeTabPage&>(rPage);
610 0 : rSwPage.EnableAnchorTypes(nAnchorCtrls);
611 0 : rSwPage.SetValidateFramePosLink( aValidateLink );
612 : }
613 0 : break;
614 :
615 : case RID_SVXPAGE_CAPTION:
616 0 : ( (SvxCaptionTabPage&) rPage ).SetView( pView );
617 0 : ( (SvxCaptionTabPage&) rPage ).Construct();
618 0 : break;
619 : }
620 0 : }
621 :
622 0 : void SvxCaptionTabDialog::SetValidateFramePosLink( const Link& rLink )
623 : {
624 0 : aValidateLink = rLink;
625 3 : }
626 :
627 :
628 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|