| diff --git a/Rendering/Tk/CMakeLists.txt b/Rendering/Tk/CMakeLists.txt |
| index 916d376..976cc4f 100644 |
| --- a/Rendering/Tk/CMakeLists.txt |
| +++ b/Rendering/Tk/CMakeLists.txt |
| @@ -1,8 +1,6 @@ |
| vtk_module_export_info() |
| |
| -# The cmake code to find the libs is in vtkWrapTcl |
| -set(VTK_WRAP_TCL_FIND_LIBS 1) |
| -include(vtkWrapTcl) |
| +find_package(TCL) |
| |
| if(TK_FOUND AND VTK_USE_TK) |
| |
| @@ -31,6 +29,8 @@ if(TK_FOUND AND VTK_USE_TK) |
| set(try_paths "${TK_INCLUDE_PATH_PARENT}/PrivateHeaders") |
| endif() |
| if(try_file) |
| + include(vtkTclTkMacros) |
| + |
| VTK_GET_TCL_TK_VERSION ("TCL_TK_MAJOR_VERSION" "TCL_TK_MINOR_VERSION") |
| set(TCL_TK_VERSIOND "${TCL_TK_MAJOR_VERSION}.${TCL_TK_MINOR_VERSION}") |
| set(try_paths ${try_paths} |
| @@ -50,53 +50,17 @@ if(TK_FOUND AND VTK_USE_TK) |
| ${TK_INCLUDE_PATH} |
| ${TK_INTERNAL_PATH} |
| ${TK_XLIB_PATH} |
| - ${TCL_INCLUDE_PATH} |
| - ${VTK_SOURCE_DIR}/Wrapping/Tcl |
| - ${VTK_BINARY_DIR}/Wrapping/Tcl) |
| + ${TCL_INCLUDE_PATH}) |
| |
| if(VTK_USE_X) |
| include_directories(${VTK_BINARY_DIR}/Utilities/KWSys) |
| endif() |
| |
| - if (VTK_WRAP_TCL) |
| - set(Module_TCL_SRCS |
| - vtkTclTkWidgetsInit.cxx |
| - vtkTkRenderWidget.cxx |
| - vtkTkImageViewerWidget.cxx) |
| - |
| - if(VTK_USE_COCOA) |
| - set(Module_TCL_SRCS ${Module_TCL_SRCS} vtkCocoaTkUtilities.mm) |
| - |
| - # Set specified Objective-C++ flags, if any. |
| - if(VTK_REQUIRED_OBJCXX_FLAGS) |
| - set_source_files_properties(vtkCocoaTkUtilities.mm |
| - PROPERTIES COMPILE_FLAGS "${VTK_REQUIRED_OBJCXX_FLAGS}") |
| - endif() |
| - endif() |
| - |
| - set(Module_TCL_LIBS ${VTK_TK_LIBRARIES}) |
| - # Use special interactor for X and Tk. |
| - if(VTK_USE_X) |
| - find_package(X11 REQUIRED) |
| - if(NOT X11_Xt_FOUND) |
| - message(FATAL_ERROR "X11_Xt_LIB could not be found. Required for VTK X lib.") |
| - endif() |
| - set(Module_TCL_SRCS ${Module_TCL_SRCS} vtkXRenderWindowTclInteractor.cxx) |
| - set(Module_TCL_LIBS vtksys vtkRendering${VTK_RENDERING_BACKEND} ${TK_LIBRARY} ${X11_LIBRARIES}) |
| - endif() |
| - |
| - vtk_add_library(vtkRenderingTkTCL ${Module_TCL_SRCS}) |
| - |
| - vtk_module_link_libraries(vtkRenderingTkTCL |
| - vtkRenderingCore vtkCommonDataModel vtkCommonCoreTCL |
| - vtkInteractionImage |
| - ${Module_TCL_LIBS}) |
| - |
| - set_property(GLOBAL APPEND PROPERTY VTK_TCL_WRAPPED vtkRenderingTk) |
| - |
| - endif() |
| - |
| if (VTK_WRAP_PYTHON) |
| + configure_file( |
| + "${CMAKE_CURRENT_SOURCE_DIR}/vtkTkAppInitConfigure.h.in" |
| + "${CMAKE_CURRENT_BINARY_DIR}/vtkTkAppInitConfigure.h") |
| + |
| set(Module_PYTHON_SRCS |
| vtkPythonTkWidgetsInit.cxx |
| vtkTkRenderWidgetPython.cxx |
| @@ -129,6 +93,8 @@ if(TK_FOUND AND VTK_USE_TK) |
| vtk_module_link_libraries(vtkRenderingPythonTkWidgets |
| vtkRenderingCore vtkCommonDataModel |
| vtkInteractionImage |
| - ${Module_PYTHON_LIBS}) |
| + ${Module_PYTHON_LIBS} |
| + ${TCL_LIBRARY} |
| + ${TK_LIBRARY}) |
| endif() |
| endif() |
| diff --git a/Rendering/Tk/vtkPythonTkWidgetsInit.cxx b/Rendering/Tk/vtkPythonTkWidgetsInit.cxx |
| index 75a4e84..0b6e0b0 100644 |
| --- a/Rendering/Tk/vtkPythonTkWidgetsInit.cxx |
| +++ b/Rendering/Tk/vtkPythonTkWidgetsInit.cxx |
| @@ -23,10 +23,10 @@ |
| //---------------------------------------------------------------------------- |
| // Vtkrenderingpythontkwidgets_Init |
| // Called upon system startup to create the widget commands. |
| -extern "C" {VTK_TK_EXPORT int Vtkrenderingpythontkwidgets_Init(Tcl_Interp *interp);} |
| +extern "C" {VTK_EXPORT int Vtkrenderingpythontkwidgets_Init(Tcl_Interp *interp);} |
| |
| -extern "C" {VTK_TK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);} |
| -extern "C" {VTK_TK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);} |
| +extern "C" {VTK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);} |
| +extern "C" {VTK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);} |
| |
| #define VTKTK_TO_STRING(x) VTKTK_TO_STRING0(x) |
| #define VTKTK_TO_STRING0(x) VTKTK_TO_STRING1(x) |
| diff --git a/Rendering/Tk/vtkTcl.h b/Rendering/Tk/vtkTcl.h |
| new file mode 100644 |
| index 0000000..5b763d5 |
| --- /dev/null |
| +++ b/Rendering/Tk/vtkTcl.h |
| @@ -0,0 +1,28 @@ |
| +/*========================================================================= |
| + |
| + Program: Visualization Toolkit |
| + Module: vtkTcl.h |
| + |
| + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen |
| + All rights reserved. |
| + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. |
| + |
| + This software is distributed WITHOUT ANY WARRANTY; without even |
| + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
| + PURPOSE. See the above copyright notice for more information. |
| + |
| +=========================================================================*/ |
| +#ifndef vtkTcl_h |
| +#define vtkTcl_h |
| + |
| +#include "vtkTkAppInitConfigure.h" |
| + |
| +#ifdef VTK_TCL_TK_STATIC |
| +# ifndef STATIC_BUILD |
| +# define STATIC_BUILD |
| +# endif |
| +#endif |
| + |
| +#include <tcl.h> |
| + |
| +#endif |
| diff --git a/Rendering/Tk/vtkTclTkWidgetsInit.cxx b/Rendering/Tk/vtkTclTkWidgetsInit.cxx |
| deleted file mode 100644 |
| index 9e5fc31..0000000 |
| --- a/Rendering/Tk/vtkTclTkWidgetsInit.cxx |
| +++ /dev/null |
| @@ -1,51 +0,0 @@ |
| -/*========================================================================= |
| - |
| - Program: Visualization Toolkit |
| - Module: vtkTkWidgetsInit.cxx |
| - |
| - Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen |
| - All rights reserved. |
| - See Copyright.txt or http://www.kitware.com/Copyright.htm for details. |
| - |
| - This software is distributed WITHOUT ANY WARRANTY; without even |
| - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
| - PURPOSE. See the above copyright notice for more information. |
| - |
| -=========================================================================*/ |
| -#include "vtkTcl.h" |
| -#include "vtkTk.h" |
| -#include "vtkVersionMacros.h" |
| -#include "vtkTkImageViewerWidget.h" |
| -#include "vtkTkRenderWidget.h" |
| -#include "vtkImageData.h" |
| - |
| - |
| -//---------------------------------------------------------------------------- |
| -// Vtkrenderingtcltkwidgets_Init |
| -// Called upon system startup to create the widget commands. |
| -extern "C" {VTK_TK_EXPORT int Vtkrenderingtktcl_Init(Tcl_Interp *interp);} |
| - |
| -extern "C" {VTK_TK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);} |
| -extern "C" {VTK_TK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);} |
| - |
| -#define VTKTK_TO_STRING(x) VTKTK_TO_STRING0(x) |
| -#define VTKTK_TO_STRING0(x) VTKTK_TO_STRING1(x) |
| -#define VTKTK_TO_STRING1(x) #x |
| -#define VTKTK_VERSION VTKTK_TO_STRING(VTK_MAJOR_VERSION) "." VTKTK_TO_STRING(VTK_MINOR_VERSION) |
| - |
| -int Vtkrenderingtktcl_Init(Tcl_Interp *interp) |
| -{ |
| - // Forward the call to the real init functions. |
| - if(Vtktkrenderwidget_Init(interp) == TCL_OK && |
| - Vtktkimageviewerwidget_Init(interp) == TCL_OK) |
| - { |
| - // Report that the package is provided. |
| - return Tcl_PkgProvide(interp, (char*)"vtkRenderingTkTCL", |
| - (char*)VTKTK_VERSION); |
| - } |
| - else |
| - { |
| - // One of the widgets is not provided. |
| - return TCL_ERROR; |
| - } |
| -} |
| diff --git a/Rendering/Tk/vtkTclUtil.h b/Rendering/Tk/vtkTclUtil.h |
| new file mode 100644 |
| index 0000000..45db3c0 |
| --- /dev/null |
| +++ b/Rendering/Tk/vtkTclUtil.h |
| @@ -0,0 +1,118 @@ |
| +/*========================================================================= |
| + |
| + Program: Visualization Toolkit |
| + Module: vtkTclUtil.h |
| + |
| + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen |
| + All rights reserved. |
| + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. |
| + |
| + This software is distributed WITHOUT ANY WARRANTY; without even |
| + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
| + PURPOSE. See the above copyright notice for more information. |
| + |
| +=========================================================================*/ |
| + |
| +#ifndef vtkTclUtil_h |
| +#define vtkTclUtil_h |
| + |
| +#include "vtkObject.h" |
| +#include "vtkCommand.h" |
| +#include "vtkTcl.h" |
| + |
| +#ifdef _WIN32 |
| +#define VTKTCL_EXPORT __declspec( dllexport ) |
| +#else |
| +#define VTKTCL_EXPORT |
| +#endif |
| + |
| +extern VTKTCL_EXPORT void vtkTclUpdateCommand(Tcl_Interp *interp, |
| + char *name, |
| + vtkObject *obj); |
| + |
| +extern VTKTCL_EXPORT void vtkTclDeleteObjectFromHash(vtkObject *, |
| + unsigned long eventId, |
| + void *, void *); |
| +extern VTKTCL_EXPORT void vtkTclGenericDeleteObject(ClientData cd); |
| + |
| +extern VTKTCL_EXPORT void |
| +vtkTclGetObjectFromPointer(Tcl_Interp *interp, void *temp, |
| + const char *targetType); |
| + |
| +extern VTKTCL_EXPORT void * |
| +vtkTclGetPointerFromObject(const char *name, const char *result_type, |
| + Tcl_Interp *interp, int &error); |
| + |
| +extern VTKTCL_EXPORT void vtkTclVoidFunc(void *); |
| +extern VTKTCL_EXPORT void vtkTclVoidFuncArgDelete(void *); |
| +extern VTKTCL_EXPORT void vtkTclListInstances(Tcl_Interp *interp, |
| + ClientData arg); |
| +extern VTKTCL_EXPORT int vtkTclInDelete(Tcl_Interp *interp); |
| + |
| +extern VTKTCL_EXPORT int vtkTclNewInstanceCommand(ClientData cd, |
| + Tcl_Interp *interp, |
| + int argc, char *argv[]); |
| +extern VTKTCL_EXPORT void vtkTclDeleteCommandStruct(ClientData cd); |
| +extern VTKTCL_EXPORT |
| +void vtkTclCreateNew(Tcl_Interp *interp, const char *cname, |
| + ClientData (*NewCommand)(), |
| + int (*CommandFunction)(ClientData cd, |
| + Tcl_Interp *interp, |
| + int argc, char *argv[])); |
| + |
| +class vtkTclCommand : public vtkCommand |
| +{ |
| +public: |
| + static vtkTclCommand *New() { return new vtkTclCommand; }; |
| + |
| + void SetStringCommand(const char *arg); |
| + void SetInterp(Tcl_Interp *interp) { this->Interp = interp; }; |
| + |
| + void Execute(vtkObject *, unsigned long, void *); |
| + |
| + char *StringCommand; |
| + Tcl_Interp *Interp; |
| +protected: |
| + vtkTclCommand(); |
| + ~vtkTclCommand(); |
| +}; |
| + |
| +typedef struct _vtkTclVoidFuncArg |
| +{ |
| + Tcl_Interp *interp; |
| + char *command; |
| +} vtkTclVoidFuncArg; |
| + |
| +struct vtkTclCommandArgStruct |
| +{ |
| + void *Pointer; |
| + Tcl_Interp *Interp; |
| + unsigned long Tag; |
| +}; |
| + |
| +struct vtkTclCommandStruct |
| +{ |
| + ClientData (*NewCommand)(); |
| + int (*CommandFunction)(ClientData cd, Tcl_Interp *interp, |
| + int argc, char *argv[]); |
| +}; |
| + |
| +struct vtkTclInterpStruct |
| +{ |
| + Tcl_HashTable InstanceLookup; |
| + Tcl_HashTable PointerLookup; |
| + Tcl_HashTable CommandLookup; |
| + |
| + int Number; |
| + int DebugOn; |
| + int InDelete; |
| + int DeleteExistingObjectOnNew; |
| +}; |
| + |
| +extern VTKTCL_EXPORT |
| +void vtkTclApplicationInitExecutable(int argc, const char* const argv[]); |
| +extern VTKTCL_EXPORT |
| +void vtkTclApplicationInitTclTk(Tcl_Interp* interp, |
| + const char* const relative_dirs[]); |
| + |
| +#endif |
| diff --git a/Rendering/Tk/vtkTk.h b/Rendering/Tk/vtkTk.h |
| new file mode 100644 |
| index 0000000..ff13966 |
| --- /dev/null |
| +++ b/Rendering/Tk/vtkTk.h |
| @@ -0,0 +1,28 @@ |
| +/*========================================================================= |
| + |
| + Program: Visualization Toolkit |
| + Module: vtkTk.h |
| + |
| + Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen |
| + All rights reserved. |
| + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. |
| + |
| + This software is distributed WITHOUT ANY WARRANTY; without even |
| + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
| + PURPOSE. See the above copyright notice for more information. |
| + |
| +=========================================================================*/ |
| +#ifndef vtkTk_h |
| +#define vtkTk_h |
| + |
| +#include "vtkTkAppInitConfigure.h" |
| + |
| +#ifdef VTK_TCL_TK_STATIC |
| +# ifndef STATIC_BUILD |
| +# define STATIC_BUILD |
| +# endif |
| +#endif |
| + |
| +#include <tk.h> |
| + |
| +#endif |
| diff --git a/Rendering/Tk/vtkTkAppInitConfigure.h.in b/Rendering/Tk/vtkTkAppInitConfigure.h.in |
| new file mode 100644 |
| index 0000000..3e0dec7 |
| --- /dev/null |
| +++ b/Rendering/Tk/vtkTkAppInitConfigure.h.in |
| @@ -0,0 +1,18 @@ |
| +#ifndef vtkTkAppInitConfigure_h |
| +#define vtkTkAppInitConfigure_h |
| + |
| +/* Whether we are linking to Tcl/Tk statically. */ |
| +#cmakedefine VTK_TCL_TK_STATIC |
| + |
| +/* Whether Tk widgets are NOT initialized when vtkRendering loads. */ |
| +#cmakedefine VTK_USE_TK |
| + |
| +/* Whether the Tcl/Tk support files are copied to the build dir */ |
| +#cmakedefine VTK_TCL_TK_COPY_SUPPORT_LIBRARY |
| + |
| +/* Where the VTK Tcl packages can be found */ |
| +#define VTK_INSTALL_TCL_DIR "@VTK_INSTALL_TCL_DIR@" |
| + |
| +@VTK_EXTRA_TCL_WRAPPING_CODE@ |
| + |
| +#endif |
| diff --git a/Rendering/Tk/vtkTkImageViewerWidget.cxx b/Rendering/Tk/vtkTkImageViewerWidget.cxx |
| index d3ae0f0..5967b7f 100644 |
| --- a/Rendering/Tk/vtkTkImageViewerWidget.cxx |
| +++ b/Rendering/Tk/vtkTkImageViewerWidget.cxx |
| @@ -443,7 +443,7 @@ extern "C" |
| //---------------------------------------------------------------------------- |
| // vtkTkImageViewerWidget_Init |
| // Called upon system startup to create vtkTkImageViewerWidget command. |
| -extern "C" {VTK_TK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);} |
| +extern "C" {VTK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);} |
| |
| #define VTKTK_TO_STRING(x) VTKTK_TO_STRING0(x) |
| #define VTKTK_TO_STRING0(x) VTKTK_TO_STRING1(x) |
| diff --git a/Rendering/Tk/vtkTkRenderWidget.cxx b/Rendering/Tk/vtkTkRenderWidget.cxx |
| index 6c1825d..a30cc38 100644 |
| --- a/Rendering/Tk/vtkTkRenderWidget.cxx |
| +++ b/Rendering/Tk/vtkTkRenderWidget.cxx |
| @@ -759,14 +759,14 @@ extern "C" |
| //---------------------------------------------------------------------------- |
| // vtkTkRenderWidget_Init |
| // Called upon system startup to create vtkTkRenderWidget command. |
| -extern "C" {VTK_TK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);} |
| +extern "C" {VTK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);} |
| |
| #define VTKTK_TO_STRING(x) VTKTK_TO_STRING0(x) |
| #define VTKTK_TO_STRING0(x) VTKTK_TO_STRING1(x) |
| #define VTKTK_TO_STRING1(x) #x |
| #define VTKTK_VERSION VTKTK_TO_STRING(VTK_MAJOR_VERSION) "." VTKTK_TO_STRING(VTK_MINOR_VERSION) |
| |
| -int VTK_TK_EXPORT Vtktkrenderwidget_Init(Tcl_Interp *interp) |
| +int VTK_EXPORT Vtktkrenderwidget_Init(Tcl_Interp *interp) |
| { |
| // This widget requires Tk to function. |
| Tcl_PkgRequire(interp, (char *)"Tk", (char*)TK_VERSION, 0); |
| diff --git a/ThirdParty/TclTk/CMakeLists.txt b/ThirdParty/TclTk/CMakeLists.txt |
| index eb2b61d..904acf0 100644 |
| --- a/ThirdParty/TclTk/CMakeLists.txt |
| +++ b/ThirdParty/TclTk/CMakeLists.txt |
| @@ -19,9 +19,7 @@ endif() |
| vtk_dependent_option(VTK_USE_TK "Build VTK with Tk support" |
| ${VTK_USE_TK_DEFAULT} "VTK_CAN_USE_TK" OFF) |
| |
| -# The cmake code to find the libs is in vtkWrapTcl |
| -set(VTK_WRAP_TCL_FIND_LIBS 1) |
| -include(vtkWrapTcl) |
| +include(vtkTclTkMacros) |
| |
| # Subdirs |
| ADD_SUBDIRECTORY(internals) |