diff --git a/CMake/MITKDashboardSetup.cmake b/CMake/MITKDashboardSetup.cmake index bb45c8e907..59a8d0eb88 100644 --- a/CMake/MITKDashboardSetup.cmake +++ b/CMake/MITKDashboardSetup.cmake @@ -1,207 +1,206 @@ # This file is intended to be included at the end of a custom MITKDashboardScript.TEMPLATE.cmake file list(APPEND CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}") # # Automatically determined properties # set(MY_OPERATING_SYSTEM ) if(UNIX) # Download a utility script set(url "http://mitk.org/git/?p=MITK.git;a=blob_plain;f=CMake/mitkDetectOS.sh;hb=${hb}") set(dest "${CTEST_SCRIPT_DIRECTORY}/mitkDetectOS.sh") downloadFile("${url}" "${dest}") execute_process(COMMAND sh "${dest}" RESULT_VARIABLE _result OUTPUT_VARIABLE _out OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT _result) set(MY_OPERATING_SYSTEM "${_out}") endif() endif() if(NOT MY_OPERATING_SYSTEM) set(MY_OPERATING_SYSTEM "${CMAKE_HOST_SYSTEM}") # Windows 7, Linux-2.6.32, Darwin... endif() site_name(CTEST_SITE) if(NOT DEFINED MITK_USE_QT) set(MITK_USE_QT 1) endif() if(MITK_USE_QT) if(NOT QT_QMAKE_EXECUTABLE) find_program(QT_QMAKE_EXECUTABLE NAMES qmake qmake-qt4 HINTS ${QT_BINARY_DIR}) endif() execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} --version OUTPUT_VARIABLE MY_QT_VERSION RESULT_VARIABLE qmake_error) if(qmake_error) message(FATAL_ERROR "Error when executing ${QT_QMAKE_EXECUTABLE} --version\n${qmake_error}") endif() string(REGEX REPLACE ".*Qt version ([0-9.]+) .*" "\\1" MY_QT_VERSION ${MY_QT_VERSION}) endif() # # Project specific properties # if(NOT CTEST_BUILD_NAME) if(MITK_USE_QT) set(CTEST_BUILD_NAME "${MY_OPERATING_SYSTEM} ${MY_COMPILER} Qt${MY_QT_VERSION} ${CTEST_BUILD_CONFIGURATION}") else() set(CTEST_BUILD_NAME "${MY_OPERATING_SYSTEM} ${MY_COMPILER} ${CTEST_BUILD_CONFIGURATION}") endif() endif() set(PROJECT_BUILD_DIR "MITK-build") set(CTEST_PATH "$ENV{PATH}") if(WIN32) set(ANN_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/ANN-build/${CTEST_BUILD_CONFIGURATION}") set(CPPUNIT_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/CppUnit-build/${CTEST_BUILD_CONFIGURATION}") set(GLUT_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/GLUT-build/${CTEST_BUILD_CONFIGURATION}") set(GLEW_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/GLEW-build/${CTEST_BUILD_CONFIGURATION}") set(TINYXML_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/tinyxml-build/${CTEST_BUILD_CONFIGURATION}") set(QWT_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/Qwt-build/${CTEST_BUILD_CONFIGURATION}") - set(QXT_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/Qxt-build/${CTEST_BUILD_CONFIGURATION}") set(VTK_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/VTK-build/bin/${CTEST_BUILD_CONFIGURATION}") set(ACVD_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/ACVD-build/bin/${CTEST_BUILD_CONFIGURATION}") set(ITK_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/ITK-build/bin/${CTEST_BUILD_CONFIGURATION}") set(BOOST_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/Boost-install/lib") set(GDCM_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/GDCM-build/bin/${CTEST_BUILD_CONFIGURATION}") set(DCMTK_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/DCMTK-install/bin/${CTEST_BUILD_CONFIGURATION}") set(OPENCV_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/OpenCV-build/bin/${CTEST_BUILD_CONFIGURATION}") set(POCO_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/Poco-install/lib") set(SOFA_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/SOFA-build/bin/${CTEST_BUILD_CONFIGURATION}") set(BLUEBERRY_OSGI_DIR "${CTEST_BINARY_DIRECTORY}/MITK-build/bin/BlueBerry/org.blueberry.osgi/bin/${CTEST_BUILD_CONFIGURATION}") - set(CTEST_PATH "${CTEST_PATH};${CPPUNIT_BINARY_DIR};${QT_BINARY_DIR};${VTK_BINARY_DIR};${ANN_BINARY_DIR};${GLUT_BINARY_DIR};${GLEW_BINARY_DIR};${TINYXML_BINARY_DIR};${QWT_BINARY_DIR};${QXT_BINARY_DIR};${ACVD_BINARY_DIR};${ITK_BINARY_DIR};${BOOST_BINARY_DIR};${GDCM_BINARY_DIR};${DCMTK_BINARY_DIR};${OPENCV_BINARY_DIR};${POCO_BINARY_DIR};${SOFA_BINARY_DIR};${BLUEBERRY_OSGI_DIR}") + set(CTEST_PATH "${CTEST_PATH};${CPPUNIT_BINARY_DIR};${QT_BINARY_DIR};${VTK_BINARY_DIR};${ANN_BINARY_DIR};${GLUT_BINARY_DIR};${GLEW_BINARY_DIR};${TINYXML_BINARY_DIR};${QWT_BINARY_DIR};${ACVD_BINARY_DIR};${ITK_BINARY_DIR};${BOOST_BINARY_DIR};${GDCM_BINARY_DIR};${DCMTK_BINARY_DIR};${OPENCV_BINARY_DIR};${POCO_BINARY_DIR};${SOFA_BINARY_DIR};${BLUEBERRY_OSGI_DIR}") endif() set(ENV{PATH} "${CTEST_PATH}") set(SUPERBUILD_TARGETS "") # If the dashscript doesn't define a GIT_REPOSITORY variable, let's define it here. if(NOT DEFINED GIT_REPOSITORY OR GIT_REPOSITORY STREQUAL "") set(GIT_REPOSITORY "http://git.mitk.org/MITK.git") endif() # # Display build info # message("Site name: ${CTEST_SITE}") message("Build name: ${CTEST_BUILD_NAME}") message("Script Mode: ${SCRIPT_MODE}") message("Coverage: ${WITH_COVERAGE}, MemCheck: ${WITH_MEMCHECK}") # # Set initial cache options # if(${CMAKE_VERSION} VERSION_GREATER "2.8.9") set(CTEST_USE_LAUNCHERS 1) set(ENV{CTEST_USE_LAUNCHERS_DEFAULT} 1) endif() # Remove this if block after all dartclients work if(DEFINED ADDITIONNAL_CMAKECACHE_OPTION) message(WARNING "Rename ADDITIONNAL to ADDITIONAL in your dartlclient script: ${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}") set(ADDITIONAL_CMAKECACHE_OPTION ${ADDITIONNAL_CMAKECACHE_OPTION}) endif() if(NOT DEFINED MITK_USE_ACVD) set(MITK_USE_ACVD 1) endif() if(NOT DEFINED MITK_USE_Boost) set(MITK_USE_Boost 1) endif() if(NOT DEFINED MITK_USE_OpenCV) set(MITK_USE_OpenCV 1) endif() if(NOT DEFINED MITK_USE_Poco) set(MITK_USE_Poco 1) endif() if(NOT DEFINED MITK_USE_Python) if(WIN32) set(MITK_USE_Python FALSE) else() set(MITK_USE_Python TRUE) endif() endif() if(NOT DEFINED MITK_USE_SOFA) set(MITK_USE_SOFA 1) endif() if(NOT DEFINED MITK_VTK_DEBUG_LEAKS) set(MITK_VTK_DEBUG_LEAKS 1) endif() if(NOT DEFINED MITK_BUILD_ALL_APPS) set(MITK_BUILD_ALL_APPS TRUE) endif() if(NOT DEFINED BLUEBERRY_BUILD_ALL_PLUGINS) set(BLUEBERRY_BUILD_ALL_PLUGINS TRUE) endif() if(NOT DEFINED MITK_BUILD_ALL_PLUGINS) set(MITK_BUILD_ALL_PLUGINS TRUE) endif() if(NOT DEFINED MITK_BUILD_EXAMPLES) set(MITK_BUILD_EXAMPLES TRUE) endif() if(NOT BUILD_DiffusionMiniApps) set(BUILD_DiffusionMiniApps TRUE) endif() set(INITIAL_CMAKECACHE_OPTIONS " BLUEBERRY_BUILD_ALL_PLUGINS:BOOL=${MITK_BUILD_ALL_PLUGINS} MITK_BUILD_ALL_PLUGINS:BOOL=${MITK_BUILD_ALL_PLUGINS} MITK_BUILD_ALL_APPS:BOOL=${MITK_BUILD_ALL_APPS} MITK_BUILD_EXAMPLES:BOOL=${MITK_BUILD_EXAMPLES} SUPERBUILD_EXCLUDE_MITKBUILD_TARGET:BOOL=TRUE MITK_USE_ACVD:BOOL=${MITK_USE_ACVD} MITK_USE_Boost:BOOL=${MITK_USE_Boost} MITK_USE_OpenCV:BOOL=${MITK_USE_OpenCV} MITK_USE_Poco:BOOL=${MITK_USE_Poco} MITK_USE_Python:BOOL=${MITK_USE_Python} MITK_USE_SOFA:BOOL=${MITK_USE_SOFA} MITK_USE_QT:BOOL=${MITK_USE_QT} MITK_VTK_DEBUG_LEAKS:BOOL=${MITK_VTK_DEBUG_LEAKS} ${ADDITIONAL_CMAKECACHE_OPTION} ") if(MITK_USE_QT) set(INITIAL_CMAKECACHE_OPTIONS "${INITIAL_CMAKECACHE_OPTIONS} QT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}") endif() # Write a cache file for populating the MITK initial cache (not the superbuild cache). # This can be used to provide variables which are not passed through the # superbuild process to the MITK configure step) if(MITK_INITIAL_CACHE) set(mitk_cache_file "${CTEST_SCRIPT_DIRECTORY}/mitk_initial_cache.txt") file(WRITE "${mitk_cache_file}" "${MITK_INITIAL_CACHE}") set(INITIAL_CMAKECACHE_OPTIONS "${INITIAL_CMAKECACHE_OPTIONS} MITK_INITIAL_CACHE_FILE:INTERNAL=${mitk_cache_file} ") endif() # # Download and include dashboard driver script # set(url "http://mitk.org/git/?p=MITK.git;a=blob_plain;f=CMake/MITKDashboardDriverScript.cmake;hb=${hb}") set(dest ${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}.driver) downloadFile("${url}" "${dest}") include(${dest}) diff --git a/CMake/PackageDepends/MITK_Qxt_Config.cmake b/CMake/PackageDepends/MITK_Qxt_Config.cmake deleted file mode 100644 index f0ee7c0e44..0000000000 --- a/CMake/PackageDepends/MITK_Qxt_Config.cmake +++ /dev/null @@ -1,9 +0,0 @@ -# first look for the superbuild Qxt version, pointed to by Qxt_DIR -find_package(Qxt QUIET NO_MODULE) -if(NOT Qxt_FOUND) - # now try invoking a FindQxt.cmake script - find_package(Qxt REQUIRED) -endif() - -list(APPEND ALL_LIBRARIES ${Qxt_LIBRARIES}) -list(APPEND ALL_INCLUDE_DIRECTORIES ${Qxt_INCLUDE_DIRS}) diff --git a/CMake/mitkFunctionGetLibrarySearchPaths.cmake b/CMake/mitkFunctionGetLibrarySearchPaths.cmake index 60585b675e..8ca66499b5 100644 --- a/CMake/mitkFunctionGetLibrarySearchPaths.cmake +++ b/CMake/mitkFunctionGetLibrarySearchPaths.cmake @@ -1,177 +1,174 @@ function(mitkFunctionGetLibrarySearchPaths search_path intermediate_dir) set(_dir_candidates ${MITK_VTK_LIBRARY_DIRS} ${MITK_ITK_LIBRARY_DIRS} "${MITK_BINARY_DIR}/bin" "${MITK_BINARY_DIR}/bin/plugins") # Determine the Qt4/5 library installation prefix set(_qmake_location ) if(MITK_USE_Qt4) set(_qmake_location ${QT_QMAKE_EXECUTABLE}) elseif(MITK_USE_Qt5 AND TARGET ${Qt5Core_QMAKE_EXECUTABLE}) get_property(_qmake_location TARGET ${Qt5Core_QMAKE_EXECUTABLE} PROPERTY IMPORT_LOCATION) endif() if(_qmake_location) if(NOT _qt_install_libs) if(WIN32) execute_process(COMMAND ${_qmake_location} -query QT_INSTALL_BINS OUTPUT_VARIABLE _qt_install_libs OUTPUT_STRIP_TRAILING_WHITESPACE) else() execute_process(COMMAND ${_qmake_location} -query QT_INSTALL_LIBS OUTPUT_VARIABLE _qt_install_libs OUTPUT_STRIP_TRAILING_WHITESPACE) endif() file(TO_CMAKE_PATH "${_qt_install_libs}" _qt_install_libs) set(_qt_install_libs ${_qt_install_libs} CACHE INTERNAL "Qt library installation prefix" FORCE) endif() if(_qt_install_libs) list(APPEND _dir_candidates ${_qt_install_libs}) endif() elseif(MITK_USE_QT) message(WARNING "The qmake executable could not be found.") endif() get_property(_additional_paths GLOBAL PROPERTY MITK_ADDITIONAL_LIBRARY_SEARCH_PATHS) if(_additional_paths) list(APPEND _dir_candidates ${_additional_paths}) endif() if(VTK_DIR) find_package(VTK QUIET) if(VTK_RUNTIME_LIBRARY_DIRS) list(APPEND _dir_candidates ${VTK_RUNTIME_LIBRARY_DIRS}) endif() endif() # The code below is sub-optimal. It makes assumptions about # the structure of the build directories, pointed to by # the *_DIR variables. Instead, we should rely on package # specific "LIBRARY_DIRS" variables, if they exist. if(WIN32) if(DCMTK_DIR) list(APPEND _dir_candidates "${DCMTK_DIR}/bin") endif() if(OpenCV_DIR) list(APPEND _dir_candidates "${OpenCV_DIR}/bin") endif() if(SOFA_DIR) list(APPEND _dir_candidates "${SOFA_DIR}/bin") endif() if(Python_DIR) list(APPEND _dir_candidates "${Python_DIR}/bin") endif() if(SimpleITK_DIR) list(APPEND _dir_candidates "${SimpleITK_DIR}/bin") endif() list(APPEND _dir_candidates "${ITK_DIR}/bin") else() if(DCMTK_DIR) list(APPEND _dir_candidates "${DCMTK_DIR}/lib") endif() if(OpenCV_DIR) list(APPEND _dir_candidates "${OpenCV_DIR}/lib") endif() if(SOFA_DIR) list(APPEND _dir_candidates "${SOFA_DIR}/lib") endif() if(Python_DIR) list(APPEND _dir_candidates "${Python_DIR}/lib") endif() if(SimpleITK_DIR) list(APPEND _dir_candidates "${SimpleITK_DIR}/lib") endif() list(APPEND _dir_candidates "${ITK_DIR}/lib") endif() if(MITK_USE_Python AND CTK_PYTHONQT_INSTALL_DIR) list(APPEND _dir_candidates "${CTK_PYTHONQT_INSTALL_DIR}/bin") endif() if(MITK_USE_Boost AND MITK_USE_Boost_LIBRARIES AND NOT MITK_USE_SYSTEM_Boost) list(APPEND _dir_candidates "${Boost_LIBRARY_DIR}") endif() if(ACVD_DIR) list(APPEND _dir_candidates "${ACVD_DIR}/bin") endif() if(ANN_DIR) list(APPEND _dir_candidates "${ANN_DIR}") endif() if(CppUnit_DIR) list(APPEND _dir_candidates "${CppUnit_DIR}") endif() if(GLUT_DIR) list(APPEND _dir_candidates "${GLUT_DIR}") endif() if(GDCM_DIR) list(APPEND _dir_candidates "${GDCM_DIR}/bin") endif() if(GLEW_DIR) list(APPEND _dir_candidates "${GLEW_DIR}") endif() if(tinyxml_DIR) list(APPEND _dir_candidates "${tinyxml_DIR}") endif() if(Poco_DIR) list(APPEND _dir_candidates "${Poco_DIR}/lib") endif() if(Qwt_DIR) list(APPEND _dir_candidates "${Qwt_DIR}") endif() - if(Qxt_DIR) - list(APPEND _dir_candidates "${Qxt_DIR}") - endif() if(MITK_USE_TOF_PMDO3 OR MITK_USE_TOF_PMDCAMCUBE OR MITK_USE_TOF_PMDCAMBOARD) list(APPEND _dir_candidates "${MITK_PMD_SDK_DIR}/plugins" "${MITK_PMD_SDK_DIR}/bin") endif() if(MITK_USE_CTK) list(APPEND _dir_candidates "${CTK_LIBRARY_DIRS}") foreach(_ctk_library ${CTK_LIBRARIES}) if(${_ctk_library}_LIBRARY_DIRS) list(APPEND _dir_candidates "${${_ctk_library}_LIBRARY_DIRS}") endif() endforeach() endif() if(MITK_USE_BLUEBERRY) if(DEFINED CTK_PLUGIN_RUNTIME_OUTPUT_DIRECTORY) if(IS_ABSOLUTE "${CTK_PLUGIN_RUNTIME_OUTPUT_DIRECTORY}") list(APPEND _dir_candidates "${CTK_PLUGIN_RUNTIME_OUTPUT_DIRECTORY}") else() list(APPEND _dir_candidates "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CTK_PLUGIN_RUNTIME_OUTPUT_DIRECTORY}") endif() endif() endif() if(MITK_LIBRARY_DIRS) list(APPEND _dir_candidates ${MITK_LIBRARY_DIRS}) endif() list(REMOVE_DUPLICATES _dir_candidates) set(_search_dirs ) foreach(_dir ${_dir_candidates}) if(EXISTS "${_dir}/${intermediate_dir}") list(APPEND _search_dirs "${_dir}/${intermediate_dir}") else() list(APPEND _search_dirs "${_dir}") endif() endforeach() # Special handling for "internal" search dirs. The intermediate directory # might not have been created yet, so we can't check for its existence. # Hence we just add it for Windows without checking. set(_internal_search_dirs "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/plugins") if(WIN32) foreach(_dir ${_internal_search_dirs}) set(_search_dirs "${_dir}/${intermediate_dir}" ${_search_dirs}) endforeach() else() set(_search_dirs ${_internal_search_dirs} ${_search_dirs}) endif() list(REMOVE_DUPLICATES _search_dirs) set(${search_path} ${_search_dirs} PARENT_SCOPE) endfunction() diff --git a/CMakeExternals/Qxt.cmake b/CMakeExternals/Qxt.cmake deleted file mode 100644 index 3e56c585ef..0000000000 --- a/CMakeExternals/Qxt.cmake +++ /dev/null @@ -1,43 +0,0 @@ -#----------------------------------------------------------------------------- -# Qxt -#----------------------------------------------------------------------------- - -if(MITK_USE_Qxt) - -# Sanity checks -if(DEFINED Qxt_DIR AND NOT EXISTS ${Qxt_DIR}) - message(FATAL_ERROR "Qxt_DIR variable is defined but corresponds to non-existing directory") -endif() - -set(proj Qxt) -set(proj_DEPENDENCIES ) -set(${proj}_DEPENDS ${proj}) - -if(NOT DEFINED ${proj}_DIR) - - set(patch_cmd ${CMAKE_COMMAND} -Dproj:STRING=${proj} -Dproj_target:STRING=QxtCore -P ${CMAKE_CURRENT_LIST_DIR}/GenerateDefaultCMakeBuildSystem.cmake) - - ExternalProject_Add(${proj} - SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src - BINARY_DIR ${proj}-build - PREFIX ${proj}-cmake - URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/libqxt-3e7424f842d4.tar.gz - URL_MD5 a41a1e6d114cdabfc655f278176ca062 - PATCH_COMMAND ${patch_cmd} - INSTALL_COMMAND "" - CMAKE_GENERATOR ${gen} - CMAKE_ARGS - ${ep_common_args} - ${qt_project_args} - DEPENDS ${proj_DEPENDENCIES} - ) - - set(${proj}_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) - -else() - - mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") - -endif() - -endif() diff --git a/CMakeExternals/QxtCMakeLists.txt b/CMakeExternals/QxtCMakeLists.txt deleted file mode 100644 index cfc018037b..0000000000 --- a/CMakeExternals/QxtCMakeLists.txt +++ /dev/null @@ -1,559 +0,0 @@ -if(DESIRED_QT_VERSION MATCHES 5) - cmake_minimum_required(VERSION 2.8.12) -else() - cmake_minimum_required(VERSION 2.8.4) -endif() - -project(Qxt) - -set(${PROJECT_NAME}_MAJOR_VERSION 0) -set(${PROJECT_NAME}_MINOR_VERSION 6) -set(${PROJECT_NAME}_PATCH_VERSION 99) -set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_VERSION}) - -macro(_qt_generate_mocs) - foreach(file ${ARGN}) - get_filename_component(source_path ${file} PATH) - get_filename_component(source_name ${file} NAME_WE) - get_filename_component(source_ext ${file} EXT) - - set(moc_file ${CMAKE_CURRENT_BINARY_DIR}/${source_path}/moc_${source_name}.cpp) - if(DESIRED_QT_VERSION MATCHES "4") - QT4_GENERATE_MOC(${file} ${moc_file}) - else() - qt5_generate_moc(${file} ${moc_file}) - endif() - set_property(SOURCE ${source_path}/${source_name}.cpp APPEND PROPERTY - OBJECT_DEPENDS ${moc_file}) - endforeach() -endmacro() - -macro(_qt_wrap_cpp) - if(DESIRED_QT_VERSION MATCHES "4") - qt4_wrap_cpp(${ARGN}) - else() - qt5_wrap_cpp(${ARGN}) - endif() -endmacro() - -macro(_qt_add_resources) - if(DESIRED_QT_VERSION MATCHES "4") - qt4_add_resources(${ARGN}) - else() - qt5_add_resources(${ARGN}) - endif() -endmacro() - -set(${PROJECT_NAME}_LIBRARIES - QxtCore - QxtWidgets - QxtNetwork - QxtWeb -) - -set(QXT_CORE_MOC_HEADERS - qxtabstractconnectionmanager.h - qxtboundfunction.h - qxtcsvmodel.h - qxtdaemon.h - qxtdeplex.h - qxtdeplex_p.h - qxtfifo.h - qxtfilelock.h - qxtjob.h - qxtjob_p.h - qxtlinesocket.h - qxtlinesocket_p.h - qxtlocale.h - qxtlogger.h - qxtlogger_p.h - qxtmultisignalwaiter.h - qxtnamespace.h - qxtpipe.h - qxtpipe_p.h - qxtpointerlist.h - qxtsignalgroup.h - qxtsignalwaiter.h - qxtslotjob.h - qxtslotjob_p.h - qxtstdio.h - qxtstdio_p.h - qxtstdstreambufdevice.h - qxtrpcservice.h - qxtrpcservice_p.h -) - -set(QXT_GUI_MOC_HEADERS - qxtbasespinbox.h - qxtcheckcombobox.h - qxtcheckcombobox_p.h - qxtconfigdialog.h - qxtconfigdialog_p.h - qxtconfigwidget.h - qxtconfigwidget_p.h - qxtconfirmationmessage.h - qxtcountrycombobox.h - qxtcountrycombobox_p.h - qxtcountrymodel.h - qxtcountrymodel_p.h - qxtcrumbview.h - qxtcrumbview_p.h - qxtflowview.h - qxtflowview_p.h - qxtgroupbox.h - qxtheaderview.h - qxtitemdelegate.h - qxtitemdelegate_p.h - qxtlabel.h - qxtletterboxwidget.h - qxtletterboxwidget_p.h - qxtlineedit.h - qxtlistwidget.h - qxtlistwidget_p.h - qxtlanguagecombobox.h - qxtlanguagecombobox_p.h - qxtprogresslabel.h - qxtproxystyle.h - qxtpushbutton.h - qxtspanslider.h - qxtspanslider_p.h - qxtstars.h - qxtstringspinbox.h - qxtstringvalidator.h - qxttablewidget.h - qxttablewidget_p.h - qxttabwidget.h - qxttabwidget_p.h - qxttooltip_p.h - qxttreewidget.h - qxttreewidget_p.h - - qxtscheduleheaderwidget.h - qxtscheduleitemdelegate.h - qxtscheduleview.h - qxtscheduleviewheadermodel_p.h - qxtscheduleview_p.h - - qxtsortfilterproxymodel.h - qxtfilterdialog.h - qxtfilterdialog_p.h - qxtlookuplineedit.h - - # !qws:!symbian - #qxtapplication.h - #qxtglobalshortcut.h -) - -set(QXT_NETWORK_MOC_HEADERS - qxtjsonrpcclient.h - qxtsmtp.h - qxtrpcpeer.h - qxtsmtp_p.h - qxtsslserver.h - qxtsslconnectionmanager.h - qxttcpconnectionmanager.h - qxttcpconnectionmanager_p.h - qxtxmlrpcclient.h -) - -set(QXT_WEB_MOC_HEADERS - qxtabstracthttpconnector.h - qxtabstractwebservice.h - qxtabstractwebsessionmanager.h - qxtabstractwebsessionmanager_p.h - qxthttpsessionmanager.h - qxtwebcontent.h - qxtwebservicedirectory.h - qxtwebservicedirectory_p.h - qxtwebslotservice.h - qxtwebcgiservice.h - qxtwebcgiservice_p.h -) - -set(QXT_NETWORK_MANUAL_MOC_HEADERS - qxtjsonrpccall.h - qxtxmlrpccall.h -) - -set(QXT_CORE_SOURCES - qxtabstractconnectionmanager.cpp - qxtabstractfileloggerengine.cpp - qxtabstractiologgerengine.cpp - qxtbasicfileloggerengine.cpp - qxtbasicstdloggerengine.cpp - qxtcommandoptions.cpp - qxtcsvmodel.cpp - qxtdaemon.cpp - qxtdatastreamsignalserializer.cpp - qxtdeplex.cpp - qxterror.cpp - qxtfifo.cpp - qxtfilelock.cpp - qxtglobal.cpp - qxthmac.cpp - qxtlocale.cpp - qxtjson.cpp - qxtjob.cpp - qxtlinesocket.cpp - qxtlinkedtree.cpp - qxtlogger.cpp - qxtloggerengine.cpp - qxtlogstream.cpp - qxtmetaobject.cpp - qxtmodelserializer.cpp - qxtmultisignalwaiter.cpp - qxtnull.cpp - qxtpipe.cpp - qxtpointerlist.cpp - qxtsignalgroup.cpp - qxtsignalwaiter.cpp - qxtslotjob.cpp - qxtslotmapper.cpp - qxtstdio.cpp - qxtstdstreambufdevice.cpp - qxttimer.cpp - qxtrpcservice.cpp - qxtxmlfileloggerengine.cpp -) - -set(QXT_GUI_SOURCES - qxtbasespinbox.cpp - qxtcheckcombobox.cpp - qxtconfigdialog.cpp - qxtconfigwidget.cpp - qxtconfirmationmessage.cpp - qxtcountrymodel.cpp - qxtcountrycombobox.cpp - qxtcrumbview.cpp - qxtflowview.cpp - qxtflowview_p.cpp - qxtgroupbox.cpp - qxtheaderview.cpp - qxtitemdelegate.cpp - qxtlabel.cpp - qxtletterboxwidget.cpp - qxtlineedit.cpp - qxtlistwidget.cpp - qxtlistwidgetitem.cpp - qxtlanguagecombobox.cpp - qxtprogresslabel.cpp - qxtproxystyle.cpp - qxtpushbutton.cpp - qxtspanslider.cpp - qxtstars.cpp - qxtstringspinbox.cpp - qxtstringvalidator.cpp - qxttablewidget.cpp - qxttablewidgetitem.cpp - qxttabwidget.cpp - qxttooltip.cpp - qxttreewidget.cpp - qxttreewidgetitem.cpp - - qxtscheduleitemdelegate.cpp - qxtscheduleview.cpp - qxtscheduleview_p.cpp - qxtscheduleviewheadermodel_p.cpp - qxtstyleoptionscheduleviewitem.cpp - qxtscheduleheaderwidget.cpp - - qxtsortfilterproxymodel.cpp - qxtfilterdialog.cpp - qxtlookuplineedit.cpp - - # !qws:!symbian - #qxtapplication.cpp - #qxtglobalshortcut.cpp -) - -set(QXT_NETWORK_SOURCES - qxtjsonrpccall.cpp - qxtjsonrpcclient.cpp - qxtmailattachment.cpp - qxtmailmessage.cpp - qxtrpcpeer.cpp - qxtsmtp.cpp - qxtsslserver.cpp - qxtsslconnectionmanager.cpp - qxttcpconnectionmanager.cpp - qxtxmlrpccall.cpp - qxtxmlrpcclient.cpp - qxtxmlrpc_p.cpp -) - -set(QXT_WEB_SOURCES - qxtabstracthttpconnector.cpp - qxtabstractwebservice.cpp - qxtabstractwebsessionmanager.cpp - qxthtmltemplate.cpp - qxthttpserverconnector.cpp - qxthttpsessionmanager.cpp - qxtscgiserverconnector.cpp - qxtwebcontent.cpp - qxtwebevent.cpp - qxtwebservicedirectory.cpp - qxtwebslotservice.cpp - qxtwebcgiservice.cpp -) - -if(UNIX) - list(APPEND QXT_CORE_MOC_HEADERS unix/qxtserialdevice.h unix/qxtserialdevice_p.h) - list(APPEND QXT_CORE_SOURCES - unix/qxtfilelock_unix.cpp unix/qxtserialdevice.cpp unix/qxtserialdevice_unix.cpp) - if(APPLE) - list(APPEND QXT_GUI_SOURCES - #mac/qxtapplication_mac.cpp - #mac/qxtglobalshortcut_mac.cpp - ) - else() - if(DESIRED_QT_VERSION MATCHES "5") - find_package(Qt5X11Extras REQUIRED) - endif() - list(APPEND QXT_GUI_SOURCES - #x11/qxtapplication_x11.cpp - #x11/qxtglobalshortcut_x11.cpp - x11/qxtscreen_x11.cpp - #x11/qxtwindowsystem_x11.cpp - ) - endif() -endif() - -if(NOT APPLE) - list(APPEND QXT_GUI_SOURCES - qxtscreen.cpp - #qxtwindowsystem.cpp - ) -endif() - -if(WIN32) - list(APPEND QXT_CORE_SOURCES win/qxtfilelock_win.cpp) - list(APPEND QXT_GUI_SOURCES - #win/qxtapplication_win.cpp - #win/qxtglobalshortcut_win.cpp - win/qxtscreen_win.cpp - #win/qxtwindowsystem_win.cpp - ) -endif() - -set(_qxt_core_moc_headers ) -foreach(_header ${QXT_CORE_MOC_HEADERS}) - list(APPEND _qxt_core_moc_headers src/core/${_header}) -endforeach() - -set(_qxt_gui_moc_headers ) -foreach(_header ${QXT_GUI_MOC_HEADERS}) - list(APPEND _qxt_gui_moc_headers src/widgets/${_header}) -endforeach() - -set(_qxt_network_moc_headers ) -foreach(_header ${QXT_NETWORK_MOC_HEADERS}) - list(APPEND _qxt_network_moc_headers src/network/${_header}) -endforeach() - -set(_qxt_network_manual_moc_headers ) -foreach(_header ${QXT_NETWORK_MANUAL_MOC_HEADERS}) - list(APPEND _qxt_network_manual_moc_headers src/network/${_header}) -endforeach() - -set(_qxt_web_moc_headers ) -foreach(_header ${QXT_WEB_MOC_HEADERS}) - list(APPEND _qxt_web_moc_headers src/web/${_header}) -endforeach() - -set(_qxt_core_sources ) -foreach(_source ${QXT_CORE_SOURCES}) - list(APPEND _qxt_core_sources src/core/${_source}) -endforeach() - -set(_qxt_gui_sources ) -foreach(_source ${QXT_GUI_SOURCES}) - list(APPEND _qxt_gui_sources src/widgets/${_source}) -endforeach() - -set(_qxt_network_sources ) -foreach(_source ${QXT_NETWORK_SOURCES}) - list(APPEND _qxt_network_sources src/network/${_source}) -endforeach() - -set(_qxt_web_sources ) -foreach(_source ${QXT_WEB_SOURCES}) - list(APPEND _qxt_web_sources src/web/${_source}) -endforeach() - -set(_qxt_gui_resources src/widgets/resources.qrc) - -set(${PROJECT_NAME}_INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR}/src/core - ${CMAKE_CURRENT_SOURCE_DIR}/include/QxtCore - ${CMAKE_CURRENT_SOURCE_DIR}/src/widgets - ${CMAKE_CURRENT_SOURCE_DIR}/include/QxtWidgets - ${CMAKE_CURRENT_SOURCE_DIR}/src/network - ${CMAKE_CURRENT_SOURCE_DIR}/include/QxtNetwork - ${CMAKE_CURRENT_SOURCE_DIR}/src/web - ${CMAKE_CURRENT_SOURCE_DIR}/include/QxtWeb - ) - -include_directories(${${PROJECT_NAME}_INCLUDE_DIRS}) - -if(DESIRED_QT_VERSION MATCHES "4") - find_package(Qt4 REQUIRED) - set(QT_USE_QTNETWORK 1) - set(QT_USE_QTDESIGNER 1) - include(${QT_USE_FILE}) - if("${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}" VERSION_LESS "4.8") - # We add the QT_NO_OPENSSL definition in case of Qt < 4.8 because - # the Qxt SSL code uses QSsl::TlsV1SslV3 which added in Qt 4.8. - # So even if Qt 4.7 was compiled with OpenSSL support, we manually - # disable it in Qxt to simplify the build system stuff and to avoid - # bumping the minimum required Qt version for MITK - add_definitions(-DQT_NO_OPENSSL) - endif() -else() - if (WIN32) - cmake_policy(SET CMP0020 NEW) # Automatically link Qt executables to qtmain target on Windows - endif() - find_package(Qt5 COMPONENTS Network Designer Widgets REQUIRED) -endif() - -# Build the QxtCore library -_qt_wrap_cpp(_qxt_core_sources ${_qxt_core_moc_headers}) - -add_library(QxtCore SHARED ${_qxt_core_sources}) -if(DESIRED_QT_VERSION MATCHES "4") - target_link_libraries(QxtCore ${QT_LIBRARIES}) -else() - target_link_libraries(QxtCore Qt5::Core) -endif() - -set_target_properties(QxtCore PROPERTIES - SOVERSION ${${PROJECT_NAME}_VERSION} - COMPILE_DEFINITIONS "BUILD_QXT_CORE") - -# Build the QxtWidgets (formerly QxtGui) library -_qt_wrap_cpp(_qxt_gui_sources ${_qxt_gui_moc_headers}) -_qt_add_resources(_qxt_gui_sources ${_qxt_gui_resources}) - -if(DESIRED_QT_VERSION MATCHES "4") - set(QxtGui_link_libraries ${QT_LIBRARIES}) -else() - set(QxtGui_link_libraries Qt5::Widgets) - if(UNIX AND NOT APPLE) - list(APPEND QxtGui_link_libraries Qt5::X11Extras) - endif() -endif() -if(APPLE) - find_library(CARBON_FW NAMES Carbon) - list(APPEND QxtGui_link_libraries ${CARBON_FW}) -endif() -add_library(QxtWidgets SHARED ${_qxt_gui_sources}) -target_link_libraries(QxtWidgets QxtCore ${QxtGui_link_libraries}) - -set_target_properties(QxtWidgets PROPERTIES - SOVERSION ${${PROJECT_NAME}_VERSION} - COMPILE_DEFINITIONS "BUILD_QXT_GUI") - -# Build the QxtNetwork library -_qt_wrap_cpp(_qxt_network_sources ${_qxt_network_moc_headers}) -_qt_add_resources(_qxt_network_sources ${_qxt_network_resources}) - -# The generate moc_* sources are included directly in .cpp files -_qt_generate_mocs(${_qxt_network_manual_moc_headers}) -include_directories(${CMAKE_CURRENT_BINARY_DIR}/src/network) - -add_library(QxtNetwork SHARED ${_qxt_network_sources}) -if(DESIRED_QT_VERSION MATCHES "4") - target_link_libraries(QxtNetwork QxtCore ${QT_LIBRARIES}) -else() - target_link_libraries(QxtNetwork Qt5::Network) -endif() - -set_target_properties(QxtNetwork PROPERTIES - SOVERSION ${${PROJECT_NAME}_VERSION} - COMPILE_DEFINITIONS "BUILD_QXT_NETWORK") - -# Build the QxtWeb library -_qt_wrap_cpp(_qxt_web_sources ${_qxt_web_moc_headers}) - -add_library(QxtWeb SHARED ${_qxt_web_sources}) -target_link_libraries(QxtWeb QxtCore QxtNetwork ${QT_LIBRARIES}) - -set_target_properties(QxtWeb PROPERTIES - SOVERSION ${${PROJECT_NAME}_VERSION} - COMPILE_DEFINITIONS "BUILD_QXT_WEB") - - -# Build the designer plug-in - -set(_qxt_designer_sources - src/designer/qxtbasespinboxplugin.cpp - src/designer/qxtcheckcomboboxplugin.cpp - src/designer/qxtcountrycomboboxplugin.cpp - src/designer/qxtdesignerplugin.cpp - src/designer/qxtdesignerplugins.cpp - src/designer/qxtflowviewplugin.cpp - src/designer/qxtgroupboxplugin.cpp - src/designer/qxtlabelplugin.cpp - src/designer/qxtlanguagecomboboxplugin.cpp - src/designer/qxtletterboxwidgetplugin.cpp - src/designer/qxtlineeditplugin.cpp - src/designer/qxtlistwidgetplugin.cpp - src/designer/qxtprogresslabelplugin.cpp - src/designer/qxtpushbuttonplugin.cpp - src/designer/qxtspansliderplugin.cpp - src/designer/qxtstarsplugin.cpp - src/designer/qxtstringspinboxplugin.cpp - src/designer/qxttablewidgetplugin.cpp - src/designer/qxttreewidgetplugin.cpp -) - -set(wrap_cpp_options ) -if(DESIRED_QT_VERSION MATCHES "5") - list(APPEND wrap_cpp_options TARGET QxtDesignerPlugins) -endif() - -_qt_wrap_cpp(_qxt_designer_sources - src/designer/qxtbasespinboxplugin.h - src/designer/qxtcheckcomboboxplugin.h - src/designer/qxtcountrycomboboxplugin.h - src/designer/qxtdesignerplugins.h - src/designer/qxtflowviewplugin.h - src/designer/qxtgroupboxplugin.h - src/designer/qxtlabelplugin.h - src/designer/qxtlanguagecomboboxplugin.h - src/designer/qxtletterboxwidgetplugin.h - src/designer/qxtlineeditplugin.h - src/designer/qxtlistwidgetplugin.h - src/designer/qxtprogresslabelplugin.h - src/designer/qxtpushbuttonplugin.h - src/designer/qxtspansliderplugin.h - src/designer/qxtstarsplugin.h - src/designer/qxtstringspinboxplugin.h - src/designer/qxttablewidgetplugin.h - src/designer/qxttreewidgetplugin.h - ${wrap_cpp_options} -) - -_qt_add_resources(_qxt_designer_sources src/designer/resources.qrc) -add_library(QxtDesignerPlugins SHARED ${_qxt_designer_sources}) -if(DESIRED_QT_VERSION MATCHES "4") - target_link_libraries(QxtDesignerPlugins QxtWidgets QxtCore ${QT_LIBRARIES}) -else() - target_link_libraries(QxtDesignerPlugins QxtWidgets QxtCore Qt5::Designer) -endif() - -set_target_properties(QxtDesignerPlugins PROPERTIES - SOVERSION ${${PROJECT_NAME}_VERSION} - COMPILE_DEFINITIONS BUILD_QXT_DESIGNER) - - -# Config files -configure_file(${PROJECT_NAME}Config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY) -export(TARGETS ${Qxt_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Exports.cmake) - -# Version information -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake - @ONLY - ) diff --git a/Modules/QtWidgetsExt/CMakeLists.txt b/Modules/QtWidgetsExt/CMakeLists.txt index fb35dcde93..95645b8c46 100644 --- a/Modules/QtWidgetsExt/CMakeLists.txt +++ b/Modules/QtWidgetsExt/CMakeLists.txt @@ -1,6 +1,6 @@ MITK_CREATE_MODULE( INCLUDE_DIRS QmitkApplicationBase QmitkPropertyObservers DEPENDS MitkImageStatistics MitkQtWidgets - PACKAGE_DEPENDS Qt4|QtWebKit Qwt Qxt + PACKAGE_DEPENDS CTK|CTKWidgets Qt4|QtWebKit Qwt WARNINGS_AS_ERRORS ) diff --git a/Modules/QtWidgetsExt/QmitkFloatingPointSpanSlider.cpp b/Modules/QtWidgetsExt/QmitkFloatingPointSpanSlider.cpp deleted file mode 100644 index 9aac03cc38..0000000000 --- a/Modules/QtWidgetsExt/QmitkFloatingPointSpanSlider.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/*=================================================================== - -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 "QmitkFloatingPointSpanSlider.h" -#include - -QmitkFloatingPointSpanSlider::QmitkFloatingPointSpanSlider(QWidget *parent) - : QxtSpanSlider(parent), m_LowerValue(0), m_UpperValue(1000), - m_Minimum(0), m_Maximum(1000), offset(0.0), factor(1.0), m_IntMode(false) -{ - this->QxtSpanSlider::setMinimum(0); - this->QxtSpanSlider::setMaximum(1000); - - connect(this, SIGNAL(spanChanged(int,int)), this, SLOT(IntSpanChanged(int,int))); -} - -void QmitkFloatingPointSpanSlider::setIntegerMode(bool intMode) -{ - m_IntMode = intMode; - this->QxtSpanSlider::setMinimum(m_Minimum); - this->QxtSpanSlider::setMaximum(m_Maximum); -} - -double QmitkFloatingPointSpanSlider::lowerValue() const -{ - if (m_IntMode) return this->QxtSpanSlider::lowerValue(); - return m_LowerValue; -} - -double QmitkFloatingPointSpanSlider::upperValue() const -{ - if (m_IntMode) return this->QxtSpanSlider::upperValue(); - return m_UpperValue; -} - -void QmitkFloatingPointSpanSlider::setLowerValue(double lower) -{ - m_LowerValue = lower; - if (m_IntMode) - { - this->QxtSpanSlider::setLowerValue(lower); - } - else - { - this->QxtSpanSlider::setLowerValue(scaleValue(lower)); - emit lowerValueChanged(lower); - } -} - -void QmitkFloatingPointSpanSlider::setUpperValue(double upper) -{ - m_UpperValue = upper; - if (m_IntMode) - { - this->QxtSpanSlider::setUpperValue(upper); - } - else - { - this->QxtSpanSlider::setUpperValue(scaleValue(upper)); - emit upperValueChanged(upper); - } -} - -void QmitkFloatingPointSpanSlider::setSpan(double lower, double upper) -{ - m_LowerValue = lower; - m_UpperValue = upper; - if (m_IntMode) - { - this->QxtSpanSlider::setLowerValue(lower); - this->QxtSpanSlider::setUpperValue(upper); - } - else - { - this->QxtSpanSlider::setLowerValue(scaleValue(lower)); - this->QxtSpanSlider::setUpperValue(scaleValue(upper)); - emit spanChanged(lower, upper); - } -} - -double QmitkFloatingPointSpanSlider::maximum() const -{ - if (m_IntMode) return this->QxtSpanSlider::maximum(); - return m_Maximum; -} - -double QmitkFloatingPointSpanSlider::minimum() const -{ - if (m_IntMode) return this->QxtSpanSlider::minimum(); - return m_Minimum; -} - -void QmitkFloatingPointSpanSlider::setMaximum(double max) -{ - if (m_IntMode) - { - this->QxtSpanSlider::setMaximum(max); - return; - } - - if (max < m_Minimum) - { - m_Minimum = max; - } - m_Maximum = max; - scaleSliderToInt(); - - if (m_LowerValue > m_Maximum) - { - m_LowerValue = m_Maximum; - this->QxtSpanSlider::setLowerValue(scaleValue(m_LowerValue)); - } - if (m_UpperValue > m_Maximum) - { - m_UpperValue = m_Maximum; - this->QxtSpanSlider::setUpperValue(scaleValue(m_UpperValue)); - } -} - -void QmitkFloatingPointSpanSlider::setMinimum(double min) -{ - if (m_IntMode) - { - this->QxtSpanSlider::setMinimum(min); - return; - } - - if (min > m_Maximum) - { - m_Maximum = min; - } - m_Minimum = min; - scaleSliderToInt(); - - if (m_LowerValue < m_Minimum) - { - m_LowerValue = m_Minimum; - this->QxtSpanSlider::setLowerValue(scaleValue(m_LowerValue)); - } - if (m_UpperValue < m_Minimum) - { - m_UpperValue = m_Minimum; - this->QxtSpanSlider::setUpperValue(scaleValue(m_UpperValue)); - } -} - -void QmitkFloatingPointSpanSlider::setRange(double min, double max) -{ - if (m_IntMode) - { - this->QxtSpanSlider::setRange(min, max); - m_Minimum = minimum(); - m_Maximum = maximum(); - m_LowerValue = lowerValue(); - m_UpperValue = upperValue(); - return; - } - - if (min > max) - { - min = max; - } - m_Minimum = min; - m_Maximum = max; - - if (m_LowerValue > m_Maximum) - { - m_LowerValue = m_Maximum; - this->QxtSpanSlider::setLowerValue(scaleValue(m_LowerValue)); - } - else if (m_LowerValue < m_Minimum) - { - m_LowerValue = m_Minimum; - this->QxtSpanSlider::setLowerValue(scaleValue(m_LowerValue)); - } - - if (m_UpperValue > m_Maximum) - { - m_UpperValue = m_Maximum; - this->QxtSpanSlider::setUpperValue(scaleValue(m_UpperValue)); - } - else if (m_UpperValue < m_Minimum) - { - m_UpperValue = m_Minimum; - this->QxtSpanSlider::setUpperValue(scaleValue(m_UpperValue)); - } - - scaleSliderToInt(); -} - -void QmitkFloatingPointSpanSlider::IntSpanChanged(int lower, int upper) -{ - if (m_IntMode) - { - m_LowerValue = lower; - m_UpperValue = upper; - } - else - { - m_LowerValue = unscaleValue(lower); - m_UpperValue = unscaleValue(upper); - } - - emit spanChanged(m_LowerValue, m_UpperValue); -} - -void QmitkFloatingPointSpanSlider::scaleSliderToInt() -{ - int tmpLower = unscaleValue(m_LowerValue); - int tmpUpper = unscaleValue(m_UpperValue); - - double range = m_Maximum - m_Minimum; - factor = range ? 1000.0 / range : 0; - offset = -m_Minimum; - - m_LowerValue = scaleValue(tmpLower); - m_UpperValue = scaleValue(tmpUpper); -} - -int QmitkFloatingPointSpanSlider::scaleValue(double val) -{ - int scaled = factor ? (offset + val)*factor : 0; - return scaled; -} - -double QmitkFloatingPointSpanSlider::unscaleValue(int val) -{ - double unscaled = factor ? static_cast(val)/factor - offset : 0; - return unscaled; -} - diff --git a/Modules/QtWidgetsExt/QmitkFloatingPointSpanSlider.h b/Modules/QtWidgetsExt/QmitkFloatingPointSpanSlider.h deleted file mode 100644 index c97de011a8..0000000000 --- a/Modules/QtWidgetsExt/QmitkFloatingPointSpanSlider.h +++ /dev/null @@ -1,87 +0,0 @@ -/*=================================================================== - -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. - -===================================================================*/ - - -#ifndef QMITKFLOATINGPOINTSPANSLIDER_H -#define QMITKFLOATINGPOINTSPANSLIDER_H - -#include - -#include -#include - -class MitkQtWidgetsExt_EXPORT QmitkFloatingPointSpanSlider : public QxtSpanSlider -{ - Q_OBJECT - Q_PROPERTY(double loweralue READ lowerValue WRITE setLowerValue - NOTIFY lowerValueChanged) - Q_PROPERTY(double upperValue READ upperValue WRITE setUpperValue - NOTIFY upperValueChanged) - Q_PROPERTY(double maximum READ maximum WRITE setMaximum) - Q_PROPERTY(double minimum READ minimum WRITE setMinimum) - -public: - - QmitkFloatingPointSpanSlider(QWidget *parent = 0); - - void setIntegerMode(bool intMode); - - double lowerValue() const; - double upperValue() const; - - double maximum() const; - double minimum() const; - - void setMaximum(double max); - void setMinimum(double min); - void setRange(double min, double max); - -signals: - - void lowerValueChanged(double lower); - void upperValueChanged(double upper); - void spanChanged(double lower, double upper); - -public slots: - - void setLowerValue(double lower); - void setUpperValue(double upper); - void setSpan(double lower, double upper); - -private slots: - - void IntSpanChanged(int lower, int upper); - -private: - - void scaleSliderToInt(); - inline int scaleValue(double val); - inline double unscaleValue(int val); - - double m_LowerValue; - double m_UpperValue; - - double m_Minimum; - double m_Maximum; - - double offset; - double factor; - - bool m_IntMode; -}; - -#endif - diff --git a/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.cpp b/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.cpp index 51b1d48376..d5fed5e961 100755 --- a/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.cpp +++ b/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.cpp @@ -1,268 +1,260 @@ /*=================================================================== 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 "QmitkTransferFunctionWidget.h" #include #include QmitkTransferFunctionWidget::QmitkTransferFunctionWidget(QWidget* parent, Qt::WindowFlags f) : QWidget(parent, f) { this->setupUi(this); // signals and slots connections connect(m_XEditScalarOpacity, SIGNAL(textEdited ( const QString & )), this, SLOT(SetXValueScalar( const QString & ))); connect(m_YEditScalarOpacity, SIGNAL(textEdited ( const QString & )), this, SLOT(SetYValueScalar( const QString & ))); connect(m_XEditGradientOpacity, SIGNAL(textEdited ( const QString & )), this, SLOT(SetXValueGradient( const QString & ))); connect(m_YEditGradientOpacity, SIGNAL(textEdited ( const QString & )), this, SLOT(SetYValueGradient( const QString & ))); connect(m_XEditColor, SIGNAL( textEdited ( const QString & ) ), this, SLOT(SetXValueColor( const QString & ))); - QPlastiqueStyle *sliderStyle = new QPlastiqueStyle(); - - m_RangeSlider->setMaximum(2048); m_RangeSlider->setMinimum(-2048); - m_RangeSlider->setHandleMovementMode(QxtSpanSlider::NoOverlapping); - m_RangeSlider->setStyle(sliderStyle); - connect(m_RangeSlider, SIGNAL(spanChanged(double,double)),this, SLOT(OnSpanChanged(double,double))); + m_RangeSlider->setMaximum(2048); + connect(m_RangeSlider, SIGNAL(valuesChanged(int,int)),this, SLOT(OnSpanChanged(int,int))); //reset button connect(m_RangeSliderReset, SIGNAL(pressed()), this, SLOT(OnResetSlider())); m_ScalarOpacityFunctionCanvas->SetQLineEdits(m_XEditScalarOpacity, m_YEditScalarOpacity); m_GradientOpacityCanvas->SetQLineEdits(m_XEditGradientOpacity, m_YEditGradientOpacity); m_ColorTransferFunctionCanvas->SetQLineEdits(m_XEditColor, 0); m_ScalarOpacityFunctionCanvas->SetTitle("Grayvalue -> Opacity"); m_GradientOpacityCanvas->SetTitle("Grayvalue/Gradient -> Opacity"); m_ColorTransferFunctionCanvas->SetTitle("Grayvalue -> Color"); } QmitkTransferFunctionWidget::~QmitkTransferFunctionWidget() { } -void QmitkTransferFunctionWidget::SetIntegerMode(bool intMode) -{ - m_RangeSlider->setIntegerMode(intMode); -} - void QmitkTransferFunctionWidget::SetScalarLabel(const QString& scalarLabel) { m_textLabelX->setText(scalarLabel); m_textLabelX_2->setText(scalarLabel); m_textLabelX_3->setText(scalarLabel); m_ScalarOpacityFunctionCanvas->SetTitle(scalarLabel + " -> Opacity"); m_GradientOpacityCanvas->SetTitle(scalarLabel + "/Gradient -> Opacity"); m_ColorTransferFunctionCanvas->SetTitle(scalarLabel + " -> Color"); } void QmitkTransferFunctionWidget::ShowScalarOpacityFunction(bool show) { m_ScalarOpacityWidget->setVisible(show); } void QmitkTransferFunctionWidget::ShowColorFunction(bool show) { m_ColorWidget->setVisible(show); } void QmitkTransferFunctionWidget::ShowGradientOpacityFunction(bool show) { m_GradientOpacityWidget->setVisible(show); } void QmitkTransferFunctionWidget::SetScalarOpacityFunctionEnabled(bool enable) { m_ScalarOpacityWidget->setEnabled(enable); } void QmitkTransferFunctionWidget::SetColorFunctionEnabled(bool enable) { m_ColorWidget->setEnabled(enable); } void QmitkTransferFunctionWidget::SetGradientOpacityFunctionEnabled(bool enable) { m_GradientOpacityWidget->setEnabled(enable); } void QmitkTransferFunctionWidget::SetDataNode(mitk::DataNode* node, const mitk::BaseRenderer* renderer) { if (node) { tfpToChange = dynamic_cast(node->GetProperty("TransferFunction", renderer)); if(!tfpToChange) { if (! dynamic_cast(node->GetData())) { MITK_WARN << "QmitkTransferFunctionWidget::SetDataNode called with non-image node"; goto turnOff; } node->SetProperty("TransferFunction", tfpToChange = mitk::TransferFunctionProperty::New() ); } mitk::TransferFunction::Pointer tf = tfpToChange->GetValue(); if( mitk::BaseData* data = node->GetData() ) { mitk::SimpleHistogram *h = histogramCache[data]; m_RangeSliderMin= h->GetMin(); m_RangeSliderMax= h->GetMax(); m_RangeSlider->blockSignals(true); m_RangeSlider->setMinimum(m_RangeSliderMin); m_RangeSlider->setMaximum(m_RangeSliderMax); - m_RangeSlider->setSpan( m_RangeSliderMin, m_RangeSliderMax); + m_RangeSlider->setMinimumValue(m_RangeSliderMin); + m_RangeSlider->setMaximumValue(m_RangeSliderMax); m_RangeSlider->blockSignals(false); m_ScalarOpacityFunctionCanvas->SetHistogram( h ); m_GradientOpacityCanvas->SetHistogram( h ); m_ColorTransferFunctionCanvas->SetHistogram( h ); } OnUpdateCanvas(); return; } turnOff: m_ScalarOpacityFunctionCanvas->setEnabled(false); m_ScalarOpacityFunctionCanvas->SetHistogram(0); m_GradientOpacityCanvas->setEnabled(false); m_GradientOpacityCanvas->SetHistogram(0); m_ColorTransferFunctionCanvas->setEnabled(false); m_ColorTransferFunctionCanvas->SetHistogram(0); tfpToChange = 0; } void QmitkTransferFunctionWidget::OnUpdateCanvas() { if(tfpToChange.IsNull()) return; mitk::TransferFunction::Pointer tf = tfpToChange->GetValue(); if(tf.IsNull()) return; m_ScalarOpacityFunctionCanvas->SetPiecewiseFunction( tf->GetScalarOpacityFunction() ); m_GradientOpacityCanvas->SetPiecewiseFunction( tf->GetGradientOpacityFunction() ); m_ColorTransferFunctionCanvas->SetColorTransferFunction( tf->GetColorTransferFunction() ); UpdateRanges(); m_ScalarOpacityFunctionCanvas->update(); m_GradientOpacityCanvas->update(); m_ColorTransferFunctionCanvas->update(); } void QmitkTransferFunctionWidget::SetXValueScalar( const QString text ) { if ( !text.endsWith( "." )) { m_ScalarOpacityFunctionCanvas->SetX(text.toFloat()); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); } } void QmitkTransferFunctionWidget::SetYValueScalar( const QString text ) { if ( !text.endsWith( "." )) { m_ScalarOpacityFunctionCanvas->SetY(text.toFloat()); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); } } void QmitkTransferFunctionWidget::SetXValueGradient( const QString text ) { if ( !text.endsWith( "." )) { m_GradientOpacityCanvas->SetX(text.toFloat()); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); } } void QmitkTransferFunctionWidget::SetYValueGradient( const QString text ) { if ( !text.endsWith( "." )) { m_GradientOpacityCanvas->SetY(text.toFloat()); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); } } void QmitkTransferFunctionWidget::SetXValueColor( const QString text ) { if ( !text.endsWith( "." )) { m_ColorTransferFunctionCanvas->SetX(text.toFloat()); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); } } void QmitkTransferFunctionWidget::UpdateRanges() { - double lower = m_RangeSlider->lowerValue(); - double upper = m_RangeSlider->upperValue(); + int lower = m_RangeSlider->minimumValue(); + int upper = m_RangeSlider->maximumValue(); m_ScalarOpacityFunctionCanvas->SetMin(lower); m_ScalarOpacityFunctionCanvas->SetMax(upper); m_GradientOpacityCanvas->SetMin(lower); m_GradientOpacityCanvas->SetMax(upper); m_ColorTransferFunctionCanvas->SetMin(lower); m_ColorTransferFunctionCanvas->SetMax(upper); } -void QmitkTransferFunctionWidget::OnSpanChanged(double, double) +void QmitkTransferFunctionWidget::OnSpanChanged(int, int) { UpdateRanges(); m_GradientOpacityCanvas->update(); m_ColorTransferFunctionCanvas->update(); m_ScalarOpacityFunctionCanvas->update(); } void QmitkTransferFunctionWidget::OnResetSlider() { m_RangeSlider->blockSignals(true); - m_RangeSlider->setUpperValue(m_RangeSliderMax); - m_RangeSlider->setLowerValue(m_RangeSliderMin); + m_RangeSlider->setMaximumValue(m_RangeSliderMax); + m_RangeSlider->setMinimumValue(m_RangeSliderMin); m_RangeSlider->blockSignals(false); UpdateRanges(); m_GradientOpacityCanvas->update(); m_ColorTransferFunctionCanvas->update(); m_ScalarOpacityFunctionCanvas->update(); } diff --git a/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.h b/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.h index 093e56e891..686f5b79d0 100755 --- a/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.h +++ b/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.h @@ -1,90 +1,88 @@ /*=================================================================== 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. ===================================================================*/ #ifndef QMITKTRANSFERFUNCTIONWIDGET_H #define QMITKTRANSFERFUNCTIONWIDGET_H #include "ui_QmitkTransferFunctionWidget.h" #include "MitkQtWidgetsExtExports.h" #include #include #include #include #include #include #include namespace mitk { class BaseRenderer; } class MitkQtWidgetsExt_EXPORT QmitkTransferFunctionWidget : public QWidget, public Ui::QmitkTransferFunctionWidget { Q_OBJECT public: QmitkTransferFunctionWidget(QWidget* parent = 0, Qt::WindowFlags f = 0); ~QmitkTransferFunctionWidget () ; void SetDataNode(mitk::DataNode* node, const mitk::BaseRenderer* renderer = NULL); - void SetIntegerMode(bool intMode); - void SetScalarLabel(const QString& scalarLabel); void ShowScalarOpacityFunction(bool show); void ShowColorFunction(bool show); void ShowGradientOpacityFunction(bool show); void SetScalarOpacityFunctionEnabled(bool enable); void SetColorFunctionEnabled(bool enable); void SetGradientOpacityFunctionEnabled(bool enable); public slots: void SetXValueScalar( const QString text ); void SetYValueScalar( const QString text ); void SetXValueGradient( const QString text ); void SetYValueGradient( const QString text ); void SetXValueColor( const QString text ); void OnUpdateCanvas(); void UpdateRanges(); void OnResetSlider(); - void OnSpanChanged (double lower, double upper); + void OnSpanChanged (int lower, int upper); protected: mitk::TransferFunctionProperty::Pointer tfpToChange; - double m_RangeSliderMin; - double m_RangeSliderMax; + int m_RangeSliderMin; + int m_RangeSliderMax; mitk::SimpleHistogramCache histogramCache; }; #endif diff --git a/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.ui b/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.ui index daa42305ef..7332ab3bae 100755 --- a/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.ui +++ b/Modules/QtWidgetsExt/QmitkTransferFunctionWidget.ui @@ -1,557 +1,557 @@ QmitkTransferFunctionWidget 0 0 300 542 1 1 Form 0 0 0 0 - + Change transfer function window range. Qt::Horizontal 0 0 48 16777215 Resets range to histogram minimum and maximum. Reset 0 3 0 0 0 0 0 1 0 64 Left-click to select a point or add a new point. Hold left mouse button to move selected point. Click right mouse button to delete a point. true 0 0 64 0 64 16777215 Edit x-coordinate (grayvalue) of currently selected point. Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 0 0 Edit x-coordinate (grayvalue) of currently selected point. Grayvalue false Qt::Horizontal 40 20 0 0 Edit y-coordinate (opacity) of currently selected point. Opacity Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false 0 0 64 0 64 16777215 Edit y-coordinate (opacity) of currently selected point. Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 0 0 0 0 0 0 0 1 0 48 Left-click to select a point or add a new point. Hold left mouse button to move selected point. Click right mouse button to delete a point. Double-click left mouse button to change color of a point. 0 0 64 0 64 16777215 Edit x-coordinate (grayvalue) of currently selected point. Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter Edit x-coordinate (grayvalue) of currently selected point. Grayvalue false Qt::Horizontal 40 20 0 2 0 0 0 0 0 1 0 64 Left-click to select a point or add a new point. Hold left mouse button to move selected point. Click right mouse button to delete a point. 0 0 64 0 64 16777215 Edit x-coordinate (grayvalue) of currently selected point. Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter Edit x-coordinate (grayvalue) of currently selected point. Grayvalue false Qt::Horizontal 40 20 Edit y-coordinate (opacity) of currently selected point. Opacity Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false 0 0 64 0 64 16777215 Edit y-coordinate (opacity) of currently selected point. Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter Qt::Vertical 20 0 QmitkPiecewiseFunctionCanvas QWidget
QmitkPiecewiseFunctionCanvas.h
QmitkColorTransferFunctionCanvas QWidget
QmitkColorTransferFunctionCanvas.h
- QmitkFloatingPointSpanSlider - QSlider -
QmitkFloatingPointSpanSlider.h
+ ctkRangeSlider + QWidget +
ctkRangeSlider.h
diff --git a/Modules/QtWidgetsExt/files.cmake b/Modules/QtWidgetsExt/files.cmake index b388a28ff2..5986b01ad1 100644 --- a/Modules/QtWidgetsExt/files.cmake +++ b/Modules/QtWidgetsExt/files.cmake @@ -1,116 +1,114 @@ set(CPP_FILES QmitkAboutDialog/QmitkAboutDialog.cpp QmitkPropertyObservers/QmitkBasePropertyView.cpp QmitkPropertyObservers/QmitkBoolPropertyWidget.cpp QmitkPropertyObservers/QmitkColorPropertyEditor.cpp QmitkPropertyObservers/QmitkColorPropertyView.cpp QmitkPropertyObservers/QmitkEnumerationPropertyWidget.cpp QmitkPropertyObservers/QmitkNumberPropertyEditor.cpp QmitkPropertyObservers/QmitkNumberPropertySlider.cpp QmitkPropertyObservers/QmitkNumberPropertyView.cpp QmitkPropertyObservers/QmitkPropertyViewFactory.cpp QmitkPropertyObservers/QmitkStringPropertyEditor.cpp QmitkPropertyObservers/QmitkStringPropertyOnDemandEdit.cpp QmitkPropertyObservers/QmitkStringPropertyView.cpp QmitkPropertyObservers/QmitkUGCombinedRepresentationPropertyWidget.cpp qclickablelabel.cpp QmitkBoundingObjectWidget.cpp QmitkCallbackFromGUIThread.cpp QmitkColorTransferFunctionCanvas.cpp QmitkCorrespondingPointSetsModel.cpp QmitkCorrespondingPointSetsView.cpp QmitkCorrespondingPointSetsWidget.cpp QmitkCrossWidget.cpp QmitkEditPointDialog.cpp QmitkFileChooser.cpp - QmitkFloatingPointSpanSlider.cpp QmitkGnuplotWidget.cpp QmitkHistogram.cpp QmitkHistogramJSWidget.cpp QmitkHistogramWidget.cpp QmitkHotkeyLineEdit.cpp QmitkModulesDialog.cpp QmitkModuleTableModel.cpp QmitkPiecewiseFunctionCanvas.cpp QmitkPlotWidget.cpp QmitkPlotDialog.cpp QmitkPointListModel.cpp QmitkPointListView.cpp QmitkPointListViewWidget.cpp QmitkPointListWidget.cpp QmitkPrimitiveMovieNavigatorWidget.cpp QmitkSelectableGLWidget.cpp QmitkSliceWidget.cpp QmitkSliderNavigatorWidget.cpp QmitkStandardViews.cpp QmitkStepperAdapter.cpp QmitkTransferFunctionCanvas.cpp QmitkTransferFunctionGeneratorWidget.cpp QmitkTransferFunctionWidget.cpp QmitkVideoBackground.cpp QmitkWebPage.cpp QtWidgetsExtRegisterClasses.cpp ) set(MOC_H_FILES QmitkAboutDialog/QmitkAboutDialog.h QmitkPropertyObservers/QmitkBasePropertyView.h QmitkPropertyObservers/QmitkBoolPropertyWidget.h QmitkPropertyObservers/QmitkColorPropertyEditor.h QmitkPropertyObservers/QmitkColorPropertyView.h QmitkPropertyObservers/QmitkEnumerationPropertyWidget.h QmitkPropertyObservers/QmitkNumberPropertyEditor.h QmitkPropertyObservers/QmitkNumberPropertySlider.h QmitkPropertyObservers/QmitkNumberPropertyView.h QmitkPropertyObservers/QmitkStringPropertyEditor.h QmitkPropertyObservers/QmitkStringPropertyOnDemandEdit.h QmitkPropertyObservers/QmitkStringPropertyView.h QmitkPropertyObservers/QmitkUGCombinedRepresentationPropertyWidget.h qclickablelabel.h QmitkBoundingObjectWidget.h QmitkCallbackFromGUIThread.h QmitkColorTransferFunctionCanvas.h QmitkCorrespondingPointSetsModel.h QmitkCorrespondingPointSetsView.h QmitkCorrespondingPointSetsWidget.h QmitkCrossWidget.h QmitkEditPointDialog.h QmitkFileChooser.h - QmitkFloatingPointSpanSlider.h QmitkGnuplotWidget.h QmitkHistogramJSWidget.h QmitkHistogramWidget.h QmitkHotkeyLineEdit.h QmitkPiecewiseFunctionCanvas.h QmitkPlotWidget.h QmitkPointListModel.h QmitkPointListView.h QmitkPointListViewWidget.h QmitkPointListWidget.h QmitkPrimitiveMovieNavigatorWidget.h QmitkSelectableGLWidget.h QmitkSliceWidget.h QmitkSliderNavigatorWidget.h QmitkStandardViews.h QmitkStepperAdapter.h QmitkTransferFunctionCanvas.h QmitkTransferFunctionGeneratorWidget.h QmitkTransferFunctionWidget.h QmitkVideoBackground.h QmitkWebPage.h ) set(UI_FILES QmitkAboutDialog/QmitkAboutDialogGUI.ui QmitkGnuplotWidget.ui QmitkPrimitiveMovieNavigatorWidget.ui QmitkSelectableGLWidget.ui QmitkSliceWidget.ui QmitkSliderNavigator.ui QmitkTransferFunctionGeneratorWidget.ui QmitkTransferFunctionWidget.ui ) set(QRC_FILES resources/QtWidgetsExt.qrc ) diff --git a/Plugins/org.mitk.gui.qt.volumevisualization/src/internal/QmitkVolumeVisualizationView.cpp b/Plugins/org.mitk.gui.qt.volumevisualization/src/internal/QmitkVolumeVisualizationView.cpp index 3fd2a7b691..e7ae864f41 100755 --- a/Plugins/org.mitk.gui.qt.volumevisualization/src/internal/QmitkVolumeVisualizationView.cpp +++ b/Plugins/org.mitk.gui.qt.volumevisualization/src/internal/QmitkVolumeVisualizationView.cpp @@ -1,351 +1,348 @@ /*=================================================================== 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 "QmitkVolumeVisualizationView.h" #include #include #include #include //#include #include #include #include #include #include #include #include "mitkHistogramGenerator.h" #include "QmitkPiecewiseFunctionCanvas.h" #include "QmitkColorTransferFunctionCanvas.h" #include "mitkBaseRenderer.h" #include "mitkVtkVolumeRenderingProperty.h" #include #include -#include const std::string QmitkVolumeVisualizationView::VIEW_ID = "org.mitk.views.volumevisualization"; enum RenderMode { RM_CPU_COMPOSITE_RAYCAST = 0, RM_CPU_MIP_RAYCAST = 1, RM_GPU_COMPOSITE_SLICING = 2, RM_GPU_COMPOSITE_RAYCAST = 3, RM_GPU_MIP_RAYCAST = 4 }; QmitkVolumeVisualizationView::QmitkVolumeVisualizationView() : QmitkAbstractView(), m_Controls(NULL) { } QmitkVolumeVisualizationView::~QmitkVolumeVisualizationView() { } void QmitkVolumeVisualizationView::CreateQtPartControl(QWidget* parent) { if (!m_Controls) { m_Controls = new Ui::QmitkVolumeVisualizationViewControls; m_Controls->setupUi(parent); - m_Controls->m_TransferFunctionWidget->SetIntegerMode(true); - // Fill the tf presets in the generator widget std::vector names; mitk::TransferFunctionInitializer::GetPresetNames(names); for (std::vector::const_iterator it = names.begin(); it != names.end(); ++it) { m_Controls->m_TransferFunctionGeneratorWidget->AddPreset(QString::fromStdString(*it)); } m_Controls->m_RenderMode->addItem("CPU raycast"); m_Controls->m_RenderMode->addItem("CPU MIP raycast"); m_Controls->m_RenderMode->addItem("GPU slicing"); // Only with VTK 5.6 or above #if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) )) m_Controls->m_RenderMode->addItem("GPU raycast"); m_Controls->m_RenderMode->addItem("GPU MIP raycast"); #endif connect( m_Controls->m_EnableRenderingCB, SIGNAL( toggled(bool) ),this, SLOT( OnEnableRendering(bool) )); connect( m_Controls->m_EnableLOD, SIGNAL( toggled(bool) ),this, SLOT( OnEnableLOD(bool) )); connect( m_Controls->m_RenderMode, SIGNAL( activated(int) ),this, SLOT( OnRenderMode(int) )); connect( m_Controls->m_TransferFunctionGeneratorWidget, SIGNAL( SignalUpdateCanvas( ) ), m_Controls->m_TransferFunctionWidget, SLOT( OnUpdateCanvas( ) ) ); connect( m_Controls->m_TransferFunctionGeneratorWidget, SIGNAL(SignalTransferFunctionModeChanged(int)), SLOT(OnMitkInternalPreset(int))); m_Controls->m_EnableRenderingCB->setEnabled(false); m_Controls->m_EnableLOD->setEnabled(false); m_Controls->m_RenderMode->setEnabled(false); m_Controls->m_TransferFunctionWidget->setEnabled(false); m_Controls->m_TransferFunctionGeneratorWidget->setEnabled(false); m_Controls->m_SelectedImageLabel->hide(); m_Controls->m_ErrorImageLabel->hide(); } } void QmitkVolumeVisualizationView::OnMitkInternalPreset( int mode ) { if (m_SelectedNode.IsNull()) return; mitk::DataNode::Pointer node(m_SelectedNode.GetPointer()); mitk::TransferFunctionProperty::Pointer transferFuncProp; if (node->GetProperty(transferFuncProp, "TransferFunction")) { //first item is only information if( --mode == -1 ) return; // -- Creat new TransferFunction mitk::TransferFunctionInitializer::Pointer tfInit = mitk::TransferFunctionInitializer::New(transferFuncProp->GetValue()); tfInit->SetTransferFunctionMode(mode); this->GetRenderWindowPart()->GetRenderingManager()->RequestUpdateAll(); m_Controls->m_TransferFunctionWidget->OnUpdateCanvas(); } } void QmitkVolumeVisualizationView::OnSelectionChanged(berry::IWorkbenchPart::Pointer /*part*/, const QList& nodes) { bool weHadAnImageButItsNotThreeDeeOrFourDee = false; mitk::DataNode::Pointer node; foreach (mitk::DataNode::Pointer currentNode, nodes) { if( currentNode.IsNotNull() && dynamic_cast(currentNode->GetData()) ) { if( dynamic_cast(currentNode->GetData())->GetDimension()>=3 ) { if (node.IsNull()) { node = currentNode; } } else { weHadAnImageButItsNotThreeDeeOrFourDee = true; } } } if( node.IsNotNull() ) { m_Controls->m_NoSelectedImageLabel->hide(); m_Controls->m_ErrorImageLabel->hide(); m_Controls->m_SelectedImageLabel->show(); std::string infoText; if (node->GetName().empty()) infoText = std::string("Selected Image: [currently selected image has no name]"); else infoText = std::string("Selected Image: ") + node->GetName(); m_Controls->m_SelectedImageLabel->setText( QString( infoText.c_str() ) ); m_SelectedNode = node; } else { if(weHadAnImageButItsNotThreeDeeOrFourDee) { m_Controls->m_NoSelectedImageLabel->hide(); m_Controls->m_ErrorImageLabel->show(); std::string infoText; infoText = std::string("only 3D or 4D images are supported"); m_Controls->m_ErrorImageLabel->setText( QString( infoText.c_str() ) ); } else { m_Controls->m_SelectedImageLabel->hide(); m_Controls->m_ErrorImageLabel->hide(); m_Controls->m_NoSelectedImageLabel->show(); } m_SelectedNode = 0; } UpdateInterface(); } void QmitkVolumeVisualizationView::UpdateInterface() { if(m_SelectedNode.IsNull()) { // turnoff all m_Controls->m_EnableRenderingCB->setChecked(false); m_Controls->m_EnableRenderingCB->setEnabled(false); m_Controls->m_EnableLOD->setChecked(false); m_Controls->m_EnableLOD->setEnabled(false); m_Controls->m_RenderMode->setCurrentIndex(0); m_Controls->m_RenderMode->setEnabled(false); m_Controls->m_TransferFunctionWidget->SetDataNode(0); m_Controls->m_TransferFunctionWidget->setEnabled(false); m_Controls->m_TransferFunctionGeneratorWidget->SetDataNode(0); m_Controls->m_TransferFunctionGeneratorWidget->setEnabled(false); return; } bool enabled = false; m_SelectedNode->GetBoolProperty("volumerendering",enabled); m_Controls->m_EnableRenderingCB->setEnabled(true); m_Controls->m_EnableRenderingCB->setChecked(enabled); if(!enabled) { // turnoff all except volumerendering checkbox m_Controls->m_EnableLOD->setChecked(false); m_Controls->m_EnableLOD->setEnabled(false); m_Controls->m_RenderMode->setCurrentIndex(0); m_Controls->m_RenderMode->setEnabled(false); m_Controls->m_TransferFunctionWidget->SetDataNode(0); m_Controls->m_TransferFunctionWidget->setEnabled(false); m_Controls->m_TransferFunctionGeneratorWidget->SetDataNode(0); m_Controls->m_TransferFunctionGeneratorWidget->setEnabled(false); return; } // otherwise we can activate em all enabled = false; m_SelectedNode->GetBoolProperty("volumerendering.uselod",enabled); m_Controls->m_EnableLOD->setEnabled(true); m_Controls->m_EnableLOD->setChecked(enabled); m_Controls->m_RenderMode->setEnabled(true); // Determine Combo Box mode { bool usegpu=false; bool useray=false; bool usemip=false; m_SelectedNode->GetBoolProperty("volumerendering.usegpu",usegpu); // Only with VTK 5.6 or above #if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) )) m_SelectedNode->GetBoolProperty("volumerendering.useray",useray); #endif m_SelectedNode->GetBoolProperty("volumerendering.usemip",usemip); int mode = 0; if(useray) { if(usemip) mode=RM_GPU_MIP_RAYCAST; else mode=RM_GPU_COMPOSITE_RAYCAST; } else if(usegpu) mode=RM_GPU_COMPOSITE_SLICING; else { if(usemip) mode=RM_CPU_MIP_RAYCAST; else mode=RM_CPU_COMPOSITE_RAYCAST; } m_Controls->m_RenderMode->setCurrentIndex(mode); } m_Controls->m_TransferFunctionWidget->SetDataNode(m_SelectedNode); m_Controls->m_TransferFunctionWidget->setEnabled(true); m_Controls->m_TransferFunctionGeneratorWidget->SetDataNode(m_SelectedNode); m_Controls->m_TransferFunctionGeneratorWidget->setEnabled(true); } void QmitkVolumeVisualizationView::OnEnableRendering(bool state) { if(m_SelectedNode.IsNull()) return; m_SelectedNode->SetProperty("volumerendering",mitk::BoolProperty::New(state)); UpdateInterface(); this->GetRenderWindowPart()->GetRenderingManager()->RequestUpdateAll(); } void QmitkVolumeVisualizationView::OnEnableLOD(bool state) { if(m_SelectedNode.IsNull()) return; m_SelectedNode->SetProperty("volumerendering.uselod",mitk::BoolProperty::New(state)); this->GetRenderWindowPart()->GetRenderingManager()->RequestUpdateAll(); } void QmitkVolumeVisualizationView::OnRenderMode(int mode) { if(m_SelectedNode.IsNull()) return; bool usegpu=mode==RM_GPU_COMPOSITE_SLICING; // Only with VTK 5.6 or above #if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) )) bool useray=(mode==RM_GPU_COMPOSITE_RAYCAST)||(mode==RM_GPU_MIP_RAYCAST); #endif bool usemip=(mode==RM_GPU_MIP_RAYCAST)||(mode==RM_CPU_MIP_RAYCAST); m_SelectedNode->SetProperty("volumerendering.usegpu",mitk::BoolProperty::New(usegpu)); // Only with VTK 5.6 or above #if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) )) m_SelectedNode->SetProperty("volumerendering.useray",mitk::BoolProperty::New(useray)); #endif m_SelectedNode->SetProperty("volumerendering.usemip",mitk::BoolProperty::New(usemip)); this->GetRenderWindowPart()->GetRenderingManager()->RequestUpdateAll(); } void QmitkVolumeVisualizationView::SetFocus() { } void QmitkVolumeVisualizationView::NodeRemoved(const mitk::DataNode* node) { if(m_SelectedNode == node) { m_SelectedNode=0; m_Controls->m_SelectedImageLabel->hide(); m_Controls->m_ErrorImageLabel->hide(); m_Controls->m_NoSelectedImageLabel->show(); UpdateInterface(); } } diff --git a/SuperBuild.cmake b/SuperBuild.cmake index c314290dca..6d01cade24 100644 --- a/SuperBuild.cmake +++ b/SuperBuild.cmake @@ -1,483 +1,473 @@ #----------------------------------------------------------------------------- # Convenient macro allowing to download a file #----------------------------------------------------------------------------- macro(downloadFile url dest) file(DOWNLOAD ${url} ${dest} STATUS status) list(GET status 0 error_code) list(GET status 1 error_msg) if(error_code) message(FATAL_ERROR "error: Failed to download ${url} - ${error_msg}") endif() endmacro() #----------------------------------------------------------------------------- # MITK Prerequisites #----------------------------------------------------------------------------- if(UNIX AND NOT APPLE) include(mitkFunctionCheckPackageHeader) # Check for libxt-dev mitkFunctionCheckPackageHeader(StringDefs.h libxt-dev /usr/include/X11/) # Check for libtiff4-dev mitkFunctionCheckPackageHeader(tiff.h libtiff4-dev) # Check for libwrap0-dev mitkFunctionCheckPackageHeader(tcpd.h libwrap0-dev) endif() #----------------------------------------------------------------------------- # Qt options for external projects and MITK #----------------------------------------------------------------------------- if(MITK_USE_QT) set(qt_project_args -DDESIRED_QT_VERSION:STRING=${DESIRED_QT_VERSION}) else() set(qt_project_args ) endif() if(MITK_USE_Qt4) list(APPEND qt_project_args -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} ) endif() #----------------------------------------------------------------------------- # ExternalProjects #----------------------------------------------------------------------------- set(external_projects ZLIB Python Numpy tinyxml GLUT ANN CppUnit GLEW VTK ACVD GDCM OpenCV Poco ITK Boost DCMTK CTK SOFA MITKData Qwt PCRE Swig SimpleITK ) -# Qxt supports Qt5. We need to also support it in QxtCMakeLists.txt -#if(MITK_USE_Qt4) - list(APPEND external_projects Qxt) -#endif() - # These are "hard" dependencies and always set to ON set(MITK_USE_tinyxml 1) set(MITK_USE_ANN 1) set(MITK_USE_GLEW 1) set(MITK_USE_GDCM 1) set(MITK_USE_ITK 1) set(MITK_USE_VTK 1) # Semi-hard dependencies, enabled by user-controlled variables if(MITK_USE_QT) set(MITK_USE_Qwt 1) - #if(MITK_USE_Qt4) - set(MITK_USE_Qxt 1) #TODO: Check how Qxt builds with Qt 5 - #endif() endif() if(MITK_USE_SOFA) set(MITK_USE_GLUT 1) endif() if(NOT MITK_USE_SYSTEM_PYTHON) set(MITK_USE_ZLIB 1) endif() if(MITK_USE_SimpleITK OR MITK_USE_Python) set(MITK_USE_SWIG 1) if(UNIX) set(MITK_USE_PCRE 1) endif() endif() # A list of "nice" external projects, playing well together with CMake set(nice_external_projects ${external_projects}) list(REMOVE_ITEM nice_external_projects Boost) foreach(proj ${nice_external_projects}) if(MITK_USE_${proj}) set(EXTERNAL_${proj}_DIR "${${proj}_DIR}" CACHE PATH "Path to ${proj} build directory") mark_as_advanced(EXTERNAL_${proj}_DIR) if(EXTERNAL_${proj}_DIR) set(${proj}_DIR ${EXTERNAL_${proj}_DIR}) endif() endif() endforeach() if(MITK_USE_Boost) set(EXTERNAL_BOOST_ROOT "${BOOST_ROOT}" CACHE PATH "Path to Boost directory") mark_as_advanced(EXTERNAL_BOOST_ROOT) if(EXTERNAL_BOOST_ROOT) set(BOOST_ROOT ${EXTERNAL_BOOST_ROOT}) endif() endif() # Setup file for setting custom ctest vars configure_file( CMake/SuperbuildCTestCustom.cmake.in ${MITK_BINARY_DIR}/CTestCustom.cmake @ONLY ) if(BUILD_TESTING) set(EXTERNAL_MITK_DATA_DIR "${MITK_DATA_DIR}" CACHE PATH "Path to the MITK data directory") mark_as_advanced(EXTERNAL_MITK_DATA_DIR) if(EXTERNAL_MITK_DATA_DIR) set(MITK_DATA_DIR ${EXTERNAL_MITK_DATA_DIR}) endif() endif() # Look for git early on, if needed if((BUILD_TESTING AND NOT EXTERNAL_MITK_DATA_DIR) OR (MITK_USE_CTK AND NOT EXTERNAL_CTK_DIR)) find_package(Git REQUIRED) endif() #----------------------------------------------------------------------------- # External project settings #----------------------------------------------------------------------------- include(ExternalProject) set(ep_base "${CMAKE_BINARY_DIR}/CMakeExternals") set_property(DIRECTORY PROPERTY EP_BASE ${ep_base}) set(ep_install_dir ${ep_base}/Install) #set(ep_build_dir ${ep_base}/Build) set(ep_source_dir ${ep_base}/Source) #set(ep_parallelism_level) set(ep_build_shared_libs ON) set(ep_build_testing OFF) if(NOT MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL) set(MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL http://mitk.org/download/thirdparty) endif() # Compute -G arg for configuring external projects with the same CMake generator: if(CMAKE_EXTRA_GENERATOR) set(gen "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}") else() set(gen "${CMAKE_GENERATOR}") endif() # Use this value where semi-colons are needed in ep_add args: set(sep "^^") ## if(MSVC_VERSION) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj /MP") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /MP") endif() set(ep_common_args -DBUILD_TESTING:BOOL=${ep_build_testing} -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir} -DCMAKE_PREFIX_PATH:PATH=${CMAKE_PREFIX_PATH} -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} #debug flags -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} #release flags -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} #relwithdebinfo -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO} #link flags -DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS} -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS} ) # Pass the CMAKE_OSX variables to external projects if(APPLE) set(MAC_OSX_ARCHITECTURE_ARGS -DCMAKE_OSX_ARCHITECTURES:PATH=${CMAKE_OSX_ARCHITECTURES} -DCMAKE_OSX_DEPLOYMENT_TARGET:PATH=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_OSX_SYSROOT:PATH=${CMAKE_OSX_SYSROOT} ) set(ep_common_args ${MAC_OSX_ARCHITECTURE_ARGS} ${ep_common_args} ) endif() # Include external projects foreach(p ${external_projects}) include(CMakeExternals/${p}.cmake) endforeach() #----------------------------------------------------------------------------- # Set superbuild boolean args #----------------------------------------------------------------------------- set(mitk_cmake_boolean_args BUILD_SHARED_LIBS WITH_COVERAGE BUILD_TESTING MITK_USE_QT MITK_BUILD_ALL_PLUGINS MITK_BUILD_ALL_APPS MITK_BUILD_TUTORIAL # Deprecated. Use MITK_BUILD_EXAMPLES instead MITK_BUILD_EXAMPLES MITK_USE_ACVD MITK_USE_CppUnit MITK_USE_GLEW MITK_USE_Boost MITK_USE_SYSTEM_Boost MITK_USE_BLUEBERRY MITK_USE_CTK MITK_USE_DCMTK MITK_USE_OpenCV MITK_USE_Poco MITK_USE_SOFA MITK_USE_Python MITK_USE_OpenCL MITK_ENABLE_PIC_READER ) #----------------------------------------------------------------------------- # Create the final variable containing superbuild boolean args #----------------------------------------------------------------------------- set(mitk_superbuild_boolean_args) foreach(mitk_cmake_arg ${mitk_cmake_boolean_args}) list(APPEND mitk_superbuild_boolean_args -D${mitk_cmake_arg}:BOOL=${${mitk_cmake_arg}}) endforeach() if(MITK_BUILD_ALL_PLUGINS) list(APPEND mitk_superbuild_boolean_args -DBLUEBERRY_BUILD_ALL_PLUGINS:BOOL=ON) endif() #----------------------------------------------------------------------------- # MITK Utilities #----------------------------------------------------------------------------- set(proj MITK-Utilities) ExternalProject_Add(${proj} DOWNLOAD_COMMAND "" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" DEPENDS # Mandatory dependencies ${tinyxml_DEPENDS} ${ANN_DEPENDS} ${VTK_DEPENDS} ${ITK_DEPENDS} # Optionnal dependencies ${ACVD_DEPENDS} ${CppUnit_DEPENDS} ${GLUT_DEPENDS} ${GLEW_DEPENDS} ${Boost_DEPENDS} ${CTK_DEPENDS} ${DCMTK_DEPENDS} ${OpenCV_DEPENDS} ${Poco_DEPENDS} ${SOFA_DEPENDS} ${MITK-Data_DEPENDS} ${Qwt_DEPENDS} - ${Qxt_DEPENDS} ${SimpleITK_DEPENDS} ${Numpy_DEPENDS} ) #----------------------------------------------------------------------------- # Additional MITK CXX/C Flags #----------------------------------------------------------------------------- set(MITK_ADDITIONAL_C_FLAGS "" CACHE STRING "Additional C Flags for MITK") set(MITK_ADDITIONAL_C_FLAGS_RELEASE "" CACHE STRING "Additional Release C Flags for MITK") set(MITK_ADDITIONAL_C_FLAGS_DEBUG "" CACHE STRING "Additional Debug C Flags for MITK") mark_as_advanced(MITK_ADDITIONAL_C_FLAGS MITK_ADDITIONAL_C_FLAGS_DEBUG MITK_ADDITIONAL_C_FLAGS_RELEASE) set(MITK_ADDITIONAL_CXX_FLAGS "" CACHE STRING "Additional CXX Flags for MITK") set(MITK_ADDITIONAL_CXX_FLAGS_RELEASE "" CACHE STRING "Additional Release CXX Flags for MITK") set(MITK_ADDITIONAL_CXX_FLAGS_DEBUG "" CACHE STRING "Additional Debug CXX Flags for MITK") mark_as_advanced(MITK_ADDITIONAL_CXX_FLAGS MITK_ADDITIONAL_CXX_FLAGS_DEBUG MITK_ADDITIONAL_CXX_FLAGS_RELEASE) set(MITK_ADDITIONAL_EXE_LINKER_FLAGS "" CACHE STRING "Additional exe linker flags for MITK") set(MITK_ADDITIONAL_SHARED_LINKER_FLAGS "" CACHE STRING "Additional shared linker flags for MITK") set(MITK_ADDITIONAL_MODULE_LINKER_FLAGS "" CACHE STRING "Additional module linker flags for MITK") mark_as_advanced(MITK_ADDITIONAL_EXE_LINKER_FLAGS MITK_ADDITIONAL_SHARED_LINKER_FLAGS MITK_ADDITIONAL_MODULE_LINKER_FLAGS) #----------------------------------------------------------------------------- # MITK Configure #----------------------------------------------------------------------------- if(MITK_INITIAL_CACHE_FILE) set(mitk_initial_cache_arg -C "${MITK_INITIAL_CACHE_FILE}") endif() set(mitk_optional_cache_args ) foreach(type RUNTIME ARCHIVE LIBRARY) if(DEFINED CTK_PLUGIN_${type}_OUTPUT_DIRECTORY) list(APPEND mitk_optional_cache_args -DCTK_PLUGIN_${type}_OUTPUT_DIRECTORY:PATH=${CTK_PLUGIN_${type}_OUTPUT_DIRECTORY}) endif() endforeach() # Optional python variables if(MITK_USE_Python) list(APPEND mitk_optional_cache_args -DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE} -DPYTHON_INCLUDE_DIR:PATH=${PYTHON_INCLUDE_DIR} -DPYTHON_LIBRARY:FILEPATH=${PYTHON_LIBRARY} -DPYTHON_INCLUDE_DIR2:PATH=${PYTHON_INCLUDE_DIR2} -DMITK_USE_SYSTEM_PYTHON:BOOL=${MITK_USE_SYSTEM_PYTHON} -DMITK_BUILD_org.mitk.gui.qt.python:BOOL=ON ) if( NOT MITK_USE_SYSTEM_PYTHON ) list(APPEND mitk_optional_cache_args # Folders are needed to create an installer -DPython_DIR:PATH=${Python_DIR} -DNumpy_DIR:PATH=${Numpy_DIR} ) endif() endif() set(proj MITK-Configure) ExternalProject_Add(${proj} LIST_SEPARATOR ^^ DOWNLOAD_COMMAND "" CMAKE_GENERATOR ${gen} CMAKE_CACHE_ARGS # --------------- Build options ---------------- -DBUILD_TESTING:BOOL=${ep_build_testing} -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/MITK-build/install -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} # --------------- Compile options ---------------- -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} ${MITK_ADDITIONAL_C_FLAGS}" "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} ${MITK_ADDITIONAL_CXX_FLAGS}" # debug flags "-DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} ${MITK_ADDITIONAL_CXX_FLAGS_DEBUG}" "-DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} ${MITK_ADDITIONAL_C_FLAGS_DEBUG}" # release flags "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} ${MITK_ADDITIONAL_CXX_FLAGS_RELEASE}" "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} ${MITK_ADDITIONAL_C_FLAGS_RELEASE}" # relwithdebinfo -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO} # link flags "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} ${MITK_ADDITIONAL_EXE_LINKER_FLAGS}" "-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS} ${MITK_ADDITIONAL_SHARED_LINKER_FLAGS}" "-DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS} ${MITK_ADDITIONAL_MODULE_LINKER_FLAGS}" # Output directories -DMITK_CMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_LIBRARY_OUTPUT_DIRECTORY} -DMITK_CMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_RUNTIME_OUTPUT_DIRECTORY} -DMITK_CMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_ARCHIVE_OUTPUT_DIRECTORY} # ------------- Boolean build options -------------- ${mitk_superbuild_boolean_args} ${mitk_optional_cache_args} -DMITK_USE_SUPERBUILD:BOOL=OFF -DMITK_BUILD_CONFIGURATION:STRING=${MITK_BUILD_CONFIGURATION} -DCTEST_USE_LAUNCHERS:BOOL=${CTEST_USE_LAUNCHERS} # ----------------- Miscellaneous --------------- -DMITK_CTEST_SCRIPT_MODE:STRING=${MITK_CTEST_SCRIPT_MODE} -DMITK_SUPERBUILD_BINARY_DIR:PATH=${MITK_BINARY_DIR} -DMITK_MODULES_TO_BUILD:INTERNAL=${MITK_MODULES_TO_BUILD} ${qt_project_args} -DMITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES} -DMITK_ACCESSBYITK_FLOATING_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES} -DMITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES} -DMITK_ACCESSBYITK_VECTOR_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES} -DMITK_ACCESSBYITK_DIMENSIONS:STRING=${MITK_ACCESSBYITK_DIMENSIONS} # --------------- External project dirs --------------- -DMITK_KWSTYLE_EXECUTABLE:FILEPATH=${MITK_KWSTYLE_EXECUTABLE} -DCTK_DIR:PATH=${CTK_DIR} -DDCMTK_DIR:PATH=${DCMTK_DIR} -Dtinyxml_DIR:PATH=${tinyxml_DIR} -DGLUT_DIR:PATH=${GLUT_DIR} -DGLEW_DIR:PATH=${GLEW_DIR} -DANN_DIR:PATH=${ANN_DIR} -DCppUnit_DIR:PATH=${CppUnit_DIR} -DVTK_DIR:PATH=${VTK_DIR} # FindVTK expects VTK_DIR -DITK_DIR:PATH=${ITK_DIR} # FindITK expects ITK_DIR -DACVD_DIR:PATH=${ACVD_DIR} -DOpenCV_DIR:PATH=${OpenCV_DIR} -DPoco_DIR:PATH=${Poco_DIR} -DSOFA_DIR:PATH=${SOFA_DIR} -DGDCM_DIR:PATH=${GDCM_DIR} -DBOOST_ROOT:PATH=${BOOST_ROOT} -DMITK_USE_Boost_LIBRARIES:STRING=${MITK_USE_Boost_LIBRARIES} -DMITK_DATA_DIR:PATH=${MITK_DATA_DIR} -DQwt_DIR:PATH=${Qwt_DIR} - -DQxt_DIR:PATH=${Qxt_DIR} -DSimpleITK_DIR:PATH=${SimpleITK_DIR} -DNumpy_DIR:PATH=${Numpy_DIR} CMAKE_ARGS ${mitk_initial_cache_arg} ${MAC_OSX_ARCHITECTURE_ARGS} SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} BINARY_DIR ${CMAKE_BINARY_DIR}/MITK-build BUILD_COMMAND "" INSTALL_COMMAND "" DEPENDS MITK-Utilities ) #----------------------------------------------------------------------------- # MITK #----------------------------------------------------------------------------- if(CMAKE_GENERATOR MATCHES ".*Makefiles.*") set(mitk_build_cmd "$(MAKE)") else() set(mitk_build_cmd ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/MITK-build --config ${CMAKE_CFG_INTDIR}) endif() if(NOT DEFINED SUPERBUILD_EXCLUDE_MITKBUILD_TARGET OR NOT SUPERBUILD_EXCLUDE_MITKBUILD_TARGET) set(MITKBUILD_TARGET_ALL_OPTION "ALL") else() set(MITKBUILD_TARGET_ALL_OPTION "") endif() add_custom_target(MITK-build ${MITKBUILD_TARGET_ALL_OPTION} COMMAND ${mitk_build_cmd} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MITK-build DEPENDS MITK-Configure ) #----------------------------------------------------------------------------- # Custom target allowing to drive the build of the MITK project itself #----------------------------------------------------------------------------- add_custom_target(MITK COMMAND ${mitk_build_cmd} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MITK-build )