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 #ifndef _SVDUNDO_HXX 25 #define _SVDUNDO_HXX 26 27 #ifndef _SOLAR_HRC 28 #include <svl/solar.hrc> 29 #endif 30 #include <svl/undo.hxx> 31 #include <tools/contnr.hxx> 32 #include <tools/gen.hxx> 33 #include <svx/svdtypes.hxx> // fuer enum RepeatFuncts 34 #include <svx/svdsob.hxx> 35 #include "svx/svxdllapi.h" 36 #include <svl/style.hxx> 37 38 //************************************************************ 39 // Vorausdeklarationen 40 //************************************************************ 41 42 class SfxItemSet; 43 class SfxStyleSheet; 44 class SdrView; 45 class SdrPageView; 46 class SdrModel; 47 class SdrObject; 48 class SdrPage; 49 class SdrObjList; 50 class SdrLayer; 51 class SdrLayerAdmin; 52 class SdrObjGeoData; 53 class OutlinerParaObject; 54 55 //************************************************************ 56 // SdrUndoAction 57 // 58 // Abstrakte Basisklasse fuer alle UndoActions der DrawingEngine 59 // 60 //************************************************************ 61 62 class SVX_DLLPUBLIC SdrUndoAction : public SfxUndoAction 63 { 64 protected: 65 SdrModel& rMod; 66 67 protected: 68 SdrUndoAction(SdrModel& rNewMod) 69 : rMod(rNewMod) 70 {} 71 72 public: 73 TYPEINFO(); 74 virtual ~SdrUndoAction() {} 75 76 virtual sal_Bool CanRepeat(SfxRepeatTarget& rView) const; 77 virtual void Repeat(SfxRepeatTarget& rView); 78 79 virtual String GetRepeatComment(SfxRepeatTarget& rView) const; 80 virtual String GetSdrRepeatComment(SdrView& rView) const; 81 82 virtual bool CanSdrRepeat(SdrView& rView) const; 83 virtual void SdrRepeat(SdrView& rView); 84 }; 85 86 //************************************************************ 87 // SdrUndoGroup 88 // 89 // Zusammenfassung beliebig vieler einzelner UndoActions zu einer einzigen 90 // UndoAction. Beim Undo() werden die Einzelactions rueckwaets aufgerufen 91 // (die zuletzt angehaengte zuerst...), beim Redo() dagegen entspricht die 92 // Aufrufreihenfolge der Einfuegereihenfolge. 93 // 94 //************************************************************ 95 96 class SVX_DLLPUBLIC SdrUndoGroup : public SdrUndoAction 97 { 98 protected: 99 Container aBuf; 100 101 // Beschreibung der Action, nicht expandiert (beinhaltet %O) 102 String aComment; 103 String aObjDescription; 104 105 SdrRepeatFunc eFunction; 106 107 public: 108 SdrUndoGroup(SdrModel& rNewMod); 109 SdrUndoGroup(SdrModel& rNewMod,const String& rStr); 110 virtual ~SdrUndoGroup(); 111 112 void Clear(); 113 sal_uIntPtr GetActionCount() const { return aBuf.Count(); } 114 SdrUndoAction* GetAction(sal_uIntPtr nNum) const { return (SdrUndoAction*)(aBuf.GetObject(nNum)); } 115 void AddAction(SdrUndoAction* pAct); 116 void push_front( SdrUndoAction* pAct ); 117 118 void SetComment(const String& rStr) { aComment=rStr; } 119 void SetObjDescription(const String& rStr) { aObjDescription=rStr; } 120 virtual String GetComment() const; 121 virtual String GetSdrRepeatComment(SdrView& rView) const; 122 123 virtual void Undo(); 124 virtual void Redo(); 125 126 virtual bool CanSdrRepeat(SdrView& rView) const; 127 virtual void SdrRepeat(SdrView& rView); 128 void SetRepeatFunction(SdrRepeatFunc eFunc) { eFunction=eFunc; } 129 SdrRepeatFunc GetRepeatFunction() const { return eFunction; } 130 }; 131 132 //************************************************************ 133 // SdrUndoObj 134 // 135 // Abstrakte Basisklasse fuer alle UndoActions die mit Objekten zu tun haben. 136 // 137 //************************************************************ 138 139 class SVX_DLLPUBLIC SdrUndoObj : public SdrUndoAction 140 { 141 protected: 142 SdrObject* pObj; 143 144 protected: 145 SdrUndoObj(SdrObject& rNewObj); 146 virtual ~SdrUndoObj() {} 147 148 void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, String& rStr, FASTBOOL bRepeat=sal_False) const; 149 150 static void GetDescriptionStringForObject( const SdrObject& _rForObject, sal_uInt16 nStrCacheID, String& rStr, FASTBOOL bRepeat = sal_False ); 151 152 // #94278# new method for evtl. PageChange at UNDO/REDO 153 void ImpShowPageOfThisObject(); 154 }; 155 156 //************************************************************ 157 // SdrUndoAttrObj 158 // 159 // Aenderung der Objektattribute. 160 // Action direkt vor dem Setzen der neuen Attribute konstruieren. 161 // Auch fuer StyleSheets 162 // 163 //************************************************************ 164 165 class SVX_DLLPUBLIC SdrUndoAttrObj : public SdrUndoObj 166 { 167 protected: 168 SfxItemSet* pUndoSet; 169 SfxItemSet* pRedoSet; 170 SfxItemSet* pRepeatSet; 171 172 // oder besser den StyleSheetNamen merken? 173 rtl::Reference< SfxStyleSheetBase > mxUndoStyleSheet; 174 rtl::Reference< SfxStyleSheetBase > mxRedoStyleSheet; 175 FASTBOOL bStyleSheet; 176 FASTBOOL bHaveToTakeRedoSet; 177 178 // Bei Zuweisung von TextItems auf ein Zeichenobjekt mit Text: 179 OutlinerParaObject* pTextUndo; 180 // #i8508# 181 // The text rescue mechanism needs also to be implemented for redo actions. 182 OutlinerParaObject* pTextRedo; 183 184 // Wenn sich um ein Gruppenobjekt handelt: 185 SdrUndoGroup* pUndoGroup; 186 187 // helper to ensure StyleSheet is in pool (provided by SdrModel from SdrObject) 188 void ensureStyleSheetInStyleSheetPool(SfxStyleSheetBasePool& rStyleSheetPool, SfxStyleSheet& rSheet); 189 190 public: 191 SdrUndoAttrObj(SdrObject& rNewObj, FASTBOOL bStyleSheet1=sal_False, FASTBOOL bSaveText=sal_False); 192 virtual ~SdrUndoAttrObj(); 193 194 void SetRepeatAttr(const SfxItemSet& rSet); 195 virtual void Undo(); 196 virtual void Redo(); 197 198 virtual String GetComment() const; 199 virtual String GetSdrRepeatComment(SdrView& rView) const; 200 201 virtual void SdrRepeat(SdrView& rView); 202 virtual bool CanSdrRepeat(SdrView& rView) const; 203 }; 204 205 //************************************************************ 206 // SdrUndoMoveObj 207 // 208 // Blosses verschieben eines Objektes. 209 // Action direkt vor dem Verschieben konstruieren. 210 // 211 //************************************************************ 212 213 class SVX_DLLPUBLIC SdrUndoMoveObj : public SdrUndoObj 214 { 215 protected: 216 Size aDistance; // Entfernung, um die verschoben wird 217 218 public: 219 SdrUndoMoveObj(SdrObject& rNewObj): SdrUndoObj(rNewObj) {} 220 SdrUndoMoveObj(SdrObject& rNewObj, const Size& rDist): SdrUndoObj(rNewObj),aDistance(rDist) {} 221 virtual ~SdrUndoMoveObj() {} 222 223 void SetDistance(const Size& rDist) { aDistance=rDist; } 224 const Size& GetDistance() const { return aDistance; } 225 226 virtual void Undo(); 227 virtual void Redo(); 228 229 virtual String GetComment() const; 230 virtual String GetSdrRepeatComment(SdrView& rView) const; 231 232 virtual void SdrRepeat(SdrView& rView); 233 virtual bool CanSdrRepeat(SdrView& rView) const; 234 }; 235 236 //************************************************************ 237 // SdrUndoGeoObj 238 // 239 // Aenderung der Geometrie eines Objektes. 240 // Action direkt vor der geometrischen Transformation konstruieren. 241 // 242 //************************************************************ 243 244 class SVX_DLLPUBLIC SdrUndoGeoObj : public SdrUndoObj 245 { 246 protected: 247 SdrObjGeoData* pUndoGeo; 248 SdrObjGeoData* pRedoGeo; 249 // Wenn sich um ein Gruppenobjekt handelt: 250 SdrUndoGroup* pUndoGroup; 251 252 public: 253 SdrUndoGeoObj(SdrObject& rNewObj); 254 virtual ~SdrUndoGeoObj(); 255 256 virtual void Undo(); 257 virtual void Redo(); 258 259 virtual String GetComment() const; 260 }; 261 262 //************************************************************ 263 // SdrUndoObjList 264 // 265 // Manipulationen an einer ObjList: Neues Obj, DeleteObj, SetObjZLevel, Grouping, ... 266 // Abstrakte Basisklasse. 267 // 268 //************************************************************ 269 270 class SVX_DLLPUBLIC SdrUndoObjList : public SdrUndoObj { 271 bool bOwner; 272 273 protected: 274 SdrObjList* pObjList; 275 SdrView* pView; // um bei ObjDel, Undo die 276 SdrPageView* pPageView; // Selektion widerherstellen zu koennen 277 sal_uInt32 nOrdNum; 278 // Bei einem Undo/Redo findet moeglicherweise Uebereignung des Objektes 279 // statt. Im Dtor wird das Obj deleted, wenn bOwner==TRUE 280 281 protected: 282 SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect = false); 283 virtual ~SdrUndoObjList(); 284 285 void SetView(SdrView* pView1, SdrPageView* pPageView1) { pView=pView1; pPageView=pPageView1; } 286 bool IsOwner() { return bOwner; } 287 void SetOwner(bool bNew); 288 }; 289 290 //************************************************************ 291 // SdrUndoRemoveObj 292 // 293 // Entfernen Objekts aus einer Objektliste. Innerhalb einer UndoGroup 294 // mit korrospondierenden Inserts zu verwenden. 295 // Action vor dem entfernen aus der ObjList konstruieren. 296 // 297 //************************************************************ 298 299 class SVX_DLLPUBLIC SdrUndoRemoveObj : public SdrUndoObjList 300 { 301 public: 302 SdrUndoRemoveObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=sal_False) 303 : SdrUndoObjList(rNewObj,bOrdNumDirect) {} 304 305 virtual void Undo(); 306 virtual void Redo(); 307 }; 308 309 //************************************************************ 310 // SdrUndoInsertObj 311 // 312 // Einfuegen Objekts in eine Objektliste. Innerhalb einer UndoGroup 313 // mit korrospondierenden Removes zu verwenden. 314 // Action vor dem entfernen aus der ObjList konstruieren. 315 // 316 //************************************************************ 317 318 class SVX_DLLPUBLIC SdrUndoInsertObj : public SdrUndoObjList 319 { 320 public: 321 SdrUndoInsertObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=sal_False) 322 : SdrUndoObjList(rNewObj,bOrdNumDirect) {} 323 324 virtual void Undo(); 325 virtual void Redo(); 326 }; 327 328 //************************************************************ 329 // SdrUndoDelObj 330 // 331 // Loeschen eines Objekts. 332 // Action vor dem entfernen aus der ObjList konstruieren. 333 // 334 //************************************************************ 335 336 class SVX_DLLPUBLIC SdrUndoDelObj : public SdrUndoRemoveObj 337 { 338 public: 339 SdrUndoDelObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=sal_False) 340 : SdrUndoRemoveObj(rNewObj,bOrdNumDirect) { SetOwner(sal_True); } 341 virtual ~SdrUndoDelObj() {} 342 343 virtual void Undo(); 344 virtual void Redo(); 345 346 virtual String GetComment() const; 347 virtual String GetSdrRepeatComment(SdrView& rView) const; 348 349 virtual void SdrRepeat(SdrView& rView); 350 virtual bool CanSdrRepeat(SdrView& rView) const; 351 }; 352 353 //************************************************************ 354 // SdrUndoNewObj 355 // 356 // Einfuegen eines neuen Objektes. 357 // Action nach dem einfuegen in die ObjList konstruieren. 358 // 359 //************************************************************ 360 361 class SVX_DLLPUBLIC SdrUndoNewObj : public SdrUndoInsertObj 362 { 363 public: 364 SdrUndoNewObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=sal_False) 365 : SdrUndoInsertObj(rNewObj,bOrdNumDirect) {} 366 virtual ~SdrUndoNewObj() {} 367 368 virtual void Undo(); 369 virtual void Redo(); 370 371 virtual String GetComment() const; 372 373 static String GetComment( const SdrObject& _rForObject ); 374 }; 375 376 //************************************************************ 377 // SdrUndoReplaceObj 378 // 379 // Austausch eines Objektes. 380 // Action vor dem Replace an der ObjList konstruieren. 381 // 382 //************************************************************ 383 384 class SVX_DLLPUBLIC SdrUndoReplaceObj : public SdrUndoObj 385 { 386 bool bOldOwner; 387 bool bNewOwner; 388 389 protected: 390 SdrObjList* pObjList; 391 sal_uInt32 nOrdNum; 392 SdrObject* pNewObj; 393 394 public: 395 SdrUndoReplaceObj(SdrObject& rOldObj1, SdrObject& rNewObj1, bool bOrdNumDirect = false); 396 virtual ~SdrUndoReplaceObj(); 397 398 virtual void Undo(); 399 virtual void Redo(); 400 401 bool IsNewOwner() { return bNewOwner; } 402 void SetNewOwner(bool bNew); 403 404 bool IsOldOwner() { return bOldOwner; } 405 void SetOldOwner(bool bNew); 406 }; 407 408 //************************************************************ 409 // SdrUndoCopyObj 410 // 411 // Kopieren eines Objekts 412 // Action nach dem einfuegen in die ObjList konstruieren. 413 // 414 //************************************************************ 415 416 class SdrUndoCopyObj : public SdrUndoNewObj 417 { 418 public: 419 SdrUndoCopyObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=sal_False) 420 : SdrUndoNewObj(rNewObj,bOrdNumDirect) {} 421 virtual ~SdrUndoCopyObj() {} 422 423 virtual String GetComment() const; 424 }; 425 426 //************************************************************ 427 // SdrUndoObjOrdNum 428 //************************************************************ 429 430 class SdrUndoObjOrdNum : public SdrUndoObj 431 { 432 protected: 433 sal_uInt32 nOldOrdNum; 434 sal_uInt32 nNewOrdNum; 435 436 public: 437 SdrUndoObjOrdNum(SdrObject& rNewObj, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1); 438 virtual ~SdrUndoObjOrdNum() {} 439 440 virtual void Undo(); 441 virtual void Redo(); 442 443 virtual String GetComment() const; 444 }; 445 446 ////////////////////////////////////////////////////////////////////////////// 447 // #i11702# 448 449 class SVX_DLLPUBLIC SdrUndoObjectLayerChange : public SdrUndoObj 450 { 451 protected: 452 SdrLayerID maOldLayer; 453 SdrLayerID maNewLayer; 454 455 public: 456 SdrUndoObjectLayerChange(SdrObject& rObj, SdrLayerID aOldLayer, SdrLayerID aNewLayer); 457 virtual ~SdrUndoObjectLayerChange() {} 458 459 virtual void Undo(); 460 virtual void Redo(); 461 }; 462 463 //************************************************************ 464 // SdrUndoObjSetText 465 //************************************************************ 466 467 class SVX_DLLPUBLIC SdrUndoObjSetText : public SdrUndoObj 468 { 469 protected: 470 OutlinerParaObject* pOldText; 471 OutlinerParaObject* pNewText; 472 FASTBOOL bNewTextAvailable; 473 sal_Bool bEmptyPresObj; 474 sal_Int32 mnText; 475 476 public: 477 SdrUndoObjSetText(SdrObject& rNewObj, sal_Int32 nText ); 478 virtual ~SdrUndoObjSetText(); 479 480 FASTBOOL IsDifferent() const { return pOldText!=pNewText; } 481 void AfterSetText(); 482 483 virtual void Undo(); 484 virtual void Redo(); 485 486 virtual String GetComment() const; 487 virtual String GetSdrRepeatComment(SdrView& rView) const; 488 489 virtual void SdrRepeat(SdrView& rView); 490 virtual bool CanSdrRepeat(SdrView& rView) const; 491 }; 492 493 // --> OD 2009-07-09 #i73249# 494 class SdrUndoObjStrAttr : public SdrUndoObj 495 { 496 public: 497 enum ObjStrAttrType 498 { 499 OBJ_NAME, 500 OBJ_TITLE, 501 OBJ_DESCRIPTION 502 }; 503 504 protected: 505 const ObjStrAttrType meObjStrAttr; 506 const String msOldStr; 507 const String msNewStr; 508 509 public: 510 SdrUndoObjStrAttr( SdrObject& rNewObj, 511 const ObjStrAttrType eObjStrAttr, 512 const String& sOldStr, 513 const String& sNewStr); 514 virtual ~SdrUndoObjStrAttr() {} 515 516 virtual void Undo(); 517 virtual void Redo(); 518 519 virtual String GetComment() const; 520 }; 521 // <-- 522 523 //////////////////////////////////////////////////////////////////////////////////////////////////// 524 // 525 // @@ @@@@ @@ @@ @@@@@ @@@@@ 526 // @@ @@ @@ @@ @@ @@ @@ @@ 527 // @@ @@ @@ @@ @@ @@ @@ @@ 528 // @@ @@@@@@ @@@@ @@@@ @@@@@ 529 // @@ @@ @@ @@ @@ @@ @@ 530 // @@ @@ @@ @@ @@ @@ @@ 531 // @@@@@ @@ @@ @@ @@@@@ @@ @@ 532 // 533 //////////////////////////////////////////////////////////////////////////////////////////////////// 534 535 //************************************************************ 536 // SdrUndoLayer 537 // 538 // Abstrakte Basisklasse fuer alle UndoActions die mit SdrLayer zu tun haben. 539 // 540 //************************************************************ 541 542 class SdrUndoLayer : public SdrUndoAction 543 { 544 protected: 545 SdrLayer* pLayer; 546 SdrLayerAdmin* pLayerAdmin; 547 sal_uInt16 nNum; 548 FASTBOOL bItsMine; 549 550 protected: 551 SdrUndoLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); 552 public: 553 virtual ~SdrUndoLayer(); 554 }; 555 556 //************************************************************ 557 // SdrUndoNewLayer 558 // 559 // Einfuegen eines neuen Layer. Action nach dem Einfuegen konstruieren. 560 // 561 //************************************************************ 562 563 class SdrUndoNewLayer : public SdrUndoLayer 564 { 565 public: 566 SdrUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) 567 : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel) {} 568 virtual ~SdrUndoNewLayer() {} 569 570 virtual void Undo(); 571 virtual void Redo(); 572 573 virtual String GetComment() const; 574 }; 575 576 //************************************************************ 577 // SdrUndoDelLayer 578 // 579 // Loeschen eines Layer. Action vor dem Remove konstruieren 580 // 581 //************************************************************ 582 583 class SdrUndoDelLayer : public SdrUndoLayer 584 { 585 public: 586 SdrUndoDelLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) 587 : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel) { bItsMine=sal_True; } 588 virtual ~SdrUndoDelLayer() {} 589 590 virtual void Undo(); 591 virtual void Redo(); 592 593 virtual String GetComment() const; 594 }; 595 596 //************************************************************ 597 // SdrUndoMoveLayer 598 // 599 // Verschieben eines Layer. Action vor dem Verschieben konstruieren. 600 // 601 //************************************************************ 602 603 class SdrUndoMoveLayer : public SdrUndoLayer 604 { 605 sal_uInt16 nNeuPos; 606 607 public: 608 SdrUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1) 609 : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel), nNeuPos(nNeuPos1) {} 610 virtual ~SdrUndoMoveLayer() {} 611 612 virtual void Undo(); 613 virtual void Redo(); 614 615 virtual String GetComment() const; 616 }; 617 618 //////////////////////////////////////////////////////////////////////////////////////////////////// 619 // 620 // @@@@@ @@@@ @@@@ @@@@@ @@@@ 621 // @@ @@ @@ @@ @@ @@ @@ @@ @@ 622 // @@ @@ @@ @@ @@ @@ @@ 623 // @@@@@ @@@@@@ @@ @@@ @@@@ @@@@ 624 // @@ @@ @@ @@ @@ @@ @@ 625 // @@ @@ @@ @@ @@ @@ @@ @@ 626 // @@ @@ @@ @@@@@ @@@@@ @@@@ 627 // 628 //////////////////////////////////////////////////////////////////////////////////////////////////// 629 630 //************************************************************ 631 // SdrUndoPage 632 // 633 // Abstrakte Basisklasse fuer alle UndoActions die mit SdrPages zu tun haben. 634 // 635 //************************************************************ 636 637 class SVX_DLLPUBLIC SdrUndoPage : public SdrUndoAction 638 { 639 protected: 640 SdrPage& mrPage; 641 642 protected: 643 void ImpInsertPage(sal_uInt16 nNum); 644 void ImpRemovePage(sal_uInt16 nNum); 645 void ImpMovePage(sal_uInt16 nOldNum, sal_uInt16 nNewNum); 646 647 protected: 648 SdrUndoPage(SdrPage& rNewPg); 649 virtual ~SdrUndoPage() {} 650 651 void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, String& rStr, sal_uInt16 n=0, FASTBOOL bRepeat=sal_False) const; 652 }; 653 654 //************************************************************ 655 // SdrUndoPageList 656 // 657 // Manipulationen an einer PageList: Neue Page, DeletePage, MovePage(ChangePageNum) 658 // Abstrakte Basisklasse. 659 // 660 //************************************************************ 661 662 class SVX_DLLPUBLIC SdrUndoPageList : public SdrUndoPage 663 { 664 protected: 665 sal_uInt16 nPageNum; 666 667 // Bei einem Undo/Redo findet moeglicherweise Uebereignung der Page 668 // statt. Im Dtor wird die Page deleted, wenn bItsMine==TRUE 669 FASTBOOL bItsMine; 670 671 protected: 672 SdrUndoPageList(SdrPage& rNewPg); 673 virtual ~SdrUndoPageList(); 674 }; 675 676 //************************************************************ 677 // SdrUndoDelPage 678 // 679 // Loeschen einer Page. 680 // Action vor dem entfernen aus der List konstruieren. 681 // 682 //************************************************************ 683 684 class SVX_DLLPUBLIC SdrUndoDelPage : public SdrUndoPageList 685 { 686 // Beim loeschen einer MasterPage merke ich mir in dieser UndoGroup 687 // alle Beziehungen der Zeichenseiten zu der geloeschten MasterPage 688 SdrUndoGroup* pUndoGroup; 689 690 public: 691 SdrUndoDelPage(SdrPage& rNewPg); 692 virtual ~SdrUndoDelPage(); 693 694 virtual void Undo(); 695 virtual void Redo(); 696 697 virtual String GetComment() const; 698 virtual String GetSdrRepeatComment(SdrView& rView) const; 699 700 virtual void SdrRepeat(SdrView& rView); 701 virtual bool CanSdrRepeat(SdrView& rView) const; 702 }; 703 704 //************************************************************ 705 // SdrUndoNewPage 706 // 707 // Einfuegen einer neuen Page. 708 // Action nach dem einfuegen in die Liste konstruieren. 709 // 710 //************************************************************ 711 712 class SVX_DLLPUBLIC SdrUndoNewPage : public SdrUndoPageList 713 { 714 public: 715 SdrUndoNewPage(SdrPage& rNewPg): SdrUndoPageList(rNewPg) {} 716 virtual ~SdrUndoNewPage() {} 717 718 virtual void Undo(); 719 virtual void Redo(); 720 721 virtual String GetComment() const; 722 }; 723 724 //************************************************************ 725 // SdrUndoCopyPage 726 // 727 // Kopieren einer Page 728 // Action nach dem einfuegen in die Liste konstruieren. 729 // 730 //************************************************************ 731 732 class SdrUndoCopyPage : public SdrUndoNewPage 733 { 734 public: 735 SdrUndoCopyPage(SdrPage& rNewPg): SdrUndoNewPage(rNewPg) {} 736 virtual ~SdrUndoCopyPage() {} 737 738 virtual String GetComment() const; 739 virtual String GetSdrRepeatComment(SdrView& rView) const; 740 741 virtual void SdrRepeat(SdrView& rView); 742 virtual bool CanSdrRepeat(SdrView& rView) const; 743 }; 744 745 //************************************************************ 746 // SdrUndoSetPageNum 747 // 748 // Verschieben der Page innerhalb der Liste 749 // Action vor dem Verschieben der Page konstruieren. 750 // 751 //************************************************************ 752 753 class SVX_DLLPUBLIC SdrUndoSetPageNum : public SdrUndoPage 754 { 755 protected: 756 sal_uInt16 nOldPageNum; 757 sal_uInt16 nNewPageNum; 758 759 public: 760 SdrUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) 761 : SdrUndoPage(rNewPg),nOldPageNum(nOldPageNum1),nNewPageNum(nNewPageNum1) {} 762 virtual ~SdrUndoSetPageNum() {} 763 764 virtual void Undo(); 765 virtual void Redo(); 766 767 virtual String GetComment() const; 768 }; 769 770 //////////////////////////////////////////////////////////////////////////////////////////////////// 771 // 772 // @@ @@ @@@@ @@@@ @@@@@@ @@@@@ @@@@@ @@@@@ @@@@ @@@@ @@@@@ @@@@ 773 // @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 774 // @@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 775 // @@@@@@@ @@@@@@ @@@@ @@ @@@@ @@@@@ @@@@@ @@@@@@ @@ @@@ @@@@ @@@@ 776 // @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 777 // @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 778 // @@ @@ @@ @@ @@@@ @@ @@@@@ @@ @@ @@ @@ @@ @@@@@ @@@@@ @@@@ 779 // 780 //////////////////////////////////////////////////////////////////////////////////////////////////// 781 782 //************************************************************ 783 // SdrUndoPageMasterPage 784 // 785 // Abstrakte Basisklasse fuer alle UndoActions die mit 786 // MasterPage-Beziehungen zu tun haben. 787 // 788 //************************************************************ 789 790 class SdrUndoPageMasterPage : public SdrUndoPage 791 { 792 protected: 793 sal_Bool mbOldHadMasterPage; 794 SetOfByte maOldSet; 795 sal_uInt16 maOldMasterPageNumber; 796 797 protected: 798 SdrUndoPageMasterPage(SdrPage& rChangedPage); 799 800 public: 801 SVX_DLLPUBLIC virtual ~SdrUndoPageMasterPage(); 802 }; 803 804 //************************************************************ 805 // SdrUndoPageRemoveMasterPage 806 // 807 // Entfernen einer MasterPage von einer Zeichenseite. 808 // Action vor dem Entfernen des MasterPageDescriptors erzeugen. 809 // 810 //************************************************************ 811 812 class SdrUndoPageRemoveMasterPage : public SdrUndoPageMasterPage 813 { 814 public: 815 SdrUndoPageRemoveMasterPage(SdrPage& rChangedPage); 816 817 virtual void Undo(); 818 virtual void Redo(); 819 820 virtual String GetComment() const; 821 }; 822 823 //************************************************************ 824 // SdrUndoPageChangeMasterPage 825 // 826 // Aenderung des MasterPageDescriptors (z.B. Aendern der VisibleLayer). 827 // Action vor der Aenderung am MasterPageDescriptor erzeugen. 828 // 829 //************************************************************ 830 831 class SVX_DLLPUBLIC SdrUndoPageChangeMasterPage : public SdrUndoPageMasterPage 832 { 833 protected: 834 sal_Bool mbNewHadMasterPage; 835 SetOfByte maNewSet; 836 sal_uInt16 maNewMasterPageNumber; 837 838 public: 839 SdrUndoPageChangeMasterPage(SdrPage& rChangedPage); 840 virtual ~SdrUndoPageChangeMasterPage() {} 841 842 virtual void Undo(); 843 virtual void Redo(); 844 845 virtual String GetComment() const; 846 }; 847 848 /////////////////////////////////////////////////////////////////////// 849 850 /** the SdrUndoFactory can be set and retrieved from the SdrModel. 851 It is used by the drawing layer implementations to create undo actions. 852 It can be used by applications to create application specific undo actions. 853 */ 854 class SVX_DLLPUBLIC SdrUndoFactory 855 { 856 public: 857 // shapes 858 virtual ~SdrUndoFactory(); 859 virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject ); 860 virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ); 861 virtual SdrUndoAction* CreateUndoGeoObject( SdrObject& rObject ); 862 virtual SdrUndoAction* CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false ); 863 virtual SdrUndoAction* CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect = false); 864 virtual SdrUndoAction* CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false); 865 virtual SdrUndoAction* CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false); 866 virtual SdrUndoAction* CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false); 867 virtual SdrUndoAction* CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false); 868 869 virtual SdrUndoAction* CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1); 870 871 virtual SdrUndoAction* CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect = false ); 872 virtual SdrUndoAction* CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ); 873 virtual SdrUndoAction* CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ); 874 875 // --> OD 2009-07-09 #i73249# 876 virtual SdrUndoAction* CreateUndoObjectStrAttr( SdrObject& rObject, 877 SdrUndoObjStrAttr::ObjStrAttrType eObjStrAttrType, 878 String sOldStr, 879 String sNewStr ); 880 // <-- 881 882 // layer 883 virtual SdrUndoAction* CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); 884 virtual SdrUndoAction* CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); 885 virtual SdrUndoAction* CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1); 886 887 // page 888 virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage); 889 virtual SdrUndoAction* CreateUndoNewPage(SdrPage& rPage); 890 virtual SdrUndoAction* CreateUndoCopyPage(SdrPage& rPage); 891 virtual SdrUndoAction* CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1); 892 893 // master page 894 virtual SdrUndoAction* CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage); 895 virtual SdrUndoAction* CreateUndoPageChangeMasterPage(SdrPage& rChangedPage); 896 }; 897 898 //////////////////////////////////////////////////////////////////////////////////////////////////// 899 900 #endif //_SVDUNDO_HXX 901 902