1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_svx.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include <svx/svdundo.hxx> 32*cdf0e10cSrcweir #include "svx/svditext.hxx" 33*cdf0e10cSrcweir #include <svx/svdotext.hxx> 34*cdf0e10cSrcweir #include <svx/svdobj.hxx> 35*cdf0e10cSrcweir #include <svx/svdpage.hxx> 36*cdf0e10cSrcweir #include <svx/svdlayer.hxx> 37*cdf0e10cSrcweir #include <svx/svdmodel.hxx> 38*cdf0e10cSrcweir #include <svx/svdview.hxx> 39*cdf0e10cSrcweir #include "svx/svdstr.hrc" // Namen aus der Resource 40*cdf0e10cSrcweir #include "svx/svdglob.hxx" // StringCache 41*cdf0e10cSrcweir #include <svx/scene3d.hxx> 42*cdf0e10cSrcweir #include <editeng/outlobj.hxx> 43*cdf0e10cSrcweir #include <svx/svdogrp.hxx> 44*cdf0e10cSrcweir #include <svx/sdr/properties/itemsettools.hxx> 45*cdf0e10cSrcweir #include <svx/sdr/properties/properties.hxx> 46*cdf0e10cSrcweir #include <svx/svdocapt.hxx> 47*cdf0e10cSrcweir #include <svl/whiter.hxx> 48*cdf0e10cSrcweir #include <svx/e3dsceneupdater.hxx> 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir #include "svx/svdviter.hxx" 51*cdf0e10cSrcweir 52*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 53*cdf0e10cSrcweir 54*cdf0e10cSrcweir // iterates over all views and unmarks this SdrObject if it is marked 55*cdf0e10cSrcweir static void ImplUnmarkObject( SdrObject* pObj ) 56*cdf0e10cSrcweir { 57*cdf0e10cSrcweir SdrViewIter aIter( pObj ); 58*cdf0e10cSrcweir for ( SdrView* pView = aIter.FirstView(); pView; pView = aIter.NextView() ) 59*cdf0e10cSrcweir { 60*cdf0e10cSrcweir pView->MarkObj( pObj, pView->GetSdrPageView(), sal_True ); 61*cdf0e10cSrcweir } 62*cdf0e10cSrcweir } 63*cdf0e10cSrcweir 64*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 65*cdf0e10cSrcweir 66*cdf0e10cSrcweir TYPEINIT1(SdrUndoAction,SfxUndoAction); 67*cdf0e10cSrcweir 68*cdf0e10cSrcweir sal_Bool SdrUndoAction::CanRepeat(SfxRepeatTarget& rView) const 69*cdf0e10cSrcweir { 70*cdf0e10cSrcweir SdrView* pV=PTR_CAST(SdrView,&rView); 71*cdf0e10cSrcweir if (pV!=NULL) return CanSdrRepeat(*pV); 72*cdf0e10cSrcweir return sal_False; 73*cdf0e10cSrcweir } 74*cdf0e10cSrcweir 75*cdf0e10cSrcweir void SdrUndoAction::Repeat(SfxRepeatTarget& rView) 76*cdf0e10cSrcweir { 77*cdf0e10cSrcweir SdrView* pV=PTR_CAST(SdrView,&rView); 78*cdf0e10cSrcweir if (pV!=NULL) SdrRepeat(*pV); 79*cdf0e10cSrcweir DBG_ASSERT(pV!=NULL,"Repeat: Uebergebenes SfxRepeatTarget ist keine SdrView"); 80*cdf0e10cSrcweir } 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir XubString SdrUndoAction::GetRepeatComment(SfxRepeatTarget& rView) const 83*cdf0e10cSrcweir { 84*cdf0e10cSrcweir SdrView* pV=PTR_CAST(SdrView,&rView); 85*cdf0e10cSrcweir if (pV!=NULL) return GetSdrRepeatComment(*pV); 86*cdf0e10cSrcweir return String(); 87*cdf0e10cSrcweir } 88*cdf0e10cSrcweir 89*cdf0e10cSrcweir bool SdrUndoAction::CanSdrRepeat(SdrView& /*rView*/) const 90*cdf0e10cSrcweir { 91*cdf0e10cSrcweir return sal_False; 92*cdf0e10cSrcweir } 93*cdf0e10cSrcweir 94*cdf0e10cSrcweir void SdrUndoAction::SdrRepeat(SdrView& /*rView*/) 95*cdf0e10cSrcweir { 96*cdf0e10cSrcweir } 97*cdf0e10cSrcweir 98*cdf0e10cSrcweir XubString SdrUndoAction::GetSdrRepeatComment(SdrView& /*rView*/) const 99*cdf0e10cSrcweir { 100*cdf0e10cSrcweir return String(); 101*cdf0e10cSrcweir } 102*cdf0e10cSrcweir 103*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 104*cdf0e10cSrcweir 105*cdf0e10cSrcweir SdrUndoGroup::SdrUndoGroup(SdrModel& rNewMod) 106*cdf0e10cSrcweir : SdrUndoAction(rNewMod), 107*cdf0e10cSrcweir aBuf(1024,32,32), 108*cdf0e10cSrcweir eFunction(SDRREPFUNC_OBJ_NONE) /*#72642#*/ 109*cdf0e10cSrcweir {} 110*cdf0e10cSrcweir 111*cdf0e10cSrcweir SdrUndoGroup::SdrUndoGroup(SdrModel& rNewMod,const String& rStr) 112*cdf0e10cSrcweir : SdrUndoAction(rNewMod), 113*cdf0e10cSrcweir aBuf(1024,32,32), 114*cdf0e10cSrcweir aComment(rStr), 115*cdf0e10cSrcweir eFunction(SDRREPFUNC_OBJ_NONE) 116*cdf0e10cSrcweir {} 117*cdf0e10cSrcweir 118*cdf0e10cSrcweir SdrUndoGroup::~SdrUndoGroup() 119*cdf0e10cSrcweir { 120*cdf0e10cSrcweir Clear(); 121*cdf0e10cSrcweir } 122*cdf0e10cSrcweir 123*cdf0e10cSrcweir void SdrUndoGroup::Clear() 124*cdf0e10cSrcweir { 125*cdf0e10cSrcweir for (sal_uIntPtr nu=0; nu<GetActionCount(); nu++) { 126*cdf0e10cSrcweir SdrUndoAction* pAct=GetAction(nu); 127*cdf0e10cSrcweir delete pAct; 128*cdf0e10cSrcweir } 129*cdf0e10cSrcweir aBuf.Clear(); 130*cdf0e10cSrcweir } 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir void SdrUndoGroup::AddAction(SdrUndoAction* pAct) 133*cdf0e10cSrcweir { 134*cdf0e10cSrcweir aBuf.Insert(pAct,CONTAINER_APPEND); 135*cdf0e10cSrcweir } 136*cdf0e10cSrcweir 137*cdf0e10cSrcweir void SdrUndoGroup::push_front( SdrUndoAction* pAct ) 138*cdf0e10cSrcweir { 139*cdf0e10cSrcweir aBuf.Insert(pAct, (sal_uIntPtr)0 ); 140*cdf0e10cSrcweir } 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir void SdrUndoGroup::Undo() 143*cdf0e10cSrcweir { 144*cdf0e10cSrcweir for (sal_uIntPtr nu=GetActionCount(); nu>0;) { 145*cdf0e10cSrcweir nu--; 146*cdf0e10cSrcweir SdrUndoAction* pAct=GetAction(nu); 147*cdf0e10cSrcweir pAct->Undo(); 148*cdf0e10cSrcweir } 149*cdf0e10cSrcweir } 150*cdf0e10cSrcweir 151*cdf0e10cSrcweir void SdrUndoGroup::Redo() 152*cdf0e10cSrcweir { 153*cdf0e10cSrcweir for (sal_uIntPtr nu=0; nu<GetActionCount(); nu++) { 154*cdf0e10cSrcweir SdrUndoAction* pAct=GetAction(nu); 155*cdf0e10cSrcweir pAct->Redo(); 156*cdf0e10cSrcweir } 157*cdf0e10cSrcweir } 158*cdf0e10cSrcweir 159*cdf0e10cSrcweir XubString SdrUndoGroup::GetComment() const 160*cdf0e10cSrcweir { 161*cdf0e10cSrcweir XubString aRet(aComment); 162*cdf0e10cSrcweir sal_Char aSearchText[] = "%1"; 163*cdf0e10cSrcweir String aSearchString(aSearchText, sizeof(aSearchText-1)); 164*cdf0e10cSrcweir 165*cdf0e10cSrcweir aRet.SearchAndReplace(aSearchString, aObjDescription); 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir return aRet; 168*cdf0e10cSrcweir } 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir bool SdrUndoGroup::CanSdrRepeat(SdrView& rView) const 171*cdf0e10cSrcweir { 172*cdf0e10cSrcweir switch (eFunction) { 173*cdf0e10cSrcweir case SDRREPFUNC_OBJ_NONE : return sal_False; 174*cdf0e10cSrcweir case SDRREPFUNC_OBJ_DELETE : return rView.AreObjectsMarked(); 175*cdf0e10cSrcweir case SDRREPFUNC_OBJ_COMBINE_POLYPOLY: return rView.IsCombinePossible(sal_False); 176*cdf0e10cSrcweir case SDRREPFUNC_OBJ_COMBINE_ONEPOLY : return rView.IsCombinePossible(sal_True); 177*cdf0e10cSrcweir case SDRREPFUNC_OBJ_DISMANTLE_POLYS : return rView.IsDismantlePossible(sal_False); 178*cdf0e10cSrcweir case SDRREPFUNC_OBJ_DISMANTLE_LINES : return rView.IsDismantlePossible(sal_True); 179*cdf0e10cSrcweir case SDRREPFUNC_OBJ_CONVERTTOPOLY : return rView.IsConvertToPolyObjPossible(sal_False); 180*cdf0e10cSrcweir case SDRREPFUNC_OBJ_CONVERTTOPATH : return rView.IsConvertToPathObjPossible(sal_False); 181*cdf0e10cSrcweir case SDRREPFUNC_OBJ_GROUP : return rView.IsGroupPossible(); 182*cdf0e10cSrcweir case SDRREPFUNC_OBJ_UNGROUP : return rView.IsUnGroupPossible(); 183*cdf0e10cSrcweir case SDRREPFUNC_OBJ_PUTTOTOP : return rView.IsToTopPossible(); 184*cdf0e10cSrcweir case SDRREPFUNC_OBJ_PUTTOBTM : return rView.IsToBtmPossible(); 185*cdf0e10cSrcweir case SDRREPFUNC_OBJ_MOVTOTOP : return rView.IsToTopPossible(); 186*cdf0e10cSrcweir case SDRREPFUNC_OBJ_MOVTOBTM : return rView.IsToBtmPossible(); 187*cdf0e10cSrcweir case SDRREPFUNC_OBJ_REVORDER : return rView.IsReverseOrderPossible(); 188*cdf0e10cSrcweir case SDRREPFUNC_OBJ_IMPORTMTF : return rView.IsImportMtfPossible(); 189*cdf0e10cSrcweir default: break; 190*cdf0e10cSrcweir } // switch 191*cdf0e10cSrcweir return sal_False; 192*cdf0e10cSrcweir } 193*cdf0e10cSrcweir 194*cdf0e10cSrcweir void SdrUndoGroup::SdrRepeat(SdrView& rView) 195*cdf0e10cSrcweir { 196*cdf0e10cSrcweir switch (eFunction) { 197*cdf0e10cSrcweir case SDRREPFUNC_OBJ_NONE : break; 198*cdf0e10cSrcweir case SDRREPFUNC_OBJ_DELETE : rView.DeleteMarked(); break; 199*cdf0e10cSrcweir case SDRREPFUNC_OBJ_COMBINE_POLYPOLY: rView.CombineMarkedObjects(sal_False); break; 200*cdf0e10cSrcweir case SDRREPFUNC_OBJ_COMBINE_ONEPOLY : rView.CombineMarkedObjects(sal_True); break; 201*cdf0e10cSrcweir case SDRREPFUNC_OBJ_DISMANTLE_POLYS : rView.DismantleMarkedObjects(sal_False); break; 202*cdf0e10cSrcweir case SDRREPFUNC_OBJ_DISMANTLE_LINES : rView.DismantleMarkedObjects(sal_True); break; 203*cdf0e10cSrcweir case SDRREPFUNC_OBJ_CONVERTTOPOLY : rView.ConvertMarkedToPolyObj(sal_False); break; 204*cdf0e10cSrcweir case SDRREPFUNC_OBJ_CONVERTTOPATH : rView.ConvertMarkedToPathObj(sal_False); break; 205*cdf0e10cSrcweir case SDRREPFUNC_OBJ_GROUP : rView.GroupMarked(); break; 206*cdf0e10cSrcweir case SDRREPFUNC_OBJ_UNGROUP : rView.UnGroupMarked(); break; 207*cdf0e10cSrcweir case SDRREPFUNC_OBJ_PUTTOTOP : rView.PutMarkedToTop(); break; 208*cdf0e10cSrcweir case SDRREPFUNC_OBJ_PUTTOBTM : rView.PutMarkedToBtm(); break; 209*cdf0e10cSrcweir case SDRREPFUNC_OBJ_MOVTOTOP : rView.MovMarkedToTop(); break; 210*cdf0e10cSrcweir case SDRREPFUNC_OBJ_MOVTOBTM : rView.MovMarkedToBtm(); break; 211*cdf0e10cSrcweir case SDRREPFUNC_OBJ_REVORDER : rView.ReverseOrderOfMarked(); break; 212*cdf0e10cSrcweir case SDRREPFUNC_OBJ_IMPORTMTF : rView.DoImportMarkedMtf(); break; 213*cdf0e10cSrcweir default: break; 214*cdf0e10cSrcweir } // switch 215*cdf0e10cSrcweir } 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir XubString SdrUndoGroup::GetSdrRepeatComment(SdrView& /*rView*/) const 218*cdf0e10cSrcweir { 219*cdf0e10cSrcweir XubString aRet(aComment); 220*cdf0e10cSrcweir sal_Char aSearchText[] = "%1"; 221*cdf0e10cSrcweir String aSearchString(aSearchText, sizeof(aSearchText-1)); 222*cdf0e10cSrcweir 223*cdf0e10cSrcweir aRet.SearchAndReplace(aSearchString, ImpGetResStr(STR_ObjNameSingulPlural)); 224*cdf0e10cSrcweir 225*cdf0e10cSrcweir return aRet; 226*cdf0e10cSrcweir } 227*cdf0e10cSrcweir 228*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 229*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 230*cdf0e10cSrcweir // 231*cdf0e10cSrcweir // @@@@ @@@@@ @@@@@@ @@@@@ @@@@ @@@@@@ @@@@ 232*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 233*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ @@ 234*cdf0e10cSrcweir // @@ @@ @@@@@ @@ @@@@ @@ @@ @@@@ 235*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ @@ 236*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 237*cdf0e10cSrcweir // @@@@ @@@@@ @@@@ @@@@@ @@@@ @@ @@@@ 238*cdf0e10cSrcweir // 239*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 240*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 241*cdf0e10cSrcweir 242*cdf0e10cSrcweir SdrUndoObj::SdrUndoObj(SdrObject& rNewObj): 243*cdf0e10cSrcweir SdrUndoAction(*rNewObj.GetModel()), 244*cdf0e10cSrcweir pObj(&rNewObj) 245*cdf0e10cSrcweir { 246*cdf0e10cSrcweir } 247*cdf0e10cSrcweir 248*cdf0e10cSrcweir void SdrUndoObj::GetDescriptionStringForObject( const SdrObject& _rForObject, sal_uInt16 nStrCacheID, String& rStr, FASTBOOL bRepeat ) 249*cdf0e10cSrcweir { 250*cdf0e10cSrcweir rStr = ImpGetResStr(nStrCacheID); 251*cdf0e10cSrcweir sal_Char aSearchText[] = "%1"; 252*cdf0e10cSrcweir String aSearchString(aSearchText, sizeof(aSearchText-1)); 253*cdf0e10cSrcweir 254*cdf0e10cSrcweir xub_StrLen nPos = rStr.Search(aSearchString); 255*cdf0e10cSrcweir 256*cdf0e10cSrcweir if(nPos != STRING_NOTFOUND) 257*cdf0e10cSrcweir { 258*cdf0e10cSrcweir rStr.Erase(nPos, 2); 259*cdf0e10cSrcweir 260*cdf0e10cSrcweir if(bRepeat) 261*cdf0e10cSrcweir { 262*cdf0e10cSrcweir rStr.Insert(ImpGetResStr(STR_ObjNameSingulPlural), nPos); 263*cdf0e10cSrcweir } 264*cdf0e10cSrcweir else 265*cdf0e10cSrcweir { 266*cdf0e10cSrcweir XubString aStr; 267*cdf0e10cSrcweir 268*cdf0e10cSrcweir _rForObject.TakeObjNameSingul(aStr); 269*cdf0e10cSrcweir rStr.Insert(aStr, nPos); 270*cdf0e10cSrcweir } 271*cdf0e10cSrcweir } 272*cdf0e10cSrcweir } 273*cdf0e10cSrcweir 274*cdf0e10cSrcweir void SdrUndoObj::ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, XubString& rStr, FASTBOOL bRepeat) const 275*cdf0e10cSrcweir { 276*cdf0e10cSrcweir if ( pObj ) 277*cdf0e10cSrcweir GetDescriptionStringForObject( *pObj, nStrCacheID, rStr, bRepeat ); 278*cdf0e10cSrcweir } 279*cdf0e10cSrcweir 280*cdf0e10cSrcweir // #94278# common call method for evtl. page change when UNDO/REDO 281*cdf0e10cSrcweir // is triggered 282*cdf0e10cSrcweir void SdrUndoObj::ImpShowPageOfThisObject() 283*cdf0e10cSrcweir { 284*cdf0e10cSrcweir if(pObj && pObj->IsInserted() && pObj->GetPage() && pObj->GetModel()) 285*cdf0e10cSrcweir { 286*cdf0e10cSrcweir SdrHint aHint(HINT_SWITCHTOPAGE); 287*cdf0e10cSrcweir 288*cdf0e10cSrcweir aHint.SetObject(pObj); 289*cdf0e10cSrcweir aHint.SetPage(pObj->GetPage()); 290*cdf0e10cSrcweir 291*cdf0e10cSrcweir pObj->GetModel()->Broadcast(aHint); 292*cdf0e10cSrcweir } 293*cdf0e10cSrcweir } 294*cdf0e10cSrcweir 295*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 296*cdf0e10cSrcweir 297*cdf0e10cSrcweir SdrUndoAttrObj::SdrUndoAttrObj(SdrObject& rNewObj, FASTBOOL bStyleSheet1, FASTBOOL bSaveText) 298*cdf0e10cSrcweir : SdrUndoObj(rNewObj), 299*cdf0e10cSrcweir pUndoSet(NULL), 300*cdf0e10cSrcweir pRedoSet(NULL), 301*cdf0e10cSrcweir pRepeatSet(NULL), 302*cdf0e10cSrcweir pUndoStyleSheet(NULL), 303*cdf0e10cSrcweir pRedoStyleSheet(NULL), 304*cdf0e10cSrcweir pRepeatStyleSheet(NULL), 305*cdf0e10cSrcweir bHaveToTakeRedoSet(sal_True), 306*cdf0e10cSrcweir pTextUndo(NULL), 307*cdf0e10cSrcweir 308*cdf0e10cSrcweir // #i8508# 309*cdf0e10cSrcweir pTextRedo(NULL), 310*cdf0e10cSrcweir 311*cdf0e10cSrcweir pUndoGroup(NULL) 312*cdf0e10cSrcweir { 313*cdf0e10cSrcweir bStyleSheet = bStyleSheet1; 314*cdf0e10cSrcweir 315*cdf0e10cSrcweir SdrObjList* pOL = rNewObj.GetSubList(); 316*cdf0e10cSrcweir sal_Bool bIsGroup(pOL!=NULL && pOL->GetObjCount()); 317*cdf0e10cSrcweir sal_Bool bIs3DScene(bIsGroup && pObj->ISA(E3dScene)); 318*cdf0e10cSrcweir 319*cdf0e10cSrcweir if(bIsGroup) 320*cdf0e10cSrcweir { 321*cdf0e10cSrcweir // Aha, Gruppenobjekt 322*cdf0e10cSrcweir pUndoGroup = new SdrUndoGroup(*pObj->GetModel()); 323*cdf0e10cSrcweir sal_uInt32 nObjAnz(pOL->GetObjCount()); 324*cdf0e10cSrcweir 325*cdf0e10cSrcweir for(sal_uInt32 nObjNum(0); nObjNum < nObjAnz; nObjNum++) 326*cdf0e10cSrcweir { 327*cdf0e10cSrcweir pUndoGroup->AddAction( 328*cdf0e10cSrcweir new SdrUndoAttrObj(*pOL->GetObj(nObjNum), bStyleSheet1)); 329*cdf0e10cSrcweir } 330*cdf0e10cSrcweir } 331*cdf0e10cSrcweir 332*cdf0e10cSrcweir if(!bIsGroup || bIs3DScene) 333*cdf0e10cSrcweir { 334*cdf0e10cSrcweir if(pUndoSet) 335*cdf0e10cSrcweir { 336*cdf0e10cSrcweir delete pUndoSet; 337*cdf0e10cSrcweir } 338*cdf0e10cSrcweir 339*cdf0e10cSrcweir pUndoSet = new SfxItemSet(pObj->GetMergedItemSet()); 340*cdf0e10cSrcweir 341*cdf0e10cSrcweir if(bStyleSheet) 342*cdf0e10cSrcweir pUndoStyleSheet = pObj->GetStyleSheet(); 343*cdf0e10cSrcweir 344*cdf0e10cSrcweir if(bSaveText) 345*cdf0e10cSrcweir { 346*cdf0e10cSrcweir pTextUndo = pObj->GetOutlinerParaObject(); 347*cdf0e10cSrcweir if(pTextUndo) 348*cdf0e10cSrcweir pTextUndo = new OutlinerParaObject(*pTextUndo); 349*cdf0e10cSrcweir } 350*cdf0e10cSrcweir } 351*cdf0e10cSrcweir } 352*cdf0e10cSrcweir 353*cdf0e10cSrcweir SdrUndoAttrObj::~SdrUndoAttrObj() 354*cdf0e10cSrcweir { 355*cdf0e10cSrcweir if(pUndoSet) 356*cdf0e10cSrcweir delete pUndoSet; 357*cdf0e10cSrcweir if(pRedoSet) 358*cdf0e10cSrcweir delete pRedoSet; 359*cdf0e10cSrcweir if(pRepeatSet) 360*cdf0e10cSrcweir delete pRepeatSet; 361*cdf0e10cSrcweir if(pUndoGroup) 362*cdf0e10cSrcweir delete pUndoGroup; 363*cdf0e10cSrcweir if(pTextUndo) 364*cdf0e10cSrcweir delete pTextUndo; 365*cdf0e10cSrcweir 366*cdf0e10cSrcweir // #i8508# 367*cdf0e10cSrcweir if(pTextRedo) 368*cdf0e10cSrcweir delete pTextRedo; 369*cdf0e10cSrcweir } 370*cdf0e10cSrcweir 371*cdf0e10cSrcweir void SdrUndoAttrObj::SetRepeatAttr(const SfxItemSet& rSet) 372*cdf0e10cSrcweir { 373*cdf0e10cSrcweir if(pRepeatSet) 374*cdf0e10cSrcweir delete pRepeatSet; 375*cdf0e10cSrcweir 376*cdf0e10cSrcweir pRepeatSet = new SfxItemSet(rSet); 377*cdf0e10cSrcweir } 378*cdf0e10cSrcweir 379*cdf0e10cSrcweir void SdrUndoAttrObj::Undo() 380*cdf0e10cSrcweir { 381*cdf0e10cSrcweir E3DModifySceneSnapRectUpdater aUpdater(pObj); 382*cdf0e10cSrcweir sal_Bool bIs3DScene(pObj && pObj->ISA(E3dScene)); 383*cdf0e10cSrcweir 384*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 385*cdf0e10cSrcweir ImpShowPageOfThisObject(); 386*cdf0e10cSrcweir 387*cdf0e10cSrcweir if(!pUndoGroup || bIs3DScene) 388*cdf0e10cSrcweir { 389*cdf0e10cSrcweir if(bHaveToTakeRedoSet) 390*cdf0e10cSrcweir { 391*cdf0e10cSrcweir bHaveToTakeRedoSet = sal_False; 392*cdf0e10cSrcweir 393*cdf0e10cSrcweir if(pRedoSet) 394*cdf0e10cSrcweir { 395*cdf0e10cSrcweir delete pRedoSet; 396*cdf0e10cSrcweir } 397*cdf0e10cSrcweir 398*cdf0e10cSrcweir pRedoSet = new SfxItemSet(pObj->GetMergedItemSet()); 399*cdf0e10cSrcweir 400*cdf0e10cSrcweir if(bStyleSheet) 401*cdf0e10cSrcweir pRedoStyleSheet=pObj->GetStyleSheet(); 402*cdf0e10cSrcweir 403*cdf0e10cSrcweir if(pTextUndo) 404*cdf0e10cSrcweir { 405*cdf0e10cSrcweir // #i8508# 406*cdf0e10cSrcweir pTextRedo = pObj->GetOutlinerParaObject(); 407*cdf0e10cSrcweir 408*cdf0e10cSrcweir if(pTextRedo) 409*cdf0e10cSrcweir pTextRedo = new OutlinerParaObject(*pTextRedo); 410*cdf0e10cSrcweir } 411*cdf0e10cSrcweir } 412*cdf0e10cSrcweir 413*cdf0e10cSrcweir if(bStyleSheet) 414*cdf0e10cSrcweir { 415*cdf0e10cSrcweir pRedoStyleSheet = pObj->GetStyleSheet(); 416*cdf0e10cSrcweir pObj->SetStyleSheet(pUndoStyleSheet, sal_True); 417*cdf0e10cSrcweir } 418*cdf0e10cSrcweir 419*cdf0e10cSrcweir sdr::properties::ItemChangeBroadcaster aItemChange(*pObj); 420*cdf0e10cSrcweir 421*cdf0e10cSrcweir // #105122# Since ClearItem sets back everything to normal 422*cdf0e10cSrcweir // it also sets fit-to-size text to non-fit-to-size text and 423*cdf0e10cSrcweir // switches on autogrowheight (the default). That may lead to 424*cdf0e10cSrcweir // loosing the geometry size info for the object when it is 425*cdf0e10cSrcweir // re-layouted from AdjustTextFrameWidthAndHeight(). This makes 426*cdf0e10cSrcweir // rescuing the size of the object necessary. 427*cdf0e10cSrcweir const Rectangle aSnapRect = pObj->GetSnapRect(); 428*cdf0e10cSrcweir 429*cdf0e10cSrcweir if(pUndoSet) 430*cdf0e10cSrcweir { 431*cdf0e10cSrcweir // #109587# 432*cdf0e10cSrcweir if(pObj->ISA(SdrCaptionObj)) 433*cdf0e10cSrcweir { 434*cdf0e10cSrcweir // do a more smooth item deletion here, else the text 435*cdf0e10cSrcweir // rect will be reformatted, especially when information regarding 436*cdf0e10cSrcweir // vertical text is changed. When clearing only set items it's 437*cdf0e10cSrcweir // slower, but safer regarding such information (it's not changed 438*cdf0e10cSrcweir // usually) 439*cdf0e10cSrcweir SfxWhichIter aIter(*pUndoSet); 440*cdf0e10cSrcweir sal_uInt16 nWhich(aIter.FirstWhich()); 441*cdf0e10cSrcweir 442*cdf0e10cSrcweir while(nWhich) 443*cdf0e10cSrcweir { 444*cdf0e10cSrcweir if(SFX_ITEM_SET != pUndoSet->GetItemState(nWhich, sal_False)) 445*cdf0e10cSrcweir { 446*cdf0e10cSrcweir pObj->ClearMergedItem(nWhich); 447*cdf0e10cSrcweir } 448*cdf0e10cSrcweir 449*cdf0e10cSrcweir nWhich = aIter.NextWhich(); 450*cdf0e10cSrcweir } 451*cdf0e10cSrcweir } 452*cdf0e10cSrcweir else 453*cdf0e10cSrcweir { 454*cdf0e10cSrcweir pObj->ClearMergedItem(); 455*cdf0e10cSrcweir } 456*cdf0e10cSrcweir 457*cdf0e10cSrcweir pObj->SetMergedItemSet(*pUndoSet); 458*cdf0e10cSrcweir } 459*cdf0e10cSrcweir 460*cdf0e10cSrcweir // #105122# Restore prev size here when it was changed. 461*cdf0e10cSrcweir if(aSnapRect != pObj->GetSnapRect()) 462*cdf0e10cSrcweir { 463*cdf0e10cSrcweir pObj->NbcSetSnapRect(aSnapRect); 464*cdf0e10cSrcweir } 465*cdf0e10cSrcweir 466*cdf0e10cSrcweir pObj->GetProperties().BroadcastItemChange(aItemChange); 467*cdf0e10cSrcweir 468*cdf0e10cSrcweir if(pTextUndo) 469*cdf0e10cSrcweir { 470*cdf0e10cSrcweir pObj->SetOutlinerParaObject(new OutlinerParaObject(*pTextUndo)); 471*cdf0e10cSrcweir } 472*cdf0e10cSrcweir } 473*cdf0e10cSrcweir 474*cdf0e10cSrcweir if(pUndoGroup) 475*cdf0e10cSrcweir { 476*cdf0e10cSrcweir pUndoGroup->Undo(); 477*cdf0e10cSrcweir } 478*cdf0e10cSrcweir } 479*cdf0e10cSrcweir 480*cdf0e10cSrcweir void SdrUndoAttrObj::Redo() 481*cdf0e10cSrcweir { 482*cdf0e10cSrcweir E3DModifySceneSnapRectUpdater aUpdater(pObj); 483*cdf0e10cSrcweir sal_Bool bIs3DScene(pObj && pObj->ISA(E3dScene)); 484*cdf0e10cSrcweir 485*cdf0e10cSrcweir if(!pUndoGroup || bIs3DScene) 486*cdf0e10cSrcweir { 487*cdf0e10cSrcweir if(bStyleSheet) 488*cdf0e10cSrcweir { 489*cdf0e10cSrcweir pUndoStyleSheet = pObj->GetStyleSheet(); 490*cdf0e10cSrcweir pObj->SetStyleSheet(pRedoStyleSheet, sal_True); 491*cdf0e10cSrcweir } 492*cdf0e10cSrcweir 493*cdf0e10cSrcweir sdr::properties::ItemChangeBroadcaster aItemChange(*pObj); 494*cdf0e10cSrcweir 495*cdf0e10cSrcweir // #105122# 496*cdf0e10cSrcweir const Rectangle aSnapRect = pObj->GetSnapRect(); 497*cdf0e10cSrcweir 498*cdf0e10cSrcweir if(pRedoSet) 499*cdf0e10cSrcweir { 500*cdf0e10cSrcweir // #109587# 501*cdf0e10cSrcweir if(pObj->ISA(SdrCaptionObj)) 502*cdf0e10cSrcweir { 503*cdf0e10cSrcweir // do a more smooth item deletion here, else the text 504*cdf0e10cSrcweir // rect will be reformatted, especially when information regarding 505*cdf0e10cSrcweir // vertical text is changed. When clearing only set items it's 506*cdf0e10cSrcweir // slower, but safer regarding such information (it's not changed 507*cdf0e10cSrcweir // usually) 508*cdf0e10cSrcweir SfxWhichIter aIter(*pRedoSet); 509*cdf0e10cSrcweir sal_uInt16 nWhich(aIter.FirstWhich()); 510*cdf0e10cSrcweir 511*cdf0e10cSrcweir while(nWhich) 512*cdf0e10cSrcweir { 513*cdf0e10cSrcweir if(SFX_ITEM_SET != pRedoSet->GetItemState(nWhich, sal_False)) 514*cdf0e10cSrcweir { 515*cdf0e10cSrcweir pObj->ClearMergedItem(nWhich); 516*cdf0e10cSrcweir } 517*cdf0e10cSrcweir 518*cdf0e10cSrcweir nWhich = aIter.NextWhich(); 519*cdf0e10cSrcweir } 520*cdf0e10cSrcweir } 521*cdf0e10cSrcweir else 522*cdf0e10cSrcweir { 523*cdf0e10cSrcweir pObj->ClearMergedItem(); 524*cdf0e10cSrcweir } 525*cdf0e10cSrcweir 526*cdf0e10cSrcweir pObj->SetMergedItemSet(*pRedoSet); 527*cdf0e10cSrcweir } 528*cdf0e10cSrcweir 529*cdf0e10cSrcweir // #105122# Restore prev size here when it was changed. 530*cdf0e10cSrcweir if(aSnapRect != pObj->GetSnapRect()) 531*cdf0e10cSrcweir { 532*cdf0e10cSrcweir pObj->NbcSetSnapRect(aSnapRect); 533*cdf0e10cSrcweir } 534*cdf0e10cSrcweir 535*cdf0e10cSrcweir pObj->GetProperties().BroadcastItemChange(aItemChange); 536*cdf0e10cSrcweir 537*cdf0e10cSrcweir // #i8508# 538*cdf0e10cSrcweir if(pTextRedo) 539*cdf0e10cSrcweir { 540*cdf0e10cSrcweir pObj->SetOutlinerParaObject(new OutlinerParaObject(*pTextRedo)); 541*cdf0e10cSrcweir } 542*cdf0e10cSrcweir } 543*cdf0e10cSrcweir 544*cdf0e10cSrcweir if(pUndoGroup) 545*cdf0e10cSrcweir { 546*cdf0e10cSrcweir pUndoGroup->Redo(); 547*cdf0e10cSrcweir } 548*cdf0e10cSrcweir 549*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 550*cdf0e10cSrcweir ImpShowPageOfThisObject(); 551*cdf0e10cSrcweir } 552*cdf0e10cSrcweir 553*cdf0e10cSrcweir XubString SdrUndoAttrObj::GetComment() const 554*cdf0e10cSrcweir { 555*cdf0e10cSrcweir XubString aStr; 556*cdf0e10cSrcweir 557*cdf0e10cSrcweir if(bStyleSheet) 558*cdf0e10cSrcweir { 559*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_EditSetStylesheet, aStr); 560*cdf0e10cSrcweir } 561*cdf0e10cSrcweir else 562*cdf0e10cSrcweir { 563*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_EditSetAttributes, aStr); 564*cdf0e10cSrcweir } 565*cdf0e10cSrcweir 566*cdf0e10cSrcweir return aStr; 567*cdf0e10cSrcweir } 568*cdf0e10cSrcweir 569*cdf0e10cSrcweir void SdrUndoAttrObj::SdrRepeat(SdrView& rView) 570*cdf0e10cSrcweir { 571*cdf0e10cSrcweir if(pRepeatSet) 572*cdf0e10cSrcweir { 573*cdf0e10cSrcweir rView.SetAttrToMarked(*pRepeatSet, sal_False); 574*cdf0e10cSrcweir } 575*cdf0e10cSrcweir } 576*cdf0e10cSrcweir 577*cdf0e10cSrcweir bool SdrUndoAttrObj::CanSdrRepeat(SdrView& rView) const 578*cdf0e10cSrcweir { 579*cdf0e10cSrcweir return (pRepeatSet!=0L && rView.AreObjectsMarked()); 580*cdf0e10cSrcweir } 581*cdf0e10cSrcweir 582*cdf0e10cSrcweir XubString SdrUndoAttrObj::GetSdrRepeatComment(SdrView& /*rView*/) const 583*cdf0e10cSrcweir { 584*cdf0e10cSrcweir XubString aStr; 585*cdf0e10cSrcweir 586*cdf0e10cSrcweir if(bStyleSheet) 587*cdf0e10cSrcweir { 588*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_EditSetStylesheet, aStr, sal_True); 589*cdf0e10cSrcweir } 590*cdf0e10cSrcweir else 591*cdf0e10cSrcweir { 592*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_EditSetAttributes, aStr, sal_True); 593*cdf0e10cSrcweir } 594*cdf0e10cSrcweir 595*cdf0e10cSrcweir return aStr; 596*cdf0e10cSrcweir } 597*cdf0e10cSrcweir 598*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 599*cdf0e10cSrcweir 600*cdf0e10cSrcweir void SdrUndoMoveObj::Undo() 601*cdf0e10cSrcweir { 602*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 603*cdf0e10cSrcweir ImpShowPageOfThisObject(); 604*cdf0e10cSrcweir 605*cdf0e10cSrcweir pObj->Move(Size(-aDistance.Width(),-aDistance.Height())); 606*cdf0e10cSrcweir } 607*cdf0e10cSrcweir 608*cdf0e10cSrcweir void SdrUndoMoveObj::Redo() 609*cdf0e10cSrcweir { 610*cdf0e10cSrcweir pObj->Move(Size(aDistance.Width(),aDistance.Height())); 611*cdf0e10cSrcweir 612*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 613*cdf0e10cSrcweir ImpShowPageOfThisObject(); 614*cdf0e10cSrcweir } 615*cdf0e10cSrcweir 616*cdf0e10cSrcweir XubString SdrUndoMoveObj::GetComment() const 617*cdf0e10cSrcweir { 618*cdf0e10cSrcweir XubString aStr; 619*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_EditMove,aStr); 620*cdf0e10cSrcweir return aStr; 621*cdf0e10cSrcweir } 622*cdf0e10cSrcweir 623*cdf0e10cSrcweir void SdrUndoMoveObj::SdrRepeat(SdrView& rView) 624*cdf0e10cSrcweir { 625*cdf0e10cSrcweir rView.MoveMarkedObj(aDistance); 626*cdf0e10cSrcweir } 627*cdf0e10cSrcweir 628*cdf0e10cSrcweir bool SdrUndoMoveObj::CanSdrRepeat(SdrView& rView) const 629*cdf0e10cSrcweir { 630*cdf0e10cSrcweir return rView.AreObjectsMarked(); 631*cdf0e10cSrcweir } 632*cdf0e10cSrcweir 633*cdf0e10cSrcweir XubString SdrUndoMoveObj::GetSdrRepeatComment(SdrView& /*rView*/) const 634*cdf0e10cSrcweir { 635*cdf0e10cSrcweir XubString aStr; 636*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_EditMove,aStr,sal_True); 637*cdf0e10cSrcweir return aStr; 638*cdf0e10cSrcweir } 639*cdf0e10cSrcweir 640*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 641*cdf0e10cSrcweir 642*cdf0e10cSrcweir SdrUndoGeoObj::SdrUndoGeoObj(SdrObject& rNewObj): 643*cdf0e10cSrcweir SdrUndoObj(rNewObj), 644*cdf0e10cSrcweir pUndoGeo(NULL), 645*cdf0e10cSrcweir pRedoGeo(NULL), 646*cdf0e10cSrcweir pUndoGroup(NULL) 647*cdf0e10cSrcweir { 648*cdf0e10cSrcweir SdrObjList* pOL=rNewObj.GetSubList(); 649*cdf0e10cSrcweir if (pOL!=NULL && pOL->GetObjCount() && !rNewObj.ISA(E3dScene)) 650*cdf0e10cSrcweir { 651*cdf0e10cSrcweir // Aha, Gruppenobjekt 652*cdf0e10cSrcweir // AW: Aber keine 3D-Szene, dann nur fuer die Szene selbst den Undo anlegen 653*cdf0e10cSrcweir pUndoGroup=new SdrUndoGroup(*pObj->GetModel()); 654*cdf0e10cSrcweir sal_uIntPtr nObjAnz=pOL->GetObjCount(); 655*cdf0e10cSrcweir for (sal_uIntPtr nObjNum=0; nObjNum<nObjAnz; nObjNum++) { 656*cdf0e10cSrcweir pUndoGroup->AddAction(new SdrUndoGeoObj(*pOL->GetObj(nObjNum))); 657*cdf0e10cSrcweir } 658*cdf0e10cSrcweir } else { 659*cdf0e10cSrcweir pUndoGeo=pObj->GetGeoData(); 660*cdf0e10cSrcweir } 661*cdf0e10cSrcweir } 662*cdf0e10cSrcweir 663*cdf0e10cSrcweir SdrUndoGeoObj::~SdrUndoGeoObj() 664*cdf0e10cSrcweir { 665*cdf0e10cSrcweir if (pUndoGeo!=NULL) delete pUndoGeo; 666*cdf0e10cSrcweir if (pRedoGeo!=NULL) delete pRedoGeo; 667*cdf0e10cSrcweir if (pUndoGroup!=NULL) delete pUndoGroup; 668*cdf0e10cSrcweir } 669*cdf0e10cSrcweir 670*cdf0e10cSrcweir void SdrUndoGeoObj::Undo() 671*cdf0e10cSrcweir { 672*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 673*cdf0e10cSrcweir ImpShowPageOfThisObject(); 674*cdf0e10cSrcweir 675*cdf0e10cSrcweir if(pUndoGroup) 676*cdf0e10cSrcweir { 677*cdf0e10cSrcweir pUndoGroup->Undo(); 678*cdf0e10cSrcweir 679*cdf0e10cSrcweir // #97172# 680*cdf0e10cSrcweir // only repaint, no objectchange 681*cdf0e10cSrcweir pObj->ActionChanged(); 682*cdf0e10cSrcweir } 683*cdf0e10cSrcweir else 684*cdf0e10cSrcweir { 685*cdf0e10cSrcweir if (pRedoGeo!=NULL) delete pRedoGeo; 686*cdf0e10cSrcweir pRedoGeo=pObj->GetGeoData(); 687*cdf0e10cSrcweir pObj->SetGeoData(*pUndoGeo); 688*cdf0e10cSrcweir } 689*cdf0e10cSrcweir } 690*cdf0e10cSrcweir 691*cdf0e10cSrcweir void SdrUndoGeoObj::Redo() 692*cdf0e10cSrcweir { 693*cdf0e10cSrcweir if(pUndoGroup) 694*cdf0e10cSrcweir { 695*cdf0e10cSrcweir pUndoGroup->Redo(); 696*cdf0e10cSrcweir 697*cdf0e10cSrcweir // #97172# 698*cdf0e10cSrcweir // only repaint, no objectchange 699*cdf0e10cSrcweir pObj->ActionChanged(); 700*cdf0e10cSrcweir } 701*cdf0e10cSrcweir else 702*cdf0e10cSrcweir { 703*cdf0e10cSrcweir if (pUndoGeo!=NULL) delete pUndoGeo; 704*cdf0e10cSrcweir pUndoGeo=pObj->GetGeoData(); 705*cdf0e10cSrcweir pObj->SetGeoData(*pRedoGeo); 706*cdf0e10cSrcweir } 707*cdf0e10cSrcweir 708*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 709*cdf0e10cSrcweir ImpShowPageOfThisObject(); 710*cdf0e10cSrcweir } 711*cdf0e10cSrcweir 712*cdf0e10cSrcweir XubString SdrUndoGeoObj::GetComment() const 713*cdf0e10cSrcweir { 714*cdf0e10cSrcweir XubString aStr; 715*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_DragMethObjOwn,aStr); 716*cdf0e10cSrcweir return aStr; 717*cdf0e10cSrcweir } 718*cdf0e10cSrcweir 719*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 720*cdf0e10cSrcweir 721*cdf0e10cSrcweir SdrUndoObjList::SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect) 722*cdf0e10cSrcweir : SdrUndoObj(rNewObj), 723*cdf0e10cSrcweir bOwner(sal_False), 724*cdf0e10cSrcweir pView(NULL), 725*cdf0e10cSrcweir pPageView(NULL) 726*cdf0e10cSrcweir { 727*cdf0e10cSrcweir pObjList=pObj->GetObjList(); 728*cdf0e10cSrcweir if (bOrdNumDirect) { 729*cdf0e10cSrcweir nOrdNum=pObj->GetOrdNumDirect(); 730*cdf0e10cSrcweir } else { 731*cdf0e10cSrcweir nOrdNum=pObj->GetOrdNum(); 732*cdf0e10cSrcweir } 733*cdf0e10cSrcweir } 734*cdf0e10cSrcweir 735*cdf0e10cSrcweir SdrUndoObjList::~SdrUndoObjList() 736*cdf0e10cSrcweir { 737*cdf0e10cSrcweir if (pObj!=NULL && IsOwner()) 738*cdf0e10cSrcweir { 739*cdf0e10cSrcweir // Attribute muessen wieder in den regulaeren Pool 740*cdf0e10cSrcweir SetOwner(sal_False); 741*cdf0e10cSrcweir 742*cdf0e10cSrcweir // nun loeschen 743*cdf0e10cSrcweir SdrObject::Free( pObj ); 744*cdf0e10cSrcweir } 745*cdf0e10cSrcweir } 746*cdf0e10cSrcweir 747*cdf0e10cSrcweir void SdrUndoObjList::SetOwner(bool bNew) 748*cdf0e10cSrcweir { 749*cdf0e10cSrcweir bOwner = bNew; 750*cdf0e10cSrcweir } 751*cdf0e10cSrcweir 752*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 753*cdf0e10cSrcweir 754*cdf0e10cSrcweir void SdrUndoRemoveObj::Undo() 755*cdf0e10cSrcweir { 756*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 757*cdf0e10cSrcweir ImpShowPageOfThisObject(); 758*cdf0e10cSrcweir 759*cdf0e10cSrcweir DBG_ASSERT(!pObj->IsInserted(),"UndoRemoveObj: pObj ist bereits Inserted"); 760*cdf0e10cSrcweir if (!pObj->IsInserted()) 761*cdf0e10cSrcweir { 762*cdf0e10cSrcweir // #i11426# 763*cdf0e10cSrcweir // For UNDOs in Calc/Writer it is necessary to adapt the anchor 764*cdf0e10cSrcweir // pos of the target object. 765*cdf0e10cSrcweir Point aOwnerAnchorPos(0, 0); 766*cdf0e10cSrcweir 767*cdf0e10cSrcweir if(pObjList 768*cdf0e10cSrcweir && pObjList->GetOwnerObj() 769*cdf0e10cSrcweir && pObjList->GetOwnerObj()->ISA(SdrObjGroup)) 770*cdf0e10cSrcweir { 771*cdf0e10cSrcweir aOwnerAnchorPos = pObjList->GetOwnerObj()->GetAnchorPos(); 772*cdf0e10cSrcweir } 773*cdf0e10cSrcweir 774*cdf0e10cSrcweir E3DModifySceneSnapRectUpdater aUpdater(pObjList->GetOwnerObj()); 775*cdf0e10cSrcweir SdrInsertReason aReason(SDRREASON_UNDO); 776*cdf0e10cSrcweir pObjList->InsertObject(pObj,nOrdNum,&aReason); 777*cdf0e10cSrcweir 778*cdf0e10cSrcweir // #i11426# 779*cdf0e10cSrcweir if(aOwnerAnchorPos.X() || aOwnerAnchorPos.Y()) 780*cdf0e10cSrcweir { 781*cdf0e10cSrcweir pObj->NbcSetAnchorPos(aOwnerAnchorPos); 782*cdf0e10cSrcweir } 783*cdf0e10cSrcweir } 784*cdf0e10cSrcweir } 785*cdf0e10cSrcweir 786*cdf0e10cSrcweir void SdrUndoRemoveObj::Redo() 787*cdf0e10cSrcweir { 788*cdf0e10cSrcweir DBG_ASSERT(pObj->IsInserted(),"RedoRemoveObj: pObj ist nicht Inserted"); 789*cdf0e10cSrcweir if (pObj->IsInserted()) 790*cdf0e10cSrcweir { 791*cdf0e10cSrcweir ImplUnmarkObject( pObj ); 792*cdf0e10cSrcweir E3DModifySceneSnapRectUpdater aUpdater(pObj); 793*cdf0e10cSrcweir pObjList->RemoveObject(nOrdNum); 794*cdf0e10cSrcweir } 795*cdf0e10cSrcweir 796*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 797*cdf0e10cSrcweir ImpShowPageOfThisObject(); 798*cdf0e10cSrcweir } 799*cdf0e10cSrcweir 800*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 801*cdf0e10cSrcweir 802*cdf0e10cSrcweir void SdrUndoInsertObj::Undo() 803*cdf0e10cSrcweir { 804*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 805*cdf0e10cSrcweir ImpShowPageOfThisObject(); 806*cdf0e10cSrcweir 807*cdf0e10cSrcweir DBG_ASSERT(pObj->IsInserted(),"UndoInsertObj: pObj ist nicht Inserted"); 808*cdf0e10cSrcweir if (pObj->IsInserted()) 809*cdf0e10cSrcweir { 810*cdf0e10cSrcweir ImplUnmarkObject( pObj ); 811*cdf0e10cSrcweir 812*cdf0e10cSrcweir #ifdef DBG_UTIL 813*cdf0e10cSrcweir SdrObject* pChkObj= 814*cdf0e10cSrcweir #endif 815*cdf0e10cSrcweir pObjList->RemoveObject(nOrdNum); 816*cdf0e10cSrcweir DBG_ASSERT(pChkObj==pObj,"UndoInsertObj: RemoveObjNum!=pObj"); 817*cdf0e10cSrcweir } 818*cdf0e10cSrcweir } 819*cdf0e10cSrcweir 820*cdf0e10cSrcweir void SdrUndoInsertObj::Redo() 821*cdf0e10cSrcweir { 822*cdf0e10cSrcweir DBG_ASSERT(!pObj->IsInserted(),"RedoInsertObj: pObj ist bereits Inserted"); 823*cdf0e10cSrcweir if (!pObj->IsInserted()) 824*cdf0e10cSrcweir { 825*cdf0e10cSrcweir // --> OD 2005-05-10 #i45952# - restore anchor position of an object, 826*cdf0e10cSrcweir // which becomes a member of a group, because its cleared in method 827*cdf0e10cSrcweir // <InsertObject(..)>. Needed for correct ReDo in Writer. 828*cdf0e10cSrcweir Point aAnchorPos( 0, 0 ); 829*cdf0e10cSrcweir if ( pObjList && 830*cdf0e10cSrcweir pObjList->GetOwnerObj() && 831*cdf0e10cSrcweir pObjList->GetOwnerObj()->ISA(SdrObjGroup) ) 832*cdf0e10cSrcweir { 833*cdf0e10cSrcweir aAnchorPos = pObj->GetAnchorPos(); 834*cdf0e10cSrcweir } 835*cdf0e10cSrcweir // <-- 836*cdf0e10cSrcweir 837*cdf0e10cSrcweir SdrInsertReason aReason(SDRREASON_UNDO); 838*cdf0e10cSrcweir pObjList->InsertObject(pObj,nOrdNum,&aReason); 839*cdf0e10cSrcweir 840*cdf0e10cSrcweir // --> OD 2005-05-10 #i45952# 841*cdf0e10cSrcweir if ( aAnchorPos.X() || aAnchorPos.Y() ) 842*cdf0e10cSrcweir { 843*cdf0e10cSrcweir pObj->NbcSetAnchorPos( aAnchorPos ); 844*cdf0e10cSrcweir } 845*cdf0e10cSrcweir // <-- 846*cdf0e10cSrcweir } 847*cdf0e10cSrcweir 848*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 849*cdf0e10cSrcweir ImpShowPageOfThisObject(); 850*cdf0e10cSrcweir } 851*cdf0e10cSrcweir 852*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 853*cdf0e10cSrcweir 854*cdf0e10cSrcweir void SdrUndoDelObj::Undo() 855*cdf0e10cSrcweir { 856*cdf0e10cSrcweir SdrUndoRemoveObj::Undo(); 857*cdf0e10cSrcweir DBG_ASSERT(IsOwner(),"UndoDeleteObj: pObj gehoert nicht der UndoAction"); 858*cdf0e10cSrcweir SetOwner(sal_False); 859*cdf0e10cSrcweir } 860*cdf0e10cSrcweir 861*cdf0e10cSrcweir void SdrUndoDelObj::Redo() 862*cdf0e10cSrcweir { 863*cdf0e10cSrcweir SdrUndoRemoveObj::Redo(); 864*cdf0e10cSrcweir DBG_ASSERT(!IsOwner(),"RedoDeleteObj: pObj gehoert bereits der UndoAction"); 865*cdf0e10cSrcweir SetOwner(sal_True); 866*cdf0e10cSrcweir } 867*cdf0e10cSrcweir 868*cdf0e10cSrcweir XubString SdrUndoDelObj::GetComment() const 869*cdf0e10cSrcweir { 870*cdf0e10cSrcweir XubString aStr; 871*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_EditDelete,aStr); 872*cdf0e10cSrcweir return aStr; 873*cdf0e10cSrcweir } 874*cdf0e10cSrcweir 875*cdf0e10cSrcweir void SdrUndoDelObj::SdrRepeat(SdrView& rView) 876*cdf0e10cSrcweir { 877*cdf0e10cSrcweir rView.DeleteMarked(); 878*cdf0e10cSrcweir } 879*cdf0e10cSrcweir 880*cdf0e10cSrcweir bool SdrUndoDelObj::CanSdrRepeat(SdrView& rView) const 881*cdf0e10cSrcweir { 882*cdf0e10cSrcweir return rView.AreObjectsMarked(); 883*cdf0e10cSrcweir } 884*cdf0e10cSrcweir 885*cdf0e10cSrcweir XubString SdrUndoDelObj::GetSdrRepeatComment(SdrView& /*rView*/) const 886*cdf0e10cSrcweir { 887*cdf0e10cSrcweir XubString aStr; 888*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_EditDelete,aStr,sal_True); 889*cdf0e10cSrcweir return aStr; 890*cdf0e10cSrcweir } 891*cdf0e10cSrcweir 892*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 893*cdf0e10cSrcweir 894*cdf0e10cSrcweir void SdrUndoNewObj::Undo() 895*cdf0e10cSrcweir { 896*cdf0e10cSrcweir SdrUndoInsertObj::Undo(); 897*cdf0e10cSrcweir DBG_ASSERT(!IsOwner(),"RedoNewObj: pObj gehoert bereits der UndoAction"); 898*cdf0e10cSrcweir SetOwner(sal_True); 899*cdf0e10cSrcweir } 900*cdf0e10cSrcweir 901*cdf0e10cSrcweir void SdrUndoNewObj::Redo() 902*cdf0e10cSrcweir { 903*cdf0e10cSrcweir SdrUndoInsertObj::Redo(); 904*cdf0e10cSrcweir DBG_ASSERT(IsOwner(),"RedoNewObj: pObj gehoert nicht der UndoAction"); 905*cdf0e10cSrcweir SetOwner(sal_False); 906*cdf0e10cSrcweir } 907*cdf0e10cSrcweir 908*cdf0e10cSrcweir String SdrUndoNewObj::GetComment( const SdrObject& _rForObject ) 909*cdf0e10cSrcweir { 910*cdf0e10cSrcweir String sComment; 911*cdf0e10cSrcweir GetDescriptionStringForObject( _rForObject, STR_UndoInsertObj, sComment ); 912*cdf0e10cSrcweir return sComment; 913*cdf0e10cSrcweir } 914*cdf0e10cSrcweir 915*cdf0e10cSrcweir XubString SdrUndoNewObj::GetComment() const 916*cdf0e10cSrcweir { 917*cdf0e10cSrcweir XubString aStr; 918*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoInsertObj,aStr); 919*cdf0e10cSrcweir return aStr; 920*cdf0e10cSrcweir } 921*cdf0e10cSrcweir 922*cdf0e10cSrcweir SdrUndoReplaceObj::SdrUndoReplaceObj(SdrObject& rOldObj1, SdrObject& rNewObj1, bool bOrdNumDirect) 923*cdf0e10cSrcweir : SdrUndoObj(rOldObj1), 924*cdf0e10cSrcweir bOldOwner(sal_False), 925*cdf0e10cSrcweir bNewOwner(sal_False), 926*cdf0e10cSrcweir pNewObj(&rNewObj1) 927*cdf0e10cSrcweir { 928*cdf0e10cSrcweir SetOldOwner(sal_True); 929*cdf0e10cSrcweir 930*cdf0e10cSrcweir pObjList=pObj->GetObjList(); 931*cdf0e10cSrcweir if (bOrdNumDirect) { 932*cdf0e10cSrcweir nOrdNum=pObj->GetOrdNumDirect(); 933*cdf0e10cSrcweir } else { 934*cdf0e10cSrcweir nOrdNum=pObj->GetOrdNum(); 935*cdf0e10cSrcweir } 936*cdf0e10cSrcweir } 937*cdf0e10cSrcweir 938*cdf0e10cSrcweir SdrUndoReplaceObj::~SdrUndoReplaceObj() 939*cdf0e10cSrcweir { 940*cdf0e10cSrcweir if (pObj!=NULL && IsOldOwner()) 941*cdf0e10cSrcweir { 942*cdf0e10cSrcweir // Attribute muessen wieder in den regulaeren Pool 943*cdf0e10cSrcweir SetOldOwner(sal_False); 944*cdf0e10cSrcweir 945*cdf0e10cSrcweir // nun loeschen 946*cdf0e10cSrcweir SdrObject::Free( pObj ); 947*cdf0e10cSrcweir } 948*cdf0e10cSrcweir if (pNewObj!=NULL && IsNewOwner()) 949*cdf0e10cSrcweir { 950*cdf0e10cSrcweir // Attribute muessen wieder in den regulaeren Pool 951*cdf0e10cSrcweir SetNewOwner(sal_False); 952*cdf0e10cSrcweir 953*cdf0e10cSrcweir // nun loeschen 954*cdf0e10cSrcweir SdrObject::Free( pNewObj ); 955*cdf0e10cSrcweir } 956*cdf0e10cSrcweir } 957*cdf0e10cSrcweir 958*cdf0e10cSrcweir void SdrUndoReplaceObj::Undo() 959*cdf0e10cSrcweir { 960*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 961*cdf0e10cSrcweir ImpShowPageOfThisObject(); 962*cdf0e10cSrcweir 963*cdf0e10cSrcweir if (IsOldOwner() && !IsNewOwner()) 964*cdf0e10cSrcweir { 965*cdf0e10cSrcweir DBG_ASSERT(!pObj->IsInserted(),"SdrUndoReplaceObj::Undo(): Altes Objekt ist bereits inserted!"); 966*cdf0e10cSrcweir DBG_ASSERT(pNewObj->IsInserted(),"SdrUndoReplaceObj::Undo(): Neues Objekt ist nicht inserted!"); 967*cdf0e10cSrcweir SetOldOwner(sal_False); 968*cdf0e10cSrcweir SetNewOwner(sal_True); 969*cdf0e10cSrcweir 970*cdf0e10cSrcweir ImplUnmarkObject( pNewObj ); 971*cdf0e10cSrcweir pObjList->ReplaceObject(pObj,nOrdNum); 972*cdf0e10cSrcweir } 973*cdf0e10cSrcweir else 974*cdf0e10cSrcweir { 975*cdf0e10cSrcweir DBG_ERROR("SdrUndoReplaceObj::Undo(): IsMine-Flags stehen verkehrt. Doppelter Undo-Aufruf?"); 976*cdf0e10cSrcweir } 977*cdf0e10cSrcweir } 978*cdf0e10cSrcweir 979*cdf0e10cSrcweir void SdrUndoReplaceObj::Redo() 980*cdf0e10cSrcweir { 981*cdf0e10cSrcweir if (!IsOldOwner() && IsNewOwner()) 982*cdf0e10cSrcweir { 983*cdf0e10cSrcweir DBG_ASSERT(!pNewObj->IsInserted(),"SdrUndoReplaceObj::Redo(): Neues Objekt ist bereits inserted!"); 984*cdf0e10cSrcweir DBG_ASSERT(pObj->IsInserted(),"SdrUndoReplaceObj::Redo(): Altes Objekt ist nicht inserted!"); 985*cdf0e10cSrcweir SetOldOwner(sal_True); 986*cdf0e10cSrcweir SetNewOwner(sal_False); 987*cdf0e10cSrcweir 988*cdf0e10cSrcweir ImplUnmarkObject( pObj ); 989*cdf0e10cSrcweir pObjList->ReplaceObject(pNewObj,nOrdNum); 990*cdf0e10cSrcweir 991*cdf0e10cSrcweir } 992*cdf0e10cSrcweir else 993*cdf0e10cSrcweir { 994*cdf0e10cSrcweir DBG_ERROR("SdrUndoReplaceObj::Redo(): IsMine-Flags stehen verkehrt. Doppelter Redo-Aufruf?"); 995*cdf0e10cSrcweir } 996*cdf0e10cSrcweir 997*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 998*cdf0e10cSrcweir ImpShowPageOfThisObject(); 999*cdf0e10cSrcweir } 1000*cdf0e10cSrcweir 1001*cdf0e10cSrcweir void SdrUndoReplaceObj::SetNewOwner(bool bNew) 1002*cdf0e10cSrcweir { 1003*cdf0e10cSrcweir bNewOwner = bNew; 1004*cdf0e10cSrcweir } 1005*cdf0e10cSrcweir 1006*cdf0e10cSrcweir void SdrUndoReplaceObj::SetOldOwner(bool bNew) 1007*cdf0e10cSrcweir { 1008*cdf0e10cSrcweir bOldOwner = bNew; 1009*cdf0e10cSrcweir } 1010*cdf0e10cSrcweir 1011*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1012*cdf0e10cSrcweir 1013*cdf0e10cSrcweir XubString SdrUndoCopyObj::GetComment() const 1014*cdf0e10cSrcweir { 1015*cdf0e10cSrcweir XubString aStr; 1016*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoCopyObj,aStr); 1017*cdf0e10cSrcweir return aStr; 1018*cdf0e10cSrcweir } 1019*cdf0e10cSrcweir 1020*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1021*cdf0e10cSrcweir // #i11702# 1022*cdf0e10cSrcweir 1023*cdf0e10cSrcweir SdrUndoObjectLayerChange::SdrUndoObjectLayerChange(SdrObject& rObj, SdrLayerID aOldLayer, SdrLayerID aNewLayer) 1024*cdf0e10cSrcweir : SdrUndoObj(rObj), 1025*cdf0e10cSrcweir maOldLayer(aOldLayer), 1026*cdf0e10cSrcweir maNewLayer(aNewLayer) 1027*cdf0e10cSrcweir { 1028*cdf0e10cSrcweir } 1029*cdf0e10cSrcweir 1030*cdf0e10cSrcweir void SdrUndoObjectLayerChange::Undo() 1031*cdf0e10cSrcweir { 1032*cdf0e10cSrcweir ImpShowPageOfThisObject(); 1033*cdf0e10cSrcweir pObj->SetLayer(maOldLayer); 1034*cdf0e10cSrcweir } 1035*cdf0e10cSrcweir 1036*cdf0e10cSrcweir void SdrUndoObjectLayerChange::Redo() 1037*cdf0e10cSrcweir { 1038*cdf0e10cSrcweir pObj->SetLayer(maNewLayer); 1039*cdf0e10cSrcweir ImpShowPageOfThisObject(); 1040*cdf0e10cSrcweir } 1041*cdf0e10cSrcweir 1042*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1043*cdf0e10cSrcweir 1044*cdf0e10cSrcweir SdrUndoObjOrdNum::SdrUndoObjOrdNum(SdrObject& rNewObj, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1): 1045*cdf0e10cSrcweir SdrUndoObj(rNewObj), 1046*cdf0e10cSrcweir nOldOrdNum(nOldOrdNum1), 1047*cdf0e10cSrcweir nNewOrdNum(nNewOrdNum1) 1048*cdf0e10cSrcweir { 1049*cdf0e10cSrcweir } 1050*cdf0e10cSrcweir 1051*cdf0e10cSrcweir void SdrUndoObjOrdNum::Undo() 1052*cdf0e10cSrcweir { 1053*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 1054*cdf0e10cSrcweir ImpShowPageOfThisObject(); 1055*cdf0e10cSrcweir 1056*cdf0e10cSrcweir SdrObjList* pOL=pObj->GetObjList(); 1057*cdf0e10cSrcweir if (pOL==NULL) { 1058*cdf0e10cSrcweir DBG_ERROR("UndoObjOrdNum: pObj hat keine ObjList"); 1059*cdf0e10cSrcweir return; 1060*cdf0e10cSrcweir } 1061*cdf0e10cSrcweir pOL->SetObjectOrdNum(nNewOrdNum,nOldOrdNum); 1062*cdf0e10cSrcweir } 1063*cdf0e10cSrcweir 1064*cdf0e10cSrcweir void SdrUndoObjOrdNum::Redo() 1065*cdf0e10cSrcweir { 1066*cdf0e10cSrcweir SdrObjList* pOL=pObj->GetObjList(); 1067*cdf0e10cSrcweir if (pOL==NULL) { 1068*cdf0e10cSrcweir DBG_ERROR("RedoObjOrdNum: pObj hat keine ObjList"); 1069*cdf0e10cSrcweir return; 1070*cdf0e10cSrcweir } 1071*cdf0e10cSrcweir pOL->SetObjectOrdNum(nOldOrdNum,nNewOrdNum); 1072*cdf0e10cSrcweir 1073*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 1074*cdf0e10cSrcweir ImpShowPageOfThisObject(); 1075*cdf0e10cSrcweir } 1076*cdf0e10cSrcweir 1077*cdf0e10cSrcweir XubString SdrUndoObjOrdNum::GetComment() const 1078*cdf0e10cSrcweir { 1079*cdf0e10cSrcweir XubString aStr; 1080*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoObjOrdNum,aStr); 1081*cdf0e10cSrcweir return aStr; 1082*cdf0e10cSrcweir } 1083*cdf0e10cSrcweir 1084*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1085*cdf0e10cSrcweir 1086*cdf0e10cSrcweir SdrUndoObjSetText::SdrUndoObjSetText(SdrObject& rNewObj, sal_Int32 nText) 1087*cdf0e10cSrcweir : SdrUndoObj(rNewObj) 1088*cdf0e10cSrcweir , pOldText(NULL) 1089*cdf0e10cSrcweir , pNewText(NULL) 1090*cdf0e10cSrcweir , bNewTextAvailable(sal_False) 1091*cdf0e10cSrcweir , bEmptyPresObj(sal_False) 1092*cdf0e10cSrcweir , mnText(nText) 1093*cdf0e10cSrcweir { 1094*cdf0e10cSrcweir SdrText* pText = static_cast< SdrTextObj*>( &rNewObj )->getText(mnText); 1095*cdf0e10cSrcweir if( pText && pText->GetOutlinerParaObject() ) 1096*cdf0e10cSrcweir pOldText = new OutlinerParaObject(*pText->GetOutlinerParaObject()); 1097*cdf0e10cSrcweir 1098*cdf0e10cSrcweir bEmptyPresObj = rNewObj.IsEmptyPresObj(); 1099*cdf0e10cSrcweir } 1100*cdf0e10cSrcweir 1101*cdf0e10cSrcweir SdrUndoObjSetText::~SdrUndoObjSetText() 1102*cdf0e10cSrcweir { 1103*cdf0e10cSrcweir if ( pOldText ) 1104*cdf0e10cSrcweir delete pOldText; 1105*cdf0e10cSrcweir if ( pNewText ) 1106*cdf0e10cSrcweir delete pNewText; 1107*cdf0e10cSrcweir } 1108*cdf0e10cSrcweir 1109*cdf0e10cSrcweir void SdrUndoObjSetText::AfterSetText() 1110*cdf0e10cSrcweir { 1111*cdf0e10cSrcweir if (!bNewTextAvailable) 1112*cdf0e10cSrcweir { 1113*cdf0e10cSrcweir SdrText* pText = static_cast< SdrTextObj*>( pObj )->getText(mnText); 1114*cdf0e10cSrcweir if( pText && pText->GetOutlinerParaObject() ) 1115*cdf0e10cSrcweir pNewText = new OutlinerParaObject(*pText->GetOutlinerParaObject()); 1116*cdf0e10cSrcweir bNewTextAvailable=sal_True; 1117*cdf0e10cSrcweir } 1118*cdf0e10cSrcweir } 1119*cdf0e10cSrcweir 1120*cdf0e10cSrcweir void SdrUndoObjSetText::Undo() 1121*cdf0e10cSrcweir { 1122*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 1123*cdf0e10cSrcweir ImpShowPageOfThisObject(); 1124*cdf0e10cSrcweir 1125*cdf0e10cSrcweir // alten Text sichern fuer Redo 1126*cdf0e10cSrcweir if (!bNewTextAvailable) 1127*cdf0e10cSrcweir AfterSetText(); 1128*cdf0e10cSrcweir 1129*cdf0e10cSrcweir // Text fuer Undo kopieren, denn SetOutlinerParaObject() ist Eigentumsuebereignung 1130*cdf0e10cSrcweir OutlinerParaObject* pText1 = pOldText; 1131*cdf0e10cSrcweir if(pText1) 1132*cdf0e10cSrcweir pText1 = new OutlinerParaObject(*pText1); 1133*cdf0e10cSrcweir 1134*cdf0e10cSrcweir SdrText* pText = static_cast< SdrTextObj*>( pObj )->getText(mnText); 1135*cdf0e10cSrcweir if( pText ) 1136*cdf0e10cSrcweir pText->SetOutlinerParaObject(pText1); 1137*cdf0e10cSrcweir 1138*cdf0e10cSrcweir pObj->SetEmptyPresObj( bEmptyPresObj ); 1139*cdf0e10cSrcweir pObj->ActionChanged(); 1140*cdf0e10cSrcweir } 1141*cdf0e10cSrcweir 1142*cdf0e10cSrcweir void SdrUndoObjSetText::Redo() 1143*cdf0e10cSrcweir { 1144*cdf0e10cSrcweir // Text fuer Undo kopieren, denn SetOutlinerParaObject() ist Eigentumsuebereignung 1145*cdf0e10cSrcweir OutlinerParaObject* pText1 = pNewText; 1146*cdf0e10cSrcweir 1147*cdf0e10cSrcweir if(pText1) 1148*cdf0e10cSrcweir pText1 = new OutlinerParaObject(*pText1); 1149*cdf0e10cSrcweir 1150*cdf0e10cSrcweir SdrText* pText = static_cast< SdrTextObj*>( pObj )->getText(mnText); 1151*cdf0e10cSrcweir if( pText ) 1152*cdf0e10cSrcweir static_cast< SdrTextObj* >( pObj )->NbcSetOutlinerParaObjectForText( pText1, pText ); 1153*cdf0e10cSrcweir 1154*cdf0e10cSrcweir pObj->ActionChanged(); 1155*cdf0e10cSrcweir 1156*cdf0e10cSrcweir // #94278# Trigger PageChangeCall 1157*cdf0e10cSrcweir ImpShowPageOfThisObject(); 1158*cdf0e10cSrcweir } 1159*cdf0e10cSrcweir 1160*cdf0e10cSrcweir XubString SdrUndoObjSetText::GetComment() const 1161*cdf0e10cSrcweir { 1162*cdf0e10cSrcweir XubString aStr; 1163*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoObjSetText,aStr); 1164*cdf0e10cSrcweir return aStr; 1165*cdf0e10cSrcweir } 1166*cdf0e10cSrcweir 1167*cdf0e10cSrcweir XubString SdrUndoObjSetText::GetSdrRepeatComment(SdrView& /*rView*/) const 1168*cdf0e10cSrcweir { 1169*cdf0e10cSrcweir XubString aStr; 1170*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoObjSetText,aStr); 1171*cdf0e10cSrcweir return aStr; 1172*cdf0e10cSrcweir } 1173*cdf0e10cSrcweir 1174*cdf0e10cSrcweir void SdrUndoObjSetText::SdrRepeat(SdrView& rView) 1175*cdf0e10cSrcweir { 1176*cdf0e10cSrcweir if (bNewTextAvailable && rView.AreObjectsMarked()) 1177*cdf0e10cSrcweir { 1178*cdf0e10cSrcweir const SdrMarkList& rML=rView.GetMarkedObjectList(); 1179*cdf0e10cSrcweir 1180*cdf0e10cSrcweir const bool bUndo = rView.IsUndoEnabled(); 1181*cdf0e10cSrcweir if( bUndo ) 1182*cdf0e10cSrcweir { 1183*cdf0e10cSrcweir XubString aStr; 1184*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoObjSetText,aStr); 1185*cdf0e10cSrcweir rView.BegUndo(aStr); 1186*cdf0e10cSrcweir } 1187*cdf0e10cSrcweir 1188*cdf0e10cSrcweir sal_uIntPtr nAnz=rML.GetMarkCount(); 1189*cdf0e10cSrcweir for (sal_uIntPtr nm=0; nm<nAnz; nm++) 1190*cdf0e10cSrcweir { 1191*cdf0e10cSrcweir SdrObject* pObj2=rML.GetMark(nm)->GetMarkedSdrObj(); 1192*cdf0e10cSrcweir SdrTextObj* pTextObj=PTR_CAST(SdrTextObj,pObj2); 1193*cdf0e10cSrcweir if (pTextObj!=NULL) 1194*cdf0e10cSrcweir { 1195*cdf0e10cSrcweir if( bUndo ) 1196*cdf0e10cSrcweir rView.AddUndo(new SdrUndoObjSetText(*pTextObj,0)); 1197*cdf0e10cSrcweir 1198*cdf0e10cSrcweir OutlinerParaObject* pText1=pNewText; 1199*cdf0e10cSrcweir if (pText1!=NULL) 1200*cdf0e10cSrcweir pText1 = new OutlinerParaObject(*pText1); 1201*cdf0e10cSrcweir pTextObj->SetOutlinerParaObject(pText1); 1202*cdf0e10cSrcweir } 1203*cdf0e10cSrcweir } 1204*cdf0e10cSrcweir 1205*cdf0e10cSrcweir if( bUndo ) 1206*cdf0e10cSrcweir rView.EndUndo(); 1207*cdf0e10cSrcweir } 1208*cdf0e10cSrcweir } 1209*cdf0e10cSrcweir 1210*cdf0e10cSrcweir bool SdrUndoObjSetText::CanSdrRepeat(SdrView& rView) const 1211*cdf0e10cSrcweir { 1212*cdf0e10cSrcweir bool bOk=sal_False; 1213*cdf0e10cSrcweir if (bNewTextAvailable && rView.AreObjectsMarked()) { 1214*cdf0e10cSrcweir bOk=sal_True; 1215*cdf0e10cSrcweir } 1216*cdf0e10cSrcweir return bOk; 1217*cdf0e10cSrcweir } 1218*cdf0e10cSrcweir 1219*cdf0e10cSrcweir // --> OD 2009-07-09 #i73249# 1220*cdf0e10cSrcweir SdrUndoObjStrAttr::SdrUndoObjStrAttr( SdrObject& rNewObj, 1221*cdf0e10cSrcweir const ObjStrAttrType eObjStrAttr, 1222*cdf0e10cSrcweir const String& sOldStr, 1223*cdf0e10cSrcweir const String& sNewStr) 1224*cdf0e10cSrcweir : SdrUndoObj( rNewObj ), 1225*cdf0e10cSrcweir meObjStrAttr( eObjStrAttr ), 1226*cdf0e10cSrcweir msOldStr( sOldStr ), 1227*cdf0e10cSrcweir msNewStr( sNewStr ) 1228*cdf0e10cSrcweir { 1229*cdf0e10cSrcweir } 1230*cdf0e10cSrcweir 1231*cdf0e10cSrcweir void SdrUndoObjStrAttr::Undo() 1232*cdf0e10cSrcweir { 1233*cdf0e10cSrcweir ImpShowPageOfThisObject(); 1234*cdf0e10cSrcweir 1235*cdf0e10cSrcweir switch ( meObjStrAttr ) 1236*cdf0e10cSrcweir { 1237*cdf0e10cSrcweir case OBJ_NAME: 1238*cdf0e10cSrcweir { 1239*cdf0e10cSrcweir pObj->SetName( msOldStr ); 1240*cdf0e10cSrcweir } 1241*cdf0e10cSrcweir break; 1242*cdf0e10cSrcweir case OBJ_TITLE: 1243*cdf0e10cSrcweir { 1244*cdf0e10cSrcweir pObj->SetTitle( msOldStr ); 1245*cdf0e10cSrcweir } 1246*cdf0e10cSrcweir break; 1247*cdf0e10cSrcweir case OBJ_DESCRIPTION: 1248*cdf0e10cSrcweir { 1249*cdf0e10cSrcweir pObj->SetDescription( msOldStr ); 1250*cdf0e10cSrcweir } 1251*cdf0e10cSrcweir break; 1252*cdf0e10cSrcweir } 1253*cdf0e10cSrcweir } 1254*cdf0e10cSrcweir 1255*cdf0e10cSrcweir void SdrUndoObjStrAttr::Redo() 1256*cdf0e10cSrcweir { 1257*cdf0e10cSrcweir switch ( meObjStrAttr ) 1258*cdf0e10cSrcweir { 1259*cdf0e10cSrcweir case OBJ_NAME: 1260*cdf0e10cSrcweir { 1261*cdf0e10cSrcweir pObj->SetName( msNewStr ); 1262*cdf0e10cSrcweir } 1263*cdf0e10cSrcweir break; 1264*cdf0e10cSrcweir case OBJ_TITLE: 1265*cdf0e10cSrcweir { 1266*cdf0e10cSrcweir pObj->SetTitle( msNewStr ); 1267*cdf0e10cSrcweir } 1268*cdf0e10cSrcweir break; 1269*cdf0e10cSrcweir case OBJ_DESCRIPTION: 1270*cdf0e10cSrcweir { 1271*cdf0e10cSrcweir pObj->SetDescription( msNewStr ); 1272*cdf0e10cSrcweir } 1273*cdf0e10cSrcweir break; 1274*cdf0e10cSrcweir } 1275*cdf0e10cSrcweir 1276*cdf0e10cSrcweir ImpShowPageOfThisObject(); 1277*cdf0e10cSrcweir } 1278*cdf0e10cSrcweir 1279*cdf0e10cSrcweir String SdrUndoObjStrAttr::GetComment() const 1280*cdf0e10cSrcweir { 1281*cdf0e10cSrcweir String aStr; 1282*cdf0e10cSrcweir switch ( meObjStrAttr ) 1283*cdf0e10cSrcweir { 1284*cdf0e10cSrcweir case OBJ_NAME: 1285*cdf0e10cSrcweir { 1286*cdf0e10cSrcweir ImpTakeDescriptionStr( STR_UndoObjName, aStr ); 1287*cdf0e10cSrcweir aStr += sal_Unicode(' '); 1288*cdf0e10cSrcweir aStr += sal_Unicode('\''); 1289*cdf0e10cSrcweir aStr += msNewStr; 1290*cdf0e10cSrcweir aStr += sal_Unicode('\''); 1291*cdf0e10cSrcweir } 1292*cdf0e10cSrcweir break; 1293*cdf0e10cSrcweir case OBJ_TITLE: 1294*cdf0e10cSrcweir { 1295*cdf0e10cSrcweir ImpTakeDescriptionStr( STR_UndoObjTitle, aStr ); 1296*cdf0e10cSrcweir } 1297*cdf0e10cSrcweir break; 1298*cdf0e10cSrcweir case OBJ_DESCRIPTION: 1299*cdf0e10cSrcweir { 1300*cdf0e10cSrcweir ImpTakeDescriptionStr( STR_UndoObjDescription, aStr ); 1301*cdf0e10cSrcweir } 1302*cdf0e10cSrcweir break; 1303*cdf0e10cSrcweir } 1304*cdf0e10cSrcweir 1305*cdf0e10cSrcweir return aStr; 1306*cdf0e10cSrcweir } 1307*cdf0e10cSrcweir 1308*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1309*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1310*cdf0e10cSrcweir // 1311*cdf0e10cSrcweir // @@ @@@@ @@ @@ @@@@@ @@@@@ 1312*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ 1313*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ 1314*cdf0e10cSrcweir // @@ @@@@@@ @@@@ @@@@ @@@@@ 1315*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ 1316*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ 1317*cdf0e10cSrcweir // @@@@@ @@ @@ @@ @@@@@ @@ @@ 1318*cdf0e10cSrcweir // 1319*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1320*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1321*cdf0e10cSrcweir 1322*cdf0e10cSrcweir SdrUndoLayer::SdrUndoLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel): 1323*cdf0e10cSrcweir SdrUndoAction(rNewModel), 1324*cdf0e10cSrcweir pLayer(rNewLayerAdmin.GetLayer(nLayerNum)), 1325*cdf0e10cSrcweir pLayerAdmin(&rNewLayerAdmin), 1326*cdf0e10cSrcweir nNum(nLayerNum), 1327*cdf0e10cSrcweir bItsMine(sal_False) 1328*cdf0e10cSrcweir { 1329*cdf0e10cSrcweir } 1330*cdf0e10cSrcweir 1331*cdf0e10cSrcweir SdrUndoLayer::~SdrUndoLayer() 1332*cdf0e10cSrcweir { 1333*cdf0e10cSrcweir if (bItsMine) { 1334*cdf0e10cSrcweir delete pLayer; 1335*cdf0e10cSrcweir } 1336*cdf0e10cSrcweir } 1337*cdf0e10cSrcweir 1338*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1339*cdf0e10cSrcweir 1340*cdf0e10cSrcweir void SdrUndoNewLayer::Undo() 1341*cdf0e10cSrcweir { 1342*cdf0e10cSrcweir DBG_ASSERT(!bItsMine,"SdrUndoNewLayer::Undo(): Layer gehoert bereits der UndoAction"); 1343*cdf0e10cSrcweir bItsMine=sal_True; 1344*cdf0e10cSrcweir #ifdef DBG_UTIL 1345*cdf0e10cSrcweir SdrLayer* pCmpLayer= 1346*cdf0e10cSrcweir #endif 1347*cdf0e10cSrcweir pLayerAdmin->RemoveLayer(nNum); 1348*cdf0e10cSrcweir DBG_ASSERT(pCmpLayer==pLayer,"SdrUndoNewLayer::Undo(): Removter Layer ist != pLayer"); 1349*cdf0e10cSrcweir } 1350*cdf0e10cSrcweir 1351*cdf0e10cSrcweir void SdrUndoNewLayer::Redo() 1352*cdf0e10cSrcweir { 1353*cdf0e10cSrcweir DBG_ASSERT(bItsMine,"SdrUndoNewLayer::Undo(): Layer gehoert nicht der UndoAction"); 1354*cdf0e10cSrcweir bItsMine=sal_False; 1355*cdf0e10cSrcweir pLayerAdmin->InsertLayer(pLayer,nNum); 1356*cdf0e10cSrcweir } 1357*cdf0e10cSrcweir 1358*cdf0e10cSrcweir XubString SdrUndoNewLayer::GetComment() const 1359*cdf0e10cSrcweir { 1360*cdf0e10cSrcweir return ImpGetResStr(STR_UndoNewLayer); 1361*cdf0e10cSrcweir } 1362*cdf0e10cSrcweir 1363*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1364*cdf0e10cSrcweir 1365*cdf0e10cSrcweir void SdrUndoDelLayer::Undo() 1366*cdf0e10cSrcweir { 1367*cdf0e10cSrcweir DBG_ASSERT(bItsMine,"SdrUndoDelLayer::Undo(): Layer gehoert nicht der UndoAction"); 1368*cdf0e10cSrcweir bItsMine=sal_False; 1369*cdf0e10cSrcweir pLayerAdmin->InsertLayer(pLayer,nNum); 1370*cdf0e10cSrcweir } 1371*cdf0e10cSrcweir 1372*cdf0e10cSrcweir void SdrUndoDelLayer::Redo() 1373*cdf0e10cSrcweir { 1374*cdf0e10cSrcweir DBG_ASSERT(!bItsMine,"SdrUndoDelLayer::Undo(): Layer gehoert bereits der UndoAction"); 1375*cdf0e10cSrcweir bItsMine=sal_True; 1376*cdf0e10cSrcweir #ifdef DBG_UTIL 1377*cdf0e10cSrcweir SdrLayer* pCmpLayer= 1378*cdf0e10cSrcweir #endif 1379*cdf0e10cSrcweir pLayerAdmin->RemoveLayer(nNum); 1380*cdf0e10cSrcweir DBG_ASSERT(pCmpLayer==pLayer,"SdrUndoDelLayer::Redo(): Removter Layer ist != pLayer"); 1381*cdf0e10cSrcweir } 1382*cdf0e10cSrcweir 1383*cdf0e10cSrcweir XubString SdrUndoDelLayer::GetComment() const 1384*cdf0e10cSrcweir { 1385*cdf0e10cSrcweir return ImpGetResStr(STR_UndoDelLayer); 1386*cdf0e10cSrcweir } 1387*cdf0e10cSrcweir 1388*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1389*cdf0e10cSrcweir 1390*cdf0e10cSrcweir void SdrUndoMoveLayer::Undo() 1391*cdf0e10cSrcweir { 1392*cdf0e10cSrcweir #ifdef DBG_UTIL 1393*cdf0e10cSrcweir SdrLayer* pCmpLayer= 1394*cdf0e10cSrcweir #endif 1395*cdf0e10cSrcweir pLayerAdmin->RemoveLayer(nNeuPos); 1396*cdf0e10cSrcweir DBG_ASSERT(pCmpLayer==pLayer,"SdrUndoMoveLayer::Undo(): Removter Layer ist != pLayer"); 1397*cdf0e10cSrcweir pLayerAdmin->InsertLayer(pLayer,nNum); 1398*cdf0e10cSrcweir } 1399*cdf0e10cSrcweir 1400*cdf0e10cSrcweir void SdrUndoMoveLayer::Redo() 1401*cdf0e10cSrcweir { 1402*cdf0e10cSrcweir #ifdef DBG_UTIL 1403*cdf0e10cSrcweir SdrLayer* pCmpLayer= 1404*cdf0e10cSrcweir #endif 1405*cdf0e10cSrcweir pLayerAdmin->RemoveLayer(nNum); 1406*cdf0e10cSrcweir DBG_ASSERT(pCmpLayer==pLayer,"SdrUndoMoveLayer::Redo(): Removter Layer ist != pLayer"); 1407*cdf0e10cSrcweir pLayerAdmin->InsertLayer(pLayer,nNeuPos); 1408*cdf0e10cSrcweir } 1409*cdf0e10cSrcweir 1410*cdf0e10cSrcweir XubString SdrUndoMoveLayer::GetComment() const 1411*cdf0e10cSrcweir { 1412*cdf0e10cSrcweir return ImpGetResStr(STR_UndoMovLayer); 1413*cdf0e10cSrcweir } 1414*cdf0e10cSrcweir 1415*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1416*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1417*cdf0e10cSrcweir // 1418*cdf0e10cSrcweir // @@@@@ @@@@ @@@@ @@@@@ @@@@ 1419*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ @@ 1420*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ 1421*cdf0e10cSrcweir // @@@@@ @@@@@@ @@ @@@ @@@@ @@@@ 1422*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ 1423*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ 1424*cdf0e10cSrcweir // @@ @@ @@ @@@@@ @@@@@ @@@@ 1425*cdf0e10cSrcweir // 1426*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1427*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1428*cdf0e10cSrcweir 1429*cdf0e10cSrcweir SdrUndoPage::SdrUndoPage(SdrPage& rNewPg) 1430*cdf0e10cSrcweir : SdrUndoAction(*rNewPg.GetModel()), 1431*cdf0e10cSrcweir mrPage(rNewPg) 1432*cdf0e10cSrcweir { 1433*cdf0e10cSrcweir } 1434*cdf0e10cSrcweir 1435*cdf0e10cSrcweir void SdrUndoPage::ImpInsertPage(sal_uInt16 nNum) 1436*cdf0e10cSrcweir { 1437*cdf0e10cSrcweir DBG_ASSERT(!mrPage.IsInserted(),"SdrUndoPage::ImpInsertPage(): mrPage ist bereits Inserted"); 1438*cdf0e10cSrcweir if (!mrPage.IsInserted()) { 1439*cdf0e10cSrcweir if (mrPage.IsMasterPage()) { 1440*cdf0e10cSrcweir rMod.InsertMasterPage(&mrPage,nNum); 1441*cdf0e10cSrcweir } else { 1442*cdf0e10cSrcweir rMod.InsertPage(&mrPage,nNum); 1443*cdf0e10cSrcweir } 1444*cdf0e10cSrcweir } 1445*cdf0e10cSrcweir } 1446*cdf0e10cSrcweir 1447*cdf0e10cSrcweir void SdrUndoPage::ImpRemovePage(sal_uInt16 nNum) 1448*cdf0e10cSrcweir { 1449*cdf0e10cSrcweir DBG_ASSERT(mrPage.IsInserted(),"SdrUndoPage::ImpRemovePage(): mrPage ist nicht Inserted"); 1450*cdf0e10cSrcweir if (mrPage.IsInserted()) { 1451*cdf0e10cSrcweir SdrPage* pChkPg=NULL; 1452*cdf0e10cSrcweir if (mrPage.IsMasterPage()) { 1453*cdf0e10cSrcweir pChkPg=rMod.RemoveMasterPage(nNum); 1454*cdf0e10cSrcweir } else { 1455*cdf0e10cSrcweir pChkPg=rMod.RemovePage(nNum); 1456*cdf0e10cSrcweir } 1457*cdf0e10cSrcweir DBG_ASSERT(pChkPg==&mrPage,"SdrUndoPage::ImpRemovePage(): RemovePage!=&mrPage"); 1458*cdf0e10cSrcweir } 1459*cdf0e10cSrcweir } 1460*cdf0e10cSrcweir 1461*cdf0e10cSrcweir void SdrUndoPage::ImpMovePage(sal_uInt16 nOldNum, sal_uInt16 nNewNum) 1462*cdf0e10cSrcweir { 1463*cdf0e10cSrcweir DBG_ASSERT(mrPage.IsInserted(),"SdrUndoPage::ImpMovePage(): mrPage ist nicht Inserted"); 1464*cdf0e10cSrcweir if (mrPage.IsInserted()) { 1465*cdf0e10cSrcweir if (mrPage.IsMasterPage()) { 1466*cdf0e10cSrcweir rMod.MoveMasterPage(nOldNum,nNewNum); 1467*cdf0e10cSrcweir } else { 1468*cdf0e10cSrcweir rMod.MovePage(nOldNum,nNewNum); 1469*cdf0e10cSrcweir } 1470*cdf0e10cSrcweir } 1471*cdf0e10cSrcweir } 1472*cdf0e10cSrcweir 1473*cdf0e10cSrcweir void SdrUndoPage::ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, XubString& rStr, sal_uInt16 /*n*/, FASTBOOL /*bRepeat*/) const 1474*cdf0e10cSrcweir { 1475*cdf0e10cSrcweir rStr=ImpGetResStr(nStrCacheID); 1476*cdf0e10cSrcweir } 1477*cdf0e10cSrcweir 1478*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1479*cdf0e10cSrcweir 1480*cdf0e10cSrcweir SdrUndoPageList::SdrUndoPageList(SdrPage& rNewPg): 1481*cdf0e10cSrcweir SdrUndoPage(rNewPg), 1482*cdf0e10cSrcweir bItsMine(sal_False) 1483*cdf0e10cSrcweir { 1484*cdf0e10cSrcweir nPageNum=rNewPg.GetPageNum(); 1485*cdf0e10cSrcweir } 1486*cdf0e10cSrcweir 1487*cdf0e10cSrcweir SdrUndoPageList::~SdrUndoPageList() 1488*cdf0e10cSrcweir { 1489*cdf0e10cSrcweir if(bItsMine) 1490*cdf0e10cSrcweir { 1491*cdf0e10cSrcweir delete (&mrPage); 1492*cdf0e10cSrcweir } 1493*cdf0e10cSrcweir } 1494*cdf0e10cSrcweir 1495*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1496*cdf0e10cSrcweir 1497*cdf0e10cSrcweir SdrUndoDelPage::SdrUndoDelPage(SdrPage& rNewPg): 1498*cdf0e10cSrcweir SdrUndoPageList(rNewPg), 1499*cdf0e10cSrcweir pUndoGroup(NULL) 1500*cdf0e10cSrcweir { 1501*cdf0e10cSrcweir bItsMine = sal_True; 1502*cdf0e10cSrcweir 1503*cdf0e10cSrcweir // Und nun ggf. die MasterPage-Beziehungen merken 1504*cdf0e10cSrcweir if(mrPage.IsMasterPage()) 1505*cdf0e10cSrcweir { 1506*cdf0e10cSrcweir sal_uInt16 nPageAnz(rMod.GetPageCount()); 1507*cdf0e10cSrcweir 1508*cdf0e10cSrcweir for(sal_uInt16 nPageNum2(0); nPageNum2 < nPageAnz; nPageNum2++) 1509*cdf0e10cSrcweir { 1510*cdf0e10cSrcweir SdrPage* pDrawPage = rMod.GetPage(nPageNum2); 1511*cdf0e10cSrcweir 1512*cdf0e10cSrcweir if(pDrawPage->TRG_HasMasterPage()) 1513*cdf0e10cSrcweir { 1514*cdf0e10cSrcweir SdrPage& rMasterPage = pDrawPage->TRG_GetMasterPage(); 1515*cdf0e10cSrcweir 1516*cdf0e10cSrcweir if(&mrPage == &rMasterPage) 1517*cdf0e10cSrcweir { 1518*cdf0e10cSrcweir if(!pUndoGroup) 1519*cdf0e10cSrcweir { 1520*cdf0e10cSrcweir pUndoGroup = new SdrUndoGroup(rMod); 1521*cdf0e10cSrcweir } 1522*cdf0e10cSrcweir 1523*cdf0e10cSrcweir pUndoGroup->AddAction(rMod.GetSdrUndoFactory().CreateUndoPageRemoveMasterPage(*pDrawPage)); 1524*cdf0e10cSrcweir } 1525*cdf0e10cSrcweir } 1526*cdf0e10cSrcweir } 1527*cdf0e10cSrcweir } 1528*cdf0e10cSrcweir } 1529*cdf0e10cSrcweir 1530*cdf0e10cSrcweir SdrUndoDelPage::~SdrUndoDelPage() 1531*cdf0e10cSrcweir { 1532*cdf0e10cSrcweir if (pUndoGroup!=NULL) { 1533*cdf0e10cSrcweir delete pUndoGroup; 1534*cdf0e10cSrcweir } 1535*cdf0e10cSrcweir } 1536*cdf0e10cSrcweir 1537*cdf0e10cSrcweir void SdrUndoDelPage::Undo() 1538*cdf0e10cSrcweir { 1539*cdf0e10cSrcweir ImpInsertPage(nPageNum); 1540*cdf0e10cSrcweir if (pUndoGroup!=NULL) { // MasterPage-Beziehungen wiederherstellen 1541*cdf0e10cSrcweir pUndoGroup->Undo(); 1542*cdf0e10cSrcweir } 1543*cdf0e10cSrcweir DBG_ASSERT(bItsMine,"UndoDeletePage: mrPage gehoert nicht der UndoAction"); 1544*cdf0e10cSrcweir bItsMine=sal_False; 1545*cdf0e10cSrcweir } 1546*cdf0e10cSrcweir 1547*cdf0e10cSrcweir void SdrUndoDelPage::Redo() 1548*cdf0e10cSrcweir { 1549*cdf0e10cSrcweir ImpRemovePage(nPageNum); 1550*cdf0e10cSrcweir // Die MasterPage-Beziehungen werden ggf. von selbst geloesst 1551*cdf0e10cSrcweir DBG_ASSERT(!bItsMine,"RedoDeletePage: mrPage gehoert bereits der UndoAction"); 1552*cdf0e10cSrcweir bItsMine=sal_True; 1553*cdf0e10cSrcweir } 1554*cdf0e10cSrcweir 1555*cdf0e10cSrcweir XubString SdrUndoDelPage::GetComment() const 1556*cdf0e10cSrcweir { 1557*cdf0e10cSrcweir XubString aStr; 1558*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoDelPage,aStr,0,sal_False); 1559*cdf0e10cSrcweir return aStr; 1560*cdf0e10cSrcweir } 1561*cdf0e10cSrcweir 1562*cdf0e10cSrcweir XubString SdrUndoDelPage::GetSdrRepeatComment(SdrView& /*rView*/) const 1563*cdf0e10cSrcweir { 1564*cdf0e10cSrcweir XubString aStr; 1565*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoDelPage,aStr,0,sal_False); 1566*cdf0e10cSrcweir return aStr; 1567*cdf0e10cSrcweir } 1568*cdf0e10cSrcweir 1569*cdf0e10cSrcweir void SdrUndoDelPage::SdrRepeat(SdrView& /*rView*/) 1570*cdf0e10cSrcweir { 1571*cdf0e10cSrcweir } 1572*cdf0e10cSrcweir 1573*cdf0e10cSrcweir bool SdrUndoDelPage::CanSdrRepeat(SdrView& /*rView*/) const 1574*cdf0e10cSrcweir { 1575*cdf0e10cSrcweir return sal_False; 1576*cdf0e10cSrcweir } 1577*cdf0e10cSrcweir 1578*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1579*cdf0e10cSrcweir 1580*cdf0e10cSrcweir void SdrUndoNewPage::Undo() 1581*cdf0e10cSrcweir { 1582*cdf0e10cSrcweir ImpRemovePage(nPageNum); 1583*cdf0e10cSrcweir DBG_ASSERT(!bItsMine,"UndoNewPage: mrPage gehoert bereits der UndoAction"); 1584*cdf0e10cSrcweir bItsMine=sal_True; 1585*cdf0e10cSrcweir } 1586*cdf0e10cSrcweir 1587*cdf0e10cSrcweir void SdrUndoNewPage::Redo() 1588*cdf0e10cSrcweir { 1589*cdf0e10cSrcweir ImpInsertPage(nPageNum); 1590*cdf0e10cSrcweir DBG_ASSERT(bItsMine,"RedoNewPage: mrPage gehoert nicht der UndoAction"); 1591*cdf0e10cSrcweir bItsMine=sal_False; 1592*cdf0e10cSrcweir } 1593*cdf0e10cSrcweir 1594*cdf0e10cSrcweir XubString SdrUndoNewPage::GetComment() const 1595*cdf0e10cSrcweir { 1596*cdf0e10cSrcweir XubString aStr; 1597*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoNewPage,aStr,0,sal_False); 1598*cdf0e10cSrcweir return aStr; 1599*cdf0e10cSrcweir } 1600*cdf0e10cSrcweir 1601*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1602*cdf0e10cSrcweir 1603*cdf0e10cSrcweir XubString SdrUndoCopyPage::GetComment() const 1604*cdf0e10cSrcweir { 1605*cdf0e10cSrcweir XubString aStr; 1606*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoCopPage,aStr,0,sal_False); 1607*cdf0e10cSrcweir return aStr; 1608*cdf0e10cSrcweir } 1609*cdf0e10cSrcweir 1610*cdf0e10cSrcweir XubString SdrUndoCopyPage::GetSdrRepeatComment(SdrView& /*rView*/) const 1611*cdf0e10cSrcweir { 1612*cdf0e10cSrcweir XubString aStr; 1613*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoCopPage,aStr,0,sal_False); 1614*cdf0e10cSrcweir return aStr; 1615*cdf0e10cSrcweir } 1616*cdf0e10cSrcweir 1617*cdf0e10cSrcweir void SdrUndoCopyPage::SdrRepeat(SdrView& /*rView*/) 1618*cdf0e10cSrcweir { 1619*cdf0e10cSrcweir 1620*cdf0e10cSrcweir } 1621*cdf0e10cSrcweir 1622*cdf0e10cSrcweir bool SdrUndoCopyPage::CanSdrRepeat(SdrView& /*rView*/) const 1623*cdf0e10cSrcweir { 1624*cdf0e10cSrcweir return sal_False; 1625*cdf0e10cSrcweir } 1626*cdf0e10cSrcweir 1627*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1628*cdf0e10cSrcweir 1629*cdf0e10cSrcweir void SdrUndoSetPageNum::Undo() 1630*cdf0e10cSrcweir { 1631*cdf0e10cSrcweir ImpMovePage(nNewPageNum,nOldPageNum); 1632*cdf0e10cSrcweir } 1633*cdf0e10cSrcweir 1634*cdf0e10cSrcweir void SdrUndoSetPageNum::Redo() 1635*cdf0e10cSrcweir { 1636*cdf0e10cSrcweir ImpMovePage(nOldPageNum,nNewPageNum); 1637*cdf0e10cSrcweir } 1638*cdf0e10cSrcweir 1639*cdf0e10cSrcweir XubString SdrUndoSetPageNum::GetComment() const 1640*cdf0e10cSrcweir { 1641*cdf0e10cSrcweir XubString aStr; 1642*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoMovPage,aStr,0,sal_False); 1643*cdf0e10cSrcweir return aStr; 1644*cdf0e10cSrcweir } 1645*cdf0e10cSrcweir 1646*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1647*cdf0e10cSrcweir // 1648*cdf0e10cSrcweir // @@ @@ @@@@ @@@@ @@@@@@ @@@@@ @@@@@ @@@@@ @@@@ @@@@ @@@@@ @@@@ 1649*cdf0e10cSrcweir // @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 1650*cdf0e10cSrcweir // @@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 1651*cdf0e10cSrcweir // @@@@@@@ @@@@@@ @@@@ @@ @@@@ @@@@@ @@@@@ @@@@@@ @@ @@@ @@@@ @@@@ 1652*cdf0e10cSrcweir // @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 1653*cdf0e10cSrcweir // @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 1654*cdf0e10cSrcweir // @@ @@ @@ @@ @@@@ @@ @@@@@ @@ @@ @@ @@ @@ @@@@@ @@@@@ @@@@ 1655*cdf0e10cSrcweir // 1656*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1657*cdf0e10cSrcweir 1658*cdf0e10cSrcweir SdrUndoPageMasterPage::SdrUndoPageMasterPage(SdrPage& rChangedPage) 1659*cdf0e10cSrcweir : SdrUndoPage(rChangedPage), 1660*cdf0e10cSrcweir mbOldHadMasterPage(mrPage.TRG_HasMasterPage()) 1661*cdf0e10cSrcweir { 1662*cdf0e10cSrcweir // get current state from page 1663*cdf0e10cSrcweir if(mbOldHadMasterPage) 1664*cdf0e10cSrcweir { 1665*cdf0e10cSrcweir maOldSet = mrPage.TRG_GetMasterPageVisibleLayers(); 1666*cdf0e10cSrcweir maOldMasterPageNumber = mrPage.TRG_GetMasterPage().GetPageNum(); 1667*cdf0e10cSrcweir } 1668*cdf0e10cSrcweir } 1669*cdf0e10cSrcweir 1670*cdf0e10cSrcweir SdrUndoPageMasterPage::~SdrUndoPageMasterPage() 1671*cdf0e10cSrcweir { 1672*cdf0e10cSrcweir } 1673*cdf0e10cSrcweir 1674*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1675*cdf0e10cSrcweir 1676*cdf0e10cSrcweir SdrUndoPageRemoveMasterPage::SdrUndoPageRemoveMasterPage(SdrPage& rChangedPage) 1677*cdf0e10cSrcweir : SdrUndoPageMasterPage(rChangedPage) 1678*cdf0e10cSrcweir { 1679*cdf0e10cSrcweir } 1680*cdf0e10cSrcweir 1681*cdf0e10cSrcweir void SdrUndoPageRemoveMasterPage::Undo() 1682*cdf0e10cSrcweir { 1683*cdf0e10cSrcweir if(mbOldHadMasterPage) 1684*cdf0e10cSrcweir { 1685*cdf0e10cSrcweir mrPage.TRG_SetMasterPage(*mrPage.GetModel()->GetMasterPage(maOldMasterPageNumber)); 1686*cdf0e10cSrcweir mrPage.TRG_SetMasterPageVisibleLayers(maOldSet); 1687*cdf0e10cSrcweir } 1688*cdf0e10cSrcweir } 1689*cdf0e10cSrcweir 1690*cdf0e10cSrcweir void SdrUndoPageRemoveMasterPage::Redo() 1691*cdf0e10cSrcweir { 1692*cdf0e10cSrcweir mrPage.TRG_ClearMasterPage(); 1693*cdf0e10cSrcweir } 1694*cdf0e10cSrcweir 1695*cdf0e10cSrcweir XubString SdrUndoPageRemoveMasterPage::GetComment() const 1696*cdf0e10cSrcweir { 1697*cdf0e10cSrcweir XubString aStr; 1698*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoDelPageMasterDscr,aStr,0,sal_False); 1699*cdf0e10cSrcweir return aStr; 1700*cdf0e10cSrcweir } 1701*cdf0e10cSrcweir 1702*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 1703*cdf0e10cSrcweir 1704*cdf0e10cSrcweir SdrUndoPageChangeMasterPage::SdrUndoPageChangeMasterPage(SdrPage& rChangedPage) 1705*cdf0e10cSrcweir : SdrUndoPageMasterPage(rChangedPage), 1706*cdf0e10cSrcweir mbNewHadMasterPage(sal_False) 1707*cdf0e10cSrcweir { 1708*cdf0e10cSrcweir } 1709*cdf0e10cSrcweir 1710*cdf0e10cSrcweir void SdrUndoPageChangeMasterPage::Undo() 1711*cdf0e10cSrcweir { 1712*cdf0e10cSrcweir // remember values from new page 1713*cdf0e10cSrcweir if(mrPage.TRG_HasMasterPage()) 1714*cdf0e10cSrcweir { 1715*cdf0e10cSrcweir mbNewHadMasterPage = sal_True; 1716*cdf0e10cSrcweir maNewSet = mrPage.TRG_GetMasterPageVisibleLayers(); 1717*cdf0e10cSrcweir maNewMasterPageNumber = mrPage.TRG_GetMasterPage().GetPageNum(); 1718*cdf0e10cSrcweir } 1719*cdf0e10cSrcweir 1720*cdf0e10cSrcweir // restore old values 1721*cdf0e10cSrcweir if(mbOldHadMasterPage) 1722*cdf0e10cSrcweir { 1723*cdf0e10cSrcweir mrPage.TRG_ClearMasterPage(); 1724*cdf0e10cSrcweir mrPage.TRG_SetMasterPage(*mrPage.GetModel()->GetMasterPage(maOldMasterPageNumber)); 1725*cdf0e10cSrcweir mrPage.TRG_SetMasterPageVisibleLayers(maOldSet); 1726*cdf0e10cSrcweir } 1727*cdf0e10cSrcweir } 1728*cdf0e10cSrcweir 1729*cdf0e10cSrcweir void SdrUndoPageChangeMasterPage::Redo() 1730*cdf0e10cSrcweir { 1731*cdf0e10cSrcweir // restore new values 1732*cdf0e10cSrcweir if(mbNewHadMasterPage) 1733*cdf0e10cSrcweir { 1734*cdf0e10cSrcweir mrPage.TRG_ClearMasterPage(); 1735*cdf0e10cSrcweir mrPage.TRG_SetMasterPage(*mrPage.GetModel()->GetMasterPage(maNewMasterPageNumber)); 1736*cdf0e10cSrcweir mrPage.TRG_SetMasterPageVisibleLayers(maNewSet); 1737*cdf0e10cSrcweir } 1738*cdf0e10cSrcweir } 1739*cdf0e10cSrcweir 1740*cdf0e10cSrcweir XubString SdrUndoPageChangeMasterPage::GetComment() const 1741*cdf0e10cSrcweir { 1742*cdf0e10cSrcweir XubString aStr; 1743*cdf0e10cSrcweir ImpTakeDescriptionStr(STR_UndoChgPageMasterDscr,aStr,0,sal_False); 1744*cdf0e10cSrcweir return aStr; 1745*cdf0e10cSrcweir } 1746*cdf0e10cSrcweir 1747*cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////// 1748*cdf0e10cSrcweir SdrUndoFactory::~SdrUndoFactory(){} 1749*cdf0e10cSrcweir // shapes 1750*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoMoveObject( SdrObject& rObject ) 1751*cdf0e10cSrcweir { 1752*cdf0e10cSrcweir return new SdrUndoMoveObj( rObject ); 1753*cdf0e10cSrcweir } 1754*cdf0e10cSrcweir 1755*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ) 1756*cdf0e10cSrcweir { 1757*cdf0e10cSrcweir return new SdrUndoMoveObj( rObject, rDist ); 1758*cdf0e10cSrcweir } 1759*cdf0e10cSrcweir 1760*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoGeoObject( SdrObject& rObject ) 1761*cdf0e10cSrcweir { 1762*cdf0e10cSrcweir return new SdrUndoGeoObj( rObject ); 1763*cdf0e10cSrcweir } 1764*cdf0e10cSrcweir 1765*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1, bool bSaveText ) 1766*cdf0e10cSrcweir { 1767*cdf0e10cSrcweir return new SdrUndoAttrObj( rObject, bStyleSheet1 ? sal_True : sal_False, bSaveText ? sal_True : sal_False ); 1768*cdf0e10cSrcweir } 1769*cdf0e10cSrcweir 1770*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect ) 1771*cdf0e10cSrcweir { 1772*cdf0e10cSrcweir return new SdrUndoRemoveObj( rObject, bOrdNumDirect ? sal_True : sal_False ); 1773*cdf0e10cSrcweir } 1774*cdf0e10cSrcweir 1775*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect ) 1776*cdf0e10cSrcweir { 1777*cdf0e10cSrcweir return new SdrUndoInsertObj( rObject, bOrdNumDirect ? sal_True : sal_False ); 1778*cdf0e10cSrcweir } 1779*cdf0e10cSrcweir 1780*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect ) 1781*cdf0e10cSrcweir { 1782*cdf0e10cSrcweir return new SdrUndoDelObj( rObject, bOrdNumDirect ? sal_True : sal_False ); 1783*cdf0e10cSrcweir } 1784*cdf0e10cSrcweir 1785*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect ) 1786*cdf0e10cSrcweir { 1787*cdf0e10cSrcweir return new SdrUndoNewObj( rObject, bOrdNumDirect ? sal_True : sal_False ); 1788*cdf0e10cSrcweir } 1789*cdf0e10cSrcweir 1790*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect ) 1791*cdf0e10cSrcweir { 1792*cdf0e10cSrcweir return new SdrUndoCopyObj( rObject, bOrdNumDirect ? sal_True : sal_False ); 1793*cdf0e10cSrcweir } 1794*cdf0e10cSrcweir 1795*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1) 1796*cdf0e10cSrcweir { 1797*cdf0e10cSrcweir return new SdrUndoObjOrdNum( rObject, nOldOrdNum1, nNewOrdNum1 ); 1798*cdf0e10cSrcweir } 1799*cdf0e10cSrcweir 1800*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect ) 1801*cdf0e10cSrcweir { 1802*cdf0e10cSrcweir return new SdrUndoReplaceObj( rOldObject, rNewObject, bOrdNumDirect ? sal_True : sal_False ); 1803*cdf0e10cSrcweir } 1804*cdf0e10cSrcweir 1805*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ) 1806*cdf0e10cSrcweir { 1807*cdf0e10cSrcweir return new SdrUndoObjectLayerChange( rObject, aOldLayer, aNewLayer ); 1808*cdf0e10cSrcweir } 1809*cdf0e10cSrcweir 1810*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ) 1811*cdf0e10cSrcweir { 1812*cdf0e10cSrcweir return new SdrUndoObjSetText( rNewObj, nText ); 1813*cdf0e10cSrcweir } 1814*cdf0e10cSrcweir 1815*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoObjectStrAttr( SdrObject& rObject, 1816*cdf0e10cSrcweir SdrUndoObjStrAttr::ObjStrAttrType eObjStrAttrType, 1817*cdf0e10cSrcweir String sOldStr, 1818*cdf0e10cSrcweir String sNewStr ) 1819*cdf0e10cSrcweir { 1820*cdf0e10cSrcweir return new SdrUndoObjStrAttr( rObject, eObjStrAttrType, sOldStr, sNewStr ); 1821*cdf0e10cSrcweir } 1822*cdf0e10cSrcweir 1823*cdf0e10cSrcweir 1824*cdf0e10cSrcweir // layer 1825*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) 1826*cdf0e10cSrcweir { 1827*cdf0e10cSrcweir return new SdrUndoNewLayer( nLayerNum, rNewLayerAdmin, rNewModel ); 1828*cdf0e10cSrcweir } 1829*cdf0e10cSrcweir 1830*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) 1831*cdf0e10cSrcweir { 1832*cdf0e10cSrcweir return new SdrUndoDelLayer( nLayerNum, rNewLayerAdmin, rNewModel ); 1833*cdf0e10cSrcweir } 1834*cdf0e10cSrcweir 1835*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1) 1836*cdf0e10cSrcweir { 1837*cdf0e10cSrcweir return new SdrUndoMoveLayer( nLayerNum, rNewLayerAdmin, rNewModel, nNeuPos1 ); 1838*cdf0e10cSrcweir } 1839*cdf0e10cSrcweir 1840*cdf0e10cSrcweir // page 1841*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoDeletePage(SdrPage& rPage) 1842*cdf0e10cSrcweir { 1843*cdf0e10cSrcweir return new SdrUndoDelPage( rPage ); 1844*cdf0e10cSrcweir } 1845*cdf0e10cSrcweir 1846*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoNewPage(SdrPage& rPage) 1847*cdf0e10cSrcweir { 1848*cdf0e10cSrcweir return new SdrUndoNewPage( rPage ); 1849*cdf0e10cSrcweir } 1850*cdf0e10cSrcweir 1851*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoCopyPage(SdrPage& rPage) 1852*cdf0e10cSrcweir { 1853*cdf0e10cSrcweir return new SdrUndoCopyPage( rPage ); 1854*cdf0e10cSrcweir } 1855*cdf0e10cSrcweir 1856*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) 1857*cdf0e10cSrcweir { 1858*cdf0e10cSrcweir return new SdrUndoSetPageNum( rNewPg, nOldPageNum1, nNewPageNum1 ); 1859*cdf0e10cSrcweir } 1860*cdf0e10cSrcweir // master page 1861*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage) 1862*cdf0e10cSrcweir { 1863*cdf0e10cSrcweir return new SdrUndoPageRemoveMasterPage( rChangedPage ); 1864*cdf0e10cSrcweir } 1865*cdf0e10cSrcweir 1866*cdf0e10cSrcweir SdrUndoAction* SdrUndoFactory::CreateUndoPageChangeMasterPage(SdrPage& rChangedPage) 1867*cdf0e10cSrcweir { 1868*cdf0e10cSrcweir return new SdrUndoPageChangeMasterPage(rChangedPage); 1869*cdf0e10cSrcweir } 1870*cdf0e10cSrcweir 1871*cdf0e10cSrcweir // eof 1872