Update ooo320-m1
[ooovba.git] / binfilter / inc / bf_svx / svdundo.hxx
blob8a9202514a080f60c09f447e84206714a38cb7bf
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: svdundo.hxx,v $
10 * $Revision: 1.7 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef _SVDUNDO_HXX
32 #define _SVDUNDO_HXX
34 #ifndef _SOLAR_HRC
35 #include <bf_svtools/solar.hrc>
36 #endif
38 #ifndef _UNDO_HXX //autogen
39 #include <bf_svtools/undo.hxx>
40 #endif
42 #ifndef _CONTNR_HXX //autogen
43 #include <tools/contnr.hxx>
44 #endif
46 #ifndef _GEN_HXX //autogen
47 #include <tools/gen.hxx>
48 #endif
50 #ifndef _SVDTYPES_HXX
51 #include <bf_svx/svdtypes.hxx> // fuer enum RepeatFuncts
52 #endif
53 #include <tools/debug.hxx>
54 namespace binfilter {
55 class SfxItemSet;
56 class SfxStyleSheet;
57 //************************************************************
58 // Vorausdeklarationen
59 //************************************************************
61 class SdrView;
62 class SdrPageView;
63 class SdrModel;
64 class SdrObject;
65 class SdrPage;
66 class SdrObjList;
67 class SdrLayer;
68 class SdrLayerAdmin;
69 class SdrObjGeoData;
70 class OutlinerParaObject;
71 class SdrMasterPageDescriptor;
73 //************************************************************
74 // SdrUndoAction
76 // Abstrakte Basisklasse fuer alle UndoActions der DrawingEngine
78 //************************************************************
80 class SdrUndoAction : public SfxUndoAction
82 protected:
83 SdrModel& rMod;
85 protected:
86 SdrUndoAction(SdrModel& rNewMod)
87 : rMod(rNewMod)
90 public:
95 //************************************************************
96 // SdrUndoGroup
98 // Zusammenfassung beliebig vieler einzelner UndoActions zu einer einzigen
99 // UndoAction. Beim Undo() werden die Einzelactions rueckwaets aufgerufen
100 // (die zuletzt angehaengte zuerst...), beim Redo() dagegen entspricht die
101 // Aufrufreihenfolge der Einfuegereihenfolge.
103 //************************************************************
105 class SdrUndoGroup : public SdrUndoAction
107 protected:
108 Container aBuf;
110 // Beschreibung der Action, nicht expandiert (beinhaltet %O)
111 String aComment;
112 String aObjDescription;
114 SdrRepeatFunc eFunction;
116 public:
117 SdrUndoGroup(SdrModel& rNewMod);
118 virtual ~SdrUndoGroup();
120 void Clear();
121 ULONG GetActionCount() const { return aBuf.Count(); }
122 SdrUndoAction* GetAction(ULONG nNum) const { return (SdrUndoAction*)(aBuf.GetObject(nNum)); }
123 void AddAction(SdrUndoAction* pAct);
125 void SetComment(const String& rStr) { aComment=rStr; }
130 //************************************************************
131 // SdrUndoObj
133 // Abstrakte Basisklasse fuer alle UndoActions die mit Objekten zu tun haben.
135 //************************************************************
137 class SdrUndoObj : public SdrUndoAction
139 protected:
140 SdrObject* pObj;
142 protected:
143 SdrUndoObj(SdrObject& rNewObj);
146 //************************************************************
147 // SdrUndoAttrObj
149 // Aenderung der Objektattribute.
150 // Action direkt vor dem Setzen der neuen Attribute konstruieren.
151 // Auch fuer StyleSheets
153 //************************************************************
156 //************************************************************
157 // SdrUndoMoveObj
159 // Blosses verschieben eines Objektes.
160 // Action direkt vor dem Verschieben konstruieren.
162 //************************************************************
164 class SdrUndoMoveObj : public SdrUndoObj
166 protected:
167 Size aDistance; // Entfernung, um die verschoben wird
169 public:
170 SdrUndoMoveObj(SdrObject& rNewObj, const Size& rDist): SdrUndoObj(rNewObj),aDistance(rDist) {}
173 //************************************************************
174 // SdrUndoGeoObj
176 // Aenderung der Geometrie eines Objektes.
177 // Action direkt vor der geometrischen Transformation konstruieren.
179 //************************************************************
181 class SdrUndoGeoObj : public SdrUndoObj
183 protected:
184 SdrObjGeoData* pUndoGeo;
185 SdrObjGeoData* pRedoGeo;
186 // Wenn sich um ein Gruppenobjekt handelt:
187 SdrUndoGroup* pUndoGroup;
189 public:
190 SdrUndoGeoObj(SdrObject& rNewObj);
191 virtual ~SdrUndoGeoObj();
196 //************************************************************
197 // SdrUndoObjList
199 // Manipulationen an einer ObjList: Neues Obj, DeleteObj, SetObjZLevel, Grouping, ...
200 // Abstrakte Basisklasse.
202 //************************************************************
204 class SdrUndoObjList : public SdrUndoObj {
205 FASTBOOL bOwner;
207 protected:
208 SdrObjList* pObjList;
209 SdrView* pView; // um bei ObjDel, Undo die
210 SdrPageView* pPageView; // Selektion widerherstellen zu koennen
211 UINT32 nOrdNum;
212 // Bei einem Undo/Redo findet moeglicherweise Uebereignung des Objektes
213 // statt. Im Dtor wird das Obj deleted, wenn bOwner==TRUE
215 protected:
216 SdrUndoObjList(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE);
217 virtual ~SdrUndoObjList();
219 void SetView(SdrView* pView1, SdrPageView* pPageView1) { pView=pView1; pPageView=pPageView1; }
220 BOOL IsOwner() { return bOwner; }
223 //************************************************************
224 // SdrUndoRemoveObj
226 // Entfernen Objekts aus einer Objektliste. Innerhalb einer UndoGroup
227 // mit korrospondierenden Inserts zu verwenden.
228 // Action vor dem entfernen aus der ObjList konstruieren.
230 //************************************************************
232 class SdrUndoRemoveObj : public SdrUndoObjList
234 public:
235 SdrUndoRemoveObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE)
236 : SdrUndoObjList(rNewObj,bOrdNumDirect) {}
240 //************************************************************
241 // SdrUndoInsertObj
243 // Einfuegen Objekts in eine Objektliste. Innerhalb einer UndoGroup
244 // mit korrospondierenden Removes zu verwenden.
245 // Action vor dem entfernen aus der ObjList konstruieren.
247 //************************************************************
249 class SdrUndoInsertObj : public SdrUndoObjList
251 public:
252 SdrUndoInsertObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE)
253 : SdrUndoObjList(rNewObj,bOrdNumDirect) {}
256 //************************************************************
257 // SdrUndoDelObj
259 // Loeschen eines Objekts.
260 // Action vor dem entfernen aus der ObjList konstruieren.
262 //************************************************************
264 class SdrUndoDelObj : public SdrUndoRemoveObj
266 public:
267 SdrUndoDelObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE)
268 : SdrUndoRemoveObj(rNewObj,bOrdNumDirect) {DBG_ASSERT(0, "STRIP");}//STRIP001 : SdrUndoRemoveObj(rNewObj,bOrdNumDirect) { SetOwner(TRUE); }
272 //************************************************************
273 // SdrUndoNewObj
275 // Einfuegen eines neuen Objektes.
276 // Action nach dem einfuegen in die ObjList konstruieren.
278 //************************************************************
281 //************************************************************
282 // SdrUndoReplaceObj
284 // Austausch eines Objektes.
285 // Action vor dem Replace an der ObjList konstruieren.
287 //************************************************************
290 //************************************************************
291 // SdrUndoCopyObj
293 // Kopieren eines Objekts
294 // Action nach dem einfuegen in die ObjList konstruieren.
296 //************************************************************
299 //************************************************************
300 // SdrUndoObjOrdNum
301 //************************************************************
304 //////////////////////////////////////////////////////////////////////////////
305 // #i11702#
307 class SdrUndoObjectLayerChange : public SdrUndoObj
309 protected:
310 SdrLayerID maOldLayer;
311 SdrLayerID maNewLayer;
313 public:
314 SdrUndoObjectLayerChange(SdrObject& rObj, SdrLayerID aOldLayer, SdrLayerID aNewLayer);
316 virtual void Undo();
317 virtual void Redo();
320 //************************************************************
321 // SdrUndoObjSetText
322 //************************************************************
325 ////////////////////////////////////////////////////////////////////////////////////////////////////
327 // @@ @@@@ @@ @@ @@@@@ @@@@@
328 // @@ @@ @@ @@ @@ @@ @@ @@
329 // @@ @@ @@ @@ @@ @@ @@ @@
330 // @@ @@@@@@ @@@@ @@@@ @@@@@
331 // @@ @@ @@ @@ @@ @@ @@
332 // @@ @@ @@ @@ @@ @@ @@
333 // @@@@@ @@ @@ @@ @@@@@ @@ @@
335 ////////////////////////////////////////////////////////////////////////////////////////////////////
337 //************************************************************
338 // SdrUndoLayer
340 // Abstrakte Basisklasse fuer alle UndoActions die mit SdrLayer zu tun haben.
342 //************************************************************
345 //************************************************************
346 // SdrUndoNewLayer
348 // Einfuegen eines neuen Layer. Action nach dem Einfuegen konstruieren.
350 //************************************************************
353 //************************************************************
354 // SdrUndoDelLayer
356 // Loeschen eines Layer. Action vor dem Remove konstruieren
358 //************************************************************
361 //************************************************************
362 // SdrUndoMoveLayer
364 // Verschieben eines Layer. Action vor dem Verschieben konstruieren.
366 //************************************************************
369 ////////////////////////////////////////////////////////////////////////////////////////////////////
371 // @@@@@ @@@@ @@@@ @@@@@ @@@@
372 // @@ @@ @@ @@ @@ @@ @@ @@ @@
373 // @@ @@ @@ @@ @@ @@ @@
374 // @@@@@ @@@@@@ @@ @@@ @@@@ @@@@
375 // @@ @@ @@ @@ @@ @@ @@
376 // @@ @@ @@ @@ @@ @@ @@ @@
377 // @@ @@ @@ @@@@@ @@@@@ @@@@
379 ////////////////////////////////////////////////////////////////////////////////////////////////////
381 //************************************************************
382 // SdrUndoPage
384 // Abstrakte Basisklasse fuer alle UndoActions die mit SdrPages zu tun haben.
386 //************************************************************
388 class SdrUndoPage : public SdrUndoAction
390 protected:
391 SdrPage* pPage;
393 protected:
394 protected:
395 SdrUndoPage(SdrPage& rNewPg);
398 //************************************************************
399 // SdrUndoPageList
401 // Manipulationen an einer PageList: Neue Page, DeletePage, MovePage(ChangePageNum)
402 // Abstrakte Basisklasse.
404 //************************************************************
406 class SdrUndoPageList : public SdrUndoPage
408 protected:
409 USHORT nPageNum;
411 // Bei einem Undo/Redo findet moeglicherweise Uebereignung der Page
412 // statt. Im Dtor wird die Page deleted, wenn bItsMine==TRUE
413 FASTBOOL bItsMine;
415 protected:
416 SdrUndoPageList(SdrPage& rNewPg);
417 virtual ~SdrUndoPageList();
420 //************************************************************
421 // SdrUndoDelPage
423 // Loeschen einer Page.
424 // Action vor dem entfernen aus der List konstruieren.
426 //************************************************************
429 //************************************************************
430 // SdrUndoNewPage
432 // Einfuegen einer neuen Page.
433 // Action nach dem einfuegen in die Liste konstruieren.
435 //************************************************************
437 class SdrUndoNewPage : public SdrUndoPageList
439 public:
440 SdrUndoNewPage(SdrPage& rNewPg): SdrUndoPageList(rNewPg) {}
443 //************************************************************
444 // SdrUndoCopyPage
446 // Kopieren einer Page
447 // Action nach dem einfuegen in die Liste konstruieren.
449 //************************************************************
452 //************************************************************
453 // SdrUndoSetPageNum
455 // Verschieben der Page innerhalb der Liste
456 // Action vor dem Verschieben der Page konstruieren.
458 //************************************************************
461 ////////////////////////////////////////////////////////////////////////////////////////////////////
463 // @@ @@ @@@@ @@@@ @@@@@@ @@@@@ @@@@@ @@@@@ @@@@ @@@@ @@@@@ @@@@
464 // @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
465 // @@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
466 // @@@@@@@ @@@@@@ @@@@ @@ @@@@ @@@@@ @@@@@ @@@@@@ @@ @@@ @@@@ @@@@
467 // @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
468 // @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
469 // @@ @@ @@ @@ @@@@ @@ @@@@@ @@ @@ @@ @@ @@ @@@@@ @@@@@ @@@@
471 ////////////////////////////////////////////////////////////////////////////////////////////////////
473 //************************************************************
474 // SdrUndoPageMasterPage
476 // Abstrakte Basisklasse fuer alle UndoActions die mit
477 // MasterPage-Beziehungen zu tun haben.
479 //************************************************************
482 //************************************************************
483 // SdrUndoPageInsertMasterPage
485 // Setzen einer MasterPage an einer Zeichenseite.
486 // Action nach dem Einfuegen des MasterPageDescriptors erzeugen.
488 //************************************************************
491 //************************************************************
492 // SdrUndoPageRemoveMasterPage
494 // Entfernen einer MasterPage von einer Zeichenseite.
495 // Action vor dem Entfernen des MasterPageDescriptors erzeugen.
497 //************************************************************
500 //************************************************************
501 // SdrUndoPageMoveMasterPage
503 // Verschieben einer MasterPage an einer Zeichenseite (Aendern
504 // der Reihenfolge der MasterPageDescriptorList).
505 // Action vor dem Umsortieren des MasterPageDescriptors erzeugen.
507 //************************************************************
510 //************************************************************
511 // SdrUndoPageChangeMasterPage
513 // Aenderung des MasterPageDescriptors (z.B. Aendern der VisibleLayer).
514 // Action vor der Aenderung am MasterPageDescriptor erzeugen.
516 //************************************************************
519 ////////////////////////////////////////////////////////////////////////////////////////////////////
521 }//end of namespace binfilter
522 #endif //_SVDUNDO_HXX