33 InvokeEvent(RedoEmptyEvent());
37 if (0 != undoLimit &&
m_UndoList.size() == undoLimit)
45 InvokeEvent(UndoNotEmptyEvent());
57 int oeid =
m_UndoList.back()->GetObjectEventId();
58 std::string currentDescription;
59 int currentDescriptionCount(0);
60 bool niceDescriptionFound(
false);
61 std::string lastDescription;
66 if (oeid != (*iter)->GetObjectEventId())
69 if (currentDescription.empty())
70 currentDescription =
"Some unnamed action";
74 currentDescription =
"";
75 currentDescriptionCount = 0;
76 niceDescriptionFound =
false;
77 oeid = (*iter)->GetObjectEventId();
80 if (!(*iter)->GetDescription().empty())
82 if (!dynamic_cast<OperationEvent *>(*iter))
85 currentDescription = (*iter)->GetDescription();
86 niceDescriptionFound =
true;
88 else if (!niceDescriptionFound)
90 if (currentDescriptionCount)
92 if (lastDescription != (*iter)->GetDescription())
95 currentDescription +=
" AND ";
96 currentDescription += (*iter)->GetDescription();
101 currentDescription += (*iter)->GetDescription();
104 lastDescription = (*iter)->GetDescription();
105 ++currentDescriptionCount;
111 if (currentDescription.empty())
112 currentDescription =
"Some unnamed action";
125 int oeid =
m_RedoList.back()->GetObjectEventId();
126 std::string currentDescription;
127 int currentDescriptionCount(0);
128 bool niceDescriptionFound(
false);
129 std::string lastDescription;
134 if (oeid != (*iter)->GetObjectEventId())
137 if (currentDescription.empty())
138 currentDescription =
"Some unnamed action";
142 currentDescription =
"";
143 currentDescriptionCount = 0;
144 niceDescriptionFound =
false;
145 oeid = (*iter)->GetObjectEventId();
148 if (!(*iter)->GetDescription().empty())
150 if (!dynamic_cast<OperationEvent *>(*iter))
153 currentDescription = (*iter)->GetDescription();
154 niceDescriptionFound =
true;
156 else if (!niceDescriptionFound)
158 if (currentDescriptionCount)
160 if (lastDescription != (*iter)->GetDescription())
163 currentDescription +=
" AND ";
164 currentDescription += (*iter)->GetDescription();
169 currentDescription += (*iter)->GetDescription();
172 lastDescription = (*iter)->GetDescription();
173 ++currentDescriptionCount;
179 if (currentDescription.empty())
180 currentDescription =
"Some unnamed action";
bool SetOperationEvent(UndoStackItem *undoStackItem) override
a list of pairs (int,string), representing a stack with ObjectEventIDs and descriptions ...
std::vcl_size_t GetUndoLimit() const override
Gets the limit on the size of the undo history. The undo limit determines how many items can be store...
~VerboseLimitedLinearUndo() override
void ClearList(UndoContainer *list)
std::pair< int, std::string > StackDescriptionItem
Represents an entry of the undo or redo stack.
VerboseLimitedLinearUndo()
virtual StackDescription GetRedoDescriptions()
std::vector< StackDescriptionItem > StackDescription
virtual StackDescription GetUndoDescriptions()