blob: 169736db05115c1f5a526954f35dd6da384df0ef [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SC_UNDOBLK_HXX
#define SC_UNDOBLK_HXX
#include "undobase.hxx"
#include "markdata.hxx"
#include "viewutil.hxx"
#include "spellparam.hxx"
class ScDocShell;
class ScBaseCell;
class ScDocument;
class ScOutlineTable;
class ScRangeName;
class ScRangeList;
class ScDBCollection;
class ScPatternAttr;
class SvxBoxItem;
class SvxBoxInfoItem;
class SvxSearchItem;
class SdrUndoAction;
//----------------------------------------------------------------------------
class ScUndoInsertCells: public ScMoveUndo
{
public:
TYPEINFO();
ScUndoInsertCells( ScDocShell* pNewDocShell,
const ScRange& rRange, SCTAB nNewCount, SCTAB* pNewTabs, SCTAB* pNewScenarios,
InsCellCmd eNewCmd, ScDocument* pUndoDocument, ScRefUndoData* pRefData,
sal_Bool bNewPartOfPaste );
virtual ~ScUndoInsertCells();
virtual void Undo();
virtual void Redo();
virtual void Repeat( SfxRepeatTarget& rTarget );
virtual sal_Bool CanRepeat( SfxRepeatTarget& rTarget ) const;
virtual String GetComment() const;
virtual sal_Bool Merge( SfxUndoAction *pNextAction );
private:
ScRange aEffRange;
SCTAB nCount;
SCTAB* pTabs;
SCTAB* pScenarios;
sal_uLong nEndChangeAction;
InsCellCmd eCmd;
sal_Bool bPartOfPaste;
SfxUndoAction* pPasteUndo;
void DoChange ( const sal_Bool bUndo );
void SetChangeTrack();
};
class ScUndoDeleteCells: public ScMoveUndo
{
public:
TYPEINFO();
ScUndoDeleteCells( ScDocShell* pNewDocShell,
const ScRange& rRange, SCTAB nNewCount, SCTAB* pNewTabs, SCTAB* pNewScenarios,
DelCellCmd eNewCmd, ScDocument* pUndoDocument, ScRefUndoData* pRefData );
virtual ~ScUndoDeleteCells();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScRange aEffRange;
SCTAB nCount;
SCTAB* pTabs;
SCTAB* pScenarios;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
DelCellCmd eCmd;
void DoChange ( const sal_Bool bUndo );
void SetChangeTrack();
};
class ScUndoDeleteMulti: public ScMoveUndo
{
public:
TYPEINFO();
ScUndoDeleteMulti( ScDocShell* pNewDocShell,
sal_Bool bNewRows, sal_Bool bNeedsRefresh, SCTAB nNewTab,
const SCCOLROW* pRng, SCCOLROW nRngCnt,
ScDocument* pUndoDocument, ScRefUndoData* pRefData );
virtual ~ScUndoDeleteMulti();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
sal_Bool bRows;
sal_Bool bRefresh;
SCTAB nTab;
SCCOLROW* pRanges;
SCCOLROW nRangeCnt;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
void DoChange() const;
void SetChangeTrack();
};
class ScUndoCut: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoCut( ScDocShell* pNewDocShell,
ScRange aRange, // adjusted for merged cells
ScAddress aOldEnd, // end position without adjustment
const ScMarkData& rMark, // selected sheets
ScDocument* pNewUndoDoc );
virtual ~ScUndoCut();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
ScDocument* pUndoDoc;
ScRange aExtendedRange;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
void DoChange( const sal_Bool bUndo );
void SetChangeTrack();
};
struct ScUndoPasteOptions
{
sal_uInt16 nFunction;
sal_Bool bSkipEmpty;
sal_Bool bTranspose;
sal_Bool bAsLink;
InsCellCmd eMoveMode;
ScUndoPasteOptions() :
nFunction( PASTE_NOFUNC ),
bSkipEmpty( sal_False ),
bTranspose( sal_False ),
bAsLink( sal_False ),
eMoveMode( INS_NONE )
{}
};
class ScUndoPaste: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoPaste( ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
const ScMarkData& rMark,
ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc,
sal_uInt16 nNewFlags,
ScRefUndoData* pRefData, void* pFill1, void* pFill2, void* pFill3,
sal_Bool bRedoIsFilled = sal_True,
const ScUndoPasteOptions* pOptions = NULL );
virtual ~ScUndoPaste();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
ScDocument* pUndoDoc;
ScDocument* pRedoDoc;
sal_uInt16 nFlags;
ScRefUndoData* pRefUndoData;
ScRefUndoData* pRefRedoData;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
sal_Bool bRedoFilled;
ScUndoPasteOptions aPasteOptions;
void DoChange( const sal_Bool bUndo );
void SetChangeTrack();
};
class ScUndoDragDrop: public ScMoveUndo
{
public:
TYPEINFO();
ScUndoDragDrop( ScDocShell* pNewDocShell,
const ScRange& rRange, ScAddress aNewDestPos, sal_Bool bNewCut,
ScDocument* pUndoDocument, ScRefUndoData* pRefData,
sal_Bool bScenario );
virtual ~ScUndoDragDrop();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScRange aSrcRange;
ScRange aDestRange;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
sal_Bool bCut;
sal_Bool bKeepScenarioFlags;
void PaintArea( ScRange aRange, sal_uInt16 nExtFlags ) const;
void DoUndo( ScRange aRange ) const;
void SetChangeTrack();
};
class ScUndoDeleteContents: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoDeleteContents( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
const ScRange& rRange,
ScDocument* pNewUndoDoc, sal_Bool bNewMulti,
sal_uInt16 nNewFlags, sal_Bool bObjects );
virtual ~ScUndoDeleteContents();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScRange aRange;
ScMarkData aMarkData;
ScDocument* pUndoDoc; // Blockmarkierung und geloeschte Daten
SdrUndoAction* pDrawUndo; // geloeschte Objekte
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
sal_uInt16 nFlags;
sal_Bool bMulti; // Mehrfachselektion
void DoChange( const sal_Bool bUndo );
void SetChangeTrack();
};
class ScUndoFillTable: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoFillTable( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
ScDocument* pNewUndoDoc, sal_Bool bNewMulti, SCTAB nSrc,
sal_uInt16 nFlg, sal_uInt16 nFunc, sal_Bool bSkip, sal_Bool bLink );
virtual ~ScUndoFillTable();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScRange aRange;
ScMarkData aMarkData;
ScDocument* pUndoDoc; // Blockmarkierung und geloeschte Daten
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
sal_uInt16 nFlags;
sal_uInt16 nFunction;
SCTAB nSrcTab;
sal_Bool bMulti; // Mehrfachselektion
sal_Bool bSkipEmpty;
sal_Bool bAsLink;
void DoChange( const sal_Bool bUndo );
void SetChangeTrack();
};
class ScUndoSelectionAttr: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoSelectionAttr( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
ScDocument* pNewUndoDoc, sal_Bool bNewMulti,
const ScPatternAttr* pNewApply,
const SvxBoxItem* pNewOuter = NULL,
const SvxBoxInfoItem* pNewInner = NULL );
virtual ~ScUndoSelectionAttr();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
ScRange aRange;
ScDocument* pUndoDoc;
sal_Bool bMulti;
ScPatternAttr* pApplyPattern;
SvxBoxItem* pLineOuter;
SvxBoxInfoItem* pLineInner;
void DoChange( const sal_Bool bUndo );
};
class ScUndoWidthOrHeight: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoWidthOrHeight( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
SCCOLROW nNewStart, SCTAB nNewStartTab,
SCCOLROW nNewEnd, SCTAB nNewEndTab,
ScDocument* pNewUndoDoc,
SCCOLROW nNewCnt, SCCOLROW* pNewRanges,
ScOutlineTable* pNewUndoTab,
ScSizeMode eNewMode, sal_uInt16 nNewSizeTwips,
sal_Bool bNewWidth );
virtual ~ScUndoWidthOrHeight();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
SCCOLROW nStart;
SCCOLROW nEnd;
SCTAB nStartTab;
SCTAB nEndTab;
ScDocument* pUndoDoc;
ScOutlineTable* pUndoTab;
SCCOLROW nRangeCnt;
SCCOLROW* pRanges;
sal_uInt16 nNewSize;
sal_Bool bWidth;
ScSizeMode eMode;
SdrUndoAction* pDrawUndo;
};
class ScUndoAutoFill: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoAutoFill( ScDocShell* pNewDocShell,
const ScRange& rRange, const ScRange& rSourceArea,
ScDocument* pNewUndoDoc, const ScMarkData& rMark,
FillDir eNewFillDir,
FillCmd eNewFillCmd, FillDateCmd eNewFillDateCmd,
double fNewStartValue, double fNewStepValue, double fNewMaxValue,
sal_uInt16 nMaxShIndex );
virtual ~ScUndoAutoFill();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScRange aSource;
ScMarkData aMarkData;
ScDocument* pUndoDoc;
FillDir eFillDir;
FillCmd eFillCmd;
FillDateCmd eFillDateCmd;
double fStartValue;
double fStepValue;
double fMaxValue;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
sal_uInt16 nMaxSharedIndex;
void SetChangeTrack();
};
class ScUndoMerge: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoMerge( ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
bool bMergeContents, ScDocument* pUndoDoc, SdrUndoAction* pDrawUndo );
virtual ~ScUndoMerge();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScRange maRange;
bool mbMergeContents; // Merge contents in Redo().
ScDocument* mpUndoDoc; // wenn Daten zusammengefasst
SdrUndoAction* mpDrawUndo;
void DoChange( bool bUndo ) const;
};
class ScUndoAutoFormat: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoAutoFormat( ScDocShell* pNewDocShell,
const ScRange& rRange, ScDocument* pNewUndoDoc,
const ScMarkData& rMark,
sal_Bool bNewSize, sal_uInt16 nNewFormatNo );
virtual ~ScUndoAutoFormat();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScDocument* pUndoDoc; // geloeschte Daten
ScMarkData aMarkData;
sal_Bool bSize;
sal_uInt16 nFormatNo;
};
class ScUndoReplace: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoReplace( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
SCCOL nCurX, SCROW nCurY, SCTAB nCurZ,
const String& rNewUndoStr, ScDocument* pNewUndoDoc,
const SvxSearchItem* pItem );
virtual ~ScUndoReplace();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScAddress aCursorPos;
ScMarkData aMarkData;
String aUndoStr; // Daten bei Einfachmarkierung
ScDocument* pUndoDoc; // Blockmarkierung und geloeschte Daten
SvxSearchItem* pSearchItem;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
void SetChangeTrack();
};
class ScUndoTabOp: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoTabOp( ScDocShell* pNewDocShell,
SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
ScDocument* pNewUndoDoc,
const ScRefAddress& rFormulaCell,
const ScRefAddress& rFormulaEnd,
const ScRefAddress& rRowCell,
const ScRefAddress& rColCell,
sal_uInt8 nMode );
virtual ~ScUndoTabOp();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScRange aRange;
ScDocument* pUndoDoc; // geloeschte Daten
ScRefAddress theFormulaCell;
ScRefAddress theFormulaEnd;
ScRefAddress theRowCell;
ScRefAddress theColCell;
sal_uInt8 nMode;
};
class ScUndoConversion : public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoConversion(
ScDocShell* pNewDocShell, const ScMarkData& rMark,
SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, ScDocument* pNewUndoDoc,
SCCOL nNewX, SCROW nNewY, SCTAB nNewZ, ScDocument* pNewRedoDoc,
const ScConversionParam& rConvParam );
virtual ~ScUndoConversion();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
ScAddress aCursorPos;
ScDocument* pUndoDoc; // Blockmarkierung und geloeschte Daten
ScAddress aNewCursorPos;
ScDocument* pRedoDoc; // Blockmarkierung und neue Daten
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
ScConversionParam maConvParam; /// Conversion type and parameters.
void DoChange( ScDocument* pRefDoc, const ScAddress& rCursorPos );
void SetChangeTrack();
};
class ScUndoRefConversion: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoRefConversion( ScDocShell* pNewDocShell,
const ScRange& aMarkRange, const ScMarkData& rMark,
ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc, sal_Bool bNewMulti, sal_uInt16 nNewFlag);
virtual ~ScUndoRefConversion();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
ScDocument* pUndoDoc;
ScDocument* pRedoDoc;
ScRange aRange;
sal_Bool bMulti;
sal_uInt16 nFlags;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
void DoChange( ScDocument* pRefDoc);
void SetChangeTrack();
};
class ScUndoListNames: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoListNames( ScDocShell* pNewDocShell,
const ScRange& rRange,
ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc );
virtual ~ScUndoListNames();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScDocument* pUndoDoc;
ScDocument* pRedoDoc;
void DoChange( ScDocument* pSrcDoc ) const;
};
class ScUndoUseScenario: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoUseScenario( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
const ScArea& rDestArea, ScDocument* pNewUndoDoc,
const String& rNewName );
virtual ~ScUndoUseScenario();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScDocument* pUndoDoc;
ScRange aRange;
ScMarkData aMarkData;
String aName;
};
class ScUndoSelectionStyle: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoSelectionStyle( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
const ScRange& rRange,
const String& rName,
ScDocument* pNewUndoDoc );
virtual ~ScUndoSelectionStyle();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
virtual sal_uInt16 GetId() const;
private:
ScMarkData aMarkData;
ScDocument* pUndoDoc;
String aStyleName;
ScRange aRange;
void DoChange( const sal_Bool bUndo );
};
class ScUndoRefreshLink: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoRefreshLink( ScDocShell* pNewDocShell,
ScDocument* pNewUndoDoc );
virtual ~ScUndoRefreshLink();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScDocument* pUndoDoc;
ScDocument* pRedoDoc;
};
class ScUndoEnterMatrix: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoEnterMatrix( ScDocShell* pNewDocShell,
const ScRange& rArea,
ScDocument* pNewUndoDoc,
const String& rForm );
virtual ~ScUndoEnterMatrix();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScDocument* pUndoDoc;
String aFormula;
formula::FormulaGrammar::AddressConvention eConv;
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
void SetChangeTrack();
};
class ScUndoInsertAreaLink : public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoInsertAreaLink( ScDocShell* pShell,
const String& rDoc,
const String& rFlt, const String& rOpt,
const String& rArea, const ScRange& rDestRange,
sal_uLong nRefreshDelay );
virtual ~ScUndoInsertAreaLink();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
String aDocName;
String aFltName;
String aOptions;
String aAreaName;
ScRange aRange;
sal_uLong nRefreshDelay;
};
class ScUndoRemoveAreaLink : public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoRemoveAreaLink( ScDocShell* pShell,
const String& rDoc,
const String& rFlt, const String& rOpt,
const String& rArea, const ScRange& rDestRange,
sal_uLong nRefreshDelay );
virtual ~ScUndoRemoveAreaLink();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
String aDocName;
String aFltName;
String aOptions;
String aAreaName;
ScRange aRange;
sal_uLong nRefreshDelay;
};
class ScUndoUpdateAreaLink : public ScSimpleUndo //! auch BlockUndo umstellen?
{
public:
TYPEINFO();
ScUndoUpdateAreaLink( ScDocShell* pShell,
const String& rOldD,
const String& rOldF, const String& rOldO,
const String& rOldA, const ScRange& rOldR,
sal_uLong nOldRD,
const String& rNewD,
const String& rNewF, const String& rNewO,
const String& rNewA, const ScRange& rNewR,
sal_uLong nNewRD,
ScDocument* pUndo, ScDocument* pRedo,
sal_Bool bDoInsert );
virtual ~ScUndoUpdateAreaLink();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
String aOldDoc;
String aOldFlt;
String aOldOpt;
String aOldArea;
ScRange aOldRange;
String aNewDoc;
String aNewFlt;
String aNewOpt;
String aNewArea;
ScRange aNewRange;
ScDocument* pUndoDoc;
ScDocument* pRedoDoc;
sal_uLong nOldRefresh;
sal_uLong nNewRefresh;
sal_Bool bWithInsert;
void DoChange( const sal_Bool bUndo ) const;
};
class ScUndoIndent: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoIndent( ScDocShell* pNewDocShell, const ScMarkData& rMark,
ScDocument* pNewUndoDoc, sal_Bool bIncrement );
virtual ~ScUndoIndent();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
ScDocument* pUndoDoc;
sal_Bool bIsIncrement;
};
class ScUndoTransliterate: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoTransliterate( ScDocShell* pNewDocShell, const ScMarkData& rMark,
ScDocument* pNewUndoDoc, sal_Int32 nType );
virtual ~ScUndoTransliterate();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
ScDocument* pUndoDoc;
sal_Int32 nTransliterationType;
};
class ScUndoClearItems: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoClearItems( ScDocShell* pNewDocShell, const ScMarkData& rMark,
ScDocument* pNewUndoDoc, const sal_uInt16* pW );
virtual ~ScUndoClearItems();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScMarkData aMarkData;
ScDocument* pUndoDoc;
sal_uInt16* pWhich;
};
class ScUndoRemoveBreaks: public ScSimpleUndo
{
public:
TYPEINFO();
ScUndoRemoveBreaks( ScDocShell* pNewDocShell,
SCTAB nNewTab, ScDocument* pNewUndoDoc );
virtual ~ScUndoRemoveBreaks();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
SCTAB nTab;
ScDocument* pUndoDoc;
};
class ScUndoRemoveMerge: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoRemoveMerge( ScDocShell* pNewDocShell,
const ScRange& rArea,
ScDocument* pNewUndoDoc );
virtual ~ScUndoRemoveMerge();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScDocument* pUndoDoc;
};
class ScUndoBorder: public ScBlockUndo
{
public:
TYPEINFO();
ScUndoBorder( ScDocShell* pNewDocShell,
const ScRangeList& rRangeList,
ScDocument* pNewUndoDoc,
const SvxBoxItem& rNewOuter,
const SvxBoxInfoItem& rNewInner );
virtual ~ScUndoBorder();
virtual void Undo();
virtual void Redo();
virtual void Repeat(SfxRepeatTarget& rTarget);
virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
virtual String GetComment() const;
private:
ScDocument* pUndoDoc;
ScRangeList* pRanges;
SvxBoxItem* pOuter;
SvxBoxInfoItem* pInner;
};
#endif