00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #ifndef _TKDND
00045 #define _TKDND
00046
00047 #include "vtkTcl.h"
00048 #include "vtkTk.h"
00049
00050 #include <string.h>
00051 #include <tk.h>
00052
00053
00054
00055
00056 #ifndef CONST84
00057 #define CONST84
00058 #endif
00059
00060 #if (TCL_MAJOR_VERSION > 8) || ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 4))
00061 # define HAVE_TCL84
00062 #endif
00063 #if (TCL_MAJOR_VERSION > 8) || ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 5))
00064 # define HAVE_TCL85
00065 #endif
00066
00067
00068
00069
00070 #ifndef VERSION
00071 #ifdef PACKAGE_VERSION
00072 #define VERSION PACKAGE_VERSION
00073 #else
00074 #define VERSION "1.0"
00075 #endif
00076 #endif
00077
00078 #ifdef __WIN32__
00079 # include <windows.h>
00080 # include <ole2.h>
00081 # include <tkPlatDecls.h>
00082
00083 # ifndef Tk_GetHWND
00084 EXTERN HWND Tk_GetHWND(Window win);
00085 # endif
00086 #endif
00087
00088
00089
00090
00091 #define TKDND_PACKAGE "tkdnd"
00092 #define TKDND_VERSION VERSION
00093
00094
00095
00096
00097 #define TKDND_MAX_DESCRIPTIONS_LENGTH 1034
00098 #define TKDND_MAX_DESCRIPTIONS_LENGTH_STR "1024"
00099
00100
00101
00102
00103
00104 #define TKDND_SOURCE 0
00105 #define TKDND_GETDATA 1
00106 #define TKDND_GETCURSOR 2
00107 #define TKDND_TARGET 10
00108 #define TKDND_DRAGENTER 11
00109 #define TKDND_DRAGLEAVE 12
00110 #define TKDND_DRAG 13
00111 #define TKDND_DROP 14
00112 #define TKDND_ASK 15
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 #ifdef DND_DEBUG
00123 #include <stdio.h>
00124 #ifdef __WIN32__
00125
00126
00127
00128 extern FILE *TkDND_Log;
00129 #define XDND_DEBUG(a) \
00130 fprintf(TkDND_Log, "%s, %d: " a,__FILE__,__LINE__); fflush(TkDND_Log)
00131 #define XDND_DEBUG2(a,b) \
00132 fprintf(TkDND_Log, "%s, %d: " a,__FILE__,__LINE__,b); fflush(TkDND_Log)
00133 #define XDND_DEBUG3(a,b,c) \
00134 fprintf(TkDND_Log, "%s, %d: " a,__FILE__,__LINE__,b,c); fflush(TkDND_Log)
00135 #define XDND_DEBUG4(a,b,c,d) \
00136 fprintf(TkDND_Log, "%s, %d: " a,__FILE__,__LINE__,b,c,d); fflush(TkDND_Log)
00137 #define XDND_DEBUG5(a,b,c,d,e) \
00138 fprintf(TkDND_Log, "%s, %d: " a,__FILE__,__LINE__,b,c,d,e); fflush(TkDND_Log)
00139 #define XDND_DEBUG6(a,b,c,d,e,f) \
00140 fprintf(TkDND_Log, "%s, %d: " a,__FILE__,__LINE__,b,c,d,e,f);fflush(TkDND_Log)
00141 #else
00142
00143
00144
00145 #define XDND_DEBUG(a) \
00146 printf("%s, %d: " a,__FILE__,__LINE__); fflush(stdout)
00147 #define XDND_DEBUG2(a,b) \
00148 printf("%s, %d: " a,__FILE__,__LINE__,b); fflush(stdout)
00149 #define XDND_DEBUG3(a,b,c) \
00150 printf("%s, %d: " a,__FILE__,__LINE__,b,c); fflush(stdout)
00151 #define XDND_DEBUG4(a,b,c,d) \
00152 printf("%s, %d: " a,__FILE__,__LINE__,b,c,d); fflush(stdout)
00153 #define XDND_DEBUG5(a,b,c,d,e) \
00154 printf("%s, %d: " a,__FILE__,__LINE__,b,c,d,e); fflush(stdout)
00155 #define XDND_DEBUG6(a,b,c,d,e,f) \
00156 printf("%s, %d: " a,__FILE__,__LINE__,b,c,d,e,f); fflush(stdout)
00157 #endif
00158 #else
00159
00160
00161
00162 #define XDND_DEBUG(a)
00163 #define XDND_DEBUG2(a,b)
00164 #define XDND_DEBUG3(a,b,c)
00165 #define XDND_DEBUG4(a,b,c,d)
00166 #define XDND_DEBUG5(a,b,c,d,e)
00167 #endif
00168
00169 typedef struct _DndType {
00170 int priority;
00171 #ifdef __WIN32__
00172 CLIPFORMAT type;
00173 CLIPFORMAT matchedType;
00174 #else
00175 Atom type;
00176 Atom matchedType;
00177 #endif
00178 char *typeStr;
00179 unsigned long eventType;
00180 unsigned long eventMask;
00181 char *script;
00182 struct _DndType *next;
00183 short EnterEventSent;
00184 } DndType;
00185
00186 typedef struct _DndInfo {
00187 Tcl_Interp *interp;
00188 Tk_Window topwin;
00189 Tk_Window tkwin;
00190 DndType head;
00191 #ifdef __WIN32__
00192 LPDROPTARGET DropTarget;
00193 #endif
00194 DndType *cbData;
00195 Tcl_HashEntry *hashEntry;
00196 } DndInfo;
00197
00198 typedef struct _DndClass {
00199 Tk_Window MainWindow;
00200 Tcl_Interp *interp;
00201 Display *display;
00202 } DndClass;
00203
00204 #ifndef LONG
00205 #define LONG long
00206 #endif
00207
00208 #ifdef MAC_TCL
00209
00210
00211
00212 #endif
00213
00214 #endif