diff options
author | hobbs <hobbs> | 2002-06-21 23:09:53 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2002-06-21 23:09:53 (GMT) |
commit | 9654a2ee6769c38f672db74d03ca0b31ff451cd9 (patch) | |
tree | 454006e4ff105b7ca979593a68e8dc7ea1cd12f4 /generic/tkUndo.h | |
parent | d0d014405dcfdbe46e20639362db85567ce08491 (diff) | |
download | tk-9654a2ee6769c38f672db74d03ca0b31ff451cd9.zip tk-9654a2ee6769c38f672db74d03ca0b31ff451cd9.tar.gz tk-9654a2ee6769c38f672db74d03ca0b31ff451cd9.tar.bz2 |
* doc/text.n: TIP #104 implementation which generalizes the
* generic/tkText.c: undo/redo stack to not be tied solely to the
* generic/tkText.h: text widget. The APIs are still private.
* generic/tkUndo.c: This also adds a stack limiting ability and
* generic/tkUndo.h: a -maxundo option to the text widget (in
* library/text.tcl: addition to the options from TIP #26) should
* mac/tkMacDefault.h: users want to limit the undo/redo stack
* tests/text.test: (should not be necessary in most cases).
* unix/Makefile.in: [Patch #554763] (callewart)
* unix/tkUnixDefault.h:
* win/Makefile.in:
* win/makefile.vc:
* win/tkWinDefault.h:
Diffstat (limited to 'generic/tkUndo.h')
-rw-r--r-- | generic/tkUndo.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/generic/tkUndo.h b/generic/tkUndo.h new file mode 100644 index 0000000..4776b3d --- /dev/null +++ b/generic/tkUndo.h @@ -0,0 +1,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 */ |