Laxkit
0.0.7.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
lax
undo.h
1
//
2
//
3
// The Laxkit, a windowing toolkit
4
// Please consult http://laxkit.sourceforge.net about where to send any
5
// correspondence about this software.
6
//
7
// This library is free software; you can redistribute it and/or
8
// modify it under the terms of the GNU Library General Public
9
// License as published by the Free Software Foundation; either
10
// version 2 of the License, or (at your option) any later version.
11
//
12
// This library is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
// Library General Public License for more details.
16
//
17
// You should have received a copy of the GNU Library General Public
18
// License along with this library; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
//
21
// Copyright (C) 2012 by Tom Lechner
22
//
23
#ifndef _LAX_UNDO_H
24
#define _LAX_UNDO_H
25
26
27
#include <lax/anobject.h>
28
#include <cstdlib>
29
30
namespace
Laxkit {
31
32
class
UndoData;
33
34
//--------------------------------------------- Undoable ------------------------------------------
35
class
Undoable
36
{
37
public
:
38
virtual
int
Undo(
UndoData
*data) = 0;
39
virtual
int
Redo(
UndoData
*data) = 0;
40
};
41
42
43
//--------------------------------------------- UndoData ------------------------------------------
44
class
UndoData
45
{
46
public
:
47
Undoable
*context;
48
anObject
*data;
49
clock_t time;
50
int
direction;
51
int
isauto;
52
UndoData
*prev, *next;
53
54
UndoData
();
55
virtual
~UndoData
();
56
virtual
int
isUndoable();
57
virtual
int
isRedoable();
58
virtual
const
char
*Description() = 0;
59
};
60
61
//--------------------------------------------- UndoManager ------------------------------------------
62
class
UndoManager
63
{
64
protected
:
65
UndoData
*head;
66
UndoData
*current;
//points to either the current undoable, or NULL. There may be redoable ones in head!
67
public
:
68
UndoManager
();
69
virtual
~
UndoManager
();
70
virtual
int
AddUndo
(
UndoData
*data);
71
72
virtual
int
Undo
();
73
virtual
int
Redo
();
74
};
75
76
77
78
//--------------------------------------------- Default UndoManager ------------------------------------------
79
UndoManager
*GetUndoManager();
80
UndoManager
*
SetUndoManager
(
UndoManager
*newmanager);
81
82
83
}
//namespace Laxkit
84
85
86
#endif
87
Mon Feb 17 2014 11:52:57, Laxkit