Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_transaction.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KIS_TRANSACTION_H_
8#define KIS_TRANSACTION_H_
9
10#include <kundo2command.h>
11
12#include "kis_types.h"
13
15#include "kis_paint_device.h"
16#include "kis_pixel_selection.h"
17#include "kis_image_config.h"
18
19#include "kis_undo_adapter.h"
21
23
25{
26public:
27 enum Flag {
28 None = 0x0,
29 SuppressUpdates = 0x1
30 };
31 Q_DECLARE_FLAGS(Flags, Flag)
32
33public:
34 KisTransaction(const KUndo2MagicString& name, KisPaintDeviceSP device, KUndo2Command* parent = 0,int timedID = -1, KisTransactionWrapperFactory *interstrokeDataFactory = 0, Flags flags = None) {
35 m_transactionData = new KisTransactionData(name, device, true, interstrokeDataFactory, parent, flags & SuppressUpdates);
37 }
38
39 KisTransaction(KisPaintDeviceSP device, KUndo2Command* parent = 0, int timedID = -1, KisTransactionWrapperFactory *interstrokeDataFactory = 0, Flags flags = None)
40 : KisTransaction(KUndo2MagicString(), device, parent, timedID, interstrokeDataFactory, flags)
41 {
42 }
43
44 virtual ~KisTransaction() {
45 delete m_transactionData;
46 }
47
51
52 void commit(KisUndoAdapter* undoAdapter) {
54 "KisTransaction::commit()",
55 "the transaction has been tried to be committed twice");
56
58 undoAdapter->addCommand(m_transactionData);
60 }
61
64 "KisTransaction::commit()",
65 "the transaction has been tried to be committed twice");
66
71 }
72
75 "KisTransaction::endAndTake()",
76 "the transaction has been tried to be committed twice");
77
79 KisTransactionData *transactionData = m_transactionData;
81
82 return transactionData;
83 }
84
85 void end() {
86 KIS_ASSERT_X(m_transactionData, "KisTransaction::end()", "nothing to end!");
92 delete m_transactionData;
94 }
95
96 void revert() {
98 "KisTransaction::reverted()",
99 "the transaction is tried to be reverted()"
100 "after it has already been added to undo adapter");
101
107 delete m_transactionData;
109 }
110
113 "KisTransaction::text()",
114 "the name has been requested after the transaction"
115 "has already been ended");
116 return m_transactionData->text();
117 }
118
119protected:
121
124};
125
126Q_DECLARE_OPERATORS_FOR_FLAGS(KisTransaction::Flags)
127
129{
130public:
132 {
133 m_transactionData = new KisTransactionData(KUndo2MagicString(), pixelSelection, false, 0, parent, false);
134 }
135
137 {
138 m_transactionData = new KisTransactionData(name, pixelSelection, false, 0, parent, false);
139 }
140};
141
142#endif /* KIS_TRANSACTION_H_ */
143
Q_DECLARE_FLAGS(KisUpdaterContextSnapshotEx, KisUpdaterContextSnapshotExTag)
KUndo2MagicString text() const
virtual void setTimedID(int timedID)
KisSelectionTransaction(KisPixelSelectionSP pixelSelection, KUndo2Command *parent=0)
KisSelectionTransaction(const KUndo2MagicString &name, KisPixelSelectionSP pixelSelection, KUndo2Command *parent=0)
KisTransaction(const KUndo2MagicString &name, KisPaintDeviceSP device, KUndo2Command *parent=0, int timedID=-1, KisTransactionWrapperFactory *interstrokeDataFactory=0, Flags flags=None)
void commit(KisPostExecutionUndoAdapter *undoAdapter)
Q_DISABLE_COPY(KisTransaction)
KUndo2MagicString text() const
KUndo2Command * undoCommand()
KUndo2Command * endAndTake()
virtual ~KisTransaction()
KisTransactionData * m_transactionData
KisTransaction(KisPaintDeviceSP device, KUndo2Command *parent=0, int timedID=-1, KisTransactionWrapperFactory *interstrokeDataFactory=0, Flags flags=None)
void commit(KisUndoAdapter *undoAdapter)
virtual void addCommand(KUndo2Command *cmd)=0
#define KIS_ASSERT_X(cond, where, what)
Definition kis_assert.h:40
Q_DECLARE_OPERATORS_FOR_FLAGS(KisBaseRectsWalker::SubtreeVisitFlags)
QSharedPointer< KUndo2Command > KUndo2CommandSP
Definition kis_types.h:262