1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_sd.hxx" 26 #include <svx/svdmodel.hxx> 27 #include <sfx2/app.hxx> 28 #include <sfx2/sfx.hrc> 29 #ifndef _SV_SALBTYPE_HRC //autogen 30 #include <vcl/salbtype.hxx> 31 #endif 32 #include <unotools/syslocale.hxx> 33 34 #include "app.hxx" 35 #include "optsitem.hxx" 36 #include "cfgids.hxx" 37 #include "FrameView.hxx" 38 39 using namespace ::rtl; 40 using namespace ::utl; 41 using namespace ::com::sun::star::uno; 42 43 #define B2U(_def_aStr) (OUString::createFromAscii(_def_aStr)) 44 45 template< class T > T getSafeValue( const Any& rAny ) 46 { 47 T value = T(); 48 bool bOk = (rAny >>= value); 49 50 DBG_ASSERT( bOk, "SdOptionsItem, wrong type from configuration!" ); 51 (void)bOk; 52 53 return value; 54 } 55 56 // ----------------- 57 // - SdOptionsItem - 58 // ----------------- 59 60 SdOptionsItem::SdOptionsItem( const SdOptionsGeneric& rParent, const OUString rSubTree ) : 61 ConfigItem ( rSubTree ), 62 mrParent ( rParent ) 63 { 64 } 65 66 // ----------------------------------------------------------------------------- 67 68 SdOptionsItem::~SdOptionsItem() 69 { 70 } 71 72 // ----------------------------------------------------------------------------- 73 74 void SdOptionsItem::Commit() 75 { 76 if( IsModified() ) 77 mrParent.Commit( *this ); 78 }; 79 80 void SdOptionsItem::Notify( const com::sun::star::uno::Sequence<rtl::OUString>& ) 81 {} 82 83 84 // ----------------------------------------------------------------------------- 85 86 Sequence< Any > SdOptionsItem::GetProperties( const Sequence< OUString >& rNames ) 87 { 88 return ConfigItem::GetProperties( rNames ); 89 } 90 91 // ----------------------------------------------------------------------------- 92 93 sal_Bool SdOptionsItem::PutProperties( const Sequence< OUString >& rNames, const Sequence< Any>& rValues ) 94 { 95 return ConfigItem::PutProperties( rNames, rValues ); 96 } 97 98 // ----------------------------------------------------------------------------- 99 100 void SdOptionsItem::SetModified() 101 { 102 ConfigItem::SetModified(); 103 } 104 105 // -------------------- 106 // - SdOptionsGeneric - 107 // -------------------- 108 109 SdOptionsGeneric::SdOptionsGeneric( sal_uInt16 nConfigId, const OUString& rSubTree ) : 110 maSubTree ( rSubTree ), 111 mpCfgItem ( NULL ), 112 mnConfigId ( nConfigId ), 113 mbInit ( rSubTree.getLength() == 0 ) 114 { 115 } 116 117 // ----------------------------------------------------------------------------- 118 119 void SdOptionsGeneric::Init() const 120 { 121 if( !mbInit ) 122 { 123 SdOptionsGeneric* pThis = const_cast<SdOptionsGeneric*>(this); 124 125 if( !mpCfgItem ) 126 pThis->mpCfgItem = new SdOptionsItem( *this, maSubTree ); 127 128 const Sequence< OUString > aNames( GetPropertyNames() ); 129 const Sequence< Any > aValues = mpCfgItem->GetProperties( aNames ); 130 131 if( aNames.getLength() && ( aValues.getLength() == aNames.getLength() ) ) 132 { 133 const Any* pValues = aValues.getConstArray(); 134 135 pThis->EnableModify( sal_False ); 136 pThis->mbInit = pThis->ReadData( pValues ); 137 pThis->EnableModify( sal_True ); 138 } 139 else 140 pThis->mbInit = sal_True; 141 } 142 } 143 144 // ----------------------------------------------------------------------------- 145 146 SdOptionsGeneric::~SdOptionsGeneric() 147 { 148 delete mpCfgItem; 149 mpCfgItem = NULL; 150 } 151 152 // ----------------------------------------------------------------------------- 153 154 void SdOptionsGeneric::Commit( SdOptionsItem& rCfgItem ) const 155 { 156 const Sequence< OUString > aNames( GetPropertyNames() ); 157 Sequence< Any > aValues( aNames.getLength() ); 158 159 if( aNames.getLength() && ( aValues.getLength() == aNames.getLength() ) ) 160 { 161 if( (const_cast<SdOptionsGeneric*>(this))->WriteData( aValues.getArray() ) ) 162 rCfgItem.PutProperties( aNames, aValues ); 163 else 164 { 165 DBG_ERROR( "PutProperties failed" ); 166 } 167 } 168 } 169 170 // ----------------------------------------------------------------------------- 171 172 Sequence< OUString > SdOptionsGeneric::GetPropertyNames() const 173 { 174 sal_uLong nCount; 175 const char** ppPropNames; 176 177 GetPropNameArray( ppPropNames, nCount ); 178 179 Sequence< OUString > aNames( nCount ); 180 OUString* pNames = aNames.getArray(); 181 182 for( sal_uLong i = 0; i < nCount; i++ ) 183 pNames[ i ] = OUString::createFromAscii( ppPropNames[ i ] ); 184 185 return aNames; 186 } 187 188 // ----------------------------------------------------------------------------- 189 190 void SdOptionsGeneric::Store() 191 { 192 if( mpCfgItem ) 193 mpCfgItem->Commit(); 194 } 195 196 // ----------------------------------------------------------------------------- 197 198 bool SdOptionsGeneric::isMetricSystem() 199 { 200 SvtSysLocale aSysLocale; 201 MeasurementSystem eSys = aSysLocale.GetLocaleDataPtr()->getMeasurementSystemEnum(); 202 203 return ( eSys == MEASURE_METRIC ); 204 } 205 206 /************************************************************************* 207 |* SdOptionsLayout 208 \************************************************************************/ 209 210 SdOptionsLayout::SdOptionsLayout( sal_uInt16 nConfigId, sal_Bool bUseConfig ) : 211 SdOptionsGeneric( nConfigId, bUseConfig ? 212 ( ( SDCFG_DRAW == nConfigId ) ? 213 B2U( "Office.Draw/Layout" ) : 214 B2U( "Office.Impress/Layout" ) ) : 215 OUString() ), 216 bRuler( sal_True ), 217 bMoveOutline( sal_True ), 218 bDragStripes( sal_False ), 219 bHandlesBezier( sal_False ), 220 bHelplines( sal_True ), 221 nMetric((sal_uInt16)(isMetricSystem() ? FUNIT_CM : FUNIT_INCH)), 222 nDefTab( 1250 ) 223 { 224 EnableModify( sal_True ); 225 } 226 227 // ----------------------------------------------------------------------------- 228 229 sal_Bool SdOptionsLayout::operator==( const SdOptionsLayout& rOpt ) const 230 { 231 return( IsRulerVisible() == rOpt.IsRulerVisible() && 232 IsMoveOutline() == rOpt.IsMoveOutline() && 233 IsDragStripes() == rOpt.IsDragStripes() && 234 IsHandlesBezier() == rOpt.IsHandlesBezier() && 235 IsHelplines() == rOpt.IsHelplines() && 236 GetMetric() == rOpt.GetMetric() && 237 GetDefTab() == rOpt.GetDefTab() ); 238 } 239 240 // ----------------------------------------------------------------------------- 241 242 void SdOptionsLayout::GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const 243 { 244 static const char* aPropNamesMetric[] = 245 { 246 "Display/Ruler", 247 "Display/Bezier", 248 "Display/Contour", 249 "Display/Guide", 250 "Display/Helpline", 251 "Other/MeasureUnit/Metric", 252 "Other/TabStop/Metric" 253 }; 254 255 static const char* aPropNamesNonMetric[] = 256 { 257 "Display/Ruler", 258 "Display/Bezier", 259 "Display/Contour", 260 "Display/Guide", 261 "Display/Helpline", 262 "Other/MeasureUnit/NonMetric", 263 "Other/TabStop/NonMetric" 264 }; 265 266 rCount = 7; 267 268 if( isMetricSystem() ) 269 ppNames = aPropNamesMetric; 270 else 271 ppNames = aPropNamesNonMetric; 272 } 273 274 // ----------------------------------------------------------------------------- 275 276 sal_Bool SdOptionsLayout::ReadData( const Any* pValues ) 277 { 278 if( pValues[0].hasValue() ) SetRulerVisible( *(sal_Bool*) pValues[ 0 ].getValue() ); 279 if( pValues[1].hasValue() ) SetHandlesBezier( *(sal_Bool*) pValues[ 1 ].getValue() ); 280 if( pValues[2].hasValue() ) SetMoveOutline( *(sal_Bool*) pValues[ 2 ].getValue() ); 281 if( pValues[3].hasValue() ) SetDragStripes( *(sal_Bool*) pValues[ 3 ].getValue() ); 282 if( pValues[4].hasValue() ) SetHelplines( *(sal_Bool*) pValues[ 4 ].getValue() ); 283 if( pValues[5].hasValue() ) SetMetric( (sal_uInt16) *(sal_Int32*) pValues[ 5 ].getValue() ); 284 if( pValues[6].hasValue() ) SetDefTab( (sal_uInt16) *(sal_Int32*) pValues[ 6 ].getValue() ); 285 286 return sal_True; 287 } 288 289 // ----------------------------------------------------------------------------- 290 291 sal_Bool SdOptionsLayout::WriteData( Any* pValues ) const 292 { 293 pValues[ 0 ] <<= IsRulerVisible(); 294 pValues[ 1 ] <<= IsHandlesBezier(); 295 pValues[ 2 ] <<= IsMoveOutline(); 296 pValues[ 3 ] <<= IsDragStripes(); 297 pValues[ 4 ] <<= IsHelplines(); 298 pValues[ 5 ] <<= (sal_Int32) GetMetric(); 299 pValues[ 6 ] <<= (sal_Int32) GetDefTab(); 300 301 return sal_True; 302 } 303 304 /************************************************************************* 305 |* SdOptionsLayoutItem 306 \************************************************************************/ 307 308 SdOptionsLayoutItem::SdOptionsLayoutItem( sal_uInt16 _nWhich ) 309 : SfxPoolItem ( _nWhich ) 310 , maOptionsLayout ( 0, sal_False ) 311 { 312 } 313 314 // ---------------------------------------------------------------------- 315 316 SdOptionsLayoutItem::SdOptionsLayoutItem( sal_uInt16 _nWhich, SdOptions* pOpts, ::sd::FrameView* pView ) 317 : SfxPoolItem ( _nWhich ) 318 , maOptionsLayout ( 0, sal_False ) 319 { 320 if( pOpts ) 321 { 322 maOptionsLayout.SetMetric( pOpts->GetMetric() ); 323 maOptionsLayout.SetDefTab( pOpts->GetDefTab() ); 324 } 325 326 if( pView ) 327 { 328 maOptionsLayout.SetRulerVisible( pView->HasRuler() ); 329 maOptionsLayout.SetMoveOutline( !pView->IsNoDragXorPolys() ); 330 maOptionsLayout.SetDragStripes( pView->IsDragStripes() ); 331 maOptionsLayout.SetHandlesBezier( pView->IsPlusHandlesAlwaysVisible() ); 332 maOptionsLayout.SetHelplines( pView->IsHlplVisible() ); 333 } 334 else if( pOpts ) 335 { 336 maOptionsLayout.SetRulerVisible( pOpts->IsRulerVisible() ); 337 maOptionsLayout.SetMoveOutline( pOpts->IsMoveOutline() ); 338 maOptionsLayout.SetDragStripes( pOpts->IsDragStripes() ); 339 maOptionsLayout.SetHandlesBezier( pOpts->IsHandlesBezier() ); 340 maOptionsLayout.SetHelplines( pOpts->IsHelplines() ); 341 } 342 } 343 344 // ---------------------------------------------------------------------- 345 346 SfxPoolItem* SdOptionsLayoutItem::Clone( SfxItemPool* ) const 347 { 348 return new SdOptionsLayoutItem( *this ); 349 } 350 351 352 // ---------------------------------------------------------------------- 353 354 int SdOptionsLayoutItem::operator==( const SfxPoolItem& rAttr ) const 355 { 356 const bool bSameType = SfxPoolItem::operator==( rAttr ); 357 DBG_ASSERT( bSameType, "SdOptionsLayoutItem::operator==(), different pool item type!" ); 358 return bSameType && ( maOptionsLayout == static_cast< const SdOptionsLayoutItem& >( rAttr ).maOptionsLayout ); 359 } 360 361 // ----------------------------------------------------------------------- 362 363 void SdOptionsLayoutItem::SetOptions( SdOptions* pOpts ) const 364 { 365 if( pOpts ) 366 { 367 pOpts->SetRulerVisible( maOptionsLayout.IsRulerVisible() ); 368 pOpts->SetMoveOutline( maOptionsLayout.IsMoveOutline() ); 369 pOpts->SetDragStripes( maOptionsLayout.IsDragStripes() ); 370 pOpts->SetHandlesBezier( maOptionsLayout.IsHandlesBezier() ); 371 pOpts->SetHelplines( maOptionsLayout.IsHelplines() ); 372 pOpts->SetMetric( maOptionsLayout.GetMetric() ); 373 pOpts->SetDefTab( maOptionsLayout.GetDefTab() ); 374 } 375 } 376 377 /************************************************************************* 378 |* SdOptionsContents 379 \************************************************************************/ 380 381 SdOptionsContents::SdOptionsContents( sal_uInt16 nConfigId, sal_Bool bUseConfig ) : 382 SdOptionsGeneric( nConfigId, bUseConfig ? 383 ( ( SDCFG_DRAW == nConfigId ) ? 384 B2U( "Office.Draw/Content" ) : 385 B2U( "Office.Impress/Content" ) ) : 386 OUString() ) 387 { 388 EnableModify( sal_True ); 389 } 390 391 // ----------------------------------------------------------------------------- 392 393 sal_Bool SdOptionsContents::operator==(const SdOptionsContents&) const 394 { 395 return true; 396 } 397 398 // ----------------------------------------------------------------------------- 399 400 void SdOptionsContents::GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const 401 { 402 static const char* aPropNames[] = 403 { 404 "Display/PicturePlaceholder", 405 "Display/ContourMode", 406 "Display/LineContour", 407 "Display/TextPlaceholder" 408 }; 409 410 rCount = 4; 411 ppNames = aPropNames; 412 } 413 414 // ----------------------------------------------------------------------------- 415 416 sal_Bool SdOptionsContents::ReadData(const Any*) 417 { 418 return sal_True; 419 } 420 421 // ----------------------------------------------------------------------------- 422 423 sal_Bool SdOptionsContents::WriteData( Any* pValues ) const 424 { 425 //#i80528# no draft anymore 426 pValues[ 0 ] <<= (sal_Bool)false; 427 pValues[ 1 ] <<= (sal_Bool)false; 428 pValues[ 2 ] <<= (sal_Bool)false; 429 pValues[ 3 ] <<= (sal_Bool)false; 430 431 return sal_True; 432 } 433 434 /************************************************************************* 435 |* SdOptionsContentsItem 436 \************************************************************************/ 437 438 SdOptionsContentsItem::SdOptionsContentsItem(sal_uInt16 _nWhich, SdOptions*, ::sd::FrameView*) 439 : SfxPoolItem ( _nWhich ) 440 , maOptionsContents ( 0, sal_False ) 441 { 442 } 443 444 // ---------------------------------------------------------------------- 445 446 SfxPoolItem* SdOptionsContentsItem::Clone( SfxItemPool* ) const 447 { 448 return new SdOptionsContentsItem( *this ); 449 } 450 451 // ---------------------------------------------------------------------- 452 453 int SdOptionsContentsItem::operator==( const SfxPoolItem& rAttr ) const 454 { 455 const bool bSameType = SfxPoolItem::operator==(rAttr); 456 DBG_ASSERT( bSameType, "SdOptionsContentsItem::operator==(), different pool item type!" ); 457 return bSameType && ( maOptionsContents == static_cast<const SdOptionsContentsItem&>( rAttr ).maOptionsContents ); 458 } 459 460 // ----------------------------------------------------------------------- 461 462 void SdOptionsContentsItem::SetOptions(SdOptions*) const 463 { 464 } 465 466 /************************************************************************* 467 |* SdOptionsMisc 468 \************************************************************************/ 469 470 SdOptionsMisc::SdOptionsMisc( sal_uInt16 nConfigId, sal_Bool bUseConfig ) : 471 SdOptionsGeneric( nConfigId, bUseConfig ? 472 ( ( SDCFG_DRAW == nConfigId ) ? 473 B2U( "Office.Draw/Misc" ) : 474 B2U( "Office.Impress/Misc" ) ) : 475 OUString() ), 476 // #97016# 477 nDefaultObjectSizeWidth(8000), 478 nDefaultObjectSizeHeight(5000), 479 bStartWithTemplate( sal_True ), 480 bMarkedHitMovesAlways( sal_True ), 481 bMoveOnlyDragging( sal_False ), 482 bCrookNoContortion( sal_False ), 483 bQuickEdit( GetConfigId() != SDCFG_DRAW ), 484 bMasterPageCache( sal_True ), 485 bDragWithCopy( sal_False ), 486 bPickThrough( sal_True ), 487 bBigHandles( sal_True ), // new default: Use big handles 488 bDoubleClickTextEdit( sal_True ), 489 bClickChangeRotation( sal_False ), 490 bStartWithActualPage( sal_False ), 491 bStartWithPresenterScreen( sal_True ), // default: Enable the Presenter Screen 492 bSolidDragging( sal_True ), 493 bSolidMarkHdl( sal_True ), // default: Use nice handles 494 bSummationOfParagraphs( sal_False ), 495 // #90356# 496 bShowUndoDeleteWarning( sal_True ), 497 bSlideshowRespectZOrder( sal_True ), 498 bShowComments( sal_True ), 499 bPreviewNewEffects( sal_True ), 500 bPreviewChangedEffects( sal_False ), 501 bPreviewTransitions( sal_True ), 502 mnDisplay( 0 ), 503 mnPenColor( 0xff0000 ), 504 mnPenWidth( 150.0 ), 505 506 // The default for 6.1-and-above documents is to use printer-independent 507 // formatting. 508 mnPrinterIndependentLayout (1) 509 { 510 EnableModify( sal_True ); 511 } 512 513 // ----------------------------------------------------------------------------- 514 515 sal_Bool SdOptionsMisc::operator==( const SdOptionsMisc& rOpt ) const 516 { 517 return( IsStartWithTemplate() == rOpt.IsStartWithTemplate() && 518 IsMarkedHitMovesAlways() == rOpt.IsMarkedHitMovesAlways() && 519 IsMoveOnlyDragging() == rOpt.IsMoveOnlyDragging() && 520 IsCrookNoContortion() == rOpt.IsCrookNoContortion() && 521 IsQuickEdit() == rOpt.IsQuickEdit() && 522 IsMasterPagePaintCaching() == rOpt.IsMasterPagePaintCaching() && 523 IsDragWithCopy() == rOpt.IsDragWithCopy() && 524 IsPickThrough() == rOpt.IsPickThrough() && 525 IsBigHandles() == rOpt.IsBigHandles() && 526 IsDoubleClickTextEdit() == rOpt.IsDoubleClickTextEdit() && 527 IsClickChangeRotation() == rOpt.IsClickChangeRotation() && 528 IsStartWithActualPage() == rOpt.IsStartWithActualPage() && 529 IsStartWithPresenterScreen() == rOpt.IsStartWithPresenterScreen() && 530 IsSummationOfParagraphs() == rOpt.IsSummationOfParagraphs() && 531 IsSolidDragging() == rOpt.IsSolidDragging() && 532 IsSolidMarkHdl() == rOpt.IsSolidMarkHdl() && 533 // #90356# 534 IsShowUndoDeleteWarning() == rOpt.IsShowUndoDeleteWarning() && 535 IsSlideshowRespectZOrder() == rOpt.IsSlideshowRespectZOrder() && 536 GetPrinterIndependentLayout() == rOpt.GetPrinterIndependentLayout() && 537 // #97016# 538 GetDefaultObjectSizeWidth() == rOpt.GetDefaultObjectSizeWidth() && 539 GetDefaultObjectSizeHeight() == rOpt.GetDefaultObjectSizeHeight() && 540 541 IsPreviewNewEffects() == rOpt.IsPreviewNewEffects() && 542 IsPreviewChangedEffects() == rOpt.IsPreviewChangedEffects() && 543 IsPreviewTransitions() == rOpt.IsPreviewTransitions() && 544 GetDisplay() == rOpt.GetDisplay() && 545 IsShowComments() == rOpt.IsShowComments() && 546 GetPresentationPenColor() == rOpt.GetPresentationPenColor() && 547 GetPresentationPenWidth() == rOpt.GetPresentationPenWidth() 548 ); 549 } 550 551 // ----------------------------------------------------------------------------- 552 553 void SdOptionsMisc::GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const 554 { 555 static const char* aPropNames[] = 556 { 557 "ObjectMoveable", 558 "NoDistort", 559 "TextObject/QuickEditing", 560 "BackgroundCache", 561 "CopyWhileMoving", 562 "TextObject/Selectable", 563 "BigHandles", 564 "DclickTextedit", 565 "RotateClick", 566 "Preview", 567 "ModifyWithAttributes", 568 "SimpleHandles", 569 // #97016# 570 "DefaultObjectSize/Width", 571 "DefaultObjectSize/Height", 572 573 "Compatibility/PrinterIndependentLayout", 574 575 "ShowComments", 576 577 // just for impress 578 "NewDoc/AutoPilot", 579 "Start/CurrentPage", 580 "Compatibility/AddBetween", 581 // #90356# 582 "ShowUndoDeleteWarning", 583 "SlideshowRespectZOrder", 584 585 "PreviewNewEffects", 586 "PreviewChangedEffects", 587 "PreviewTransitions", 588 589 "Display", 590 591 "PenColor", 592 "PenWidth", 593 594 "Start/PresenterScreen" 595 }; 596 597 rCount = ( ( GetConfigId() == SDCFG_IMPRESS ) ? 28 : 16 ); 598 ppNames = aPropNames; 599 } 600 601 // ----------------------------------------------------------------------------- 602 603 sal_Bool SdOptionsMisc::ReadData( const Any* pValues ) 604 { 605 if( pValues[0].hasValue() ) SetMarkedHitMovesAlways( *(sal_Bool*) pValues[ 0 ].getValue() ); 606 if( pValues[1].hasValue() ) SetCrookNoContortion( *(sal_Bool*) pValues[ 1 ].getValue() ); 607 if( pValues[2].hasValue() ) SetQuickEdit( *(sal_Bool*)pValues[ 2 ].getValue() ); 608 if( pValues[3].hasValue() ) SetMasterPagePaintCaching( *(sal_Bool*) pValues[ 3 ].getValue() ); 609 if( pValues[4].hasValue() ) SetDragWithCopy( *(sal_Bool*) pValues[ 4 ].getValue() ); 610 if( pValues[5].hasValue() ) SetPickThrough( *(sal_Bool*) pValues[ 5 ].getValue() ); 611 if( pValues[6].hasValue() ) SetBigHandles( *(sal_Bool*) pValues[ 6 ].getValue() ); 612 if( pValues[7].hasValue() ) SetDoubleClickTextEdit( *(sal_Bool*) pValues[ 7 ].getValue() ); 613 if( pValues[8].hasValue() ) SetClickChangeRotation( *(sal_Bool*) pValues[ 8 ].getValue() ); 614 // if( pValues[9].hasValue() ) SetPreviewQuality( FRound( *(double*) pValues[ 9 ].getValue() ) ); 615 if( pValues[10].hasValue() ) SetSolidDragging( *(sal_Bool*) pValues[ 10 ].getValue() ); 616 if( pValues[11].hasValue() ) SetSolidMarkHdl( *(sal_Bool*) pValues[ 11 ].getValue() ); 617 // #97016# 618 if( pValues[12].hasValue() ) SetDefaultObjectSizeWidth( *(sal_uInt32*) pValues[ 12 ].getValue() ); 619 if( pValues[13].hasValue() ) SetDefaultObjectSizeHeight( *(sal_uInt32*) pValues[ 13 ].getValue() ); 620 if( pValues[14].hasValue() ) SetPrinterIndependentLayout( *(sal_uInt16*) pValues[ 14 ].getValue() ); 621 622 if( pValues[15].hasValue() ) 623 SetShowComments( *(sal_Bool*) pValues[ 15 ].getValue() ); 624 625 // just for Impress 626 if( GetConfigId() == SDCFG_IMPRESS ) 627 { 628 if( pValues[16].hasValue() ) 629 SetStartWithTemplate( *(sal_Bool*) pValues[ 16 ].getValue() ); 630 if( pValues[17].hasValue() ) 631 SetStartWithActualPage( *(sal_Bool*) pValues[ 17 ].getValue() ); 632 if( pValues[18].hasValue() ) 633 SetSummationOfParagraphs( *(sal_Bool*) pValues[ 18 ].getValue() ); 634 // #90356# 635 if( pValues[19].hasValue() ) 636 SetShowUndoDeleteWarning( *(sal_Bool*) pValues[ 19 ].getValue() ); 637 638 if( pValues[20].hasValue() ) 639 SetSlideshowRespectZOrder(*(sal_Bool*) pValues[ 20 ].getValue()); 640 641 if( pValues[21].hasValue() ) 642 SetPreviewNewEffects(*(sal_Bool*) pValues[ 21 ].getValue()); 643 644 if( pValues[22].hasValue() ) 645 SetPreviewChangedEffects(*(sal_Bool*) pValues[ 22 ].getValue()); 646 647 if( pValues[23].hasValue() ) 648 SetPreviewTransitions(*(sal_Bool*) pValues[ 23 ].getValue()); 649 650 if( pValues[24].hasValue() ) 651 SetDisplay(*(sal_Int32*) pValues[ 24 ].getValue()); 652 653 if( pValues[25].hasValue() ) 654 SetPresentationPenColor( getSafeValue< sal_Int32 >( pValues[ 25 ] ) ); 655 656 if( pValues[26].hasValue() ) 657 SetPresentationPenWidth( getSafeValue< double >( pValues[ 26 ] ) ); 658 659 if( pValues[27].hasValue() ) 660 SetStartWithPresenterScreen( *(sal_Bool*) pValues[ 27 ].getValue() ); 661 } 662 663 return sal_True; 664 } 665 666 // ----------------------------------------------------------------------------- 667 668 sal_Bool SdOptionsMisc::WriteData( Any* pValues ) const 669 { 670 pValues[ 0 ] <<= IsMarkedHitMovesAlways(); 671 pValues[ 1 ] <<= IsCrookNoContortion(); 672 pValues[ 2 ] <<= IsQuickEdit(); 673 pValues[ 3 ] <<= IsMasterPagePaintCaching(); 674 pValues[ 4 ] <<= IsDragWithCopy(); 675 pValues[ 5 ] <<= IsPickThrough(); 676 pValues[ 6 ] <<= IsBigHandles(); 677 pValues[ 7 ] <<= IsDoubleClickTextEdit(); 678 pValues[ 8 ] <<= IsClickChangeRotation(); 679 // The preview is not supported anymore. Use a dummy value. 680 pValues[ 9 ] <<= (double)0;// GetPreviewQuality(); 681 pValues[ 10 ] <<= IsSolidDragging(); 682 pValues[ 11 ] <<= IsSolidMarkHdl(); 683 // #97016# 684 pValues[ 12 ] <<= GetDefaultObjectSizeWidth(); 685 pValues[ 13 ] <<= GetDefaultObjectSizeHeight(); 686 pValues[ 14 ] <<= GetPrinterIndependentLayout(); 687 pValues[ 15 ] <<= (sal_Bool)IsShowComments(); 688 689 // just for Impress 690 if( GetConfigId() == SDCFG_IMPRESS ) 691 { 692 pValues[ 16 ] <<= IsStartWithTemplate(); 693 pValues[ 17 ] <<= IsStartWithActualPage(); 694 pValues[ 18 ] <<= IsSummationOfParagraphs(); 695 // #90356# 696 pValues[ 19 ] <<= IsShowUndoDeleteWarning(); 697 pValues[ 20 ] <<= IsSlideshowRespectZOrder(); 698 699 pValues[ 21 ] <<= IsPreviewNewEffects(); 700 pValues[ 22 ] <<= IsPreviewChangedEffects(); 701 pValues[ 23 ] <<= IsPreviewTransitions(); 702 703 pValues[ 24 ] <<= GetDisplay(); 704 705 pValues[ 25 ] <<= GetPresentationPenColor(); 706 pValues[ 26 ] <<= GetPresentationPenWidth(); 707 708 pValues[ 27 ] <<= IsStartWithPresenterScreen(); 709 } 710 711 return sal_True; 712 } 713 714 /************************************************************************* 715 |* SdOptionsMiscItem 716 \************************************************************************/ 717 718 SdOptionsMiscItem::SdOptionsMiscItem( sal_uInt16 _nWhich ) 719 : SfxPoolItem ( _nWhich ) 720 , maOptionsMisc ( 0, sal_False ) 721 { 722 } 723 724 // ---------------------------------------------------------------------- 725 726 SdOptionsMiscItem::SdOptionsMiscItem( sal_uInt16 _nWhich, SdOptions* pOpts, ::sd::FrameView* pView ) 727 : SfxPoolItem ( _nWhich ) 728 , maOptionsMisc ( 0, sal_False ) 729 { 730 if( pOpts ) 731 { 732 maOptionsMisc.SetStartWithTemplate( pOpts->IsStartWithTemplate() ); 733 maOptionsMisc.SetStartWithActualPage( pOpts->IsStartWithActualPage() ); 734 maOptionsMisc.SetStartWithPresenterScreen( pOpts->IsStartWithPresenterScreen() ); 735 maOptionsMisc.SetSummationOfParagraphs( pOpts->IsSummationOfParagraphs() ); 736 // #90356# 737 maOptionsMisc.SetShowUndoDeleteWarning( pOpts->IsShowUndoDeleteWarning() ); 738 maOptionsMisc.SetPrinterIndependentLayout( pOpts->GetPrinterIndependentLayout() ); 739 // #97016# 740 maOptionsMisc.SetDefaultObjectSizeWidth( pOpts->GetDefaultObjectSizeWidth() ); 741 maOptionsMisc.SetDefaultObjectSizeHeight( pOpts->GetDefaultObjectSizeHeight() ); 742 743 maOptionsMisc.SetPreviewNewEffects(pOpts->IsPreviewNewEffects()); 744 maOptionsMisc.SetPreviewChangedEffects(pOpts->IsPreviewChangedEffects()); 745 maOptionsMisc.SetPreviewTransitions(pOpts->IsPreviewTransitions()); 746 747 maOptionsMisc.SetDisplay(pOpts->GetDisplay()); 748 maOptionsMisc.SetShowComments( pOpts->IsShowComments() ); 749 750 maOptionsMisc.SetPresentationPenColor(pOpts->GetPresentationPenColor() ); 751 maOptionsMisc.SetPresentationPenWidth(pOpts->GetPresentationPenWidth() ); 752 } 753 754 if( pView ) 755 { 756 maOptionsMisc.SetMarkedHitMovesAlways( pView->IsMarkedHitMovesAlways() ); 757 maOptionsMisc.SetMoveOnlyDragging( pView->IsMoveOnlyDragging() ); 758 maOptionsMisc.SetCrookNoContortion( pView->IsCrookNoContortion() ); 759 maOptionsMisc.SetQuickEdit( pView->IsQuickEdit() ); 760 761 // #i26631# 762 maOptionsMisc.SetMasterPagePaintCaching( pView->IsMasterPagePaintCaching() ); 763 764 maOptionsMisc.SetDragWithCopy( pView->IsDragWithCopy() ); 765 maOptionsMisc.SetPickThrough( (sal_Bool)pView->GetModel()->IsPickThroughTransparentTextFrames() ); 766 maOptionsMisc.SetBigHandles( (sal_Bool)pView->IsBigHandles() ); 767 maOptionsMisc.SetDoubleClickTextEdit( pView->IsDoubleClickTextEdit() ); 768 maOptionsMisc.SetClickChangeRotation( pView->IsClickChangeRotation() ); 769 maOptionsMisc.SetSolidDragging( pView->IsSolidDragging() ); 770 maOptionsMisc.SetSolidMarkHdl( pView->IsSolidMarkHdl() ); 771 } 772 else if( pOpts ) 773 { 774 maOptionsMisc.SetMarkedHitMovesAlways( pOpts->IsMarkedHitMovesAlways() ); 775 maOptionsMisc.SetMoveOnlyDragging( pOpts->IsMoveOnlyDragging() ); 776 maOptionsMisc.SetCrookNoContortion( pOpts->IsCrookNoContortion() ); 777 maOptionsMisc.SetQuickEdit( pOpts->IsQuickEdit() ); 778 maOptionsMisc.SetMasterPagePaintCaching( pOpts->IsMasterPagePaintCaching() ); 779 maOptionsMisc.SetDragWithCopy( pOpts->IsDragWithCopy() ); 780 maOptionsMisc.SetPickThrough( pOpts->IsPickThrough() ); 781 maOptionsMisc.SetBigHandles( pOpts->IsBigHandles() ); 782 maOptionsMisc.SetDoubleClickTextEdit( pOpts->IsDoubleClickTextEdit() ); 783 maOptionsMisc.SetClickChangeRotation( pOpts->IsClickChangeRotation() ); 784 maOptionsMisc.SetSolidDragging( pOpts->IsSolidDragging() ); 785 maOptionsMisc.SetSolidMarkHdl( pOpts->IsSolidMarkHdl() ); 786 } 787 } 788 789 // ---------------------------------------------------------------------- 790 791 SfxPoolItem* SdOptionsMiscItem::Clone( SfxItemPool* ) const 792 { 793 return new SdOptionsMiscItem( *this ); 794 } 795 796 797 // ---------------------------------------------------------------------- 798 799 int SdOptionsMiscItem::operator==( const SfxPoolItem& rAttr ) const 800 { 801 const bool bSameType = SfxPoolItem::operator==(rAttr); 802 DBG_ASSERT( bSameType, "SdOptionsMiscItem::operator==(), different pool item type!" ); 803 return bSameType && ( maOptionsMisc == static_cast< const SdOptionsMiscItem& >(rAttr).maOptionsMisc ); 804 } 805 806 // ----------------------------------------------------------------------- 807 808 void SdOptionsMiscItem::SetOptions( SdOptions* pOpts ) const 809 { 810 if( pOpts ) 811 { 812 pOpts->SetStartWithTemplate( maOptionsMisc.IsStartWithTemplate() ); 813 pOpts->SetMarkedHitMovesAlways( maOptionsMisc.IsMarkedHitMovesAlways() ); 814 pOpts->SetMoveOnlyDragging( maOptionsMisc.IsMoveOnlyDragging() ); 815 pOpts->SetCrookNoContortion( maOptionsMisc.IsCrookNoContortion() ); 816 pOpts->SetQuickEdit( maOptionsMisc.IsQuickEdit() ); 817 pOpts->SetMasterPagePaintCaching( maOptionsMisc.IsMasterPagePaintCaching() ); 818 pOpts->SetDragWithCopy( maOptionsMisc.IsDragWithCopy() ); 819 pOpts->SetPickThrough( maOptionsMisc.IsPickThrough() ); 820 pOpts->SetBigHandles( maOptionsMisc.IsBigHandles() ); 821 pOpts->SetDoubleClickTextEdit( maOptionsMisc.IsDoubleClickTextEdit() ); 822 pOpts->SetClickChangeRotation( maOptionsMisc.IsClickChangeRotation() ); 823 pOpts->SetStartWithActualPage( maOptionsMisc.IsStartWithActualPage() ); 824 pOpts->SetStartWithPresenterScreen( maOptionsMisc.IsStartWithPresenterScreen() ); 825 pOpts->SetSummationOfParagraphs( maOptionsMisc.IsSummationOfParagraphs() ); 826 pOpts->SetSolidDragging( maOptionsMisc.IsSolidDragging() ); 827 pOpts->SetSolidMarkHdl( maOptionsMisc.IsSolidMarkHdl() ); 828 // #90356# 829 pOpts->SetShowUndoDeleteWarning( maOptionsMisc.IsShowUndoDeleteWarning() ); 830 pOpts->SetPrinterIndependentLayout( maOptionsMisc.GetPrinterIndependentLayout() ); 831 pOpts->SetShowComments( maOptionsMisc.IsShowComments() ); 832 // #97016# 833 pOpts->SetDefaultObjectSizeWidth( maOptionsMisc.GetDefaultObjectSizeWidth() ); 834 pOpts->SetDefaultObjectSizeHeight( maOptionsMisc.GetDefaultObjectSizeHeight() ); 835 836 pOpts->SetPreviewNewEffects( maOptionsMisc.IsPreviewNewEffects() ); 837 pOpts->SetPreviewChangedEffects( maOptionsMisc.IsPreviewChangedEffects() ); 838 pOpts->SetPreviewTransitions( maOptionsMisc.IsPreviewTransitions() ); 839 840 pOpts->SetDisplay( maOptionsMisc.GetDisplay() ); 841 842 pOpts->SetPresentationPenColor( maOptionsMisc.GetPresentationPenColor() ); 843 pOpts->SetPresentationPenWidth( maOptionsMisc.GetPresentationPenWidth() ); 844 } 845 } 846 847 /************************************************************************* 848 |* SdOptionsSnap 849 \************************************************************************/ 850 851 SdOptionsSnap::SdOptionsSnap( sal_uInt16 nConfigId, sal_Bool bUseConfig ) : 852 SdOptionsGeneric( nConfigId, bUseConfig ? 853 ( ( SDCFG_DRAW == nConfigId ) ? 854 B2U( "Office.Draw/Snap" ) : 855 B2U( "Office.Impress/Snap" ) ) : 856 OUString() ), 857 bSnapHelplines( sal_True ), 858 bSnapBorder( sal_True ), 859 bSnapFrame( sal_False ), 860 bSnapPoints( sal_False ), 861 bOrtho( sal_False ), 862 bBigOrtho( sal_True ), 863 bRotate( sal_False ), 864 nSnapArea( 5 ), 865 nAngle( 1500 ), 866 nBezAngle( 1500 ) 867 868 { 869 EnableModify( sal_True ); 870 } 871 872 // ----------------------------------------------------------------------------- 873 874 sal_Bool SdOptionsSnap::operator==( const SdOptionsSnap& rOpt ) const 875 { 876 return( IsSnapHelplines() == rOpt.IsSnapHelplines() && 877 IsSnapBorder() == rOpt.IsSnapBorder() && 878 IsSnapFrame() == rOpt.IsSnapFrame() && 879 IsSnapPoints() == rOpt.IsSnapPoints() && 880 IsOrtho() == rOpt.IsOrtho() && 881 IsBigOrtho() == rOpt.IsBigOrtho() && 882 IsRotate() == rOpt.IsRotate() && 883 GetSnapArea() == rOpt.GetSnapArea() && 884 GetAngle() == rOpt.GetAngle() && 885 GetEliminatePolyPointLimitAngle() == rOpt.GetEliminatePolyPointLimitAngle() ); 886 } 887 888 // ----------------------------------------------------------------------------- 889 890 void SdOptionsSnap::GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const 891 { 892 static const char* aPropNames[] = 893 { 894 "Object/SnapLine", 895 "Object/PageMargin", 896 "Object/ObjectFrame", 897 "Object/ObjectPoint", 898 "Position/CreatingMoving", 899 "Position/ExtendEdges", 900 "Position/Rotating", 901 "Object/Range", 902 "Position/RotatingValue", 903 "Position/PointReduction" 904 }; 905 906 rCount = 10; 907 ppNames = aPropNames; 908 } 909 910 // ----------------------------------------------------------------------------- 911 912 sal_Bool SdOptionsSnap::ReadData( const Any* pValues ) 913 { 914 if( pValues[0].hasValue() ) SetSnapHelplines( *(sal_Bool*) pValues[ 0 ].getValue() ); 915 if( pValues[1].hasValue() ) SetSnapBorder( *(sal_Bool*)pValues[ 1 ].getValue() ); 916 if( pValues[2].hasValue() ) SetSnapFrame( *(sal_Bool*) pValues[ 2 ].getValue() ); 917 if( pValues[3].hasValue() ) SetSnapPoints( *(sal_Bool*) pValues[ 3 ].getValue() ); 918 if( pValues[4].hasValue() ) SetOrtho( *(sal_Bool*) pValues[ 4 ].getValue() ); 919 if( pValues[5].hasValue() ) SetBigOrtho( *(sal_Bool*) pValues[ 5 ].getValue() ); 920 if( pValues[6].hasValue() ) SetRotate( *(sal_Bool*) pValues[ 6 ].getValue() ); 921 if( pValues[7].hasValue() ) SetSnapArea( (sal_Int16) *(sal_Int32*) pValues[ 7 ].getValue() ); 922 if( pValues[8].hasValue() ) SetAngle( (sal_Int16) *(sal_Int32*) pValues[ 8 ].getValue() ); 923 if( pValues[9].hasValue() ) SetEliminatePolyPointLimitAngle( (sal_Int16) *(sal_Int32*) pValues[ 9 ].getValue() ); 924 925 return sal_True; 926 } 927 928 // ----------------------------------------------------------------------------- 929 930 sal_Bool SdOptionsSnap::WriteData( Any* pValues ) const 931 { 932 pValues[ 0 ] <<= IsSnapHelplines(); 933 pValues[ 1 ] <<= IsSnapBorder(); 934 pValues[ 2 ] <<= IsSnapFrame(); 935 pValues[ 3 ] <<= IsSnapPoints(); 936 pValues[ 4 ] <<= IsOrtho(); 937 pValues[ 5 ] <<= IsBigOrtho(); 938 pValues[ 6 ] <<= IsRotate(); 939 pValues[ 7 ] <<= (sal_Int32) GetSnapArea(); 940 pValues[ 8 ] <<= (sal_Int32) GetAngle(); 941 pValues[ 9 ] <<= (sal_Int32) GetEliminatePolyPointLimitAngle(); 942 943 return sal_True; 944 } 945 946 /************************************************************************* 947 |* SdOptionsSnapItem 948 \************************************************************************/ 949 950 SdOptionsSnapItem::SdOptionsSnapItem( sal_uInt16 _nWhich ) 951 : SfxPoolItem ( _nWhich ) 952 , maOptionsSnap ( 0, sal_False ) 953 { 954 } 955 956 // ---------------------------------------------------------------------- 957 958 SdOptionsSnapItem::SdOptionsSnapItem( sal_uInt16 _nWhich, SdOptions* pOpts, ::sd::FrameView* pView ) 959 : SfxPoolItem ( _nWhich ) 960 , maOptionsSnap ( 0, sal_False ) 961 { 962 if( pView ) 963 { 964 maOptionsSnap.SetSnapHelplines( pView->IsHlplSnap() ); 965 maOptionsSnap.SetSnapBorder( pView->IsBordSnap() ); 966 maOptionsSnap.SetSnapFrame( pView->IsOFrmSnap() ); 967 maOptionsSnap.SetSnapPoints( pView->IsOPntSnap() ); 968 maOptionsSnap.SetOrtho( pView->IsOrtho() ); 969 maOptionsSnap.SetBigOrtho( pView->IsBigOrtho() ); 970 maOptionsSnap.SetRotate( pView->IsAngleSnapEnabled() ); 971 maOptionsSnap.SetSnapArea( pView->GetSnapMagneticPixel() ); 972 maOptionsSnap.SetAngle( (sal_Int16) pView->GetSnapAngle() ); 973 maOptionsSnap.SetEliminatePolyPointLimitAngle( (sal_Int16) pView->GetEliminatePolyPointLimitAngle() ); 974 } 975 else if( pOpts ) 976 { 977 maOptionsSnap.SetSnapHelplines( pOpts->IsSnapHelplines() ); 978 maOptionsSnap.SetSnapBorder( pOpts->IsSnapBorder() ); 979 maOptionsSnap.SetSnapFrame( pOpts->IsSnapFrame() ); 980 maOptionsSnap.SetSnapPoints( pOpts->IsSnapPoints() ); 981 maOptionsSnap.SetOrtho( pOpts->IsOrtho() ); 982 maOptionsSnap.SetBigOrtho( pOpts->IsBigOrtho() ); 983 maOptionsSnap.SetRotate( pOpts->IsRotate() ); 984 maOptionsSnap.SetSnapArea( pOpts->GetSnapArea() ); 985 maOptionsSnap.SetAngle( pOpts->GetAngle() ); 986 maOptionsSnap.SetEliminatePolyPointLimitAngle( pOpts->GetEliminatePolyPointLimitAngle() ); 987 } 988 } 989 990 // ---------------------------------------------------------------------- 991 992 SfxPoolItem* SdOptionsSnapItem::Clone( SfxItemPool* ) const 993 { 994 return new SdOptionsSnapItem( *this ); 995 } 996 997 998 // ---------------------------------------------------------------------- 999 1000 int SdOptionsSnapItem::operator==( const SfxPoolItem& rAttr ) const 1001 { 1002 const bool bSameType = SfxPoolItem::operator==(rAttr); 1003 DBG_ASSERT( bSameType, "SdOptionsSnapItem::operator==(), different pool item type!" ); 1004 return bSameType && ( maOptionsSnap == static_cast< const SdOptionsSnapItem& >(rAttr).maOptionsSnap ); 1005 } 1006 1007 // ----------------------------------------------------------------------- 1008 1009 void SdOptionsSnapItem::SetOptions( SdOptions* pOpts ) const 1010 { 1011 if( pOpts ) 1012 { 1013 pOpts->SetSnapHelplines( maOptionsSnap.IsSnapHelplines() ); 1014 pOpts->SetSnapBorder( maOptionsSnap.IsSnapBorder() ); 1015 pOpts->SetSnapFrame( maOptionsSnap.IsSnapFrame() ); 1016 pOpts->SetSnapPoints( maOptionsSnap.IsSnapPoints() ); 1017 pOpts->SetOrtho( maOptionsSnap.IsOrtho() ); 1018 pOpts->SetBigOrtho( maOptionsSnap.IsBigOrtho() ); 1019 pOpts->SetRotate( maOptionsSnap.IsRotate() ); 1020 pOpts->SetSnapArea( maOptionsSnap.GetSnapArea() ); 1021 pOpts->SetAngle( maOptionsSnap.GetAngle() ); 1022 pOpts->SetEliminatePolyPointLimitAngle( maOptionsSnap.GetEliminatePolyPointLimitAngle() ); 1023 } 1024 } 1025 1026 /************************************************************************* 1027 |* SdOptionsZoom 1028 \************************************************************************/ 1029 1030 SdOptionsZoom::SdOptionsZoom( sal_uInt16 nConfigId, sal_Bool bUseConfig ) : 1031 SdOptionsGeneric( nConfigId, ( bUseConfig && ( SDCFG_DRAW == nConfigId ) ) ? 1032 B2U( "Office.Draw/Zoom" ) : 1033 OUString() ), 1034 nX( 1 ), 1035 nY( 1 ) 1036 1037 { 1038 EnableModify( sal_True ); 1039 } 1040 1041 // ----------------------------------------------------------------------------- 1042 1043 sal_Bool SdOptionsZoom::operator==( const SdOptionsZoom& rOpt ) const 1044 { 1045 sal_Int32 nX1, nX2, nY1, nY2; 1046 1047 GetScale( nX1, nY1 ); 1048 rOpt.GetScale( nX2, nY2 ); 1049 1050 return( ( nX1 == nX2 ) && 1051 ( nY1 == nY2 ) ); 1052 } 1053 1054 // ----------------------------------------------------------------------------- 1055 1056 void SdOptionsZoom::GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const 1057 { 1058 static const char* aPropNames[] = 1059 { 1060 "ScaleX", 1061 "ScaleY" 1062 }; 1063 1064 rCount = ( GetConfigId() == SDCFG_DRAW ) ? 2 : 0; 1065 ppNames = aPropNames; 1066 } 1067 1068 // ----------------------------------------------------------------------------- 1069 1070 sal_Bool SdOptionsZoom::ReadData( const Any* pValues ) 1071 { 1072 sal_Int32 x = 1, y = 1; 1073 1074 if( pValues[0].hasValue() ) x = ( *(sal_Int32*) pValues[ 0 ].getValue() ); 1075 if( pValues[1].hasValue() ) y = ( *(sal_Int32*) pValues[ 1 ].getValue() ); 1076 1077 SetScale( x, y ); 1078 1079 return sal_True; 1080 } 1081 1082 // ----------------------------------------------------------------------------- 1083 1084 sal_Bool SdOptionsZoom::WriteData( Any* pValues ) const 1085 { 1086 sal_Int32 x, y; 1087 1088 GetScale( x, y ); 1089 1090 pValues[ 0 ] <<= (sal_Int32) x; 1091 pValues[ 1 ] <<= (sal_Int32) y; 1092 1093 return sal_True; 1094 } 1095 1096 /************************************************************************* 1097 |* SdOptionsGrid 1098 \************************************************************************/ 1099 1100 SdOptionsGrid::SdOptionsGrid( sal_uInt16 nConfigId, sal_Bool bUseConfig ) : 1101 SdOptionsGeneric( nConfigId, bUseConfig ? 1102 ( ( SDCFG_DRAW == nConfigId ) ? 1103 B2U( "Office.Draw/Grid" ) : 1104 B2U( "Office.Impress/Grid" ) ) : 1105 OUString() ) 1106 { 1107 EnableModify( sal_False ); 1108 SetDefaults(); 1109 EnableModify( sal_True ); 1110 } 1111 1112 // ----------------------------------------------------------------------------- 1113 1114 SdOptionsGrid::~SdOptionsGrid() 1115 { 1116 } 1117 1118 // ----------------------------------------------------------------------------- 1119 1120 void SdOptionsGrid::SetDefaults() 1121 { 1122 const sal_uInt32 nVal = 1000; 1123 1124 SetFldDivisionX( nVal ); 1125 SetFldDivisionY( nVal ); 1126 SetFldDrawX( nVal ); 1127 SetFldDrawY( nVal ); 1128 SetFldSnapX( nVal ); 1129 SetFldSnapY( nVal ); 1130 SetUseGridSnap( sal_False ); 1131 SetSynchronize( sal_True ); 1132 SetGridVisible( sal_False ); 1133 SetEqualGrid( sal_True ); 1134 } 1135 1136 // ----------------------------------------------------------------------------- 1137 1138 sal_Bool SdOptionsGrid::operator==( const SdOptionsGrid& rOpt ) const 1139 { 1140 return( GetFldDrawX() == rOpt.GetFldDrawX() && 1141 GetFldDivisionX() == rOpt.GetFldDivisionX() && 1142 GetFldDrawY() == rOpt.GetFldDrawY() && 1143 GetFldDivisionY() == rOpt.GetFldDivisionY() && 1144 GetFldSnapX() == rOpt.GetFldSnapX() && 1145 GetFldSnapY() == rOpt.GetFldSnapY() && 1146 IsUseGridSnap() == rOpt.IsUseGridSnap() && 1147 IsSynchronize() == rOpt.IsSynchronize() && 1148 IsGridVisible() == rOpt.IsGridVisible() && 1149 IsEqualGrid() == rOpt.IsEqualGrid() ); 1150 } 1151 1152 // ----------------------------------------------------------------------------- 1153 1154 void SdOptionsGrid::GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const 1155 { 1156 static const char* aPropNamesMetric[] = 1157 { 1158 "Resolution/XAxis/Metric", 1159 "Resolution/YAxis/Metric", 1160 "Subdivision/XAxis", 1161 "Subdivision/YAxis", 1162 "SnapGrid/XAxis/Metric", 1163 "SnapGrid/YAxis/Metric", 1164 "Option/SnapToGrid", 1165 "Option/Synchronize", 1166 "Option/VisibleGrid", 1167 "SnapGrid/Size" 1168 }; 1169 1170 static const char* aPropNamesNonMetric[] = 1171 { 1172 "Resolution/XAxis/NonMetric", 1173 "Resolution/YAxis/NonMetric", 1174 "Subdivision/XAxis", 1175 "Subdivision/YAxis", 1176 "SnapGrid/XAxis/NonMetric", 1177 "SnapGrid/YAxis/NonMetric", 1178 "Option/SnapToGrid", 1179 "Option/Synchronize", 1180 "Option/VisibleGrid", 1181 "SnapGrid/Size" 1182 }; 1183 1184 rCount = 10; 1185 1186 if( isMetricSystem() ) 1187 ppNames = aPropNamesMetric; 1188 else 1189 ppNames = aPropNamesNonMetric; 1190 } 1191 1192 // ----------------------------------------------------------------------------- 1193 1194 sal_Bool SdOptionsGrid::ReadData( const Any* pValues ) 1195 { 1196 if( pValues[0].hasValue() ) SetFldDrawX( *(sal_Int32*) pValues[ 0 ].getValue() ); 1197 if( pValues[1].hasValue() ) SetFldDrawY( *(sal_Int32*) pValues[ 1 ].getValue() ); 1198 1199 if( pValues[2].hasValue() ) 1200 { 1201 const sal_uInt32 nDivX = FRound( *(double*) pValues[ 2 ].getValue() ); 1202 SetFldDivisionX( SvxOptionsGrid::GetFldDrawX() / ( nDivX + 1 ) ); 1203 } 1204 1205 if( pValues[3].hasValue() ) 1206 { 1207 const sal_uInt32 nDivY = FRound( *(double*) pValues[ 3 ].getValue() ); 1208 SetFldDivisionY( SvxOptionsGrid::GetFldDrawY() / ( nDivY + 1 ) ); 1209 } 1210 1211 if( pValues[4].hasValue() ) SetFldSnapX( *(sal_Int32*) pValues[ 4 ].getValue() ); 1212 if( pValues[5].hasValue() ) SetFldSnapY( *(sal_Int32*) pValues[ 5 ].getValue() ); 1213 if( pValues[6].hasValue() ) SetUseGridSnap( *(sal_Bool*) pValues[ 6 ].getValue() ); 1214 if( pValues[7].hasValue() ) SetSynchronize( *(sal_Bool*) pValues[ 7 ].getValue() ); 1215 if( pValues[8].hasValue() ) SetGridVisible( *(sal_Bool*) pValues[ 8 ].getValue() ); 1216 if( pValues[9].hasValue() ) SetEqualGrid( *(sal_Bool*) pValues[ 9 ].getValue() ); 1217 1218 return sal_True; 1219 } 1220 1221 // ----------------------------------------------------------------------------- 1222 1223 sal_Bool SdOptionsGrid::WriteData( Any* pValues ) const 1224 { 1225 pValues[ 0 ] <<= (sal_Int32) GetFldDrawX(); 1226 pValues[ 1 ] <<= (sal_Int32) GetFldDrawY(); 1227 pValues[ 2 ] <<= ( GetFldDivisionX() ? ( (double) GetFldDrawX() / GetFldDivisionX() - 1.0 ) : (double) 0 ); 1228 pValues[ 3 ] <<= ( GetFldDivisionY() ? ( (double) GetFldDrawY() / GetFldDivisionY() - 1.0 ) : (double) 0 ); 1229 pValues[ 4 ] <<= (sal_Int32) GetFldSnapX(); 1230 pValues[ 5 ] <<= (sal_Int32) GetFldSnapY(); 1231 pValues[ 6 ] <<= IsUseGridSnap(); 1232 pValues[ 7 ] <<= IsSynchronize(); 1233 pValues[ 8 ] <<= IsGridVisible(); 1234 pValues[ 9 ] <<= IsEqualGrid(); 1235 1236 return sal_True; 1237 } 1238 1239 /************************************************************************* 1240 |* SdOptionsGridItem 1241 \************************************************************************/ 1242 1243 SdOptionsGridItem::SdOptionsGridItem( sal_uInt16 _nWhich, SdOptions* pOpts, ::sd::FrameView* pView ) : 1244 SvxGridItem( _nWhich ) 1245 { 1246 SetSynchronize( pOpts->IsSynchronize() ); 1247 SetEqualGrid( pOpts->IsEqualGrid() ); 1248 1249 if( pView ) 1250 { 1251 SetFldDrawX( pView->GetGridCoarse().Width() ); 1252 SetFldDrawY( pView->GetGridCoarse().Height() ); 1253 SetFldDivisionX( pView->GetGridFine().Width() ? ( GetFldDrawX() / pView->GetGridFine().Width() - 1 ) : 0 ); 1254 SetFldDivisionY( pView->GetGridFine().Height() ? ( GetFldDrawY() / pView->GetGridFine().Height() - 1 ) : 0 ); 1255 SetFldSnapX( long(pView->GetSnapGridWidthX()) ); 1256 SetFldSnapY( long(pView->GetSnapGridWidthY()) ); 1257 SetUseGridSnap( pView->IsGridSnap() ); 1258 SetGridVisible( pView->IsGridVisible() ); 1259 } 1260 else 1261 { 1262 SetFldDrawX( pOpts->GetFldDrawX() ); 1263 SetFldDrawY( pOpts->GetFldDrawY() ); 1264 SetFldDivisionX( pOpts->GetFldDivisionX() ? ( pOpts->GetFldDrawX() / pOpts->GetFldDivisionX() - 1 ) : 0 ); 1265 SetFldDivisionY( pOpts->GetFldDivisionY() ? ( pOpts->GetFldDrawY() / pOpts->GetFldDivisionY() - 1 ) : 0 ); 1266 SetFldSnapX( pOpts->GetFldSnapX() ); 1267 SetFldSnapY( pOpts->GetFldSnapY() ); 1268 SetUseGridSnap( pOpts->IsUseGridSnap() ); 1269 SetGridVisible( pOpts->IsGridVisible() ); 1270 } 1271 } 1272 1273 // ----------------------------------------------------------------------- 1274 1275 void SdOptionsGridItem::SetOptions( SdOptions* pOpts ) const 1276 { 1277 pOpts->SetFldDrawX( GetFldDrawX() ); 1278 pOpts->SetFldDivisionX( GetFldDrawX() / ( GetFldDivisionX() + 1 ) ); 1279 pOpts->SetFldDrawY( GetFldDrawY() ); 1280 pOpts->SetFldDivisionY( GetFldDrawY() / ( GetFldDivisionY() + 1 ) ); 1281 pOpts->SetFldSnapX( GetFldSnapX() ); 1282 pOpts->SetFldSnapY( GetFldSnapY() ); 1283 pOpts->SetUseGridSnap( GetUseGridSnap() ); 1284 pOpts->SetSynchronize( GetSynchronize() ); 1285 pOpts->SetGridVisible( GetGridVisible() ); 1286 pOpts->SetEqualGrid( GetEqualGrid() ); 1287 } 1288 1289 /************************************************************************* 1290 |* SdOptionsPrint 1291 \************************************************************************/ 1292 1293 SdOptionsPrint::SdOptionsPrint( sal_uInt16 nConfigId, sal_Bool bUseConfig ) : 1294 SdOptionsGeneric( nConfigId, bUseConfig ? 1295 ( ( SDCFG_DRAW == nConfigId ) ? 1296 B2U( "Office.Draw/Print" ) : 1297 B2U( "Office.Impress/Print" ) ) : 1298 OUString() ), 1299 bDraw( sal_True ), 1300 bNotes( sal_False ), 1301 bHandout( sal_False ), 1302 bOutline( sal_False ), 1303 bDate( sal_False ), 1304 bTime( sal_False ), 1305 bPagename( sal_False ), 1306 bHiddenPages( sal_True ), 1307 bPagesize( sal_False ), 1308 bPagetile( sal_False ), 1309 bWarningPrinter( sal_True ), 1310 bWarningSize( sal_False ), 1311 bWarningOrientation( sal_False ), 1312 bBooklet( sal_False ), 1313 bFront( sal_True ), 1314 bBack( sal_True ), 1315 bCutPage( sal_False ), 1316 bPaperbin( sal_False ), 1317 mbHandoutHorizontal( sal_True ), 1318 mnHandoutPages( 6 ), 1319 nQuality( 0 ) 1320 { 1321 EnableModify( sal_True ); 1322 } 1323 1324 // ----------------------------------------------------------------------------- 1325 1326 sal_Bool SdOptionsPrint::operator==( const SdOptionsPrint& rOpt ) const 1327 { 1328 return( IsDraw() == rOpt.IsDraw() && 1329 IsNotes() == rOpt.IsNotes() && 1330 IsHandout() == rOpt.IsHandout() && 1331 IsOutline() == rOpt.IsOutline() && 1332 IsDate() == rOpt.IsDate() && 1333 IsTime() == rOpt.IsTime() && 1334 IsPagename() == rOpt.IsPagename() && 1335 IsHiddenPages() == rOpt.IsHiddenPages() && 1336 IsPagesize() == rOpt.IsPagesize() && 1337 IsPagetile() == rOpt.IsPagetile() && 1338 IsWarningPrinter() == rOpt.IsWarningPrinter() && 1339 IsWarningSize() == rOpt.IsWarningSize() && 1340 IsWarningOrientation() == rOpt.IsWarningOrientation() && 1341 IsBooklet() == rOpt.IsBooklet() && 1342 IsFrontPage() == rOpt.IsFrontPage() && 1343 IsBackPage() == rOpt.IsBackPage() && 1344 IsCutPage() == rOpt.IsCutPage() && 1345 IsPaperbin() == rOpt.IsPaperbin() && 1346 GetOutputQuality() == rOpt.GetOutputQuality() && 1347 IsHandoutHorizontal() == rOpt.IsHandoutHorizontal() && 1348 GetHandoutPages() == rOpt.GetHandoutPages() ); 1349 } 1350 1351 // ----------------------------------------------------------------------------- 1352 1353 void SdOptionsPrint::GetPropNameArray( const char**& ppNames, sal_uLong& rCount ) const 1354 { 1355 static const char* aDrawPropNames[] = 1356 { 1357 "Other/Date", 1358 "Other/Time", 1359 "Other/PageName", 1360 "Other/HiddenPage", 1361 "Page/PageSize", 1362 "Page/PageTile", 1363 // bWarningPrinter 1364 // bWarningSize 1365 // bWarningOrientation 1366 "Page/Booklet", 1367 "Page/BookletFront", 1368 "Page/BookletBack", 1369 // bCutPage 1370 "Other/FromPrinterSetup", 1371 "Other/Quality", 1372 "Content/Drawing", 1373 }; 1374 static const char* aImpressPropNames[] = 1375 { 1376 "Other/Date", 1377 "Other/Time", 1378 "Other/PageName", 1379 "Other/HiddenPage", 1380 "Page/PageSize", 1381 "Page/PageTile", 1382 // bWarningPrinter 1383 // bWarningSize 1384 // bWarningOrientation 1385 "Page/Booklet", 1386 "Page/BookletFront", 1387 "Page/BookletBack", 1388 // bCutPage 1389 "Other/FromPrinterSetup", 1390 "Other/Quality", 1391 "Content/Presentation", 1392 "Content/Note", 1393 "Content/Handout", 1394 "Content/Outline", 1395 "Other/HandoutHorizontal", 1396 "Other/PagesPerHandout" 1397 }; 1398 1399 if( GetConfigId() == SDCFG_IMPRESS ) 1400 { 1401 rCount = 17; 1402 ppNames = aImpressPropNames; 1403 } 1404 else 1405 { 1406 rCount = 12; 1407 ppNames = aDrawPropNames; 1408 } 1409 } 1410 1411 // ----------------------------------------------------------------------------- 1412 1413 sal_Bool SdOptionsPrint::ReadData( const Any* pValues ) 1414 { 1415 if( pValues[0].hasValue() ) SetDate( *(sal_Bool*) pValues[ 0 ].getValue() ); 1416 if( pValues[1].hasValue() ) SetTime( *(sal_Bool*) pValues[ 1 ].getValue() ); 1417 if( pValues[2].hasValue() ) SetPagename( *(sal_Bool*) pValues[ 2 ].getValue() ); 1418 if( pValues[3].hasValue() ) SetHiddenPages( *(sal_Bool*) pValues[ 3 ].getValue() ); 1419 if( pValues[4].hasValue() ) SetPagesize( *(sal_Bool*) pValues[ 4 ].getValue() ); 1420 if( pValues[5].hasValue() ) SetPagetile( *(sal_Bool*) pValues[ 5 ].getValue() ); 1421 if( pValues[6].hasValue() ) SetBooklet( *(sal_Bool*) pValues[ 6 ].getValue() ); 1422 if( pValues[7].hasValue() ) SetFrontPage( *(sal_Bool*) pValues[ 7 ].getValue() ); 1423 if( pValues[8].hasValue() ) SetBackPage( *(sal_Bool*) pValues[ 8 ].getValue() ); 1424 if( pValues[9].hasValue() ) SetPaperbin( *(sal_Bool*) pValues[ 9 ].getValue() ); 1425 if( pValues[10].hasValue() ) SetOutputQuality( (sal_uInt16) *(sal_Int32*) pValues[ 10 ].getValue() ); 1426 if( pValues[11].hasValue() ) SetDraw( *(sal_Bool*) pValues[ 11 ].getValue() ); 1427 1428 // just for Impress 1429 if( GetConfigId() == SDCFG_IMPRESS ) 1430 { 1431 if( pValues[12].hasValue() ) SetNotes( *(sal_Bool*) pValues[ 12 ].getValue() ); 1432 if( pValues[13].hasValue() ) SetHandout( *(sal_Bool*) pValues[ 13 ].getValue() ); 1433 if( pValues[14].hasValue() ) SetOutline( *(sal_Bool*) pValues[ 14 ].getValue() ); 1434 if( pValues[15].hasValue() ) SetHandoutHorizontal( *(sal_Bool*) pValues[15].getValue() ); 1435 if( pValues[16].hasValue() ) SetHandoutPages( (sal_uInt16)*(sal_Int32*) pValues[16].getValue() ); 1436 } 1437 1438 return sal_True; 1439 } 1440 1441 // ----------------------------------------------------------------------------- 1442 1443 sal_Bool SdOptionsPrint::WriteData( Any* pValues ) const 1444 { 1445 pValues[ 0 ] <<= IsDate(); 1446 pValues[ 1 ] <<= IsTime(); 1447 pValues[ 2 ] <<= IsPagename(); 1448 pValues[ 3 ] <<= IsHiddenPages(); 1449 pValues[ 4 ] <<= IsPagesize(); 1450 pValues[ 5 ] <<= IsPagetile(); 1451 pValues[ 6 ] <<= IsBooklet(); 1452 pValues[ 7 ] <<= IsFrontPage(); 1453 pValues[ 8 ] <<= IsBackPage(); 1454 pValues[ 9 ] <<= IsPaperbin(); 1455 pValues[ 10 ] <<= (sal_Int32) GetOutputQuality(); 1456 pValues[ 11 ] <<= IsDraw(); 1457 1458 // just for Impress 1459 if( GetConfigId() == SDCFG_IMPRESS ) 1460 { 1461 pValues[ 12 ] <<= IsNotes(); 1462 pValues[ 13 ] <<= IsHandout(); 1463 pValues[ 14 ] <<= IsOutline(); 1464 pValues[ 15 ] <<= IsHandoutHorizontal(); 1465 pValues[ 16 ] <<= GetHandoutPages(); 1466 } 1467 1468 return sal_True; 1469 } 1470 1471 /************************************************************************* 1472 |* SdOptionsPrintItem 1473 \************************************************************************/ 1474 1475 SdOptionsPrintItem::SdOptionsPrintItem( sal_uInt16 _nWhich ) 1476 : SfxPoolItem ( _nWhich ) 1477 , maOptionsPrint ( 0, sal_False ) 1478 { 1479 } 1480 1481 // ---------------------------------------------------------------------- 1482 1483 SdOptionsPrintItem::SdOptionsPrintItem( sal_uInt16 _nWhich, SdOptions* pOpts, ::sd::FrameView* ) 1484 : SfxPoolItem ( _nWhich ) 1485 , maOptionsPrint ( 0, sal_False ) 1486 { 1487 if( pOpts ) 1488 { 1489 maOptionsPrint.SetDraw( pOpts->IsDraw() ); 1490 maOptionsPrint.SetNotes( pOpts->IsNotes() ); 1491 maOptionsPrint.SetHandout( pOpts->IsHandout() ); 1492 maOptionsPrint.SetOutline( pOpts->IsOutline() ); 1493 maOptionsPrint.SetDate( pOpts->IsDate() ); 1494 maOptionsPrint.SetTime( pOpts->IsTime() ); 1495 maOptionsPrint.SetPagename( pOpts->IsPagename() ); 1496 maOptionsPrint.SetHiddenPages( pOpts->IsHiddenPages() ); 1497 maOptionsPrint.SetPagesize( pOpts->IsPagesize() ); 1498 maOptionsPrint.SetPagetile( pOpts->IsPagetile() ); 1499 maOptionsPrint.SetWarningPrinter( pOpts->IsWarningPrinter() ); 1500 maOptionsPrint.SetWarningSize( pOpts->IsWarningSize() ); 1501 maOptionsPrint.SetWarningOrientation( pOpts->IsWarningOrientation() ); 1502 maOptionsPrint.SetBooklet( pOpts->IsBooklet() ); 1503 maOptionsPrint.SetFrontPage( pOpts->IsFrontPage() ); 1504 maOptionsPrint.SetBackPage( pOpts->IsBackPage() ); 1505 maOptionsPrint.SetCutPage( pOpts->IsCutPage() ); 1506 maOptionsPrint.SetPaperbin( pOpts->IsPaperbin() ); 1507 maOptionsPrint.SetOutputQuality( pOpts->GetOutputQuality() ); 1508 } 1509 } 1510 1511 // ---------------------------------------------------------------------- 1512 1513 SfxPoolItem* SdOptionsPrintItem::Clone( SfxItemPool* ) const 1514 { 1515 return new SdOptionsPrintItem( *this ); 1516 } 1517 1518 // ---------------------------------------------------------------------- 1519 1520 int SdOptionsPrintItem::operator==( const SfxPoolItem& rAttr ) const 1521 { 1522 const bool bSameType = SfxPoolItem::operator==(rAttr); 1523 DBG_ASSERT( bSameType, "SdOptionsPrintItem::operator==(), different pool item type!" ); 1524 return bSameType && ( maOptionsPrint == static_cast< const SdOptionsPrintItem& >( rAttr ).maOptionsPrint ); 1525 } 1526 1527 // ----------------------------------------------------------------------- 1528 1529 void SdOptionsPrintItem::SetOptions( SdOptions* pOpts ) const 1530 { 1531 if( pOpts ) 1532 { 1533 pOpts->SetDraw( maOptionsPrint.IsDraw() ); 1534 pOpts->SetNotes( maOptionsPrint.IsNotes() ); 1535 pOpts->SetHandout( maOptionsPrint.IsHandout() ); 1536 pOpts->SetOutline( maOptionsPrint.IsOutline() ); 1537 pOpts->SetDate( maOptionsPrint.IsDate() ); 1538 pOpts->SetTime( maOptionsPrint.IsTime() ); 1539 pOpts->SetPagename( maOptionsPrint.IsPagename() ); 1540 pOpts->SetHiddenPages( maOptionsPrint.IsHiddenPages() ); 1541 pOpts->SetPagesize( maOptionsPrint.IsPagesize() ); 1542 pOpts->SetPagetile( maOptionsPrint.IsPagetile() ); 1543 pOpts->SetWarningPrinter( maOptionsPrint.IsWarningPrinter() ); 1544 pOpts->SetWarningSize( maOptionsPrint.IsWarningSize() ); 1545 pOpts->SetWarningOrientation( maOptionsPrint.IsWarningOrientation() ); 1546 pOpts->SetBooklet( maOptionsPrint.IsBooklet() ); 1547 pOpts->SetFrontPage( maOptionsPrint.IsFrontPage() ); 1548 pOpts->SetBackPage( maOptionsPrint.IsBackPage() ); 1549 pOpts->SetCutPage( maOptionsPrint.IsCutPage() ); 1550 pOpts->SetPaperbin( maOptionsPrint.IsPaperbin() ); 1551 pOpts->SetOutputQuality( maOptionsPrint.GetOutputQuality() ); 1552 } 1553 } 1554 1555 /************************************************************************* 1556 |* SdOptions 1557 \************************************************************************/ 1558 1559 SdOptions::SdOptions( sal_uInt16 nConfigId ) : 1560 SdOptionsLayout( nConfigId, sal_True ), 1561 SdOptionsContents( nConfigId, sal_True ), 1562 SdOptionsMisc( nConfigId, sal_True ), 1563 SdOptionsSnap( nConfigId, sal_True ), 1564 SdOptionsZoom( nConfigId, sal_True ), 1565 SdOptionsGrid( nConfigId, sal_True ), 1566 SdOptionsPrint( nConfigId, sal_True ) 1567 { 1568 } 1569 1570 // ---------------------------------------------------------------------- 1571 1572 SdOptions::~SdOptions() 1573 { 1574 } 1575 1576 // ---------------------------------------------------------------------- 1577 1578 void SdOptions::StoreConfig( sal_uLong nOptionsRange ) 1579 { 1580 if( nOptionsRange & SD_OPTIONS_LAYOUT ) 1581 SdOptionsLayout::Store(); 1582 1583 if( nOptionsRange & SD_OPTIONS_CONTENTS ) 1584 SdOptionsContents::Store(); 1585 1586 if( nOptionsRange & SD_OPTIONS_MISC ) 1587 SdOptionsMisc::Store(); 1588 1589 if( nOptionsRange & SD_OPTIONS_SNAP ) 1590 SdOptionsSnap::Store(); 1591 1592 if( nOptionsRange & SD_OPTIONS_ZOOM ) 1593 SdOptionsZoom::Store(); 1594 1595 if( nOptionsRange & SD_OPTIONS_GRID ) 1596 SdOptionsGrid::Store(); 1597 1598 if( nOptionsRange & SD_OPTIONS_PRINT ) 1599 SdOptionsPrint::Store(); 1600 } 1601