undo-stack-observer.h revision 1b27a5820b3d93141c1dcc7d5eaea73e9c33ddee
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux/**
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Undo stack observer interface
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Observes undo, redo, and undo log commit events.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Authors:
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * David Yip <yipdw@rose-hulman.edu>
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Copyright (c) 2005 Authors
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Released under GNU GPL, read the file 'COPYING' for more information
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux */
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux#ifndef __UNDO_COMMIT_OBSERVER_H__
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux#define __UNDO_COMMIT_OBSERVER_H__
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux#include "gc-managed.h"
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutuxnamespace Inkscape {
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutuxclass Event;
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux/**
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Observes changes made to the undo and redo stacks.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * More specifically, an UndoStackObserver is a class that receives notifications when
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * any of the following events occur:
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * <ul>
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * <li>A change is committed to the undo stack.</li>
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * <li>An undo action is made.</li>
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * <li>A redo action is made.</li>
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * </ul>
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * UndoStackObservers should not be used on their own. Instead, they should be registered
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * with a CompositeUndoStackObserver.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux */
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutuxclass UndoStackObserver : public GC::Managed<> {
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutuxpublic:
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux UndoStackObserver() { }
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux virtual ~UndoStackObserver() { }
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux /**
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Triggered when the user issues an undo command.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * \param log Pointer to an Event describing the undone event.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux */
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux virtual void notifyUndoEvent(Event* log) = 0;
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux /**
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Triggered when the user issues a redo command.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * \param log Pointer to an Event describing the redone event.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux */
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux virtual void notifyRedoEvent(Event* log) = 0;
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux /**
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Triggered when a set of transactions is committed to the undo log.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux *
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * \param log Pointer to an Event describing the committed events.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux */
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux virtual void notifyUndoCommitEvent(Event* log) = 0;
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux /**
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Triggered when the undo log is cleared.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux */
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux virtual void notifyClearUndoEvent() = 0;
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux /**
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux * Triggered when the redo log is cleared.
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux */
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux virtual void notifyClearRedoEvent() = 0;
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux};
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux}
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux#endif
35e0418c921e7057987f57ba30ba95ec5e03c9e5knutux