xref: /trunk/main/sc/source/ui/inc/undoblk.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #ifndef SC_UNDOBLK_HXX
28*cdf0e10cSrcweir #define SC_UNDOBLK_HXX
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include "undobase.hxx"
31*cdf0e10cSrcweir #include "markdata.hxx"
32*cdf0e10cSrcweir #include "viewutil.hxx"
33*cdf0e10cSrcweir #include "spellparam.hxx"
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir class ScDocShell;
36*cdf0e10cSrcweir class ScBaseCell;
37*cdf0e10cSrcweir class ScDocument;
38*cdf0e10cSrcweir class ScOutlineTable;
39*cdf0e10cSrcweir class ScRangeName;
40*cdf0e10cSrcweir class ScRangeList;
41*cdf0e10cSrcweir class ScDBCollection;
42*cdf0e10cSrcweir class ScPatternAttr;
43*cdf0e10cSrcweir class SvxBoxItem;
44*cdf0e10cSrcweir class SvxBoxInfoItem;
45*cdf0e10cSrcweir class SvxSearchItem;
46*cdf0e10cSrcweir class SdrUndoAction;
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir //----------------------------------------------------------------------------
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir class ScUndoInsertCells: public ScMoveUndo
51*cdf0e10cSrcweir {
52*cdf0e10cSrcweir public:
53*cdf0e10cSrcweir                     TYPEINFO();
54*cdf0e10cSrcweir                     ScUndoInsertCells( ScDocShell* pNewDocShell,
55*cdf0e10cSrcweir                                        const ScRange& rRange, SCTAB nNewCount, SCTAB* pNewTabs, SCTAB* pNewScenarios,
56*cdf0e10cSrcweir                                        InsCellCmd eNewCmd, ScDocument* pUndoDocument, ScRefUndoData* pRefData,
57*cdf0e10cSrcweir                                        sal_Bool bNewPartOfPaste );
58*cdf0e10cSrcweir     virtual         ~ScUndoInsertCells();
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir     virtual void    Undo();
61*cdf0e10cSrcweir     virtual void    Redo();
62*cdf0e10cSrcweir     virtual void    Repeat( SfxRepeatTarget& rTarget );
63*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat( SfxRepeatTarget& rTarget ) const;
64*cdf0e10cSrcweir 
65*cdf0e10cSrcweir     virtual String  GetComment() const;
66*cdf0e10cSrcweir 
67*cdf0e10cSrcweir     virtual sal_Bool    Merge( SfxUndoAction *pNextAction );
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir private:
70*cdf0e10cSrcweir     ScRange         aEffRange;
71*cdf0e10cSrcweir     SCTAB           nCount;
72*cdf0e10cSrcweir     SCTAB*          pTabs;
73*cdf0e10cSrcweir     SCTAB*          pScenarios;
74*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
75*cdf0e10cSrcweir     InsCellCmd      eCmd;
76*cdf0e10cSrcweir     sal_Bool            bPartOfPaste;
77*cdf0e10cSrcweir     SfxUndoAction*  pPasteUndo;
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir     void            DoChange ( const sal_Bool bUndo );
80*cdf0e10cSrcweir     void            SetChangeTrack();
81*cdf0e10cSrcweir };
82*cdf0e10cSrcweir 
83*cdf0e10cSrcweir 
84*cdf0e10cSrcweir class ScUndoDeleteCells: public ScMoveUndo
85*cdf0e10cSrcweir {
86*cdf0e10cSrcweir public:
87*cdf0e10cSrcweir                     TYPEINFO();
88*cdf0e10cSrcweir                     ScUndoDeleteCells( ScDocShell* pNewDocShell,
89*cdf0e10cSrcweir                                        const ScRange& rRange, SCTAB nNewCount, SCTAB* pNewTabs, SCTAB* pNewScenarios,
90*cdf0e10cSrcweir                                        DelCellCmd eNewCmd, ScDocument* pUndoDocument, ScRefUndoData* pRefData );
91*cdf0e10cSrcweir     virtual         ~ScUndoDeleteCells();
92*cdf0e10cSrcweir 
93*cdf0e10cSrcweir     virtual void    Undo();
94*cdf0e10cSrcweir     virtual void    Redo();
95*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
96*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir     virtual String  GetComment() const;
99*cdf0e10cSrcweir 
100*cdf0e10cSrcweir private:
101*cdf0e10cSrcweir     ScRange         aEffRange;
102*cdf0e10cSrcweir     SCTAB           nCount;
103*cdf0e10cSrcweir     SCTAB*          pTabs;
104*cdf0e10cSrcweir     SCTAB*          pScenarios;
105*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
106*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
107*cdf0e10cSrcweir     DelCellCmd      eCmd;
108*cdf0e10cSrcweir 
109*cdf0e10cSrcweir     void            DoChange ( const sal_Bool bUndo );
110*cdf0e10cSrcweir     void            SetChangeTrack();
111*cdf0e10cSrcweir };
112*cdf0e10cSrcweir 
113*cdf0e10cSrcweir 
114*cdf0e10cSrcweir class ScUndoDeleteMulti: public ScMoveUndo
115*cdf0e10cSrcweir {
116*cdf0e10cSrcweir public:
117*cdf0e10cSrcweir                     TYPEINFO();
118*cdf0e10cSrcweir                     ScUndoDeleteMulti( ScDocShell* pNewDocShell,
119*cdf0e10cSrcweir                                        sal_Bool bNewRows, sal_Bool bNeedsRefresh, SCTAB nNewTab,
120*cdf0e10cSrcweir                                        const SCCOLROW* pRng, SCCOLROW nRngCnt,
121*cdf0e10cSrcweir                                        ScDocument* pUndoDocument, ScRefUndoData* pRefData );
122*cdf0e10cSrcweir     virtual         ~ScUndoDeleteMulti();
123*cdf0e10cSrcweir 
124*cdf0e10cSrcweir     virtual void    Undo();
125*cdf0e10cSrcweir     virtual void    Redo();
126*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
127*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
128*cdf0e10cSrcweir 
129*cdf0e10cSrcweir     virtual String  GetComment() const;
130*cdf0e10cSrcweir 
131*cdf0e10cSrcweir private:
132*cdf0e10cSrcweir     sal_Bool            bRows;
133*cdf0e10cSrcweir     sal_Bool            bRefresh;
134*cdf0e10cSrcweir     SCTAB           nTab;
135*cdf0e10cSrcweir     SCCOLROW*       pRanges;
136*cdf0e10cSrcweir     SCCOLROW        nRangeCnt;
137*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
138*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
139*cdf0e10cSrcweir 
140*cdf0e10cSrcweir     void            DoChange() const;
141*cdf0e10cSrcweir     void            SetChangeTrack();
142*cdf0e10cSrcweir };
143*cdf0e10cSrcweir 
144*cdf0e10cSrcweir 
145*cdf0e10cSrcweir class ScUndoCut: public ScBlockUndo
146*cdf0e10cSrcweir {
147*cdf0e10cSrcweir public:
148*cdf0e10cSrcweir                     TYPEINFO();
149*cdf0e10cSrcweir                     ScUndoCut( ScDocShell* pNewDocShell,
150*cdf0e10cSrcweir                                ScRange aRange,              // adjusted for merged cells
151*cdf0e10cSrcweir                                ScAddress aOldEnd,           // end position without adjustment
152*cdf0e10cSrcweir                                const ScMarkData& rMark,     // selected sheets
153*cdf0e10cSrcweir                                ScDocument* pNewUndoDoc );
154*cdf0e10cSrcweir     virtual         ~ScUndoCut();
155*cdf0e10cSrcweir 
156*cdf0e10cSrcweir     virtual void    Undo();
157*cdf0e10cSrcweir     virtual void    Redo();
158*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
159*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir     virtual String  GetComment() const;
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir private:
164*cdf0e10cSrcweir     ScMarkData      aMarkData;
165*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
166*cdf0e10cSrcweir     ScRange         aExtendedRange;
167*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
168*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
169*cdf0e10cSrcweir 
170*cdf0e10cSrcweir     void            DoChange( const sal_Bool bUndo );
171*cdf0e10cSrcweir     void            SetChangeTrack();
172*cdf0e10cSrcweir };
173*cdf0e10cSrcweir 
174*cdf0e10cSrcweir 
175*cdf0e10cSrcweir struct ScUndoPasteOptions
176*cdf0e10cSrcweir {
177*cdf0e10cSrcweir     sal_uInt16 nFunction;
178*cdf0e10cSrcweir     sal_Bool bSkipEmpty;
179*cdf0e10cSrcweir     sal_Bool bTranspose;
180*cdf0e10cSrcweir     sal_Bool bAsLink;
181*cdf0e10cSrcweir     InsCellCmd eMoveMode;
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir     ScUndoPasteOptions() :
184*cdf0e10cSrcweir         nFunction( PASTE_NOFUNC ),
185*cdf0e10cSrcweir         bSkipEmpty( sal_False ),
186*cdf0e10cSrcweir         bTranspose( sal_False ),
187*cdf0e10cSrcweir         bAsLink( sal_False ),
188*cdf0e10cSrcweir         eMoveMode( INS_NONE )
189*cdf0e10cSrcweir     {}
190*cdf0e10cSrcweir };
191*cdf0e10cSrcweir 
192*cdf0e10cSrcweir class ScUndoPaste: public ScBlockUndo
193*cdf0e10cSrcweir {
194*cdf0e10cSrcweir public:
195*cdf0e10cSrcweir                     TYPEINFO();
196*cdf0e10cSrcweir                     ScUndoPaste( ScDocShell* pNewDocShell,
197*cdf0e10cSrcweir                                  SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
198*cdf0e10cSrcweir                                  SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
199*cdf0e10cSrcweir                                  const ScMarkData& rMark,
200*cdf0e10cSrcweir                                  ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc,
201*cdf0e10cSrcweir                                  sal_uInt16 nNewFlags,
202*cdf0e10cSrcweir                                  ScRefUndoData* pRefData, void* pFill1, void* pFill2, void* pFill3,
203*cdf0e10cSrcweir                                  sal_Bool bRedoIsFilled = sal_True,
204*cdf0e10cSrcweir                                  const ScUndoPasteOptions* pOptions = NULL );
205*cdf0e10cSrcweir     virtual         ~ScUndoPaste();
206*cdf0e10cSrcweir 
207*cdf0e10cSrcweir     virtual void    Undo();
208*cdf0e10cSrcweir     virtual void    Redo();
209*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
210*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
211*cdf0e10cSrcweir 
212*cdf0e10cSrcweir     virtual String  GetComment() const;
213*cdf0e10cSrcweir 
214*cdf0e10cSrcweir private:
215*cdf0e10cSrcweir     ScMarkData      aMarkData;
216*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
217*cdf0e10cSrcweir     ScDocument*     pRedoDoc;
218*cdf0e10cSrcweir     sal_uInt16          nFlags;
219*cdf0e10cSrcweir     ScRefUndoData*  pRefUndoData;
220*cdf0e10cSrcweir     ScRefUndoData*  pRefRedoData;
221*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
222*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
223*cdf0e10cSrcweir     sal_Bool            bRedoFilled;
224*cdf0e10cSrcweir     ScUndoPasteOptions aPasteOptions;
225*cdf0e10cSrcweir 
226*cdf0e10cSrcweir     void            DoChange( const sal_Bool bUndo );
227*cdf0e10cSrcweir     void            SetChangeTrack();
228*cdf0e10cSrcweir };
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir 
231*cdf0e10cSrcweir class ScUndoDragDrop: public ScMoveUndo
232*cdf0e10cSrcweir {
233*cdf0e10cSrcweir public:
234*cdf0e10cSrcweir                     TYPEINFO();
235*cdf0e10cSrcweir                     ScUndoDragDrop( ScDocShell* pNewDocShell,
236*cdf0e10cSrcweir                                     const ScRange& rRange, ScAddress aNewDestPos, sal_Bool bNewCut,
237*cdf0e10cSrcweir                                     ScDocument* pUndoDocument, ScRefUndoData* pRefData,
238*cdf0e10cSrcweir                                     sal_Bool bScenario );
239*cdf0e10cSrcweir     virtual         ~ScUndoDragDrop();
240*cdf0e10cSrcweir 
241*cdf0e10cSrcweir     virtual void    Undo();
242*cdf0e10cSrcweir     virtual void    Redo();
243*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
244*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
245*cdf0e10cSrcweir 
246*cdf0e10cSrcweir     virtual String  GetComment() const;
247*cdf0e10cSrcweir 
248*cdf0e10cSrcweir private:
249*cdf0e10cSrcweir     ScRange         aSrcRange;
250*cdf0e10cSrcweir     ScRange         aDestRange;
251*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
252*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
253*cdf0e10cSrcweir     sal_Bool            bCut;
254*cdf0e10cSrcweir     sal_Bool            bKeepScenarioFlags;
255*cdf0e10cSrcweir 
256*cdf0e10cSrcweir     void            PaintArea( ScRange aRange, sal_uInt16 nExtFlags ) const;
257*cdf0e10cSrcweir     void            DoUndo( ScRange aRange ) const;
258*cdf0e10cSrcweir 
259*cdf0e10cSrcweir     void            SetChangeTrack();
260*cdf0e10cSrcweir };
261*cdf0e10cSrcweir 
262*cdf0e10cSrcweir 
263*cdf0e10cSrcweir class ScUndoDeleteContents: public ScSimpleUndo
264*cdf0e10cSrcweir {
265*cdf0e10cSrcweir public:
266*cdf0e10cSrcweir                     TYPEINFO();
267*cdf0e10cSrcweir                     ScUndoDeleteContents( ScDocShell* pNewDocShell,
268*cdf0e10cSrcweir                                           const ScMarkData& rMark,
269*cdf0e10cSrcweir                                           const ScRange& rRange,
270*cdf0e10cSrcweir                                           ScDocument* pNewUndoDoc, sal_Bool bNewMulti,
271*cdf0e10cSrcweir                                           sal_uInt16 nNewFlags, sal_Bool bObjects );
272*cdf0e10cSrcweir     virtual         ~ScUndoDeleteContents();
273*cdf0e10cSrcweir 
274*cdf0e10cSrcweir     virtual void    Undo();
275*cdf0e10cSrcweir     virtual void    Redo();
276*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
277*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
278*cdf0e10cSrcweir 
279*cdf0e10cSrcweir     virtual String  GetComment() const;
280*cdf0e10cSrcweir 
281*cdf0e10cSrcweir private:
282*cdf0e10cSrcweir     ScRange         aRange;
283*cdf0e10cSrcweir     ScMarkData      aMarkData;
284*cdf0e10cSrcweir     ScDocument*     pUndoDoc;       // Blockmarkierung und geloeschte Daten
285*cdf0e10cSrcweir     SdrUndoAction*  pDrawUndo;      // geloeschte Objekte
286*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
287*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
288*cdf0e10cSrcweir     sal_uInt16          nFlags;
289*cdf0e10cSrcweir     sal_Bool            bMulti;         // Mehrfachselektion
290*cdf0e10cSrcweir 
291*cdf0e10cSrcweir     void            DoChange( const sal_Bool bUndo );
292*cdf0e10cSrcweir     void            SetChangeTrack();
293*cdf0e10cSrcweir };
294*cdf0e10cSrcweir 
295*cdf0e10cSrcweir 
296*cdf0e10cSrcweir class ScUndoFillTable: public ScSimpleUndo
297*cdf0e10cSrcweir {
298*cdf0e10cSrcweir public:
299*cdf0e10cSrcweir                     TYPEINFO();
300*cdf0e10cSrcweir                     ScUndoFillTable( ScDocShell* pNewDocShell,
301*cdf0e10cSrcweir                                      const ScMarkData& rMark,
302*cdf0e10cSrcweir                                      SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
303*cdf0e10cSrcweir                                      SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
304*cdf0e10cSrcweir                                      ScDocument* pNewUndoDoc, sal_Bool bNewMulti, SCTAB nSrc,
305*cdf0e10cSrcweir                                      sal_uInt16 nFlg, sal_uInt16 nFunc, sal_Bool bSkip, sal_Bool bLink );
306*cdf0e10cSrcweir     virtual         ~ScUndoFillTable();
307*cdf0e10cSrcweir 
308*cdf0e10cSrcweir     virtual void    Undo();
309*cdf0e10cSrcweir     virtual void    Redo();
310*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
311*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
312*cdf0e10cSrcweir 
313*cdf0e10cSrcweir     virtual String  GetComment() const;
314*cdf0e10cSrcweir 
315*cdf0e10cSrcweir private:
316*cdf0e10cSrcweir     ScRange         aRange;
317*cdf0e10cSrcweir     ScMarkData      aMarkData;
318*cdf0e10cSrcweir     ScDocument*     pUndoDoc;       // Blockmarkierung und geloeschte Daten
319*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
320*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
321*cdf0e10cSrcweir     sal_uInt16          nFlags;
322*cdf0e10cSrcweir     sal_uInt16          nFunction;
323*cdf0e10cSrcweir     SCTAB           nSrcTab;
324*cdf0e10cSrcweir     sal_Bool            bMulti;         // Mehrfachselektion
325*cdf0e10cSrcweir     sal_Bool            bSkipEmpty;
326*cdf0e10cSrcweir     sal_Bool            bAsLink;
327*cdf0e10cSrcweir 
328*cdf0e10cSrcweir     void            DoChange( const sal_Bool bUndo );
329*cdf0e10cSrcweir     void            SetChangeTrack();
330*cdf0e10cSrcweir };
331*cdf0e10cSrcweir 
332*cdf0e10cSrcweir 
333*cdf0e10cSrcweir class ScUndoSelectionAttr: public ScSimpleUndo
334*cdf0e10cSrcweir {
335*cdf0e10cSrcweir public:
336*cdf0e10cSrcweir                     TYPEINFO();
337*cdf0e10cSrcweir                     ScUndoSelectionAttr( ScDocShell* pNewDocShell,
338*cdf0e10cSrcweir                                          const ScMarkData& rMark,
339*cdf0e10cSrcweir                                          SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
340*cdf0e10cSrcweir                                          SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
341*cdf0e10cSrcweir                                          ScDocument* pNewUndoDoc, sal_Bool bNewMulti,
342*cdf0e10cSrcweir                                          const ScPatternAttr* pNewApply,
343*cdf0e10cSrcweir                                          const SvxBoxItem* pNewOuter = NULL,
344*cdf0e10cSrcweir                                          const SvxBoxInfoItem* pNewInner = NULL );
345*cdf0e10cSrcweir     virtual         ~ScUndoSelectionAttr();
346*cdf0e10cSrcweir 
347*cdf0e10cSrcweir     virtual void    Undo();
348*cdf0e10cSrcweir     virtual void    Redo();
349*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
350*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
351*cdf0e10cSrcweir 
352*cdf0e10cSrcweir     virtual String  GetComment() const;
353*cdf0e10cSrcweir 
354*cdf0e10cSrcweir private:
355*cdf0e10cSrcweir     ScMarkData      aMarkData;
356*cdf0e10cSrcweir     ScRange         aRange;
357*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
358*cdf0e10cSrcweir     sal_Bool            bMulti;
359*cdf0e10cSrcweir     ScPatternAttr*  pApplyPattern;
360*cdf0e10cSrcweir     SvxBoxItem*     pLineOuter;
361*cdf0e10cSrcweir     SvxBoxInfoItem* pLineInner;
362*cdf0e10cSrcweir 
363*cdf0e10cSrcweir     void            DoChange( const sal_Bool bUndo );
364*cdf0e10cSrcweir };
365*cdf0e10cSrcweir 
366*cdf0e10cSrcweir 
367*cdf0e10cSrcweir class ScUndoWidthOrHeight: public ScSimpleUndo
368*cdf0e10cSrcweir {
369*cdf0e10cSrcweir public:
370*cdf0e10cSrcweir                             TYPEINFO();
371*cdf0e10cSrcweir                             ScUndoWidthOrHeight( ScDocShell* pNewDocShell,
372*cdf0e10cSrcweir                                     const ScMarkData& rMark,
373*cdf0e10cSrcweir                                     SCCOLROW nNewStart, SCTAB nNewStartTab,
374*cdf0e10cSrcweir                                     SCCOLROW nNewEnd, SCTAB nNewEndTab,
375*cdf0e10cSrcweir                                     ScDocument* pNewUndoDoc,
376*cdf0e10cSrcweir                                     SCCOLROW nNewCnt, SCCOLROW* pNewRanges,
377*cdf0e10cSrcweir                                     ScOutlineTable* pNewUndoTab,
378*cdf0e10cSrcweir                                     ScSizeMode eNewMode, sal_uInt16 nNewSizeTwips,
379*cdf0e10cSrcweir                                     sal_Bool bNewWidth );
380*cdf0e10cSrcweir     virtual                 ~ScUndoWidthOrHeight();
381*cdf0e10cSrcweir 
382*cdf0e10cSrcweir     virtual void            Undo();
383*cdf0e10cSrcweir     virtual void            Redo();
384*cdf0e10cSrcweir     virtual void            Repeat(SfxRepeatTarget& rTarget);
385*cdf0e10cSrcweir     virtual sal_Bool            CanRepeat(SfxRepeatTarget& rTarget) const;
386*cdf0e10cSrcweir 
387*cdf0e10cSrcweir     virtual String          GetComment() const;
388*cdf0e10cSrcweir 
389*cdf0e10cSrcweir private:
390*cdf0e10cSrcweir     ScMarkData      aMarkData;
391*cdf0e10cSrcweir     SCCOLROW        nStart;
392*cdf0e10cSrcweir     SCCOLROW        nEnd;
393*cdf0e10cSrcweir     SCTAB           nStartTab;
394*cdf0e10cSrcweir     SCTAB           nEndTab;
395*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
396*cdf0e10cSrcweir     ScOutlineTable* pUndoTab;
397*cdf0e10cSrcweir     SCCOLROW        nRangeCnt;
398*cdf0e10cSrcweir     SCCOLROW*       pRanges;
399*cdf0e10cSrcweir     sal_uInt16          nNewSize;
400*cdf0e10cSrcweir     sal_Bool            bWidth;
401*cdf0e10cSrcweir     ScSizeMode      eMode;
402*cdf0e10cSrcweir     SdrUndoAction*  pDrawUndo;
403*cdf0e10cSrcweir };
404*cdf0e10cSrcweir 
405*cdf0e10cSrcweir 
406*cdf0e10cSrcweir class ScUndoAutoFill: public ScBlockUndo
407*cdf0e10cSrcweir {
408*cdf0e10cSrcweir public:
409*cdf0e10cSrcweir                     TYPEINFO();
410*cdf0e10cSrcweir                     ScUndoAutoFill( ScDocShell* pNewDocShell,
411*cdf0e10cSrcweir                                     const ScRange& rRange, const ScRange& rSourceArea,
412*cdf0e10cSrcweir                                     ScDocument* pNewUndoDoc, const ScMarkData& rMark,
413*cdf0e10cSrcweir                                     FillDir eNewFillDir,
414*cdf0e10cSrcweir                                     FillCmd eNewFillCmd, FillDateCmd eNewFillDateCmd,
415*cdf0e10cSrcweir                                     double fNewStartValue, double fNewStepValue, double fNewMaxValue,
416*cdf0e10cSrcweir                                     sal_uInt16 nMaxShIndex );
417*cdf0e10cSrcweir     virtual         ~ScUndoAutoFill();
418*cdf0e10cSrcweir 
419*cdf0e10cSrcweir     virtual void    Undo();
420*cdf0e10cSrcweir     virtual void    Redo();
421*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
422*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
423*cdf0e10cSrcweir 
424*cdf0e10cSrcweir     virtual String  GetComment() const;
425*cdf0e10cSrcweir 
426*cdf0e10cSrcweir private:
427*cdf0e10cSrcweir     ScRange         aSource;
428*cdf0e10cSrcweir     ScMarkData      aMarkData;
429*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
430*cdf0e10cSrcweir     FillDir         eFillDir;
431*cdf0e10cSrcweir     FillCmd         eFillCmd;
432*cdf0e10cSrcweir     FillDateCmd     eFillDateCmd;
433*cdf0e10cSrcweir     double          fStartValue;
434*cdf0e10cSrcweir     double          fStepValue;
435*cdf0e10cSrcweir     double          fMaxValue;
436*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
437*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
438*cdf0e10cSrcweir     sal_uInt16          nMaxSharedIndex;
439*cdf0e10cSrcweir 
440*cdf0e10cSrcweir     void            SetChangeTrack();
441*cdf0e10cSrcweir };
442*cdf0e10cSrcweir 
443*cdf0e10cSrcweir 
444*cdf0e10cSrcweir class ScUndoMerge: public ScSimpleUndo
445*cdf0e10cSrcweir {
446*cdf0e10cSrcweir public:
447*cdf0e10cSrcweir                     TYPEINFO();
448*cdf0e10cSrcweir                     ScUndoMerge( ScDocShell* pNewDocShell,
449*cdf0e10cSrcweir                                  SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
450*cdf0e10cSrcweir                                  SCCOL nEndX,   SCROW nEndY,   SCTAB nEndZ,
451*cdf0e10cSrcweir                                  bool bMergeContents, ScDocument* pUndoDoc, SdrUndoAction* pDrawUndo );
452*cdf0e10cSrcweir     virtual         ~ScUndoMerge();
453*cdf0e10cSrcweir 
454*cdf0e10cSrcweir     virtual void    Undo();
455*cdf0e10cSrcweir     virtual void    Redo();
456*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
457*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
458*cdf0e10cSrcweir 
459*cdf0e10cSrcweir     virtual String  GetComment() const;
460*cdf0e10cSrcweir 
461*cdf0e10cSrcweir private:
462*cdf0e10cSrcweir     ScRange         maRange;
463*cdf0e10cSrcweir     bool            mbMergeContents;        // Merge contents in Redo().
464*cdf0e10cSrcweir     ScDocument*     mpUndoDoc;              // wenn Daten zusammengefasst
465*cdf0e10cSrcweir     SdrUndoAction*  mpDrawUndo;
466*cdf0e10cSrcweir 
467*cdf0e10cSrcweir     void            DoChange( bool bUndo ) const;
468*cdf0e10cSrcweir };
469*cdf0e10cSrcweir 
470*cdf0e10cSrcweir 
471*cdf0e10cSrcweir class ScUndoAutoFormat: public ScBlockUndo
472*cdf0e10cSrcweir {
473*cdf0e10cSrcweir public:
474*cdf0e10cSrcweir                     TYPEINFO();
475*cdf0e10cSrcweir                     ScUndoAutoFormat( ScDocShell* pNewDocShell,
476*cdf0e10cSrcweir                                       const ScRange& rRange, ScDocument* pNewUndoDoc,
477*cdf0e10cSrcweir                                       const ScMarkData& rMark,
478*cdf0e10cSrcweir                                       sal_Bool bNewSize, sal_uInt16 nNewFormatNo );
479*cdf0e10cSrcweir     virtual         ~ScUndoAutoFormat();
480*cdf0e10cSrcweir 
481*cdf0e10cSrcweir     virtual void    Undo();
482*cdf0e10cSrcweir     virtual void    Redo();
483*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
484*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
485*cdf0e10cSrcweir 
486*cdf0e10cSrcweir     virtual String  GetComment() const;
487*cdf0e10cSrcweir 
488*cdf0e10cSrcweir private:
489*cdf0e10cSrcweir     ScDocument*     pUndoDoc;       // geloeschte Daten
490*cdf0e10cSrcweir     ScMarkData      aMarkData;
491*cdf0e10cSrcweir     sal_Bool            bSize;
492*cdf0e10cSrcweir     sal_uInt16          nFormatNo;
493*cdf0e10cSrcweir };
494*cdf0e10cSrcweir 
495*cdf0e10cSrcweir 
496*cdf0e10cSrcweir class ScUndoReplace: public ScSimpleUndo
497*cdf0e10cSrcweir {
498*cdf0e10cSrcweir public:
499*cdf0e10cSrcweir                     TYPEINFO();
500*cdf0e10cSrcweir                     ScUndoReplace( ScDocShell* pNewDocShell,
501*cdf0e10cSrcweir                                    const ScMarkData& rMark,
502*cdf0e10cSrcweir                                    SCCOL nCurX, SCROW nCurY, SCTAB nCurZ,
503*cdf0e10cSrcweir                                    const String& rNewUndoStr, ScDocument* pNewUndoDoc,
504*cdf0e10cSrcweir                                    const SvxSearchItem* pItem );
505*cdf0e10cSrcweir     virtual         ~ScUndoReplace();
506*cdf0e10cSrcweir 
507*cdf0e10cSrcweir     virtual void    Undo();
508*cdf0e10cSrcweir     virtual void    Redo();
509*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
510*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
511*cdf0e10cSrcweir 
512*cdf0e10cSrcweir     virtual String  GetComment() const;
513*cdf0e10cSrcweir 
514*cdf0e10cSrcweir private:
515*cdf0e10cSrcweir     ScAddress       aCursorPos;
516*cdf0e10cSrcweir     ScMarkData      aMarkData;
517*cdf0e10cSrcweir     String          aUndoStr;           // Daten bei Einfachmarkierung
518*cdf0e10cSrcweir     ScDocument*     pUndoDoc;           // Blockmarkierung und geloeschte Daten
519*cdf0e10cSrcweir     SvxSearchItem*  pSearchItem;
520*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
521*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
522*cdf0e10cSrcweir 
523*cdf0e10cSrcweir             void    SetChangeTrack();
524*cdf0e10cSrcweir };
525*cdf0e10cSrcweir 
526*cdf0e10cSrcweir 
527*cdf0e10cSrcweir class ScUndoTabOp: public ScSimpleUndo
528*cdf0e10cSrcweir {
529*cdf0e10cSrcweir public:
530*cdf0e10cSrcweir                     TYPEINFO();
531*cdf0e10cSrcweir                     ScUndoTabOp( ScDocShell* pNewDocShell,
532*cdf0e10cSrcweir                                  SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
533*cdf0e10cSrcweir                                  SCCOL nEndX,   SCROW nEndY,   SCTAB nEndZ,
534*cdf0e10cSrcweir                                  ScDocument* pNewUndoDoc,
535*cdf0e10cSrcweir                                  const ScRefAddress& rFormulaCell,
536*cdf0e10cSrcweir                                  const ScRefAddress& rFormulaEnd,
537*cdf0e10cSrcweir                                  const ScRefAddress& rRowCell,
538*cdf0e10cSrcweir                                  const ScRefAddress& rColCell,
539*cdf0e10cSrcweir                                  sal_uInt8 nMode );
540*cdf0e10cSrcweir     virtual         ~ScUndoTabOp();
541*cdf0e10cSrcweir 
542*cdf0e10cSrcweir     virtual void    Undo();
543*cdf0e10cSrcweir     virtual void    Redo();
544*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
545*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
546*cdf0e10cSrcweir 
547*cdf0e10cSrcweir     virtual String  GetComment() const;
548*cdf0e10cSrcweir 
549*cdf0e10cSrcweir private:
550*cdf0e10cSrcweir     ScRange         aRange;
551*cdf0e10cSrcweir     ScDocument*     pUndoDoc;       // geloeschte Daten
552*cdf0e10cSrcweir     ScRefAddress    theFormulaCell;
553*cdf0e10cSrcweir     ScRefAddress    theFormulaEnd;
554*cdf0e10cSrcweir     ScRefAddress    theRowCell;
555*cdf0e10cSrcweir     ScRefAddress    theColCell;
556*cdf0e10cSrcweir     sal_uInt8           nMode;
557*cdf0e10cSrcweir };
558*cdf0e10cSrcweir 
559*cdf0e10cSrcweir 
560*cdf0e10cSrcweir class ScUndoConversion : public ScSimpleUndo
561*cdf0e10cSrcweir {
562*cdf0e10cSrcweir public:
563*cdf0e10cSrcweir                             TYPEINFO();
564*cdf0e10cSrcweir 
565*cdf0e10cSrcweir                             ScUndoConversion(
566*cdf0e10cSrcweir                                 ScDocShell* pNewDocShell, const ScMarkData& rMark,
567*cdf0e10cSrcweir                                 SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, ScDocument* pNewUndoDoc,
568*cdf0e10cSrcweir                                 SCCOL nNewX, SCROW nNewY, SCTAB nNewZ, ScDocument* pNewRedoDoc,
569*cdf0e10cSrcweir                                 const ScConversionParam& rConvParam );
570*cdf0e10cSrcweir     virtual                 ~ScUndoConversion();
571*cdf0e10cSrcweir 
572*cdf0e10cSrcweir     virtual void            Undo();
573*cdf0e10cSrcweir     virtual void            Redo();
574*cdf0e10cSrcweir     virtual void            Repeat(SfxRepeatTarget& rTarget);
575*cdf0e10cSrcweir     virtual sal_Bool            CanRepeat(SfxRepeatTarget& rTarget) const;
576*cdf0e10cSrcweir 
577*cdf0e10cSrcweir     virtual String          GetComment() const;
578*cdf0e10cSrcweir 
579*cdf0e10cSrcweir private:
580*cdf0e10cSrcweir     ScMarkData              aMarkData;
581*cdf0e10cSrcweir     ScAddress               aCursorPos;
582*cdf0e10cSrcweir     ScDocument*             pUndoDoc;           // Blockmarkierung und geloeschte Daten
583*cdf0e10cSrcweir     ScAddress               aNewCursorPos;
584*cdf0e10cSrcweir     ScDocument*             pRedoDoc;           // Blockmarkierung und neue Daten
585*cdf0e10cSrcweir     sal_uLong                   nStartChangeAction;
586*cdf0e10cSrcweir     sal_uLong                   nEndChangeAction;
587*cdf0e10cSrcweir     ScConversionParam       maConvParam;        /// Conversion type and parameters.
588*cdf0e10cSrcweir 
589*cdf0e10cSrcweir     void                    DoChange( ScDocument* pRefDoc, const ScAddress& rCursorPos );
590*cdf0e10cSrcweir     void                    SetChangeTrack();
591*cdf0e10cSrcweir };
592*cdf0e10cSrcweir 
593*cdf0e10cSrcweir class ScUndoRefConversion: public ScSimpleUndo
594*cdf0e10cSrcweir {
595*cdf0e10cSrcweir public:
596*cdf0e10cSrcweir                         TYPEINFO();
597*cdf0e10cSrcweir                         ScUndoRefConversion( ScDocShell* pNewDocShell,
598*cdf0e10cSrcweir                             const ScRange& aMarkRange, const ScMarkData& rMark,
599*cdf0e10cSrcweir                             ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc, sal_Bool bNewMulti, sal_uInt16 nNewFlag);
600*cdf0e10cSrcweir     virtual             ~ScUndoRefConversion();
601*cdf0e10cSrcweir 
602*cdf0e10cSrcweir     virtual void        Undo();
603*cdf0e10cSrcweir     virtual void        Redo();
604*cdf0e10cSrcweir     virtual void        Repeat(SfxRepeatTarget& rTarget);
605*cdf0e10cSrcweir     virtual sal_Bool        CanRepeat(SfxRepeatTarget& rTarget) const;
606*cdf0e10cSrcweir 
607*cdf0e10cSrcweir     virtual String      GetComment() const;
608*cdf0e10cSrcweir 
609*cdf0e10cSrcweir private:
610*cdf0e10cSrcweir     ScMarkData          aMarkData;
611*cdf0e10cSrcweir     ScDocument*         pUndoDoc;
612*cdf0e10cSrcweir     ScDocument*         pRedoDoc;
613*cdf0e10cSrcweir     ScRange             aRange;
614*cdf0e10cSrcweir     sal_Bool                bMulti;
615*cdf0e10cSrcweir     sal_uInt16              nFlags;
616*cdf0e10cSrcweir     sal_uLong               nStartChangeAction;
617*cdf0e10cSrcweir     sal_uLong               nEndChangeAction;
618*cdf0e10cSrcweir 
619*cdf0e10cSrcweir     void                DoChange( ScDocument* pRefDoc);
620*cdf0e10cSrcweir     void                SetChangeTrack();
621*cdf0e10cSrcweir };
622*cdf0e10cSrcweir 
623*cdf0e10cSrcweir class ScUndoListNames: public ScBlockUndo
624*cdf0e10cSrcweir {
625*cdf0e10cSrcweir public:
626*cdf0e10cSrcweir                     TYPEINFO();
627*cdf0e10cSrcweir                     ScUndoListNames( ScDocShell* pNewDocShell,
628*cdf0e10cSrcweir                                      const ScRange& rRange,
629*cdf0e10cSrcweir                                      ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc );
630*cdf0e10cSrcweir     virtual         ~ScUndoListNames();
631*cdf0e10cSrcweir 
632*cdf0e10cSrcweir     virtual void    Undo();
633*cdf0e10cSrcweir     virtual void    Redo();
634*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
635*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
636*cdf0e10cSrcweir 
637*cdf0e10cSrcweir     virtual String  GetComment() const;
638*cdf0e10cSrcweir 
639*cdf0e10cSrcweir private:
640*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
641*cdf0e10cSrcweir     ScDocument*     pRedoDoc;
642*cdf0e10cSrcweir 
643*cdf0e10cSrcweir     void            DoChange( ScDocument* pSrcDoc ) const;
644*cdf0e10cSrcweir };
645*cdf0e10cSrcweir 
646*cdf0e10cSrcweir 
647*cdf0e10cSrcweir class ScUndoUseScenario: public ScSimpleUndo
648*cdf0e10cSrcweir {
649*cdf0e10cSrcweir public:
650*cdf0e10cSrcweir                             TYPEINFO();
651*cdf0e10cSrcweir                             ScUndoUseScenario( ScDocShell* pNewDocShell,
652*cdf0e10cSrcweir                                     const ScMarkData& rMark,
653*cdf0e10cSrcweir                                     const ScArea& rDestArea, ScDocument* pNewUndoDoc,
654*cdf0e10cSrcweir                                     const String& rNewName );
655*cdf0e10cSrcweir     virtual                 ~ScUndoUseScenario();
656*cdf0e10cSrcweir 
657*cdf0e10cSrcweir     virtual void            Undo();
658*cdf0e10cSrcweir     virtual void            Redo();
659*cdf0e10cSrcweir     virtual void            Repeat(SfxRepeatTarget& rTarget);
660*cdf0e10cSrcweir     virtual sal_Bool            CanRepeat(SfxRepeatTarget& rTarget) const;
661*cdf0e10cSrcweir 
662*cdf0e10cSrcweir     virtual String          GetComment() const;
663*cdf0e10cSrcweir 
664*cdf0e10cSrcweir private:
665*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
666*cdf0e10cSrcweir     ScRange         aRange;
667*cdf0e10cSrcweir     ScMarkData      aMarkData;
668*cdf0e10cSrcweir     String          aName;
669*cdf0e10cSrcweir };
670*cdf0e10cSrcweir 
671*cdf0e10cSrcweir 
672*cdf0e10cSrcweir class ScUndoSelectionStyle: public ScSimpleUndo
673*cdf0e10cSrcweir {
674*cdf0e10cSrcweir public:
675*cdf0e10cSrcweir                     TYPEINFO();
676*cdf0e10cSrcweir                     ScUndoSelectionStyle( ScDocShell* pNewDocShell,
677*cdf0e10cSrcweir                                           const ScMarkData& rMark,
678*cdf0e10cSrcweir                                           const ScRange& rRange,
679*cdf0e10cSrcweir                                           const String& rName,
680*cdf0e10cSrcweir                                           ScDocument* pNewUndoDoc );
681*cdf0e10cSrcweir     virtual         ~ScUndoSelectionStyle();
682*cdf0e10cSrcweir 
683*cdf0e10cSrcweir     virtual void    Undo();
684*cdf0e10cSrcweir     virtual void    Redo();
685*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
686*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
687*cdf0e10cSrcweir 
688*cdf0e10cSrcweir     virtual String  GetComment() const;
689*cdf0e10cSrcweir     virtual sal_uInt16  GetId() const;
690*cdf0e10cSrcweir 
691*cdf0e10cSrcweir private:
692*cdf0e10cSrcweir     ScMarkData      aMarkData;
693*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
694*cdf0e10cSrcweir     String          aStyleName;
695*cdf0e10cSrcweir     ScRange         aRange;
696*cdf0e10cSrcweir 
697*cdf0e10cSrcweir     void            DoChange( const sal_Bool bUndo );
698*cdf0e10cSrcweir };
699*cdf0e10cSrcweir 
700*cdf0e10cSrcweir 
701*cdf0e10cSrcweir class ScUndoRefreshLink: public ScSimpleUndo
702*cdf0e10cSrcweir {
703*cdf0e10cSrcweir public:
704*cdf0e10cSrcweir                     TYPEINFO();
705*cdf0e10cSrcweir                     ScUndoRefreshLink( ScDocShell* pNewDocShell,
706*cdf0e10cSrcweir                                        ScDocument* pNewUndoDoc );
707*cdf0e10cSrcweir     virtual         ~ScUndoRefreshLink();
708*cdf0e10cSrcweir 
709*cdf0e10cSrcweir     virtual void    Undo();
710*cdf0e10cSrcweir     virtual void    Redo();
711*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
712*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
713*cdf0e10cSrcweir 
714*cdf0e10cSrcweir     virtual String  GetComment() const;
715*cdf0e10cSrcweir 
716*cdf0e10cSrcweir private:
717*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
718*cdf0e10cSrcweir     ScDocument*     pRedoDoc;
719*cdf0e10cSrcweir };
720*cdf0e10cSrcweir 
721*cdf0e10cSrcweir 
722*cdf0e10cSrcweir class ScUndoEnterMatrix: public ScBlockUndo
723*cdf0e10cSrcweir {
724*cdf0e10cSrcweir public:
725*cdf0e10cSrcweir                     TYPEINFO();
726*cdf0e10cSrcweir                     ScUndoEnterMatrix( ScDocShell* pNewDocShell,
727*cdf0e10cSrcweir                                        const ScRange& rArea,
728*cdf0e10cSrcweir                                        ScDocument* pNewUndoDoc,
729*cdf0e10cSrcweir                                        const String& rForm );
730*cdf0e10cSrcweir     virtual         ~ScUndoEnterMatrix();
731*cdf0e10cSrcweir 
732*cdf0e10cSrcweir     virtual void    Undo();
733*cdf0e10cSrcweir     virtual void    Redo();
734*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
735*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
736*cdf0e10cSrcweir 
737*cdf0e10cSrcweir     virtual String  GetComment() const;
738*cdf0e10cSrcweir 
739*cdf0e10cSrcweir private:
740*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
741*cdf0e10cSrcweir     String          aFormula;
742*cdf0e10cSrcweir     formula::FormulaGrammar::AddressConvention eConv;
743*cdf0e10cSrcweir     sal_uLong           nStartChangeAction;
744*cdf0e10cSrcweir     sal_uLong           nEndChangeAction;
745*cdf0e10cSrcweir 
746*cdf0e10cSrcweir     void            SetChangeTrack();
747*cdf0e10cSrcweir };
748*cdf0e10cSrcweir 
749*cdf0e10cSrcweir 
750*cdf0e10cSrcweir class ScUndoInsertAreaLink : public ScSimpleUndo
751*cdf0e10cSrcweir {
752*cdf0e10cSrcweir public:
753*cdf0e10cSrcweir                     TYPEINFO();
754*cdf0e10cSrcweir                     ScUndoInsertAreaLink( ScDocShell* pShell,
755*cdf0e10cSrcweir                                           const String& rDoc,
756*cdf0e10cSrcweir                                           const String& rFlt, const String& rOpt,
757*cdf0e10cSrcweir                                           const String& rArea, const ScRange& rDestRange,
758*cdf0e10cSrcweir                                           sal_uLong nRefreshDelay );
759*cdf0e10cSrcweir     virtual         ~ScUndoInsertAreaLink();
760*cdf0e10cSrcweir 
761*cdf0e10cSrcweir     virtual void    Undo();
762*cdf0e10cSrcweir     virtual void    Redo();
763*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
764*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
765*cdf0e10cSrcweir 
766*cdf0e10cSrcweir     virtual String  GetComment() const;
767*cdf0e10cSrcweir 
768*cdf0e10cSrcweir private:
769*cdf0e10cSrcweir     String          aDocName;
770*cdf0e10cSrcweir     String          aFltName;
771*cdf0e10cSrcweir     String          aOptions;
772*cdf0e10cSrcweir     String          aAreaName;
773*cdf0e10cSrcweir     ScRange         aRange;
774*cdf0e10cSrcweir     sal_uLong           nRefreshDelay;
775*cdf0e10cSrcweir };
776*cdf0e10cSrcweir 
777*cdf0e10cSrcweir 
778*cdf0e10cSrcweir class ScUndoRemoveAreaLink : public ScSimpleUndo
779*cdf0e10cSrcweir {
780*cdf0e10cSrcweir public:
781*cdf0e10cSrcweir                     TYPEINFO();
782*cdf0e10cSrcweir                     ScUndoRemoveAreaLink( ScDocShell* pShell,
783*cdf0e10cSrcweir                                           const String& rDoc,
784*cdf0e10cSrcweir                                           const String& rFlt, const String& rOpt,
785*cdf0e10cSrcweir                                           const String& rArea, const ScRange& rDestRange,
786*cdf0e10cSrcweir                                           sal_uLong nRefreshDelay );
787*cdf0e10cSrcweir     virtual         ~ScUndoRemoveAreaLink();
788*cdf0e10cSrcweir 
789*cdf0e10cSrcweir     virtual void    Undo();
790*cdf0e10cSrcweir     virtual void    Redo();
791*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
792*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
793*cdf0e10cSrcweir 
794*cdf0e10cSrcweir     virtual String  GetComment() const;
795*cdf0e10cSrcweir 
796*cdf0e10cSrcweir private:
797*cdf0e10cSrcweir     String          aDocName;
798*cdf0e10cSrcweir     String          aFltName;
799*cdf0e10cSrcweir     String          aOptions;
800*cdf0e10cSrcweir     String          aAreaName;
801*cdf0e10cSrcweir     ScRange         aRange;
802*cdf0e10cSrcweir     sal_uLong           nRefreshDelay;
803*cdf0e10cSrcweir };
804*cdf0e10cSrcweir 
805*cdf0e10cSrcweir 
806*cdf0e10cSrcweir class ScUndoUpdateAreaLink : public ScSimpleUndo        //! auch BlockUndo umstellen?
807*cdf0e10cSrcweir {
808*cdf0e10cSrcweir public:
809*cdf0e10cSrcweir                     TYPEINFO();
810*cdf0e10cSrcweir                     ScUndoUpdateAreaLink( ScDocShell* pShell,
811*cdf0e10cSrcweir                                           const String& rOldD,
812*cdf0e10cSrcweir                                           const String& rOldF, const String& rOldO,
813*cdf0e10cSrcweir                                           const String& rOldA, const ScRange& rOldR,
814*cdf0e10cSrcweir                                           sal_uLong nOldRD,
815*cdf0e10cSrcweir                                           const String& rNewD,
816*cdf0e10cSrcweir                                           const String& rNewF, const String& rNewO,
817*cdf0e10cSrcweir                                           const String& rNewA, const ScRange& rNewR,
818*cdf0e10cSrcweir                                           sal_uLong nNewRD,
819*cdf0e10cSrcweir                                           ScDocument* pUndo, ScDocument* pRedo,
820*cdf0e10cSrcweir                                           sal_Bool bDoInsert );
821*cdf0e10cSrcweir     virtual         ~ScUndoUpdateAreaLink();
822*cdf0e10cSrcweir 
823*cdf0e10cSrcweir     virtual void    Undo();
824*cdf0e10cSrcweir     virtual void    Redo();
825*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
826*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
827*cdf0e10cSrcweir 
828*cdf0e10cSrcweir     virtual String  GetComment() const;
829*cdf0e10cSrcweir 
830*cdf0e10cSrcweir private:
831*cdf0e10cSrcweir     String          aOldDoc;
832*cdf0e10cSrcweir     String          aOldFlt;
833*cdf0e10cSrcweir     String          aOldOpt;
834*cdf0e10cSrcweir     String          aOldArea;
835*cdf0e10cSrcweir     ScRange         aOldRange;
836*cdf0e10cSrcweir     String          aNewDoc;
837*cdf0e10cSrcweir     String          aNewFlt;
838*cdf0e10cSrcweir     String          aNewOpt;
839*cdf0e10cSrcweir     String          aNewArea;
840*cdf0e10cSrcweir     ScRange         aNewRange;
841*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
842*cdf0e10cSrcweir     ScDocument*     pRedoDoc;
843*cdf0e10cSrcweir     sal_uLong           nOldRefresh;
844*cdf0e10cSrcweir     sal_uLong           nNewRefresh;
845*cdf0e10cSrcweir     sal_Bool            bWithInsert;
846*cdf0e10cSrcweir 
847*cdf0e10cSrcweir     void            DoChange( const sal_Bool bUndo ) const;
848*cdf0e10cSrcweir };
849*cdf0e10cSrcweir 
850*cdf0e10cSrcweir 
851*cdf0e10cSrcweir class ScUndoIndent: public ScBlockUndo
852*cdf0e10cSrcweir {
853*cdf0e10cSrcweir public:
854*cdf0e10cSrcweir                     TYPEINFO();
855*cdf0e10cSrcweir                     ScUndoIndent( ScDocShell* pNewDocShell, const ScMarkData& rMark,
856*cdf0e10cSrcweir                                     ScDocument* pNewUndoDoc, sal_Bool bIncrement );
857*cdf0e10cSrcweir     virtual         ~ScUndoIndent();
858*cdf0e10cSrcweir 
859*cdf0e10cSrcweir     virtual void    Undo();
860*cdf0e10cSrcweir     virtual void    Redo();
861*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
862*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
863*cdf0e10cSrcweir 
864*cdf0e10cSrcweir     virtual String  GetComment() const;
865*cdf0e10cSrcweir 
866*cdf0e10cSrcweir private:
867*cdf0e10cSrcweir     ScMarkData      aMarkData;
868*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
869*cdf0e10cSrcweir     sal_Bool            bIsIncrement;
870*cdf0e10cSrcweir };
871*cdf0e10cSrcweir 
872*cdf0e10cSrcweir 
873*cdf0e10cSrcweir class ScUndoTransliterate: public ScBlockUndo
874*cdf0e10cSrcweir {
875*cdf0e10cSrcweir public:
876*cdf0e10cSrcweir                     TYPEINFO();
877*cdf0e10cSrcweir                     ScUndoTransliterate( ScDocShell* pNewDocShell, const ScMarkData& rMark,
878*cdf0e10cSrcweir                                         ScDocument* pNewUndoDoc, sal_Int32 nType );
879*cdf0e10cSrcweir     virtual         ~ScUndoTransliterate();
880*cdf0e10cSrcweir 
881*cdf0e10cSrcweir     virtual void    Undo();
882*cdf0e10cSrcweir     virtual void    Redo();
883*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
884*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
885*cdf0e10cSrcweir 
886*cdf0e10cSrcweir     virtual String  GetComment() const;
887*cdf0e10cSrcweir 
888*cdf0e10cSrcweir private:
889*cdf0e10cSrcweir     ScMarkData      aMarkData;
890*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
891*cdf0e10cSrcweir     sal_Int32       nTransliterationType;
892*cdf0e10cSrcweir };
893*cdf0e10cSrcweir 
894*cdf0e10cSrcweir 
895*cdf0e10cSrcweir class ScUndoClearItems: public ScBlockUndo
896*cdf0e10cSrcweir {
897*cdf0e10cSrcweir public:
898*cdf0e10cSrcweir                     TYPEINFO();
899*cdf0e10cSrcweir                     ScUndoClearItems( ScDocShell* pNewDocShell, const ScMarkData& rMark,
900*cdf0e10cSrcweir                                         ScDocument* pNewUndoDoc, const sal_uInt16* pW );
901*cdf0e10cSrcweir     virtual         ~ScUndoClearItems();
902*cdf0e10cSrcweir 
903*cdf0e10cSrcweir     virtual void    Undo();
904*cdf0e10cSrcweir     virtual void    Redo();
905*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
906*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
907*cdf0e10cSrcweir 
908*cdf0e10cSrcweir     virtual String  GetComment() const;
909*cdf0e10cSrcweir 
910*cdf0e10cSrcweir private:
911*cdf0e10cSrcweir     ScMarkData      aMarkData;
912*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
913*cdf0e10cSrcweir     sal_uInt16*         pWhich;
914*cdf0e10cSrcweir };
915*cdf0e10cSrcweir 
916*cdf0e10cSrcweir 
917*cdf0e10cSrcweir class ScUndoRemoveBreaks: public ScSimpleUndo
918*cdf0e10cSrcweir {
919*cdf0e10cSrcweir public:
920*cdf0e10cSrcweir                     TYPEINFO();
921*cdf0e10cSrcweir                     ScUndoRemoveBreaks( ScDocShell* pNewDocShell,
922*cdf0e10cSrcweir                                     SCTAB nNewTab, ScDocument* pNewUndoDoc );
923*cdf0e10cSrcweir     virtual         ~ScUndoRemoveBreaks();
924*cdf0e10cSrcweir 
925*cdf0e10cSrcweir     virtual void    Undo();
926*cdf0e10cSrcweir     virtual void    Redo();
927*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
928*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
929*cdf0e10cSrcweir 
930*cdf0e10cSrcweir     virtual String  GetComment() const;
931*cdf0e10cSrcweir 
932*cdf0e10cSrcweir private:
933*cdf0e10cSrcweir     SCTAB           nTab;
934*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
935*cdf0e10cSrcweir };
936*cdf0e10cSrcweir 
937*cdf0e10cSrcweir 
938*cdf0e10cSrcweir class ScUndoRemoveMerge: public ScBlockUndo
939*cdf0e10cSrcweir {
940*cdf0e10cSrcweir public:
941*cdf0e10cSrcweir                     TYPEINFO();
942*cdf0e10cSrcweir                     ScUndoRemoveMerge( ScDocShell* pNewDocShell,
943*cdf0e10cSrcweir                                        const ScRange& rArea,
944*cdf0e10cSrcweir                                        ScDocument* pNewUndoDoc );
945*cdf0e10cSrcweir     virtual         ~ScUndoRemoveMerge();
946*cdf0e10cSrcweir 
947*cdf0e10cSrcweir     virtual void    Undo();
948*cdf0e10cSrcweir     virtual void    Redo();
949*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
950*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
951*cdf0e10cSrcweir 
952*cdf0e10cSrcweir     virtual String  GetComment() const;
953*cdf0e10cSrcweir 
954*cdf0e10cSrcweir private:
955*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
956*cdf0e10cSrcweir };
957*cdf0e10cSrcweir 
958*cdf0e10cSrcweir 
959*cdf0e10cSrcweir class ScUndoBorder: public ScBlockUndo
960*cdf0e10cSrcweir {
961*cdf0e10cSrcweir public:
962*cdf0e10cSrcweir                     TYPEINFO();
963*cdf0e10cSrcweir                     ScUndoBorder( ScDocShell* pNewDocShell,
964*cdf0e10cSrcweir                                     const ScRangeList& rRangeList,
965*cdf0e10cSrcweir                                     ScDocument* pNewUndoDoc,
966*cdf0e10cSrcweir                                     const SvxBoxItem& rNewOuter,
967*cdf0e10cSrcweir                                     const SvxBoxInfoItem& rNewInner );
968*cdf0e10cSrcweir     virtual         ~ScUndoBorder();
969*cdf0e10cSrcweir 
970*cdf0e10cSrcweir     virtual void    Undo();
971*cdf0e10cSrcweir     virtual void    Redo();
972*cdf0e10cSrcweir     virtual void    Repeat(SfxRepeatTarget& rTarget);
973*cdf0e10cSrcweir     virtual sal_Bool    CanRepeat(SfxRepeatTarget& rTarget) const;
974*cdf0e10cSrcweir 
975*cdf0e10cSrcweir     virtual String  GetComment() const;
976*cdf0e10cSrcweir 
977*cdf0e10cSrcweir private:
978*cdf0e10cSrcweir     ScDocument*     pUndoDoc;
979*cdf0e10cSrcweir     ScRangeList*    pRanges;
980*cdf0e10cSrcweir     SvxBoxItem*     pOuter;
981*cdf0e10cSrcweir     SvxBoxInfoItem* pInner;
982*cdf0e10cSrcweir };
983*cdf0e10cSrcweir 
984*cdf0e10cSrcweir 
985*cdf0e10cSrcweir 
986*cdf0e10cSrcweir 
987*cdf0e10cSrcweir #endif
988*cdf0e10cSrcweir 
989