diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Tk/pTk/tix.h')
-rw-r--r-- | Master/tlpkg/tlperl/lib/Tk/pTk/tix.h | 512 |
1 files changed, 512 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Tk/pTk/tix.h b/Master/tlpkg/tlperl/lib/Tk/pTk/tix.h new file mode 100644 index 00000000000..ce5a411e8f7 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Tk/pTk/tix.h @@ -0,0 +1,512 @@ + +/* $Id: tix.h,v 1.4.2.2 2001/12/09 03:10:49 idiscovery Exp $ */ + +/* + * tix.h -- + * + * This is the standard header file for all tix C code. It + * defines many macros and utility functions to make it easier to + * write TCL commands and TK widgets in C. No more needs to write + * 2000 line functions! + * + * Copyright (c) 1996, Expert Interface Technologies + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + */ +#ifndef _TIX_PORT_H_ +#include "tixPort.h" +#endif +#ifndef _TIX +#define _TIX +#define _TIX_H_ + +#ifndef TIX_VERSION +#define TIX_VERSION "8.1" +#endif +#define TIX_PATCHLEVEL "8.1.4" +#define TIX_PATCH_LEVEL TIX_PATCHLEVEL + +#define TIX_RELEASE "8.1.4" + +#ifndef _TK +#include "tk.h" +#endif + + +#if defined(__WIN32__) || defined(_WIN32) || defined (__BORLAND) || defined(_Windows) +#ifndef _WINDOWS +#define _WINDOWS +#endif +#endif + +/* + * When building Tix itself, BUILD_tix should be defined by the makefile + * so that all EXTERN declarations get DLLEXPORT; when building apps + * using Tix, BUILD_tix should NOT be defined so that all EXTERN + * declarations get DLLIMPORT as defined in tcl.h + * + * NOTE: This ifdef MUST appear after the include of tcl.h and tk.h + * because the EXTERN declarations in those files need DLLIMPORT. + */ +/* + * These macros are used to control whether functions are being declared for + * import or export. If a function is being declared while it is being built + * to be included in a shared library, then it should have the DLLEXPORT + * storage class. If is being declared for use by a module that is going to + * link against the shared library, then it should have the DLLIMPORT storage + * class. If the symbol is beind declared for a static build or for use from a + * stub library, then the storage class should be empty. + * + * The convention is that a macro called BUILD_xxxx, where xxxx is the + * name of a library we are building, is set on the compile line for sources + * that are to be placed in the library. When this macro is set, the + * storage class will be set to DLLEXPORT. At the end of the header file, the + * storage class will be reset to DLLIMPORt. + */ + +#undef TCL_STORAGE_CLASS +#ifdef BUILD_tix +# define TCL_STORAGE_CLASS DLLEXPORT +#else +# ifdef USE_TCL_STUBS +# define TCL_STORAGE_CLASS +# else +# define TCL_STORAGE_CLASS DLLIMPORT +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if (TCL_MAJOR_VERSION > 7) +# define TCL_7_5_OR_LATER +#else +# if ((TCL_MAJOR_VERSION == 7) && (TCL_MINOR_VERSION >= 5)) +# define TCL_7_5_OR_LATER +# endif +#endif + + +#if (TK_MAJOR_VERSION > 4) +# define TK_4_1_OR_LATER +#else +# if ((TK_MAJOR_VERSION == 4) && (TK_MINOR_VERSION >= 1)) +# define TK_4_1_OR_LATER +# endif +#endif /* TK_MAJOR_VERSION ... */ + +#if (TK_MAJOR_VERSION >= 8) +# define TK_8_0_OR_LATER +#endif + +#ifdef TK_4_1_OR_LATER + /* TK 4.1 or later */ +# define Tix_FreeProc Tcl_FreeProc + +#else + /* TK 4.0 */ +# define Tix_FreeProc Tk_FreeProc + + /* These portable features were not defined in previous versions of + * TK but are used in Tix. Let's define them here. + */ +# define TkPutImage(a, b, c, d, e, f, g, h, i, j, k, l) \ + XPutImage(c, d, e, f, g, h, i, j, k, l) + +# define TkStringToKeysym XStringToKeysym + +#endif /* TK_4_1_OR_LATER */ + + +#define TIX_STDIN_ALWAYS 0 +#define TIX_STDIN_OPTIONAL 1 +#define TIX_STDIN_NONE 2 + +typedef struct { + char *name; /* Name of command. */ + int (*cmdProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, + int argc, Tcl_Obj *CONST *objv)); + /* Command procedure. */ +} Tix_TclCmd; + + +/*---------------------------------------------------------------------- + * + * + * SUB-COMMAND HANDLING + * + * + *---------------------------------------------------------------------- + */ +typedef int (*Tix_CmdProc) _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int argc, Tcl_Obj *CONST *objv)); +typedef int (*Tix_SubCmdProc) _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int argc, Tcl_Obj *CONST *objv)); +typedef int (*Tix_CheckArgvProc) _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int argc, Tcl_Obj *CONST *objv)); + +typedef struct _Tix_CmdInfo { + int numSubCmds; + int minargc; + int maxargc; + char * info; +} Tix_CmdInfo; + +typedef struct _Tix_SubCmdInfo { + int namelen; + char * name; + int minargc; + int maxargc; + Tix_SubCmdProc proc; + char * info; + Tix_CheckArgvProc checkArgvProc; +} Tix_SubCmdInfo; + +/* + * Tix_ArraySize -- + * + * Find out the number of elements inside a C array. The argument "x" + * must be a valid C array. Pointers don't work. + */ +#define Tix_ArraySize(x) (sizeof(x) / sizeof(x[0])) + +/* + * This is used for Tix_CmdInfo.maxargc and Tix_SubCmdInfo.maxargc, + * indicating that this command takes a variable number of arguments. + */ +#define TIX_VAR_ARGS -1 + +/* + * TIX_DEFAULT_LEN -- + * + * Use this for Tix_SubCmdInfo.namelen and Tix_ExecSubCmds() will try to + * determine the length of the subcommand name for you. + */ +#define TIX_DEFAULT_LEN -1 + +/* + * TIX_DEFAULT_SUB_CMD -- + * + * Use this for Tix_SubCmdInfo.name. This will match any subcommand name, + * including the empty string, when Tix_ExecSubCmds() finds a subcommand + * to execute. + */ +#define TIX_DEFAULT_SUBCMD 0 + +/* + * TIX_DECLARE_CMD -- + * + * This is just a handy macro to declare a C function to use as a + * command function. + */ +#define TIX_DECLARE_CMD(func) \ + int func _ANSI_ARGS_((ClientData clientData,\ + Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[])) + +/* + * TIX_DECLARE_SUBCMD -- + * + * This is just a handy macro to declare a C function to use as a + * sub command function. + */ +#define TIX_DECLARE_SUBCMD(func) \ + int func _ANSI_ARGS_((ClientData clientData,\ + Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[])) + +/* + * TIX_DEFINE_CMD -- + * + * This is just a handy macro to define a C function to use as a + * command function. + */ +#define TIX_DEFINE_CMD(func) \ +int func(clientData, interp, argc, argv) \ + ClientData clientData; /* Main window associated with \ + * interpreter. */ \ + Tcl_Interp *interp; /* Current interpreter. */ \ + int argc; /* Number of arguments. */ \ + Tcl_Obj *objv[]; /* Argument strings. */ + + + +/*---------------------------------------------------------------------- + * Link-list functions -- + * + * These functions makes it easy to use link lists in C code. + * + *---------------------------------------------------------------------- + */ +typedef struct Tix_ListInfo { + int nextOffset; /* offset of the "next" pointer in a list + * item */ + int prevOffset; /* offset of the "next" pointer in a list + * item */ +} Tix_ListInfo; + + +/* Singly-linked list */ +typedef struct Tix_LinkList { + int numItems; /* number of items in this list */ + char * head; /* (general pointer) head of the list */ + char * tail; /* (general pointer) tail of the list */ +} Tix_LinkList; + +typedef struct Tix_ListIterator { + char * last; + char * curr; + unsigned int started : 1; /* True if the search operation has + * already started for this list */ + unsigned int deleted : 1; /* True if a delete operation has been + * performed on the current item (in this + * case the curr pointer has already been + * adjusted + */ +} Tix_ListIterator; + +#define Tix_IsLinkListEmpty(list) ((list.numItems) == 0) +#define TIX_UNIQUE 1 +#define TIX_UNDEFINED -1 + +/*---------------------------------------------------------------------- + * General Single Link List -- + * + * The next pointer can be anywhere inside a link. + *---------------------------------------------------------------------- + */ + +EXTERN void Tix_LinkListInit _ANSI_ARGS_((Tix_LinkList * lPtr)); +EXTERN void Tix_LinkListAppend _ANSI_ARGS_((Tix_ListInfo * infoPtr, + Tix_LinkList * lPtr, char * itemPtr, int flags)); +EXTERN void Tix_LinkListStart _ANSI_ARGS_((Tix_ListInfo * infoPtr, + Tix_LinkList * lPtr, Tix_ListIterator * liPtr)); +EXTERN void Tix_LinkListNext _ANSI_ARGS_((Tix_ListInfo * infoPtr, + Tix_LinkList * lPtr, Tix_ListIterator * liPtr)); +EXTERN void Tix_LinkListDelete _ANSI_ARGS_((Tix_ListInfo * infoPtr, + Tix_LinkList * lPtr, Tix_ListIterator * liPtr)); +EXTERN int Tix_LinkListDeleteRange _ANSI_ARGS_(( + Tix_ListInfo * infoPtr, Tix_LinkList * lPtr, + char * fromPtr, char * toPtr, + Tix_ListIterator * liPtr)); +EXTERN int Tix_LinkListFind _ANSI_ARGS_(( + Tix_ListInfo * infoPtr, Tix_LinkList * lPtr, + char * itemPtr, Tix_ListIterator * liPtr)); +EXTERN int Tix_LinkListFindAndDelete _ANSI_ARGS_(( + Tix_ListInfo * infoPtr, Tix_LinkList * lPtr, + char * itemPtr, Tix_ListIterator * liPtr)); +EXTERN void Tix_LinkListInsert _ANSI_ARGS_(( + Tix_ListInfo * infoPtr, + Tix_LinkList * lPtr, char * itemPtr, + Tix_ListIterator * liPtr)); +EXTERN void Tix_LinkListIteratorInit _ANSI_ARGS_(( Tix_ListIterator * liPtr)); + +#define Tix_LinkListDone(liPtr) ((liPtr)->curr == NULL) + + +/*---------------------------------------------------------------------- + * Simple Single Link List -- + * + * The next pointer is always offset 0 in the link structure. + *---------------------------------------------------------------------- + */ + +EXTERN void Tix_SimpleListInit _ANSI_ARGS_((Tix_LinkList * lPtr)); +EXTERN void Tix_SimpleListAppend _ANSI_ARGS_(( + Tix_LinkList * lPtr, char * itemPtr, int flags)); +EXTERN void Tix_SimpleListStart _ANSI_ARGS_(( + Tix_LinkList * lPtr, Tix_ListIterator * liPtr)); +EXTERN void Tix_SimpleListNext _ANSI_ARGS_(( + Tix_LinkList * lPtr, Tix_ListIterator * liPtr)); +EXTERN void Tix_SimpleListDelete _ANSI_ARGS_(( + Tix_LinkList * lPtr, Tix_ListIterator * liPtr)); +EXTERN int Tix_SimpleListDeleteRange _ANSI_ARGS_(( + Tix_LinkList * lPtr, + char * fromPtr, char * toPtr, + Tix_ListIterator * liPtr)); +EXTERN int Tix_SimpleListFind _ANSI_ARGS_(( + Tix_LinkList * lPtr, + char * itemPtr, Tix_ListIterator * liPtr)); +EXTERN int Tix_SimpleListFindAndDelete _ANSI_ARGS_(( + Tix_LinkList * lPtr, char * itemPtr, + Tix_ListIterator * liPtr)); +EXTERN void Tix_SimpleListInsert _ANSI_ARGS_(( + Tix_LinkList * lPtr, char * itemPtr, + Tix_ListIterator * liPtr)); +EXTERN void Tix_SimpleListIteratorInit _ANSI_ARGS_(( + Tix_ListIterator * liPtr)); + +#define Tix_SimpleListDone(liPtr) ((liPtr)->curr == NULL) + +/*---------------------------------------------------------------------- + * + * + * + * CUSTOM CONFIG OPTIONS + * + * + *---------------------------------------------------------------------- + */ +#define TIX_RELIEF_RAISED 1 +#define TIX_RELIEF_FLAT 2 +#define TIX_RELIEF_SUNKEN 4 +#define TIX_RELIEF_GROOVE 8 +#define TIX_RELIEF_RIDGE 16 +#define TIX_RELIEF_SOLID 32 + +typedef int Tix_Relief; + +EXTERN Tk_CustomOption tixConfigItemType; +EXTERN Tk_CustomOption tixConfigItemStyle; +EXTERN Tk_CustomOption tixConfigRelief; + + +/* + * C functions exported by Tix + */ + +EXTERN int Tix_ArgcError _ANSI_ARGS_((Tcl_Interp *interp, + int argc, Tcl_Obj *CONST *objv, int prefixCount, + char *message)); +EXTERN void Tix_CreateCommands _ANSI_ARGS_(( + Tcl_Interp *interp, Tix_TclCmd *commands, + ClientData clientData, + Tcl_CmdDeleteProc *deleteProc)); +EXTERN Tk_Window Tix_CreateSubWindow _ANSI_ARGS_(( + Tcl_Interp * interp, Tk_Window tkwin, + char * subPath)); +EXTERN int Tix_DefinePixmap _ANSI_ARGS_(( + Tcl_Interp * interp, Tk_Uid name, char **data)); +EXTERN void Tix_DrawAnchorLines _ANSI_ARGS_(( + Display *display, Drawable drawable, + GC gc, int x, int y, int w, int h)); +EXTERN int Tix_EvalArgv _ANSI_ARGS_(( + Tcl_Interp * interp, int argc, Tcl_Obj *CONST *objv)); +EXTERN int Tix_ExistMethod _ANSI_ARGS_((Tcl_Interp *interp, + char *context, char *method)); +EXTERN void Tix_Exit _ANSI_ARGS_((Tcl_Interp * interp, int code)); +EXTERN Pixmap Tix_GetRenderBuffer _ANSI_ARGS_((Display *display, + Drawable d, int width, int height, int depth)); + +#ifdef TCL_VARARGS +/* + * The TCL_VARARGS macro is only defined in Tcl 7.5 or later + */ +EXTERN int Tix_GlobalVarEval _ANSI_ARGS_( + TCL_VARARGS(Tcl_Interp *,interp)); +#else +EXTERN int Tix_GlobalVarEval _ANSI_ARGS_( + VARARGS(Tcl_Interp *interp)); +#endif + +EXTERN int Tix_HandleSubCmds _ANSI_ARGS_(( + Tix_CmdInfo * cmdInfo, + Tix_SubCmdInfo * subCmdInfo, + ClientData clientData, Tcl_Interp *interp, + int argc, Tcl_Obj *CONST *objv)); +EXTERN int Tix_Init _ANSI_ARGS_((Tcl_Interp *interp)); + +EXTERN int Tix_LoadTclLibrary _ANSI_ARGS_(( + Tcl_Interp *interp, char *envName, + char *tclName, char *initFile, + char *defDir, char * appName)); +EXTERN void Tix_OpenStdin _ANSI_ARGS_((Tcl_Interp *interp)); +EXTERN void Tix_SetArgv _ANSI_ARGS_((Tcl_Interp *interp, + int argc, Tcl_Obj *CONST *objv)); +EXTERN void Tix_SetRcFileName _ANSI_ARGS_(( + Tcl_Interp * interp, char * rcFileName)); +EXTERN char * TixGetStringFromObj _ANSI_ARGS_(( + char *objPtr,int *lengthPtr)); + +/* + * Entry points for Tk_CONFIG_CUSTOM stubs to call + */ + +EXTERN int TixDItemParseProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, Tk_Window tkwin, Tcl_Obj * value, + char *widRec, int offset)); + +EXTERN Tcl_Obj * TixDItemPrintProc _ANSI_ARGS_(( + ClientData clientData, Tk_Window tkwin, char *widRec, + int offset, Tcl_FreeProc **freeProcPtr)); + +EXTERN int TixDItemStyleParseProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, Tk_Window tkwin, Tcl_Obj * value, + char *widRec, int offset)); + +EXTERN Tcl_Obj * TixDItemStylePrintProc _ANSI_ARGS_(( + ClientData clientData, Tk_Window tkwin, char *widRec, + int offset, Tcl_FreeProc **freeProcPtr)); + + +/* + * Commands exported by Tix + * + */ + +extern TIX_DECLARE_CMD(Tix_CallMethodCmd); +extern TIX_DECLARE_CMD(Tix_ChainMethodCmd); +extern TIX_DECLARE_CMD(Tix_ClassCmd); +extern TIX_DECLARE_CMD(Tix_DoWhenIdleCmd); +extern TIX_DECLARE_CMD(Tix_DoWhenMappedCmd); +extern TIX_DECLARE_CMD(Tix_FalseCmd); +extern TIX_DECLARE_CMD(Tix_FileCmd); +extern TIX_DECLARE_CMD(Tix_FlushXCmd); +extern TIX_DECLARE_CMD(Tix_FormCmd); +extern TIX_DECLARE_CMD(Tix_GridCmd); +extern TIX_DECLARE_CMD(Tix_GeometryRequestCmd); +extern TIX_DECLARE_CMD(Tix_Get3DBorderCmd); +extern TIX_DECLARE_CMD(Tix_GetBooleanCmd); +extern TIX_DECLARE_CMD(Tix_GetIntCmd); +extern TIX_DECLARE_CMD(Tix_GetMethodCmd); +extern TIX_DECLARE_CMD(Tix_HListCmd); +extern TIX_DECLARE_CMD(Tix_HandleOptionsCmd); +extern TIX_DECLARE_CMD(Tix_InputOnlyCmd); +extern TIX_DECLARE_CMD(Tix_ItemStyleCmd); +extern TIX_DECLARE_CMD(Tix_ManageGeometryCmd); +extern TIX_DECLARE_CMD(Tix_MapWindowCmd); +extern TIX_DECLARE_CMD(Tix_MoveResizeWindowCmd); +extern TIX_DECLARE_CMD(Tix_NoteBookFrameCmd); +extern TIX_DECLARE_CMD(Tix_RaiseWindowCmd); +extern TIX_DECLARE_CMD(Tix_ShellInputCmd); +extern TIX_DECLARE_CMD(Tix_StringSubCmd); +extern TIX_DECLARE_CMD(Tix_StrEqCmd); +extern TIX_DECLARE_CMD(Tix_TListCmd); +extern TIX_DECLARE_CMD(Tix_TmpLineCmd); +extern TIX_DECLARE_CMD(Tix_TrueCmd); +extern TIX_DECLARE_CMD(Tix_UnmapWindowCmd); +extern TIX_DECLARE_CMD(Tix_MwmCmd); +extern TIX_DECLARE_CMD(Tix_CreateWidgetCmd); + +#define SET_RECORD(interp, record, var, value) \ + Tcl_SetVar2(interp, record, var, value, TCL_GLOBAL_ONLY) + +#define GET_RECORD(interp, record, var) \ + Tcl_GetVar2(interp, record, var, TCL_GLOBAL_ONLY) + + +#define TIX_HASHKEY(k) ((sizeof(k)>sizeof(int))?((char*)&(k)):((char*)(k))) + +/*---------------------------------------------------------------------- + * Compatibility section + *---------------------------------------------------------------------- */ + + +#ifdef _WINDOWS +/* This is the way win/tkWinPort.h in tk8.0.5 defines it */ +#ifndef strcasecmp +#define strcasecmp stricmp +#endif +#endif + + +#ifdef __cplusplus +} +#endif + + +#endif /* _TIX */ + + + |