/************************************************************** * * 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