43 #ifdef CHECK_MEMORY_LEAKS 71 FXIMPLEMENT_ABSTRACT(
GNEUndoList, FXUndoList, GNEUndoListMap, ARRAYNUMBER(GNEUndoListMap))
77 begin(myCommandGroups.top());
131 sender->handle(
this, enable ? FXSEL(SEL_COMMAND, FXWindow::ID_ENABLE) : FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE), 0);
132 FXString caption = undoName();
134 caption = (
"Cannot Undo in the middle of " +
myCommandGroups.top()->getDescription()).c_str();
135 }
else if (!canUndo()) {
139 if (dynamic_cast<FXMenuCommand*>(sender)) {
140 sender->handle(
this, FXSEL(SEL_COMMAND, FXMenuCaption::ID_SETSTRINGVALUE), (
void*)&caption);
149 sender->handle(
this, enable ? FXSEL(SEL_COMMAND, FXWindow::ID_ENABLE) : FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE), 0);
150 FXString caption = redoName();
152 caption = (
"Cannot Redo in the middle of " +
myCommandGroups.top()->getDescription()).c_str();
153 }
else if (!canRedo()) {
157 if (dynamic_cast<FXMenuCommand*>(sender)) {
158 sender->handle(
this, FXSEL(SEL_COMMAND, FXMenuCaption::ID_SETSTRINGVALUE), (
void*)&caption);
FXDEFMAP(GNEUndoList) GNEUndoListMap[]
void redo()
redo the last command group
void updateControls()
update control contents after undo/redo or recompute
void undo()
undo the last command group
void p_add(GNEChange_Attribute *cmd)
special method, avoid empty changes, always execute
the function-object for an editing operation (abstract base)
bool trueChange()
wether original and new value differ
std::stack< CommandGroup * > myCommandGroups
GNEApplicationWindow *const myParent
void p_abort()
reverts and discards ALL active command groups
long p_onUpdRedo(FXObject *, FXSelector, void *)
bool hasCommandGroup() const
long p_onUpdUndo(FXObject *, FXSelector, void *)