tkUndo.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

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