blob: 4776b3d37798671ed341d9f340abbcc6b68afbf0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
/*
* tkUndo.h --
*
* Declarations shared among the files that implement an undo
* stack.
*
* Copyright (c) 2002 Ludwig Callewaert.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
* RCS: @(#) $Id: tkUndo.h,v 1.1 2002/06/21 23:09:55 hobbs Exp $
*/
#ifndef _TKUNDO
#define _TKUNDO
#ifndef _TK
#include "tk.h"
#endif
#ifdef BUILD_tk
# undef TCL_STORAGE_CLASS
# define TCL_STORAGE_CLASS DLLEXPORT
#endif
/* enum definining the types used in an undo stack */
typedef enum {
TK_UNDO_SEPARATOR, /* Marker */
TK_UNDO_ACTION /* Command */
} TkUndoAtomType;
/* struct defining the basic undo/redo stack element */
typedef struct TkUndoAtom {
TkUndoAtomType type; /* The type that will trigger the
* required action*/
Tcl_Obj * apply; /* Command to apply the action that was taken */
Tcl_Obj * revert; /* The command to undo the action */
struct TkUndoAtom * next; /* Pointer to the next element in the
* stack */
} TkUndoAtom;
/* struct defining the basic undo/redo stack element */
typedef struct TkUndoRedoStack {
TkUndoAtom * undoStack; /* The undo stack */
TkUndoAtom * redoStack; /* The redo stack */
Tcl_Interp * interp ; /* The interpreter in which to execute the revert and apply scripts */
int maxdepth;
int depth;
} TkUndoRedoStack;
/* basic functions */
EXTERN void TkUndoPushStack _ANSI_ARGS_((TkUndoAtom ** stack,
TkUndoAtom * elem));
EXTERN TkUndoAtom * TkUndoPopStack _ANSI_ARGS_((TkUndoAtom ** stack));
EXTERN int TkUndoInsertSeparator _ANSI_ARGS_((TkUndoAtom ** stack));
EXTERN void TkUndoClearStack _ANSI_ARGS_((TkUndoAtom ** stack));
/* functions working on an undo/redo stack */
EXTERN TkUndoRedoStack * TkUndoInitStack _ANSI_ARGS_((Tcl_Interp * interp,
int maxdepth));
EXTERN void TkUndoSetDepth _ANSI_ARGS_((TkUndoRedoStack * stack,
int maxdepth));
EXTERN void TkUndoClearStacks _ANSI_ARGS_((TkUndoRedoStack * stack));
EXTERN void TkUndoFreeStack _ANSI_ARGS_((TkUndoRedoStack * stack));
EXTERN void TkUndoInsertUndoSeparator _ANSI_ARGS_((TkUndoRedoStack * stack));
EXTERN void TkUndoPushAction _ANSI_ARGS_((TkUndoRedoStack * stack,
Tcl_DString * actionScript, Tcl_DString * revertScript));
EXTERN int TkUndoRevert _ANSI_ARGS_((TkUndoRedoStack * stack));
EXTERN int TkUndoApply _ANSI_ARGS_((TkUndoRedoStack * stack));
# undef TCL_STORAGE_CLASS
# define TCL_STORAGE_CLASS DLLIMPORT
#endif /* _TKUNDO */
|