diff options
Diffstat (limited to 'generic/tkUndo.h')
-rw-r--r-- | generic/tkUndo.h | 245 |
1 files changed, 123 insertions, 122 deletions
diff --git a/generic/tkUndo.h b/generic/tkUndo.h index 5d50edd..c4c83a4 100644 --- a/generic/tkUndo.h +++ b/generic/tkUndo.h @@ -1,122 +1,123 @@ -/* - * 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.5 2005/11/27 02:36:14 das Exp $ - */ - -#ifndef _TKUNDO -#define _TKUNDO - -#ifndef _TKINT -#include "tkInt.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; - -/* - * Callback proc type to carry out an undo or redo action via C code. (Actions - * can also be defined by Tcl scripts). - */ - -typedef int (TkUndoProc)(Tcl_Interp *interp, ClientData clientData, - Tcl_Obj *objPtr); - -/* - * Struct defining a single action, one or more of which may be defined (and - * stored in a linked list) separately for each undo and redo action of an - * undo atom. - */ - -typedef struct TkUndoSubAtom { - Tcl_Command command; /* Tcl token used to get the current Tcl - * command name which will be used to execute - * apply/revert scripts. If NULL then it is - * assumed the apply/revert scripts already - * contain everything. */ - TkUndoProc *funcPtr; /* Function pointer for callback to perform - * undo/redo actions. */ - ClientData clientData; /* data for 'funcPtr' */ - Tcl_Obj *action; /* Command to apply the action that was - * taken */ - struct TkUndoSubAtom *next; /* Pointer to the next element in the linked - * list */ -} TkUndoSubAtom; - -/* - * Struct representing a single undo+redo atom to be placed in the stack. - */ - -typedef struct TkUndoAtom { - TkUndoAtomType type; /* The type that will trigger the required - * action. */ - TkUndoSubAtom *apply; /* Linked list of 'apply' actions to perform - * for this operation. */ - TkUndoSubAtom *revert; /* Linked list of 'revert' actions to perform - * for this operation. */ - struct TkUndoAtom *next; /* Pointer to the next element in the stack */ -} TkUndoAtom; - -/* - * Struct defining a single undo+redo stack. - */ - -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. - */ - -MODULE_SCOPE void TkUndoPushStack(TkUndoAtom **stack, TkUndoAtom *elem); -MODULE_SCOPE TkUndoAtom *TkUndoPopStack(TkUndoAtom **stack); -MODULE_SCOPE int TkUndoInsertSeparator(TkUndoAtom **stack); -MODULE_SCOPE void TkUndoClearStack(TkUndoAtom **stack); - -/* - * Functions for working on an undo/redo stack. - */ - -MODULE_SCOPE TkUndoRedoStack *TkUndoInitStack(Tcl_Interp *interp, int maxdepth); -MODULE_SCOPE void TkUndoSetDepth(TkUndoRedoStack *stack, int maxdepth); -MODULE_SCOPE void TkUndoClearStacks(TkUndoRedoStack *stack); -MODULE_SCOPE void TkUndoFreeStack(TkUndoRedoStack *stack); -MODULE_SCOPE void TkUndoInsertUndoSeparator(TkUndoRedoStack *stack); -MODULE_SCOPE TkUndoSubAtom *TkUndoMakeCmdSubAtom(Tcl_Command command, - Tcl_Obj *actionScript, TkUndoSubAtom *subAtomList); -MODULE_SCOPE TkUndoSubAtom *TkUndoMakeSubAtom(TkUndoProc *funcPtr, - ClientData clientData, Tcl_Obj *actionScript, - TkUndoSubAtom *subAtomList); -MODULE_SCOPE void TkUndoPushAction(TkUndoRedoStack *stack, - TkUndoSubAtom *apply, TkUndoSubAtom *revert); -MODULE_SCOPE int TkUndoRevert(TkUndoRedoStack *stack); -MODULE_SCOPE int TkUndoApply(TkUndoRedoStack *stack); - -# undef TCL_STORAGE_CLASS -# define TCL_STORAGE_CLASS DLLIMPORT - -#endif /* _TKUNDO */ +/*
+ * 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.6 2007/06/24 16:07:35 dkf Exp $
+ */
+
+#ifndef _TKUNDO
+#define _TKUNDO
+
+#ifndef _TKINT
+#include "tkInt.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;
+
+/*
+ * Callback proc type to carry out an undo or redo action via C code. (Actions
+ * can also be defined by Tcl scripts).
+ */
+
+typedef int (TkUndoProc)(Tcl_Interp *interp, ClientData clientData,
+ Tcl_Obj *objPtr);
+
+/*
+ * Struct defining a single action, one or more of which may be defined (and
+ * stored in a linked list) separately for each undo and redo action of an
+ * undo atom.
+ */
+
+typedef struct TkUndoSubAtom {
+ Tcl_Command command; /* Tcl token used to get the current Tcl
+ * command name which will be used to execute
+ * apply/revert scripts. If NULL then it is
+ * assumed the apply/revert scripts already
+ * contain everything. */
+ TkUndoProc *funcPtr; /* Function pointer for callback to perform
+ * undo/redo actions. */
+ ClientData clientData; /* Data for 'funcPtr'. */
+ Tcl_Obj *action; /* Command to apply the action that was
+ * taken. */
+ struct TkUndoSubAtom *next; /* Pointer to the next element in the linked
+ * list. */
+} TkUndoSubAtom;
+
+/*
+ * Struct representing a single undo+redo atom to be placed in the stack.
+ */
+
+typedef struct TkUndoAtom {
+ TkUndoAtomType type; /* The type that will trigger the required
+ * action. */
+ TkUndoSubAtom *apply; /* Linked list of 'apply' actions to perform
+ * for this operation. */
+ TkUndoSubAtom *revert; /* Linked list of 'revert' actions to perform
+ * for this operation. */
+ struct TkUndoAtom *next; /* Pointer to the next element in the
+ * stack. */
+} TkUndoAtom;
+
+/*
+ * Struct defining a single undo+redo stack.
+ */
+
+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.
+ */
+
+MODULE_SCOPE void TkUndoPushStack(TkUndoAtom **stack, TkUndoAtom *elem);
+MODULE_SCOPE TkUndoAtom *TkUndoPopStack(TkUndoAtom **stack);
+MODULE_SCOPE int TkUndoInsertSeparator(TkUndoAtom **stack);
+MODULE_SCOPE void TkUndoClearStack(TkUndoAtom **stack);
+
+/*
+ * Functions for working on an undo/redo stack.
+ */
+
+MODULE_SCOPE TkUndoRedoStack *TkUndoInitStack(Tcl_Interp *interp, int maxdepth);
+MODULE_SCOPE void TkUndoSetDepth(TkUndoRedoStack *stack, int maxdepth);
+MODULE_SCOPE void TkUndoClearStacks(TkUndoRedoStack *stack);
+MODULE_SCOPE void TkUndoFreeStack(TkUndoRedoStack *stack);
+MODULE_SCOPE void TkUndoInsertUndoSeparator(TkUndoRedoStack *stack);
+MODULE_SCOPE TkUndoSubAtom *TkUndoMakeCmdSubAtom(Tcl_Command command,
+ Tcl_Obj *actionScript, TkUndoSubAtom *subAtomList);
+MODULE_SCOPE TkUndoSubAtom *TkUndoMakeSubAtom(TkUndoProc *funcPtr,
+ ClientData clientData, Tcl_Obj *actionScript,
+ TkUndoSubAtom *subAtomList);
+MODULE_SCOPE void TkUndoPushAction(TkUndoRedoStack *stack,
+ TkUndoSubAtom *apply, TkUndoSubAtom *revert);
+MODULE_SCOPE int TkUndoRevert(TkUndoRedoStack *stack);
+MODULE_SCOPE int TkUndoApply(TkUndoRedoStack *stack);
+
+# undef TCL_STORAGE_CLASS
+# define TCL_STORAGE_CLASS DLLIMPORT
+
+#endif /* _TKUNDO */
|