diff options
Diffstat (limited to 'src/jabber_whiteboard/undo-stack-observer.h')
| -rw-r--r-- | src/jabber_whiteboard/undo-stack-observer.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/jabber_whiteboard/undo-stack-observer.h b/src/jabber_whiteboard/undo-stack-observer.h new file mode 100644 index 000000000..3b3884780 --- /dev/null +++ b/src/jabber_whiteboard/undo-stack-observer.h @@ -0,0 +1,75 @@ +/** + * Undo / redo / undo log commit listener + * + * Authors: + * David Yip <yipdw@rose-hulman.edu> + * + * Copyright (c) 2005 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifndef __WHITEBOARD_UNDO_COMMIT_OBSERVER_H__ +#define __WHITEBOARD_UNDO_COMMIT_OBSERVER_H__ + +#include <glibmm.h> +#include "../undo-stack-observer.h" +#include "jabber_whiteboard/typedefs.h" + +namespace Inkscape { + +namespace Whiteboard { + +class SessionManager; + +/** + * Inkboard implementation of Inkscape::UndoStackObserver. + */ +class UndoStackObserver : public Inkscape::UndoStackObserver { +public: + enum ObserverType { + UNDO_EVENT, + REDO_EVENT, + UNDO_COMMIT_EVENT + }; + + UndoStackObserver(SessionManager* sm); + ~UndoStackObserver(); + void notifyUndoEvent(XML::Event* log); + void notifyRedoEvent(XML::Event* log); + void notifyUndoCommitEvent(XML::Event* log); + + void lockObserverFromSending(ObserverType type); + void unlockObserverFromSending(ObserverType type); + +private: + SessionManager* _sm; + + // common action handler + void _doAction(XML::Event* log); + + // noncopyable, nonassignable + UndoStackObserver(UndoStackObserver const& other); + UndoStackObserver& operator=(UndoStackObserver const& other); + + unsigned int _undoSendEventLocks; + unsigned int _redoSendEventLocks; + unsigned int _undoCommitSendEventLocks; +}; + +} + +} + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : |
