summaryrefslogtreecommitdiff
path: root/sc/source/ui/inc/undocell.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/inc/undocell.hxx')
-rw-r--r--sc/source/ui/inc/undocell.hxx377
1 files changed, 377 insertions, 0 deletions
diff --git a/sc/source/ui/inc/undocell.hxx b/sc/source/ui/inc/undocell.hxx
new file mode 100644
index 000000000000..2ab9ab1a9cfa
--- /dev/null
+++ b/sc/source/ui/inc/undocell.hxx
@@ -0,0 +1,377 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDOCELL_HXX
+#define SC_UNDOCELL_HXX
+
+#include "undobase.hxx"
+#include "postit.hxx"
+
+#include <boost/shared_ptr.hpp>
+
+class ScDocShell;
+class ScBaseCell;
+class ScPatternAttr;
+class EditTextObject;
+class SdrUndoAction;
+class ScDetOpList;
+class ScDetOpData;
+class ScRangeName;
+
+//----------------------------------------------------------------------------
+
+class ScUndoCursorAttr: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoCursorAttr( ScDocShell* pNewDocShell,
+ SCCOL nNewCol, SCROW nNewRow, SCTAB nNewTab,
+ const ScPatternAttr* pOldPat, const ScPatternAttr* pNewPat,
+ const ScPatternAttr* pApplyPat, sal_Bool bAutomatic );
+ virtual ~ScUndoCursorAttr();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+ /** once the objects are passed to this class, their life-cycle is
+ managed by this class; the calling function must pass new'ed
+ objects to this method. */
+ void SetEditData( EditTextObject* pOld, EditTextObject* pNew );
+
+private:
+ SCCOL nCol;
+ SCROW nRow;
+ SCTAB nTab;
+ ScPatternAttr* pOldPattern;
+ ScPatternAttr* pNewPattern;
+ ScPatternAttr* pApplyPattern;
+ ::boost::shared_ptr<EditTextObject> pOldEditData;
+ ::boost::shared_ptr<EditTextObject> pNewEditData;
+ sal_Bool bIsAutomatic;
+
+ void DoChange( const ScPatternAttr* pWhichPattern, const ::boost::shared_ptr<EditTextObject>& pEditData ) const;
+};
+
+
+class ScUndoEnterData: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoEnterData( ScDocShell* pNewDocShell,
+ SCCOL nNewCol, SCROW nNewRow, SCTAB nNewTab,
+ SCTAB nNewCount, SCTAB* pNewTabs,
+ ScBaseCell** ppOldData, sal_Bool* pHasForm, sal_uLong* pOldForm,
+ const String& rNewStr, EditTextObject* pObj = NULL );
+ virtual ~ScUndoEnterData();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ String aNewString;
+ SCTAB* pTabs;
+ ScBaseCell** ppOldCells;
+ sal_Bool* pHasFormat;
+ sal_uLong* pOldFormats;
+ EditTextObject* pNewEditData;
+ sal_uLong nEndChangeAction;
+ SCCOL nCol;
+ SCROW nRow;
+ SCTAB nTab;
+ SCTAB nCount; // markierte Tabellen
+
+ void DoChange() const;
+ void SetChangeTrack();
+};
+
+
+class ScUndoEnterValue: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoEnterValue( ScDocShell* pNewDocShell,
+ const ScAddress& rNewPos,
+ ScBaseCell* pUndoCell, double nVal, sal_Bool bHeight );
+ virtual ~ScUndoEnterValue();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScAddress aPos;
+ ScBaseCell* pOldCell;
+ double nValue;
+ sal_uLong nEndChangeAction;
+ sal_Bool bNeedHeight;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoPutCell: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPutCell( ScDocShell* pNewDocShell,
+ const ScAddress& rNewPos,
+ ScBaseCell* pUndoCell, ScBaseCell* pRedoCell, sal_Bool bHeight );
+ virtual ~ScUndoPutCell();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScAddress aPos;
+ ScBaseCell* pOldCell;
+ ScBaseCell* pEnteredCell;
+ sal_uLong nEndChangeAction;
+ sal_Bool bNeedHeight;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoPageBreak: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPageBreak( ScDocShell* pNewDocShell,
+ SCCOL nNewCol, SCROW nNewRow, SCTAB nNewTab,
+ sal_Bool bNewColumn, sal_Bool bNewInsert );
+ virtual ~ScUndoPageBreak();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ SCCOL nCol;
+ SCROW nRow;
+ SCTAB nTab;
+ sal_Bool bColumn; // Spalten- oder Zeilenumbruch
+ sal_Bool bInsert; // Einfuegen oder Loeschen
+
+ void DoChange( sal_Bool bInsert ) const;
+};
+
+class ScUndoPrintZoom: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPrintZoom( ScDocShell* pNewDocShell, SCTAB nT,
+ sal_uInt16 nOS, sal_uInt16 nOP, sal_uInt16 nNS, sal_uInt16 nNP );
+ virtual ~ScUndoPrintZoom();
+
+ 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;
+ sal_uInt16 nOldScale;
+ sal_uInt16 nOldPages;
+ sal_uInt16 nNewScale;
+ sal_uInt16 nNewPages;
+
+ void DoChange( sal_Bool bUndo );
+};
+
+class ScUndoThesaurus: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoThesaurus( ScDocShell* pNewDocShell,
+ SCCOL nNewCol, SCROW nNewRow, SCTAB nNewTab,
+ const String& rNewUndoStr, const EditTextObject* pUndoTObj,
+ const String& rNewRedoStr, const EditTextObject* pRedoTObj);
+ virtual ~ScUndoThesaurus();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ SCCOL nCol;
+ SCROW nRow;
+ SCTAB nTab;
+ String aUndoStr; // Daten bei StringZelle
+ EditTextObject* pUndoTObject; // bei EditZelle
+ String aRedoStr;
+ EditTextObject* pRedoTObject;
+ sal_uLong nEndChangeAction;
+
+ void DoChange( sal_Bool bUndo, const String& rStr,
+ const EditTextObject* pTObj );
+ void SetChangeTrack( ScBaseCell* pOldCell );
+};
+
+// ============================================================================
+
+/** Undo action for inserting, removing, and replacing a cell note. */
+class ScUndoReplaceNote : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+
+ /** Constructs an undo action for inserting or removing a cell note. */
+ ScUndoReplaceNote(
+ ScDocShell& rDocShell,
+ const ScAddress& rPos,
+ const ScNoteData& rNoteData,
+ bool bInsert,
+ SdrUndoAction* pDrawUndo );
+
+ /** Constructs an undo action for replacing a cell note with another. */
+ ScUndoReplaceNote(
+ ScDocShell& rDocShell,
+ const ScAddress& rPos,
+ const ScNoteData& rOldData,
+ const ScNoteData& rNewData,
+ SdrUndoAction* pDrawUndo );
+
+ virtual ~ScUndoReplaceNote();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat( SfxRepeatTarget& rTarget );
+ virtual sal_Bool CanRepeat( SfxRepeatTarget& rTarget ) const;
+
+ virtual String GetComment() const;
+
+private:
+ void DoInsertNote( const ScNoteData& rNoteData );
+ void DoRemoveNote( const ScNoteData& rNoteData );
+
+private:
+ ScAddress maPos;
+ ScNoteData maOldData;
+ ScNoteData maNewData;
+ SdrUndoAction* mpDrawUndo;
+};
+
+// ============================================================================
+
+/** Undo action for showing or hiding a cell note caption. */
+class ScUndoShowHideNote : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoShowHideNote( ScDocShell& rDocShell, const ScAddress& rPos, bool bShow );
+ virtual ~ScUndoShowHideNote();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat( SfxRepeatTarget& rTarget );
+ virtual sal_Bool CanRepeat( SfxRepeatTarget& rTarget ) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScAddress maPos;
+ bool mbShown;
+};
+
+// ============================================================================
+
+class ScUndoDetective: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDetective( ScDocShell* pNewDocShell,
+ SdrUndoAction* pDraw, const ScDetOpData* pOperation,
+ ScDetOpList* pUndoList = NULL );
+ virtual ~ScUndoDetective();
+
+ 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 bIsDelete;
+ ScDetOpList* pOldList;
+ sal_uInt16 nAction;
+ ScAddress aPos;
+ SdrUndoAction* pDrawUndo;
+};
+
+
+class ScUndoRangeNames: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRangeNames( ScDocShell* pNewDocShell,
+ ScRangeName* pOld, ScRangeName* pNew );
+ virtual ~ScUndoRangeNames();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRangeName* pOldRanges;
+ ScRangeName* pNewRanges;
+
+ void DoChange( sal_Bool bUndo );
+};
+
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */