OSDN Git Service

Updated to tk 8.4.1
[pf3gnuchains/pf3gnuchains3x.git] / tk / generic / tkText.h
index b3af54e..4661330 100644 (file)
 #include "tk.h"
 #endif
 
+#ifndef _TKUNDO
+#include "tkUndo.h"
+#endif
+
 #ifdef BUILD_tk
 # undef TCL_STORAGE_CLASS
 # define TCL_STORAGE_CLASS DLLEXPORT
@@ -451,6 +455,14 @@ typedef struct TkTextTabArray {
                                         * BE THE LAST IN THE STRUCTURE. */
 } TkTextTabArray;
 
+/* enum definining the edit modes of */
+
+typedef enum {
+    TK_TEXT_EDIT_INSERT,                       /* insert mode */
+    TK_TEXT_EDIT_DELETE,                       /* delete mode */
+    TK_TEXT_EDIT_OTHER                    /* none of the above */
+} TkTextEditMode;
+
 /*
  * A data structure of the following type is kept for each text widget that
  * currently exists for this process:
@@ -525,11 +537,6 @@ typedef struct TkText {
                                 * NULL means perform default tabbing
                                 * behavior. */
 
-    int tabsize;                /* "-tabs" reconize only fixed placed tabs, but
-                                 * we need to have the behavior of a normal plain
-                                * text editor (default is 8)
-                                */
-
     /*
      * Additional information used for displaying:
      */
