void redo() { if (_redoStack.empty()) { rMessage() << "Redo: no redo available" << std::endl; } else { Operation* operation = _redoStack.back(); rMessage() << "Redo: " << operation->_command << std::endl; startUndo(); trackersRedo(); operation->_snapshot.restore(); finishUndo(operation->_command); _redoStack.pop_back(); for (Observers::iterator i = _observers.begin(); i != _observers.end(); /* in-loop */) { Observer* observer = *(i++); observer->postRedo(); } // Trigger the onPostUndo event on all scene nodes PostRedoWalker walker; GlobalSceneGraph().root()->traverse(walker); GlobalSceneGraph().sceneChanged(); } }
// greebo: This finishes the current operation and // removes it instantly from the stack void cancel() { // Try to add the last operation as "temp" if (finishUndo("$TEMPORARY")) { // Instantly remove the added operation _undoStack.pop_back(); } }
void redo(){ if ( m_redo_stack.empty() ) { globalOutputStream() << "Redo: no redo available\n"; } else { Operation* operation = m_redo_stack.back(); globalOutputStream() << "Redo: " << operation->m_command.c_str() << "\n"; startUndo(); trackersRedo(); operation->m_snapshot.restore(); finishUndo( operation->m_command.c_str() ); m_redo_stack.pop_back(); } }
void finish(const std::string& command) { if (finishUndo(command)) { rMessage() << command << std::endl; } }
void finish( const char* command ){ if ( finishUndo( command ) ) { globalOutputStream() << command << '\n'; } }