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