File indexing completed on 2024-05-12 15:58:26
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __KIS_MACRO_BASED_UNDO_STORE_H 0008 #define __KIS_MACRO_BASED_UNDO_STORE_H 0009 0010 #include <QScopedPointer> 0011 #include "kis_undo_store.h" 0012 0013 class KisSavedMacroCommand; 0014 0015 0016 /** 0017 * This undo store is supposed to be stacked with a KisPostExecutionUndoAdapter. 0018 * 0019 * That chain looks like: 0020 * KisPostExecutionUndoAdapter -> 0021 * KisMacroBasedUndoStore -> 0022 * KisSavedMacroCommand; 0023 * 0024 * So the store calls redo() on every command that is added via 0025 * addCommand(); 0026 */ 0027 class KisMacroBasedUndoStore : public KisUndoStore 0028 { 0029 public: 0030 KisMacroBasedUndoStore(KisSavedMacroCommand *command); 0031 ~KisMacroBasedUndoStore() override; 0032 0033 const KUndo2Command* presentCommand() override; 0034 void undoLastCommand() override; 0035 void addCommand(KUndo2Command *cmd) override; 0036 void beginMacro(const KUndo2MagicString& macroName) override; 0037 void endMacro() override; 0038 void purgeRedoState() override; 0039 0040 private: 0041 struct Private; 0042 const QScopedPointer<Private> m_d; 0043 }; 0044 0045 #endif /* __KIS_MACRO_BASED_UNDO_STORE_H */