summaryrefslogtreecommitdiff
path: root/include/svx/svdundo.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'include/svx/svdundo.hxx')
-rw-r--r--include/svx/svdundo.hxx879
1 files changed, 879 insertions, 0 deletions
diff --git a/include/svx/svdundo.hxx b/include/svx/svdundo.hxx
new file mode 100644
index 000000000000..22211640e148
--- /dev/null
+++ b/include/svx/svdundo.hxx
@@ -0,0 +1,879 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef _SVDUNDO_HXX
+#define _SVDUNDO_HXX
+
+#include <svl/solar.hrc>
+#include <svl/undo.hxx>
+#include <tools/gen.hxx>
+#include <svx/svdtypes.hxx> // fuer enum RepeatFuncts
+#include <svx/svdsob.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SfxItemSet;
+class SfxStyleSheet;
+class SdrView;
+class SdrPageView;
+class SdrModel;
+class SdrObject;
+class SdrPage;
+class SdrObjList;
+class SdrLayer;
+class SdrLayerAdmin;
+class SdrObjGeoData;
+class OutlinerParaObject;
+
+//************************************************************
+// SdrUndoAction
+//
+// Abstrakte Basisklasse fuer alle UndoActions der DrawingEngine
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoAction : public SfxUndoAction
+{
+protected:
+ SdrModel& rMod;
+
+protected:
+ SdrUndoAction(SdrModel& rNewMod)
+ : rMod(rNewMod)
+ {}
+
+public:
+ TYPEINFO();
+ virtual ~SdrUndoAction();
+
+ virtual sal_Bool CanRepeat(SfxRepeatTarget& rView) const;
+ virtual void Repeat(SfxRepeatTarget& rView);
+
+ virtual OUString GetRepeatComment(SfxRepeatTarget& rView) const;
+ virtual OUString GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+ virtual void SdrRepeat(SdrView& rView);
+};
+
+//************************************************************
+// SdrUndoGroup
+//
+// Zusammenfassung beliebig vieler einzelner UndoActions zu einer einzigen
+// UndoAction. Beim Undo() werden die Einzelactions rueckwaets aufgerufen
+// (die zuletzt angehaengte zuerst...), beim Redo() dagegen entspricht die
+// Aufrufreihenfolge der Einfuegereihenfolge.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoGroup : public SdrUndoAction
+{
+protected:
+ std::vector<SdrUndoAction*> aBuf;
+
+ // Beschreibung der Action, nicht expandiert (beinhaltet %O)
+ OUString aComment;
+ OUString aObjDescription;
+
+ SdrRepeatFunc eFunction;
+
+public:
+ SdrUndoGroup(SdrModel& rNewMod);
+ virtual ~SdrUndoGroup();
+
+ void Clear();
+ sal_uIntPtr GetActionCount() const { return aBuf.size(); }
+ SdrUndoAction* GetAction(sal_uIntPtr nNum) const { return aBuf[nNum]; }
+ void AddAction(SdrUndoAction* pAct);
+
+ void SetComment(const OUString& rStr) { aComment=rStr; }
+ void SetObjDescription(const OUString& rStr) { aObjDescription=rStr; }
+ virtual OUString GetComment() const;
+ virtual OUString GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+ virtual void SdrRepeat(SdrView& rView);
+ void SetRepeatFunction(SdrRepeatFunc eFunc) { eFunction=eFunc; }
+ SdrRepeatFunc GetRepeatFunction() const { return eFunction; }
+};
+
+//************************************************************
+// SdrUndoObj
+//
+// Abstrakte Basisklasse fuer alle UndoActions die mit Objekten zu tun haben.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoObj : public SdrUndoAction
+{
+protected:
+ SdrObject* pObj;
+
+protected:
+ SdrUndoObj(SdrObject& rNewObj);
+
+ void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, String& rStr, bool bRepeat = false) const;
+
+ static void GetDescriptionStringForObject( const SdrObject& _rForObject, sal_uInt16 nStrCacheID, String& rStr, bool bRepeat = false );
+
+ // #94278# new method for evtl. PageChange at UNDO/REDO
+ void ImpShowPageOfThisObject();
+};
+
+//************************************************************
+// SdrUndoAttrObj
+//
+// Aenderung der Objektattribute.
+// Action direkt vor dem Setzen der neuen Attribute konstruieren.
+// Auch fuer StyleSheets
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoAttrObj : public SdrUndoObj
+{
+protected:
+ SfxItemSet* pUndoSet;
+ SfxItemSet* pRedoSet;
+ SfxItemSet* pRepeatSet;
+
+ // oder besser den StyleSheetNamen merken?
+ SfxStyleSheet* pUndoStyleSheet;
+ SfxStyleSheet* pRedoStyleSheet;
+ SfxStyleSheet* pRepeatStyleSheet;
+ bool bStyleSheet;
+ bool bHaveToTakeRedoSet;
+
+ // Bei Zuweisung von TextItems auf ein Zeichenobjekt mit Text:
+ OutlinerParaObject* pTextUndo;
+ // #i8508#
+ // The text rescue mechanism needs also to be implemented for redo actions.
+ OutlinerParaObject* pTextRedo;
+
+ // Wenn sich um ein Gruppenobjekt handelt:
+ SdrUndoGroup* pUndoGroup;
+
+public:
+ SdrUndoAttrObj(SdrObject& rNewObj, bool bStyleSheet1 = false, bool bSaveText = false);
+ virtual ~SdrUndoAttrObj();
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+ virtual OUString GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoMoveObj
+//
+// Blosses verschieben eines Objektes.
+// Action direkt vor dem Verschieben konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoMoveObj : public SdrUndoObj
+{
+protected:
+ Size aDistance; // Entfernung, um die verschoben wird
+
+public:
+ SdrUndoMoveObj(SdrObject& rNewObj): SdrUndoObj(rNewObj) {}
+ SdrUndoMoveObj(SdrObject& rNewObj, const Size& rDist): SdrUndoObj(rNewObj),aDistance(rDist) {}
+ virtual ~SdrUndoMoveObj();
+
+ void SetDistance(const Size& rDist) { aDistance=rDist; }
+ const Size& GetDistance() const { return aDistance; }
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+ virtual OUString GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoGeoObj
+//
+// Aenderung der Geometrie eines Objektes.
+// Action direkt vor der geometrischen Transformation konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoGeoObj : public SdrUndoObj
+{
+protected:
+ SdrObjGeoData* pUndoGeo;
+ SdrObjGeoData* pRedoGeo;
+ // Wenn sich um ein Gruppenobjekt handelt:
+ SdrUndoGroup* pUndoGroup;
+
+public:
+ SdrUndoGeoObj(SdrObject& rNewObj);
+ virtual ~SdrUndoGeoObj();
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+//************************************************************
+// SdrUndoObjList
+//
+// Manipulationen an einer ObjList: Neues Obj, DeleteObj, SetObjZLevel, Grouping, ...
+// Abstrakte Basisklasse.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoObjList : public SdrUndoObj {
+ class ObjListListener;
+ friend class ObjListListener;
+
+private:
+ bool bOwner;
+
+protected:
+ SdrObjList* pObjList;
+ SdrView* pView; // um bei ObjDel, Undo die
+ SdrPageView* pPageView; // Selektion widerherstellen zu koennen
+ sal_uInt32 nOrdNum;
+ // Bei einem Undo/Redo findet moeglicherweise Uebereignung des Objektes
+ // statt. Im Dtor wird das Obj deleted, wenn bOwner==TRUE
+ ObjListListener* m_pListener;
+
+protected:
+ SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect = false);
+ virtual ~SdrUndoObjList();
+
+ void SetView(SdrView* pView1, SdrPageView* pPageView1) { pView=pView1; pPageView=pPageView1; }
+ bool IsOwner() { return bOwner; }
+ void SetOwner(bool bNew);
+
+private:
+ sal_uInt32 GetOrdNum() const;
+ void SetOrdNum(sal_uInt32 nOrdNum_);
+};
+
+//************************************************************
+// SdrUndoRemoveObj
+//
+// Entfernen Objekts aus einer Objektliste. Innerhalb einer UndoGroup
+// mit korrospondierenden Inserts zu verwenden.
+// Action vor dem entfernen aus der ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoRemoveObj : public SdrUndoObjList
+{
+public:
+ SdrUndoRemoveObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
+ : SdrUndoObjList(rNewObj,bOrdNumDirect) {}
+
+ virtual void Undo();
+ virtual void Redo();
+};
+
+//************************************************************
+// SdrUndoInsertObj
+//
+// Einfuegen Objekts in eine Objektliste. Innerhalb einer UndoGroup
+// mit korrospondierenden Removes zu verwenden.
+// Action vor dem entfernen aus der ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoInsertObj : public SdrUndoObjList
+{
+public:
+ SdrUndoInsertObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
+ : SdrUndoObjList(rNewObj,bOrdNumDirect) {}
+
+ virtual void Undo();
+ virtual void Redo();
+};
+
+//************************************************************
+// SdrUndoDelObj
+//
+// Loeschen eines Objekts.
+// Action vor dem entfernen aus der ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoDelObj : public SdrUndoRemoveObj
+{
+public:
+ SdrUndoDelObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
+ : SdrUndoRemoveObj(rNewObj,bOrdNumDirect) { SetOwner(sal_True); }
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+ virtual OUString GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoNewObj
+//
+// Einfuegen eines neuen Objektes.
+// Action nach dem einfuegen in die ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoNewObj : public SdrUndoInsertObj
+{
+public:
+ SdrUndoNewObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
+ : SdrUndoInsertObj(rNewObj,bOrdNumDirect) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+
+ static OUString GetComment(const SdrObject& _rForObject);
+};
+
+//************************************************************
+// SdrUndoReplaceObj
+//
+// Austausch eines Objektes.
+// Action vor dem Replace an der ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoReplaceObj : public SdrUndoObj
+{
+ bool bOldOwner;
+ bool bNewOwner;
+
+protected:
+ SdrObjList* pObjList;
+ sal_uInt32 nOrdNum;
+ SdrObject* pNewObj;
+
+public:
+ SdrUndoReplaceObj(SdrObject& rOldObj1, SdrObject& rNewObj1, bool bOrdNumDirect = false);
+ virtual ~SdrUndoReplaceObj();
+
+ virtual void Undo();
+ virtual void Redo();
+
+ bool IsNewOwner() { return bNewOwner; }
+ void SetNewOwner(bool bNew);
+
+ bool IsOldOwner() { return bOldOwner; }
+ void SetOldOwner(bool bNew);
+};
+
+//************************************************************
+// SdrUndoCopyObj
+//
+// Kopieren eines Objekts
+// Action nach dem einfuegen in die ObjList konstruieren.
+//
+//************************************************************
+
+class SdrUndoCopyObj : public SdrUndoNewObj
+{
+public:
+ SdrUndoCopyObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
+ : SdrUndoNewObj(rNewObj,bOrdNumDirect) {}
+
+ virtual OUString GetComment() const;
+};
+
+//************************************************************
+// SdrUndoObjOrdNum
+//************************************************************
+
+class SdrUndoObjOrdNum : public SdrUndoObj
+{
+protected:
+ sal_uInt32 nOldOrdNum;
+ sal_uInt32 nNewOrdNum;
+
+public:
+ SdrUndoObjOrdNum(SdrObject& rNewObj, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1);
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// #i11702#
+
+class SVX_DLLPUBLIC SdrUndoObjectLayerChange : public SdrUndoObj
+{
+protected:
+ SdrLayerID maOldLayer;
+ SdrLayerID maNewLayer;
+
+public:
+ SdrUndoObjectLayerChange(SdrObject& rObj, SdrLayerID aOldLayer, SdrLayerID aNewLayer);
+
+ virtual void Undo();
+ virtual void Redo();
+};
+
+//************************************************************
+// SdrUndoObjSetText
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoObjSetText : public SdrUndoObj
+{
+protected:
+ OutlinerParaObject* pOldText;
+ OutlinerParaObject* pNewText;
+ bool bNewTextAvailable;
+ sal_Bool bEmptyPresObj;
+ sal_Int32 mnText;
+
+public:
+ SdrUndoObjSetText(SdrObject& rNewObj, sal_Int32 nText );
+ virtual ~SdrUndoObjSetText();
+
+ bool IsDifferent() const { return pOldText!=pNewText; }
+ void AfterSetText();
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+ virtual OUString GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+// Implement Title/Description Elements UI for Writer text frames, graphics and embedded objects (#i73249#)
+class SdrUndoObjStrAttr : public SdrUndoObj
+{
+public:
+ enum ObjStrAttrType
+ {
+ OBJ_NAME,
+ OBJ_TITLE,
+ OBJ_DESCRIPTION
+ };
+
+protected:
+ const ObjStrAttrType meObjStrAttr;
+ const String msOldStr;
+ const String msNewStr;
+
+public:
+ SdrUndoObjStrAttr( SdrObject& rNewObj,
+ const ObjStrAttrType eObjStrAttr,
+ const String& sOldStr,
+ const String& sNewStr);
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@ @@@@ @@ @@ @@@@@ @@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@@@@@ @@@@ @@@@ @@@@@
+// @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@
+// @@@@@ @@ @@ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//************************************************************
+// SdrUndoLayer
+//
+// Abstrakte Basisklasse fuer alle UndoActions die mit SdrLayer zu tun haben.
+//
+//************************************************************
+
+class SdrUndoLayer : public SdrUndoAction
+{
+protected:
+ SdrLayer* pLayer;
+ SdrLayerAdmin* pLayerAdmin;
+ sal_uInt16 nNum;
+ bool bItsMine;
+
+protected:
+ SdrUndoLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
+ virtual ~SdrUndoLayer();
+};
+
+//************************************************************
+// SdrUndoNewLayer
+//
+// Einfuegen eines neuen Layer. Action nach dem Einfuegen konstruieren.
+//
+//************************************************************
+
+class SdrUndoNewLayer : public SdrUndoLayer
+{
+public:
+ SdrUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
+ : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+//************************************************************
+// SdrUndoDelLayer
+//
+// Loeschen eines Layer. Action vor dem Remove konstruieren
+//
+//************************************************************
+
+class SdrUndoDelLayer : public SdrUndoLayer
+{
+public:
+ SdrUndoDelLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
+ : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel) { bItsMine=sal_True; }
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+//************************************************************
+// SdrUndoMoveLayer
+//
+// Verschieben eines Layer. Action vor dem Verschieben konstruieren.
+//
+//************************************************************
+
+class SdrUndoMoveLayer : public SdrUndoLayer
+{
+ sal_uInt16 nNeuPos;
+
+public:
+ SdrUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1)
+ : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel), nNeuPos(nNeuPos1) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@@ @@@@ @@@@ @@@@@ @@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@
+// @@@@@ @@@@@@ @@ @@@ @@@@ @@@@
+// @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@@@@ @@@@@ @@@@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//************************************************************
+// SdrUndoPage
+//
+// Abstrakte Basisklasse fuer alle UndoActions die mit SdrPages zu tun haben.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoPage : public SdrUndoAction
+{
+protected:
+ SdrPage& mrPage;
+
+protected:
+ void ImpInsertPage(sal_uInt16 nNum);
+ void ImpRemovePage(sal_uInt16 nNum);
+ void ImpMovePage(sal_uInt16 nOldNum, sal_uInt16 nNewNum);
+
+protected:
+ SdrUndoPage(SdrPage& rNewPg);
+
+ void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, String& rStr, sal_uInt16 n=0, bool bRepeat = false) const;
+};
+
+//************************************************************
+// SdrUndoPageList
+//
+// Manipulationen an einer PageList: Neue Page, DeletePage, MovePage(ChangePageNum)
+// Abstrakte Basisklasse.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoPageList : public SdrUndoPage
+{
+protected:
+ sal_uInt16 nPageNum;
+
+ // Bei einem Undo/Redo findet moeglicherweise Uebereignung der Page
+ // statt. Im Dtor wird die Page deleted, wenn bItsMine==TRUE
+ bool bItsMine;
+
+protected:
+ SdrUndoPageList(SdrPage& rNewPg);
+ virtual ~SdrUndoPageList();
+};
+
+//************************************************************
+// SdrUndoDelPage
+//
+// Loeschen einer Page.
+// Action vor dem entfernen aus der List konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoDelPage : public SdrUndoPageList
+{
+ // Beim loeschen einer MasterPage merke ich mir in dieser UndoGroup
+ // alle Beziehungen der Zeichenseiten zu der geloeschten MasterPage
+ SdrUndoGroup* pUndoGroup;
+
+public:
+ SdrUndoDelPage(SdrPage& rNewPg);
+ virtual ~SdrUndoDelPage();
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+ virtual OUString GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoNewPage
+//
+// Einfuegen einer neuen Page.
+// Action nach dem einfuegen in die Liste konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoNewPage : public SdrUndoPageList
+{
+public:
+ SdrUndoNewPage(SdrPage& rNewPg): SdrUndoPageList(rNewPg) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+//************************************************************
+// SdrUndoCopyPage
+//
+// Kopieren einer Page
+// Action nach dem einfuegen in die Liste konstruieren.
+//
+//************************************************************
+
+class SdrUndoCopyPage : public SdrUndoNewPage
+{
+public:
+ SdrUndoCopyPage(SdrPage& rNewPg): SdrUndoNewPage(rNewPg) {}
+
+ virtual OUString GetComment() const;
+ virtual OUString GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoSetPageNum
+//
+// Verschieben der Page innerhalb der Liste
+// Action vor dem Verschieben der Page konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoSetPageNum : public SdrUndoPage
+{
+protected:
+ sal_uInt16 nOldPageNum;
+ sal_uInt16 nNewPageNum;
+
+public:
+ SdrUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1)
+ : SdrUndoPage(rNewPg),nOldPageNum(nOldPageNum1),nNewPageNum(nNewPageNum1) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@ @@ @@@@ @@@@ @@@@@@ @@@@@ @@@@@ @@@@@ @@@@ @@@@ @@@@@ @@@@
+// @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@@@@ @@@@@@ @@@@ @@ @@@@ @@@@@ @@@@@ @@@@@@ @@ @@@ @@@@ @@@@
+// @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@@@ @@ @@@@@ @@ @@ @@ @@ @@ @@@@@ @@@@@ @@@@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//************************************************************
+// SdrUndoPageMasterPage
+//
+// Abstrakte Basisklasse fuer alle UndoActions die mit
+// MasterPage-Beziehungen zu tun haben.
+//
+//************************************************************
+
+class SdrUndoPageMasterPage : public SdrUndoPage
+{
+protected:
+ sal_Bool mbOldHadMasterPage;
+ SetOfByte maOldSet;
+ sal_uInt16 maOldMasterPageNumber;
+
+protected:
+ SdrUndoPageMasterPage(SdrPage& rChangedPage);
+
+public:
+ SVX_DLLPUBLIC virtual ~SdrUndoPageMasterPage();
+};
+
+//************************************************************
+// SdrUndoPageRemoveMasterPage
+//
+// Entfernen einer MasterPage von einer Zeichenseite.
+// Action vor dem Entfernen des MasterPageDescriptors erzeugen.
+//
+//************************************************************
+
+class SdrUndoPageRemoveMasterPage : public SdrUndoPageMasterPage
+{
+public:
+ SdrUndoPageRemoveMasterPage(SdrPage& rChangedPage);
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+//************************************************************
+// SdrUndoPageChangeMasterPage
+//
+// Aenderung des MasterPageDescriptors (z.B. Aendern der VisibleLayer).
+// Action vor der Aenderung am MasterPageDescriptor erzeugen.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoPageChangeMasterPage : public SdrUndoPageMasterPage
+{
+protected:
+ sal_Bool mbNewHadMasterPage;
+ SetOfByte maNewSet;
+ sal_uInt16 maNewMasterPageNumber;
+
+public:
+ SdrUndoPageChangeMasterPage(SdrPage& rChangedPage);
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual OUString GetComment() const;
+};
+
+///////////////////////////////////////////////////////////////////////
+
+/** the SdrUndoFactory can be set and retrieved from the SdrModel.
+ It is used by the drawing layer implementations to create undo actions.
+ It can be used by applications to create application specific undo actions.
+*/
+class SVX_DLLPUBLIC SdrUndoFactory
+{
+public:
+ // shapes
+ virtual ~SdrUndoFactory();
+ virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject );
+ virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject, const Size& rDist );
+ virtual SdrUndoAction* CreateUndoGeoObject( SdrObject& rObject );
+ virtual SdrUndoAction* CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false );
+ virtual SdrUndoAction* CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect = false);
+ virtual SdrUndoAction* CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false);
+ virtual SdrUndoAction* CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false);
+ virtual SdrUndoAction* CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false);
+ virtual SdrUndoAction* CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false);
+
+ virtual SdrUndoAction* CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1);
+
+ virtual SdrUndoAction* CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect = false );
+ virtual SdrUndoAction* CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer );
+ virtual SdrUndoAction* CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText );
+
+ // Implement Title/Description Elements UI for Writer text frames, graphics and embedded objects (#i73249#)
+ virtual SdrUndoAction* CreateUndoObjectStrAttr( SdrObject& rObject,
+ SdrUndoObjStrAttr::ObjStrAttrType eObjStrAttrType,
+ String sOldStr,
+ String sNewStr );
+
+ // layer
+ virtual SdrUndoAction* CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
+ virtual SdrUndoAction* CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
+ virtual SdrUndoAction* CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1);
+
+ // page
+ virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage);
+ virtual SdrUndoAction* CreateUndoNewPage(SdrPage& rPage);
+ virtual SdrUndoAction* CreateUndoCopyPage(SdrPage& rPage);
+ virtual SdrUndoAction* CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1);
+
+ // master page
+ virtual SdrUndoAction* CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage);
+ virtual SdrUndoAction* CreateUndoPageChangeMasterPage(SdrPage& rChangedPage);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDUNDO_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */