diff --git a/Applications/DataExplorer/VtkVis/VisualizationWidget.cpp b/Applications/DataExplorer/VtkVis/VisualizationWidget.cpp index 229ba5444343299e7343ec446ccb4f3fc6d27a8b..c612e8f7104158ce9741740fbf6bb2bcb2baf1e9 100644 --- a/Applications/DataExplorer/VtkVis/VisualizationWidget.cpp +++ b/Applications/DataExplorer/VtkVis/VisualizationWidget.cpp @@ -20,19 +20,22 @@ #include "VtkCustomInteractorStyle.h" #include "VtkPickCallback.h" +#include <vtkAxesActor.h> #include <vtkCamera.h> #include <vtkCellPicker.h> -#include <vtkRenderWindow.h> -#include <vtkRenderer.h> -#include <vtkSmartPointer.h> - -#include <vtkAxesActor.h> #include <vtkCommand.h> +#include <vtkGenericOpenGLRenderWindow.h> #include <vtkInteractorStyleRubberBandZoom.h> #include <vtkInteractorStyleSwitch.h> #include <vtkMath.h> +#include <vtkNew.h> #include <vtkOrientationMarkerWidget.h> #include <vtkPNGWriter.h> +#include <vtkRenderer.h> +#include <vtkRenderWindow.h> +#include <vtkRenderWindow.h> +#include <vtkRenderWindowInteractor.h> +#include <vtkSmartPointer.h> #include <vtkSmartPointer.h> #include <vtkWindowToImageFilter.h> @@ -49,30 +52,31 @@ VisualizationWidget::VisualizationWidget(QWidget* parent /*= 0*/) { this->setupUi(this); + vtkNew<vtkRenderer> ren; + _vtkRender = ren; + + vtkNew<vtkGenericOpenGLRenderWindow> renderWindow; + vtkWidget->SetRenderWindow(renderWindow); + vtkWidget->GetRenderWindow()->AddRenderer(ren); + _interactorStyle = VtkCustomInteractorStyle::New(); - vtkWidget->GetRenderWindow()->GetInteractor()->SetInteractorStyle(_interactorStyle); + renderWindow->GetInteractor()->SetInteractorStyle(_interactorStyle); + _interactorStyle->SetDefaultRenderer(ren); _vtkPickCallback = VtkPickCallback::New(); vtkSmartPointer<vtkCellPicker> picker = vtkSmartPointer<vtkCellPicker>::New(); picker->AddObserver(vtkCommand::EndPickEvent, _vtkPickCallback); - vtkWidget->GetRenderWindow()->GetInteractor()->SetPicker(picker); - - vtkSmartPointer<vtkRenderWindow> renderWindow = vtkWidget->GetRenderWindow(); - renderWindow->StereoCapableWindowOn(); - renderWindow->SetStereoTypeToCrystalEyes(); - _vtkRender = vtkRenderer::New(); - renderWindow->AddRenderer(_vtkRender); - _interactorStyle->SetDefaultRenderer(_vtkRender); + renderWindow->GetInteractor()->SetPicker(picker); QSettings settings; - _vtkRender->SetBackground(0.0,0.0,0.0); + ren->SetBackground(0.0,0.0,0.0); // Create an orientation marker using vtkAxesActor vtkSmartPointer<vtkAxesActor> axesActor = vtkSmartPointer<vtkAxesActor>::New(); _markerWidget = vtkOrientationMarkerWidget::New(); _markerWidget->SetOrientationMarker(axesActor); - _markerWidget->SetInteractor(vtkWidget->GetRenderWindow()->GetInteractor()); + _markerWidget->SetInteractor(renderWindow->GetInteractor()); _markerWidget->EnabledOn(); _markerWidget->InteractiveOff(); @@ -88,7 +92,6 @@ VisualizationWidget::~VisualizationWidget() _vtkPickCallback->Delete(); _interactorStyle->Delete(); _markerWidget->Delete(); - _vtkRender->Delete(); } VtkCustomInteractorStyle* VisualizationWidget::interactorStyle() const diff --git a/Applications/DataExplorer/VtkVis/VisualizationWidgetBase.ui b/Applications/DataExplorer/VtkVis/VisualizationWidgetBase.ui index 80476d5e960bd5c6d713bebb8101334ff6370f5b..fc8409953b1ae1a52b365df8e9dc4573fd00dce2 100644 --- a/Applications/DataExplorer/VtkVis/VisualizationWidgetBase.ui +++ b/Applications/DataExplorer/VtkVis/VisualizationWidgetBase.ui @@ -535,7 +535,7 @@ </layout> </item> <item> - <widget class="QVTKWidget" name="vtkWidget" native="true"> + <widget class="QVTKOpenGLWidget" name="vtkWidget" native="true"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> <horstretch>0</horstretch> @@ -548,9 +548,9 @@ </widget> <customwidgets> <customwidget> - <class>QVTKWidget</class> + <class>QVTKOpenGLWidget</class> <extends>QWidget</extends> - <header>QVTKWidget.h</header> + <header>QVTKOpenGLWidget.h</header> </customwidget> </customwidgets> <resources> diff --git a/Applications/DataExplorer/main.cpp b/Applications/DataExplorer/main.cpp index ee99061ff729464e88ebbdc472a92a179bc9a203..006000283bb94b187a51eb34adabf9ba4968fa2b 100644 --- a/Applications/DataExplorer/main.cpp +++ b/Applications/DataExplorer/main.cpp @@ -1,6 +1,8 @@ #include "mainwindow.h" #include <QApplication> +#include <QSurfaceFormat> +#include <QVTKOpenGLWidget.h> #include <logog/include/logog.hpp> #include <memory> @@ -23,6 +25,9 @@ int main(int argc, char* argv[]) InitializeSdkObjects(lSdkManager, lScene); #endif + // needed to ensure appropriate OpenGL context is created for VTK rendering. + QSurfaceFormat::setDefaultFormat(QVTKOpenGLWidget::defaultFormat()); + auto myOutputWindow = vtkSmartPointer<VtkConsoleOutputWindow>::New(); vtkOutputWindow::SetInstance(myOutputWindow); diff --git a/CHANGELOG.md b/CHANGELOG.md index 321a8d7ae7e0ed66292891b67b182ab072951b01..d62cdd84678b4775b087a3f5821a640edb4e1675 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -141,6 +141,7 @@ - added custom VTK filter to represent raster data as point clouds. [#2121](https://github.com/ufz/ogs/pull/2121) - geometrical points can now be converted into station points. [#2369](https://github.com/ufz/ogs/pull/2369) - fixed issue with geometrical surfaces not being loaded correctly. [#2388](https://github.com/ufz/ogs/pull/2388) +- Replace deprecated QVTKWidget with QVTKOpenGLWidget [#2432](https://github.com/ufz/ogs/pull/2432) ### Other notable code changes diff --git a/Jenkinsfile b/Jenkinsfile index 4ead58b2409998bd93758c6a5534863916a17a2b..889857b9f9575822fbb5db20570e1586a40f9a0a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -210,7 +210,7 @@ pipeline { post { always { recordIssues enabledForFailure: true, filters: [ - excludeFile('.*qrc_icons\\.cpp.*'), excludeMessage('.*QVTKWidget.*'), + excludeFile('.*qrc_icons\\.cpp.*'), excludeMessage('.*tmpnam.*')], tools: [gcc4(name: 'GCC-GUI', id: 'gcc4-gui', pattern: 'build/build*.log')], diff --git a/scripts/cmake/ConanSetup.cmake b/scripts/cmake/ConanSetup.cmake index d3cd29dc5890ad1e27b75b4fe78de3bec1e2423b..0e1eb1080503c035cfee0e1782a056354b4f7cb3 100644 --- a/scripts/cmake/ConanSetup.cmake +++ b/scripts/cmake/ConanSetup.cmake @@ -91,7 +91,6 @@ if(APPLE) endif() if(MSVC) set(CONAN_IMPORTS ${CONAN_IMPORTS} "bin, *.dll* -> ./bin") - set(CONAN_IMPORTS ${CONAN_IMPORTS} "plugins/platforms, *.dll* -> ./bin/platforms") endif() if(UNIX AND NOT APPLE) set(CONAN_IMPORTS ${CONAN_IMPORTS} "lib, *.so* -> ./lib") diff --git a/scripts/cmake/packaging/PackagingMac.cmake b/scripts/cmake/packaging/PackagingMac.cmake index 8854394bedc47cd48749a4073dad2fa6f05856cd..3c5fb14a10e9a0a2f1819fcd83ee3ace016fd16f 100644 --- a/scripts/cmake/packaging/PackagingMac.cmake +++ b/scripts/cmake/packaging/PackagingMac.cmake @@ -27,8 +27,8 @@ endif() if(OGS_BUILD_GUI) install_qt5_plugin("Qt5::QCocoaIntegrationPlugin" QT_PLUGINS) - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/qt.conf" + file(WRITE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" "[Paths]\nPlugins = ../${_qt_plugin_dir}\n") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/qt.conf" + install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" DESTINATION bin COMPONENT ogs_gui) endif() diff --git a/scripts/cmake/packaging/PackagingMacros.cmake b/scripts/cmake/packaging/PackagingMacros.cmake index ba153c854b3227a2f324c150419965f7555f67b3..de831ab953690faa5d739983498059b7f7b0fc23 100644 --- a/scripts/cmake/packaging/PackagingMacros.cmake +++ b/scripts/cmake/packaging/PackagingMacros.cmake @@ -75,6 +75,7 @@ macro(install_qt5_plugin _qt_plugin_name _qt_plugins_var) set(_qt_plugin_dir "plugins") endif() set(_qt_plugin_dest "${_qt_plugin_dir}/${_qt_plugin_type}") + file(COPY "${_qt_plugin_path}" DESTINATION "${_qt_plugin_dest}") install(FILES "${_qt_plugin_path}" DESTINATION "${_qt_plugin_dest}" ${COMPONENT}) diff --git a/scripts/cmake/packaging/PackagingWin.cmake b/scripts/cmake/packaging/PackagingWin.cmake index 983881a9e2d893aaaef6ef2a5b51561d09b5eea3..48ea5fdbeb8b85c4270285c3dff3a3837e91cdad 100644 --- a/scripts/cmake/packaging/PackagingWin.cmake +++ b/scripts/cmake/packaging/PackagingWin.cmake @@ -29,8 +29,8 @@ endif() if(OGS_BUILD_GUI) install_qt5_plugin("Qt5::QWindowsIntegrationPlugin" QT_PLUGINS) - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/qt.conf" + file(WRITE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" "[Paths]\nPlugins = ../${_qt_plugin_dir}\n") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/qt.conf" + install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" DESTINATION bin COMPONENT ogs_gui) endif()