ImagingTools Core SDK
CTransactionableUndoManagerComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <idoc/CSerializedUndoManagerComp.h>
7
8// ImtCore includes
9#include <imtbase/ITransactionManager.h>
10
11
12namespace imtbase
13{
14
15
16class CTransactionableUndoManagerComp:
17 public idoc::CSerializedUndoManagerComp,
18 virtual public ITransactionManager
19{
20public:
21 typedef idoc::CSerializedUndoManagerComp BaseClass;
22
23 I_BEGIN_COMPONENT(CTransactionableUndoManagerComp);
24 I_REGISTER_INTERFACE(ITransactionManager);
25 I_END_COMPONENT;
26
27 CTransactionableUndoManagerComp();
28
29 // reimplemented (ITransactionManager)
30 virtual bool StartTransaction() override;
31 virtual bool CancelTransaction() override;
32 virtual bool EndTransaction() override;
33
34 // reimplemented (imod::IObserver)
35 virtual void BeforeUpdate(imod::IModel* modelPtr) override;
36 virtual void AfterUpdate(imod::IModel* modelPtr, const istd::IChangeable::ChangeSet& changeSet) override;
37
38private:
39 bool m_transactionInProgress;
40 bool m_updateInProgress;
41};
42
43
44} // namespace imtbase
45
46