Medical Imaging Interaction Toolkit  2024.12.00
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
mitkUndoController.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkUndoController_h
14 #define mitkUndoController_h
15 
16 #include "mitkOperationEvent.h"
17 #include "mitkUndoModel.h"
18 #include <MitkCoreExports.h>
19 #include <map>
20 
21 namespace mitk
22 {
23  //## @ingroup Undo
25  {
26  public:
27  // different UndoModels:
28  enum UndoType
29  {
30  LIMITEDLINEARUNDO = 10,
31  VERBOSE_LIMITEDLINEARUNDO = 11,
32  TREEUNDO = 20
33  };
34 
35  typedef std::map<UndoType, UndoModel::Pointer> UndoModelMap;
36  typedef std::map<UndoType, UndoModel::Pointer>::iterator UndoModelMapIter;
37  //##Documentation
38  //## @brief Default UndoModel to use.
39  static const UndoType DEFAULTUNDOMODEL;
40 
41  //##Documentation
42  //## Constructor; Adds the new UndoType or if undoType exists ,
43  //## switches it to undoType; for UndoTypes see definitionmitkInteractionConst.h
44  UndoController(UndoType undoType = DEFAULTUNDOMODEL);
45  virtual ~UndoController();
46 
47  bool SetOperationEvent(UndoStackItem *operationEvent);
48 
49  //##Documentation
50  //## @brief calls the UndoMechanism to undo the last change
51  bool Undo();
52 
53  //##Documentation
54  //## @brief calls the UndoMechanism to undo the last change
55  //##
56  //## the UndoMechanism has the possibility to undo the last changes in two different ways:
57  //## first it can Undo a group of operations done at last (e.g. build up a new object; Undo leads to deleting that
58  // object);
59  //## or it can Undo a set of operations, that belong together(statechange with Action),
60  //## that way it is possible recall the last set point after you have finished to build up a new object
61  //## @param fine: if set to true, then undo all operations with the same objectEventId
62  //## if set to false, then undo all operations with the same GroupEventId
63  bool Undo(bool fine);
64 
65  //##Documentation
66  //## @brief calls the RedoMechanism to redo the operations undone
67  //##
68  //## read the Documentation of Undo!
69  bool Redo();
70 
71  //##Documentation
72  //## @brief calls the RedoMechanism to redo the operations undone
73  //##
74  //## read the Documentation of Undo!
75  //## only with the possibility to fine redo, like fine undo
76  bool Redo(bool fine);
77 
78  //##Documentation
79  //## @brief Clears the Undo and the RedoList
80  void Clear();
81 
82  //##Documentation
83  //## @brief Clears the RedoList
84  void ClearRedoList();
85 
86  //##Documentation
87  //## @brief returns true, if the RedoList is empty
88  bool RedoListEmpty();
89 
90  bool SwitchUndoModel(UndoType undoType);
91 
92  bool AddUndoModel(UndoType undoType);
93 
94  bool RemoveUndoModel(UndoType undoType);
95 
96  //##Documentation
97  //## @brief returns the ObjectEventId of the
98  //## top Element in the OperationHistory of the selected
99  //## UndoModel
100  int GetLastObjectEventIdInList();
101 
102  //##Documentation
103  //## @brief returns the GroupEventId of the
104  //## top Element in the OperationHistory of the selected
105  //## UndoModel
106  int GetLastGroupEventIdInList();
107 
108  //##Documentation
109  //## @brief returns the last specified OperationEvent in Undo-list
110  //## corresponding to the given value; if nothing found, then returns nullptr
111  OperationEvent *GetLastOfType(OperationActor *destination, OperationType opType);
112 
113  //##Documentation
114  //## @brief gives access to the currently used UndoModel
115  //## Introduced to access special functions of more specific UndoModels,
116  //## especially to retrieve text descriptions of the undo/redo stack
117  static UndoModel *GetCurrentUndoModel();
118 
119  private:
120  //##Documentation
121  //## current selected UndoModel
122  static UndoModel::Pointer m_CurUndoModel;
123  //##Documentation
124  //## current selected Type of m_CurUndoModel
125  static UndoType m_CurUndoType;
126  //##Documentation
127  //## different UndoModels to select and activate
128  static UndoModelMap m_UndoModelList;
129  };
130 } // namespace mitk
131 
132 #endif
mitk::OperationActor
abstract class, that can be used by Undo to undo an operation.
Definition: mitkOperationActor.h:41
mitk::UndoStackItem
Represents an entry of the undo or redo stack.
Definition: mitkOperationEvent.h:35
itk::SmartPointer< Self >
mitk::UndoController::UndoModelMapIter
std::map< UndoType, UndoModel::Pointer >::iterator UndoModelMapIter
Definition: mitkUndoController.h:36
mitk::UndoController::UndoModelMap
std::map< UndoType, UndoModel::Pointer > UndoModelMap
Definition: mitkUndoController.h:35
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
mitkUndoModel.h
mitk::UndoController::UndoType
UndoType
Definition: mitkUndoController.h:28
mitkOperationEvent.h
MitkCoreExports.h
mitk::OperationType
int OperationType
Definition: mitkOperation.h:23
mitk::OperationEvent
Represents a pair of operations: undo and the according redo.
Definition: mitkOperationEvent.h:139
mitk::UndoModel
superclass for all UndoModels
Definition: mitkUndoModel.h:32
mitk::UndoController
Definition: mitkUndoController.h:24
MITKCORE_EXPORT
#define MITKCORE_EXPORT
Definition: MitkCoreExports.h:15
mitk::UndoController::DEFAULTUNDOMODEL
static const UndoType DEFAULTUNDOMODEL
Default UndoModel to use.
Definition: mitkUndoController.h:39