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