diff --git a/CMakeExternals/ITK.cmake b/CMakeExternals/ITK.cmake index 3b099de8ab..1e86d97709 100644 --- a/CMakeExternals/ITK.cmake +++ b/CMakeExternals/ITK.cmake @@ -1,66 +1,66 @@ #----------------------------------------------------------------------------- # ITK #----------------------------------------------------------------------------- # Sanity checks if(DEFINED ITK_DIR AND NOT EXISTS ${ITK_DIR}) message(FATAL_ERROR "ITK_DIR variable is defined but corresponds to non-existing directory") endif() set(proj ITK) set(proj_DEPENDENCIES GDCM) if(MITK_USE_Python) list(APPEND proj_DEPENDENCIES CableSwig) endif() set(ITK_DEPENDS ${proj}) if(NOT DEFINED ITK_DIR) set(additional_cmake_args ) if(MINGW) set(additional_cmake_args -DCMAKE_USE_WIN32_THREADS:BOOL=ON -DCMAKE_USE_PTHREADS:BOOL=OFF) endif() - if(MITK_USE_Python) + if(MITK_USE_Python OR MITK_BUILD_org.mitk.gui.qt.python) list(APPEND additional_cmake_args -DUSE_WRAP_ITK:BOOL=ON -DITK_USE_REVIEW:BOOL=ON -DCableSwig_DIR:PATH=${CableSwig_DIR} -DWRAP_ITK_JAVA:BOOL=OFF -DWRAP_ITK_TCL:BOOL=OFF ) endif() if(GDCM_IS_2_0_18) set(ITK_PATCH_COMMAND ${CMAKE_COMMAND} -DTEMPLATE_FILE:FILEPATH=${MITK_SOURCE_DIR}/CMakeExternals/EmptyFileForPatching.dummy -P ${MITK_SOURCE_DIR}/CMakeExternals/PatchITK-3.20.cmake) endif() ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/InsightToolkit-3.20.1.tar.gz URL_MD5 90342ffa78bd88ae48b3f62866fbf050 INSTALL_COMMAND "" PATCH_COMMAND ${ITK_PATCH_COMMAND} CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} ${additional_cmake_args} -DBUILD_TESTING:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF -DITK_USE_SYSTEM_GDCM:BOOL=ON -DGDCM_DIR:PATH=${GDCM_DIR} DEPENDS ${proj_DEPENDENCIES} ) set(ITK_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() diff --git a/Plugins/org.mitk.gui.qt.python/CMakeLists.txt b/Plugins/org.mitk.gui.qt.python/CMakeLists.txt index 1790b048bf..9d894df5de 100644 --- a/Plugins/org.mitk.gui.qt.python/CMakeLists.txt +++ b/Plugins/org.mitk.gui.qt.python/CMakeLists.txt @@ -1,6 +1,9 @@ project(org_mitk_gui_qt_python) MACRO_CREATE_MITK_CTK_PLUGIN( EXPORT_DIRECTIVE org_mitk_gui_qt_python_EXPORT EXPORTED_INCLUDE_SUFFIXES src MODULE_DEPENDENCIES QmitkExt CTK) + +configure_file(PythonPath.h.in + "${CMAKE_CURRENT_BINARY_DIR}/PythonPath.h" @ONLY) diff --git a/Plugins/org.mitk.gui.qt.python/PythonPath.h.in b/Plugins/org.mitk.gui.qt.python/PythonPath.h.in new file mode 100644 index 0000000000..945904a8c3 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.python/PythonPath.h.in @@ -0,0 +1,2 @@ +#define PYTHONPATH_ITK_LIBRARY_DIRS "@ITK_LIBRARY_DIRS@" +#define PYTHONPATH_WRAP_ITK_DIR "@ITK_DIR@/Wrapping/WrapITK/Python" diff --git a/Plugins/org.mitk.gui.qt.python/src/internal/mitkPluginActivator.cpp b/Plugins/org.mitk.gui.qt.python/src/internal/mitkPluginActivator.cpp index 0453f271cf..5a897f6c56 100644 --- a/Plugins/org.mitk.gui.qt.python/src/internal/mitkPluginActivator.cpp +++ b/Plugins/org.mitk.gui.qt.python/src/internal/mitkPluginActivator.cpp @@ -1,42 +1,67 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "mitkPluginActivator.h" #include #include "QmitkPythonView.h" +#include "PythonPath.h" #include namespace mitk { -void PluginActivator::start(ctkPluginContext* context) -{ - BERRY_REGISTER_EXTENSION_CLASS(QmitkPythonView, context) -} + void PluginActivator::start(ctkPluginContext* context) + { + MITK_INFO << "registering python paths"; -void PluginActivator::stop(ctkPluginContext* context) -{ - Q_UNUSED(context) -} + QString itkLibDirs(PYTHONPATH_ITK_LIBRARY_DIRS); + MITK_INFO << "itkLibDirs" << itkLibDirs.toStdString(); + QString itkWrapItkDir(PYTHONPATH_WRAP_ITK_DIR); + MITK_INFO << "itkWrapItkDir" << itkWrapItkDir.toStdString(); -ctkAbstractPythonManager *PluginActivator::GetPythonManager() -{ - static ctkAbstractPythonManager PythonManager; - return &PythonManager; -} + QString basecommand = "sys.path.append('%1');"; + QString pythonCommand; + if( ! itkWrapItkDir.isEmpty() ) + { + pythonCommand = basecommand.arg(itkLibDirs); + MITK_INFO << "issuing command " << pythonCommand.toStdString(); + GetPythonManager()->executeString(pythonCommand, ctkAbstractPythonManager::SingleInput ); + + pythonCommand = basecommand.arg(itkWrapItkDir); + MITK_INFO << "issuing command " << pythonCommand.toStdString(); + GetPythonManager()->executeString(pythonCommand, ctkAbstractPythonManager::SingleInput ); + } + else + { + MITK_WARN << "No wrapping directory set for WrapITK. ITK Python Wrapping not available!"; + } + + BERRY_REGISTER_EXTENSION_CLASS(QmitkPythonView, context) + } + + void PluginActivator::stop(ctkPluginContext* context) + { + Q_UNUSED(context) + } + + ctkAbstractPythonManager *PluginActivator::GetPythonManager() + { + static ctkAbstractPythonManager PythonManager; + return &PythonManager; + } } Q_EXPORT_PLUGIN2(org_mitk_gui_qt_python, mitk::PluginActivator)