@@ -609,7 +616,7 @@ typedef struct TkText {
                                /* Pointer to segment for "current" mark,
                                 * or NULL if none. */
     XEvent pickEvent;          /* The event from which the current character
-                                * was chosen.  Must be saved so that we
+                                * was chosen.  Must be saved so that we
                                 * can repick after modifications to the
                                 * text. */
     int numCurTags;            /* Number of tags associated with character
@@ -621,15 +628,47 @@ typedef struct TkText {
      * Miscellaneous additional information:
      */
 
-    char *takeFocus;           /* Value of -takeFocus option;  not used in
+    char *takeFocus;           /* Value of -takeFocus option;  not used in
                                 * the C code, but used by keyboard traversal
                                 * scripts.  Malloc'ed, but may be NULL. */
     char *xScrollCmd;          /* Prefix of command to issue to update
                                 * horizontal scrollbar when view changes. */
     char *yScrollCmd;          /* Prefix of command to issue to update
                                 * vertical scrollbar when view changes. */
-    int flags;                 /* Miscellaneous flags;  see below for
+    int flags;                 /* Miscellaneous flags;  see below for
                                 * definitions. */
+
+    /*
+     * Information related to the undo/redo functonality
+     */
+     
+    TkUndoRedoStack * undoStack; /* The undo/redo stack */
+    
+    int undo;                  /* non zero means the undo/redo behaviour is 
+                                * enabled */
+    
+    int maxUndo;               /* The maximum depth of the undo stack expressed
+             * as the maximum number of compound statements */
+
+    int autoSeparators;                /* non zero means the separatorss will be 
+                                * inserted automatically */
+    
+    int modifiedSet;           /* Flag indicating that the 'dirtynesss' of
+                                * the text widget has been expplicitly set.
+                                */
+
+    int isDirty;               /* Flag indicating the 'dirtynesss' of the text
+                                * widget. If the flag is not zero, unsaved 
+                                * modifications have been applied to the
+                                * text widget */
+
+    int isDirtyIncrement;      /* Amount with which the isDirty flag is
+                                * incremented every edit action
+                                */
+
+    TkTextEditMode lastEditMode;       /* Keeps track of what the last edit mode was
+                                */
+
 } TkText;
 
 /*
@@ -756,7 +795,7 @@ EXTERN TkTextLine * TkBTreeFindLine _ANSI_ARGS_((TkTextBTree tree,
 EXTERN TkTextTag **    TkBTreeGetTags _ANSI_ARGS_((TkTextIndex *indexPtr,
                            int *numTagsPtr));
 EXTERN void            TkBTreeInsertChars _ANSI_ARGS_((TkTextIndex *indexPtr,
-                           char *string));
+                           CONST char *string));
 EXTERN int             TkBTreeLineIndex _ANSI_ARGS_((TkTextLine *linePtr));
 EXTERN void            TkBTreeLinkSegment _ANSI_ARGS_((TkTextSegment *segPtr,
                            TkTextIndex *indexPtr));
@@ -792,12 +831,12 @@ EXTERN int                TkTextDLineInfo _ANSI_ARGS_((TkText *textPtr,
                            TkTextIndex *indexPtr, int *xPtr, int *yPtr,
                            int *widthPtr, int *heightPtr, int *basePtr));
 EXTERN TkTextTag *     TkTextCreateTag _ANSI_ARGS_((TkText *textPtr,
-                           char *tagName));
+                           CONST char *tagName));
 EXTERN void            TkTextFreeDInfo _ANSI_ARGS_((TkText *textPtr));
 EXTERN void            TkTextFreeTag _ANSI_ARGS_((TkText *textPtr,
                            TkTextTag *tagPtr));
 EXTERN int             TkTextGetIndex _ANSI_ARGS_((Tcl_Interp *interp,
-                           TkText *textPtr, char *string,
+                           TkText *textPtr, CONST char *string,
                            TkTextIndex *indexPtr));
 EXTERN TkTextTabArray *        TkTextGetTabs _ANSI_ARGS_((Tcl_Interp *interp,
                            Tk_Window tkwin, char *string));
@@ -833,9 +872,9 @@ EXTERN TkTextIndex *        TkTextMakeByteIndex _ANSI_ARGS_((TkTextBTree tree,
                            int lineIndex, int byteIndex,
                            TkTextIndex *indexPtr));
 EXTERN int             TkTextMarkCmd _ANSI_ARGS_((TkText *textPtr,
-                           Tcl_Interp *interp, int argc, char **argv));
+                           Tcl_Interp *interp, int argc, CONST char **argv));
 EXTERN int             TkTextMarkNameToIndex _ANSI_ARGS_((TkText *textPtr,
-                           char *name, TkTextIndex *indexPtr));
+                           CONST char *name, TkTextIndex *indexPtr));
 EXTERN void            TkTextMarkSegToIndex _ANSI_ARGS_((TkText *textPtr,
                            TkTextSegment *markPtr, TkTextIndex *indexPtr));
 EXTERN void            TkTextEventuallyRepick _ANSI_ARGS_((TkText *textPtr));
@@ -852,33 +891,32 @@ EXTERN void               TkTextRedrawTag _ANSI_ARGS_((TkText *textPtr,
                            TkTextTag *tagPtr, int withTag));
 EXTERN void            TkTextRelayoutWindow _ANSI_ARGS_((TkText *textPtr));
 EXTERN int             TkTextScanCmd _ANSI_ARGS_((TkText *textPtr,
-                           Tcl_Interp *interp, int argc, char **argv));
+                           Tcl_Interp *interp, int argc, CONST char **argv));
 EXTERN int             TkTextSeeCmd _ANSI_ARGS_((TkText *textPtr,
-                           Tcl_Interp *interp, int argc, char **argv));
+                           Tcl_Interp *interp, int argc, CONST char **argv));
 EXTERN int             TkTextSegToOffset _ANSI_ARGS_((
                            CONST TkTextSegment *segPtr,
                            CONST TkTextLine *linePtr));
-EXTERN TkTextSegment * TkTextSetMark _ANSI_ARGS_((TkText *textPtr, char *name,
-                           TkTextIndex *indexPtr));
+EXTERN TkTextSegment * TkTextSetMark _ANSI_ARGS_((TkText *textPtr,
+                           CONST char *name, TkTextIndex *indexPtr));
 EXTERN void            TkTextSetYView _ANSI_ARGS_((TkText *textPtr,
                            TkTextIndex *indexPtr, int pickPlace));
 EXTERN int             TkTextTagCmd _ANSI_ARGS_((TkText *textPtr,
-                           Tcl_Interp *interp, int argc, char **argv));
+                           Tcl_Interp *interp, int argc, CONST char **argv));
 EXTERN int             TkTextImageCmd _ANSI_ARGS_((TkText *textPtr,
-                           Tcl_Interp *interp, int argc, char **argv));
+                           Tcl_Interp *interp, int argc, CONST char **argv));
 EXTERN int             TkTextImageIndex _ANSI_ARGS_((TkText *textPtr,
-                           char *name, TkTextIndex *indexPtr));
+                           CONST char *name, TkTextIndex *indexPtr));
 EXTERN int             TkTextWindowCmd _ANSI_ARGS_((TkText *textPtr,
-                           Tcl_Interp *interp, int argc, char **argv));
+                           Tcl_Interp *interp, int argc, CONST char **argv));
 EXTERN int             TkTextWindowIndex _ANSI_ARGS_((TkText *textPtr,
-                           char *name, TkTextIndex *indexPtr));
+                           CONST char *name, TkTextIndex *indexPtr));
 EXTERN int             TkTextXviewCmd _ANSI_ARGS_((TkText *textPtr,
-                           Tcl_Interp *interp, int argc, char **argv));
+                           Tcl_Interp *interp, int argc, CONST char **argv));
 EXTERN int             TkTextYviewCmd _ANSI_ARGS_((TkText *textPtr,
-                           Tcl_Interp *interp, int argc, char **argv));
+                           Tcl_Interp *interp, int argc, CONST char **argv));
 
 # undef TCL_STORAGE_CLASS
 # define TCL_STORAGE_CLASS DLLIMPORT
 
 #endif /* _TKTEXT */
-