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