Commit 41b51ad5 authored by Alexander Wiebel's avatar Alexander Wiebel
Browse files

Merge branch '580-qt6-support'

parents 3ba86f25 231d787f
......@@ -26,7 +26,7 @@ in every instance of OpenWalnut because they belong to special modules.
<a href="http://www.openwalnut.org/projects/openwalnut/wiki/FirstSteps">This</a> tutorial shows you the basic usage of OpenWalnut. You should consider reading this if you are a first time user.
<h2><a name="MainWindow" />Main Window</h2>
This is the main window of OpenWalnut. It is divided into three parts. The navigation views, the main view and the data manipulation GUI.
This is the main window of OpenWalnut. It is divided into three parts. The navigation views, the main view and the data manipulation GUI.<br>
<img src="images/2_overview.png"/>
<ul>
<li> 1,2, and 3 - The navigation windows. Use them for orientation and
......
<div style='font-family:sans-serif;'>
<div style='padding:10px; border:0px solid #000; border-bottom-width: 10px;color:#fff;background:#0c67a8;'>
<h1>
Welcome to OpenWalnut!
</h1>
</div>
<div style='padding:10px; background:#ddd;'>
<h3>Version Information</h3>
This is %OW_VERSION%. You can check out the
<a href="http://redmine.openwalnut.org/projects/openwalnut/wiki/ReleaseNotes">Release Notes</a> and the
<a href="http://redmine.openwalnut.org/versions/2">Changelog</a> for detailled information on fixed bugs, new features and other
improvements.
</div>
<div style='padding:10px; background:#eee;'>
<h3>Further Information</h3>
</div>
<div style='padding:10px; ;'>
Hello User! You see this dialog because you have started this version of OpenWalnut the first time.
Are you new to OpenWalnut? Have a look at <a href="http://www.openwalnut.org">http://www.openwalnut.org</a>!
<br>
<br>
We provide
<ul>
<li> <a href="http://redmine.openwalnut.org/projects/openwalnut/wiki/FirstSteps">a first steps tutorial</a>,
<li> a user documentation,
<li> programming tutorials,
<li> and the latest information on OpenWalnut.
</ul>
Do you have problems using OpenWalnut? Do not hesitate to ask:
<ul>
<li><a href="mailto:openwalnut@lists.informatik.uni-leipzig.de">Mailing list</a>
<li>IRC Chat on irc.freenode.net, channel #ow
</ul>
Found a bug? Do you have ideas for improvements? Please <a href="http://redmine.openwalnut.org/projects/openwalnut/wiki/Contribute">report</a> these issues! We can improve OpenWalnut only with your help and ideas.
<br><br>
<i>Thank you for using OpenWalnut!</i>
</div>
</div>
<table cellspacing="0" width="100%" style="font-family:sans-serif;">
<tr>
<td style="padding:20px;color:#fff;background:#0c67a8;">
<h1 style="margin:0;">Welcome to OpenWalnut!</h1>
</td>
</tr>
<tr>
<td style="background-color:#000;height:10px;"></td>
</tr>
<tr>
<td style="padding:10px; background:#ddd;">
<h3>Version Information</h3>
This is %OW_VERSION%. You can check out the
<a href="http://redmine.openwalnut.org/projects/openwalnut/wiki/ReleaseNotes">Release Notes</a> and the
<a href="http://redmine.openwalnut.org/versions/2">Changelog</a> for detailled information on fixed bugs, new features and other
improvements.
</td>
</tr>
<tr>
<td style="padding:10px; background:#eee;">
<h3>Further Information</h3>
</td>
</tr>
<tr>
<td style="padding:10px;">
Hello User! You see this dialog because you have started this version of OpenWalnut the first time.
Are you new to OpenWalnut? Have a look at <a href="http://www.openwalnut.org">http://www.openwalnut.org</a>!
<br>
<br>
We provide
<ul>
<li> <a href="http://redmine.openwalnut.org/projects/openwalnut/wiki/FirstSteps">a first steps tutorial</a>,
<li> a user documentation,
<li> programming tutorials,
<li> and the latest information on OpenWalnut.
</ul>
Do you have problems using OpenWalnut? Do not hesitate to ask:
<ul>
<li><a href="mailto:openwalnut@lists.informatik.uni-leipzig.de">Mailing list</a>
<li>IRC Chat on irc.freenode.net, channel #ow
</ul>
Found a bug? Do you have ideas for improvements? Please <a href="http://redmine.openwalnut.org/projects/openwalnut/wiki/Contribute">report</a> these issues! We can improve OpenWalnut only with your help and ideas.
<br><br>
<i>Thank you for using OpenWalnut!</i>
</td>
</tr>
</table>
......@@ -32,12 +32,12 @@ SET( LibName ${OW_LIB_OPENWALNUT} )
# CMAKEs naming of them. The quotes are necessary so the shell doesn't mess
# with these defines. WSharedLib::getSystemPrefix and
# getSystemSuffix hard codes the right strings for VC.
ADD_DEFINITIONS( '-DW_LIB_PREFIX="${CMAKE_SHARED_LIBRARY_PREFIX}"' )
ADD_DEFINITIONS( '-DW_LIB_SUFFIX="${CMAKE_SHARED_LIBRARY_SUFFIX}"' )
ADD_DEFINITIONS( "-DW_LIB_PREFIX=\"${CMAKE_SHARED_LIBRARY_PREFIX}\"" )
ADD_DEFINITIONS( "-DW_LIB_SUFFIX=\"${CMAKE_SHARED_LIBRARY_SUFFIX}\"" )
# Set the library path. It might be different from the expected "lib" path, especially when using multiarch or similar.
# This definition is used by WPathHelper internally.
ADD_DEFINITIONS( '-DW_LIB_DIR_RELATIVE="${OW_LIBRARY_DIR_RELATIVE}"' )
ADD_DEFINITIONS( "-DW_LIB_DIR_RELATIVE=\"${OW_LIBRARY_DIR_RELATIVE}\"" )
OPTION( OW_STATIC_BUILD "Enable this to build the core library as static library." OFF )
......
......@@ -22,28 +22,4 @@
//
//---------------------------------------------------------------------------
#include <limits>
#include "WLimits.h"
namespace wlimits
{
const double MAX_DOUBLE = std::numeric_limits< double >::max();
const float MAX_FLOAT = std::numeric_limits< float >::max();
const size_t MAX_SIZE_T = std::numeric_limits< size_t >::max();
const int32_t MAX_INT32_T = std::numeric_limits< int32_t >::max();
const double MIN_DOUBLE = std::numeric_limits< double >::min();
const float MIN_FLOAT = std::numeric_limits< float >::min();
const size_t MIN_SIZE_T = std::numeric_limits< size_t >::min();
const int32_t MIN_INT32_T = std::numeric_limits< int32_t >::min();
const double LOWEST_DOUBLE = std::numeric_limits< double >::lowest();
const float LOWEST_FLOAT = std::numeric_limits< float >::lowest();
const size_t LOWEST_SIZE_T = std::numeric_limits< size_t >::lowest();
const int32_t LOWEST_INT32_T = std::numeric_limits< int32_t >::lowest();
const double DBL_EPS = std::numeric_limits< double >::epsilon();
const float FLT_EPS = std::numeric_limits< float >::epsilon();
}
......@@ -28,6 +28,7 @@
#include <stdint.h>
#include <cstddef>
#include <limits>
#include <boost/math/special_functions/fpclassify.hpp> // isnan, isinf
......@@ -36,39 +37,42 @@
*/
namespace wlimits
{
extern const double MAX_DOUBLE; //!< Maximum double value
inline extern const double MAX_DOUBLE = std::numeric_limits< double >::max(); //!< Maximum double value
extern const float MAX_FLOAT; //!< Maximum float value
inline extern const float MAX_FLOAT = std::numeric_limits< float >::max(); //!< Maximum float value
extern const size_t MAX_SIZE_T; //!< Maximum size value
inline extern const size_t MAX_SIZE_T = std::numeric_limits< size_t >::max(); //!< Maximum size value
extern const int32_t MAX_INT32_T; //!< Maximum int32_t value
inline extern const int32_t MAX_INT32_T = std::numeric_limits< int32_t >::max(); //!< Maximum int32_t value
extern const double MIN_DOUBLE; //!< Positive minimum double value
inline extern const double MIN_DOUBLE = std::numeric_limits< double >::min(); //!< Positive minimum double value
extern const float MIN_FLOAT; //!< Positive minimum float value
inline extern const float MIN_FLOAT = std::numeric_limits< float >::min(); //!< Positive minimum float value
extern const size_t MIN_SIZE_T; //!< Lowest/Minimum size value (equivalent to LOWEST_SIZE_T)
inline extern const size_t MIN_SIZE_T = std::numeric_limits< size_t >::min(); //!< Lowest/Minimum size value (equivalent to LOWEST_SIZE_T)
extern const int32_t MIN_INT32_T; //!< Lowest/Minimum int32_t value (equivalent to LOWEST_INT32_T)
inline extern const int32_t MIN_INT32_T = std::numeric_limits< int32_t >::min(); //!< Lowest/Minimum int32_t value (equivalent to LOWEST_INT32_T)
extern const double LOWEST_DOUBLE; //!< Minimum double value
inline extern const double LOWEST_DOUBLE = std::numeric_limits< double >::lowest(); //!< Minimum double value
extern const float LOWEST_FLOAT; //!< Minimum float value
inline extern const float LOWEST_FLOAT = std::numeric_limits< float >::lowest(); //!< Minimum float value
extern const size_t LOWEST_SIZE_T; //!< Lowest/Minimum size value (equivalent to MIN_SIZE_T)
inline extern const size_t LOWEST_SIZE_T = std::numeric_limits< size_t >::lowest(); //!< Lowest/Minimum size value (equivalent to MIN_SIZE_T)
extern const int32_t LOWEST_INT32_T; //!< Lowest/Minimum int32_t value (equivalent to MIN_INT32_T)
/**
* Lowest/Minimum int32_t value (equivalent to MIN_INT32_T)
*/
inline extern const int32_t LOWEST_INT32_T = std::numeric_limits< int32_t >::lowest();
/**
* Smallest double such: 1.0 + DBL_EPS == 1.0 is still true.
*/
extern const double DBL_EPS;
inline extern const double DBL_EPS = std::numeric_limits< double >::epsilon();
/**
* Smallest float such: 1.0 + FLT_EPS == 1.0 is still true.
*/
extern const float FLT_EPS;
inline extern const float FLT_EPS = std::numeric_limits< float >::epsilon();
/**
* Determines if a number is considered as NaN (aka Not a Number) or not.
......
......@@ -30,8 +30,6 @@
#include "WStringUtils.h"
const std::string string_utils::WHITESPACE( "\r\n\t " ); //!< These characters are regarded as whitespaces
std::string string_utils::rTrim( const std::string &source, const std::string& t )
{
std::string str = source;
......
......@@ -181,7 +181,7 @@ namespace string_utils
* - <tt>\\t</tt> tab
* - <tt>' '</tt> space
*/
extern const std::string WHITESPACE;
inline extern const std::string WHITESPACE = "\r\n\t "; //!< These characters are regarded as whitespaces
/**
* Trims any occurence of each character given in parameter t from the end
......@@ -192,7 +192,7 @@ namespace string_utils
* \return A copy of the trimmed string
*/
std::string rTrim( const std::string& source, const std::string& t = WHITESPACE );
std::string rTrim( const std::string& source, const std::string& t = string_utils::WHITESPACE );
/**
* Trims any occurence of each character given in parameter t from the
......@@ -202,8 +202,7 @@ namespace string_utils
* \param t String representing a set containg all trimmable characters
* \return A copy of the trimmed string
*/
std::string lTrim( const std::string& source, const std::string& t =
WHITESPACE );
std::string lTrim( const std::string& source, const std::string& t = string_utils::WHITESPACE );
/**
* Trims any occurence of each character given in parameter t from both
......@@ -213,7 +212,7 @@ namespace string_utils
* \param t String representing a set containg all trimmable characters
* \return A copy of the trimmed string
*/
std::string trim( const std::string& source, const std::string& t = WHITESPACE );
std::string trim( const std::string& source, const std::string& t = string_utils::WHITESPACE );
/**
* Transforms all characters in the given string into upper case
......
......@@ -102,7 +102,7 @@ public:
template< std::size_t order, std::size_t dim, typename Data_T >
WTensor< order, dim, Data_T >::WTensor()
: WTensorFunc< WTensorBase, order, dim, Data_T >()
: WTensorFunc< ::WTensorBase, order, dim, Data_T >()
{
}
......
......@@ -677,14 +677,6 @@ public:
*/
explicit WTensorBaseSym( const WValue< Data_T >& data );
/**
* Constructs the symmetrical tensor and initialize with the given data.
*
* \param data The components of the symmetrical tensor: Take care of the
* ordering of the components to match the ordering in \see m_data.
*/
explicit WTensorBaseSym( const boost::array< Data_T, dataSize >& data );
/**
* Copy constructor.
*
......@@ -920,11 +912,6 @@ WTensorBaseSym< order, dim, Data_T >::WTensorBaseSym( const WValue< Data_T >& da
std::copy( &data[ 0 ], &data[ 0 ] + data.size(), &m_data[ 0 ] );
}
template< std::size_t order, std::size_t dim, typename Data_T >
WTensorBaseSym< order, dim, Data_T >::WTensorBaseSym( const boost::array< Data_T, dataSize >& data )
{
std::copy( &data[ 0 ], &data[ 0 ] + dataSize, &m_data[ 0 ] );
}
template< std::size_t order, std::size_t dim, typename Data_T >
WTensorBaseSym< order, dim, Data_T >::WTensorBaseSym( WTensorBaseSym const& t )
......@@ -1193,13 +1180,6 @@ public:
* \param data Components in same ordering as the components of the TensorBase class.
*/
explicit WTensorFunc( const WValue< Data_T >& data );
/**
* Initializes the tensor with the given data.
*
* \param data Components in same ordering as the components of the TensorBase class.
*/
explicit WTensorFunc( const boost::array< Data_T, TensorBase_T< order, dim, Data_T >::dataSize >& data );
};
template< template< std::size_t, std::size_t, typename > class TensorBase_T, std::size_t order, std::size_t dim, typename Data_T >
......@@ -1214,11 +1194,6 @@ WTensorFunc< TensorBase_T, order, dim, Data_T >::WTensorFunc( const WValue< Data
{
}
template< template< std::size_t, std::size_t, typename > class TensorBase_T, std::size_t order, std::size_t dim, typename Data_T >
WTensorFunc< TensorBase_T, order, dim, Data_T >::WTensorFunc( const boost::array< Data_T, TensorBase_T< order, dim, Data_T >::dataSize >& data )
: TensorBase_T< order, dim, Data_T >( data )
{
}
/**
......@@ -1245,13 +1220,6 @@ public:
*/
explicit WTensorFunc( const WValue< Data_T >& data );
/**
* Initializes the tensor with the given data.
*
* \param data Components in same ordering as the components of the TensorBase class.
*/
explicit WTensorFunc( const boost::array< Data_T, TensorBase_T< 6, dim, Data_T >::dataSize >& data );
/**
* Access operator.
*
......@@ -1293,12 +1261,6 @@ WTensorFunc< TensorBase_T, 6, dim, Data_T >::WTensorFunc( const WValue< Data_T >
{
}
template< template< std::size_t, std::size_t, typename > class TensorBase_T, std::size_t dim, typename Data_T >
WTensorFunc< TensorBase_T, 6, dim, Data_T >::WTensorFunc( const boost::array< Data_T, TensorBase_T< 6, dim, Data_T >::dataSize >& data )
: TensorBase_T< 6, dim, Data_T >( data )
{
}
template< template< std::size_t, std::size_t, typename > class TensorBase_T, std::size_t dim, typename Data_T > //NOLINT
Data_T& WTensorFunc< TensorBase_T, 6, dim, Data_T >::operator() ( std::size_t i0, std::size_t i1, std::size_t i2,
std::size_t i3, std::size_t i4, std::size_t i5 )
......@@ -1398,12 +1360,6 @@ public:
*/
explicit WTensorFunc( const WValue< Data_T >& data );
/**
* Initializes the tensor with the given data.
*
* \param data Components in same ordering as the components of the TensorBase class.
*/
explicit WTensorFunc( const boost::array< Data_T, TensorBase_T< 4, dim, Data_T >::dataSize >& data );
/**
* Access operator.
......@@ -1442,12 +1398,6 @@ WTensorFunc< TensorBase_T, 4, dim, Data_T >::WTensorFunc( const WValue< Data_T >
{
}
template< template< std::size_t, std::size_t, typename > class TensorBase_T, std::size_t dim, typename Data_T >
WTensorFunc< TensorBase_T, 4, dim, Data_T >::WTensorFunc( const boost::array< Data_T, TensorBase_T< 4, dim, Data_T >::dataSize >& data )
: TensorBase_T< 4, dim, Data_T >( data )
{
}
template< template< std::size_t, std::size_t, typename > class TensorBase_T, std::size_t dim, typename Data_T > //NOLINT
Data_T& WTensorFunc< TensorBase_T, 4, dim, Data_T >::operator() ( std::size_t i0, std::size_t i1, std::size_t i2, std::size_t i3 )
{
......@@ -1535,13 +1485,6 @@ public:
*/
explicit WTensorFunc( const WValue< Data_T >& data );
/**
* Initializes the tensor with the given data.
*
* \param data Components in same ordering as the components of the TensorBase class.
*/
explicit WTensorFunc( const boost::array< Data_T, TensorBase_T< 2, dim, Data_T >::dataSize >& data );
/**
* Access operator.
*
......@@ -1580,11 +1523,6 @@ WTensorFunc< TensorBase_T, 2, dim, Data_T >::WTensorFunc( const WValue< Data_T >
{
}
template< template< std::size_t, std::size_t, typename > class TensorBase_T, std::size_t dim, typename Data_T >
WTensorFunc< TensorBase_T, 2, dim, Data_T >::WTensorFunc( const boost::array< Data_T, TensorBase_T< 2, dim, Data_T >::dataSize >& data )
: TensorBase_T< 2, dim, Data_T >( data )
{
}
template< template< std::size_t, std::size_t, typename > class TensorBase_T, std::size_t dim, typename Data_T > //NOLINT
Data_T& WTensorFunc< TensorBase_T, 2, dim, Data_T >::operator() ( std::size_t i0, std::size_t i1 )
......
......@@ -86,15 +86,6 @@ public:
*/
explicit WTensorSym( const WValue< Data_T >& data );
/**
* Constructs and initializes the symmetrical Tensor with a boost array.
*
* \note The same ordering as for the data member is required.
*
* \param data The components in same ordering as for the data member \c m_data is required, (\see m_data).
*/
explicit WTensorSym( const boost::array< Data_T, WTensorBaseSym< order, dim, Data_T >::dataSize >& data );
/**
* Evaluate - for a given gradient - the spherical function represented by this symmetric tensor.
*
......@@ -127,24 +118,18 @@ public:
protected:
private:
using WTensorFunc< WTensorBaseSym, order, dim, Data_T >::m_data;
using WTensorFunc< ::WTensorBaseSym, order, dim, Data_T >::m_data;
};
template< std::size_t order, std::size_t dim, typename Data_T >
WTensorSym< order, dim, Data_T >::WTensorSym()
: WTensorFunc< WTensorBaseSym, order, dim, Data_T >()
: WTensorFunc< ::WTensorBaseSym, order, dim, Data_T >()
{
}
template< std::size_t order, std::size_t dim, typename Data_T >
WTensorSym< order, dim, Data_T >::WTensorSym( const WValue< Data_T >& data )
: WTensorFunc< WTensorBaseSym, order, dim, Data_T >( data )
{
}
template< std::size_t order, std::size_t dim, typename Data_T >
WTensorSym< order, dim, Data_T >::WTensorSym( const boost::array< Data_T, WTensorBaseSym< order, dim, Data_T >::dataSize >& data )
: WTensorFunc< WTensorBaseSym, order, dim, Data_T >( data )
: WTensorFunc< ::WTensorBaseSym, order, dim, Data_T >( data )
{
}
......
......@@ -971,7 +971,7 @@ public:
*/
ValueT& operator[]( size_t row ) throw()
{
BOOST_STATIC_ASSERT( Cols == 1 );
//BOOST_STATIC_ASSERT( Cols == 1 );
return m_values( row, 0 );
}
......
......@@ -27,8 +27,6 @@
#include "WPickHandler.h"
#include "../common/WAssert.h"
const std::string WPickHandler::unpickString = "unpick";
WPickHandler::WPickHandler()
: m_hitResult( WPickInfo() ),
m_startPick( WPickInfo() ),
......
......@@ -101,7 +101,7 @@ public:
*/
void setPaintMode( bool paintMode );
static const std::string unpickString; //!< The string indicating picking has stopped.
inline static const std::string unpickString = "unpick"; //!< The string indicating picking has stopped.
protected:
/**
......
......@@ -131,4 +131,4 @@ short eep_byteswap_2_safe(short);
**************************/
double eep_byteswap_8_double_safe(double arg);
#endif
#endif // EEPIO_H
......@@ -41,11 +41,6 @@
#include "core/kernel/WModuleOutputData.h"
/**
* Forward declaration of WPickInfo.
*/
//class WPickInfo;
/**
* This module allows mark areas in a 3D texture by "painting"
* on pickable surfaces.
......
......@@ -39,6 +39,7 @@
#include "core/kernel/WModule.h"
#include "core/kernel/WModuleInputData.h"
#include "core/kernel/WModuleOutputData.h"
#include "core/kernel/WSelectionManager.h"
/**
* Show an glyph plot (in this case the glyphs are arrows) of a vector data set.
......
......@@ -42,16 +42,45 @@ SET( BinName "openwalnut-qt" )
OPTION( OW_GUI_QT5_WebKit "If building with Qt5 use deprecated WebKit" OFF )
OPTION( OW_GUI_FORCE_QT4 "Enable this to build the QT4-based OpenWalnut GUI." OFF )
OPTION( OW_GUI_FORCE_QT6 "Enable this to build the QT6-based OpenWalnut GUI." OFF )
IF( OW_GUI_FORCE_QT4 )
FIND_PACKAGE( Qt4 REQUIRED QtGui QtOpenGL QtWebKit )
SET( QT_Link_Libs Qt4::QtGui Qt4::QtOpenGL Qt4::QtWebKit )
SET( QT_Link_Libs Qt4::QtGui Qt4::QtOpenGL Qt4::QtWebKit )
ELSEIF( OW_GUI_FORCE_QT6 )
FIND_PACKAGE( Qt6 REQUIRED COMPONENTS Gui Widgets OpenGLWidgets OPTIONAL_COMPONENTS WebEngineWidgets )
SET( QT_Link_Libs )
IF( NOT Qt6WebEngineWidgets_FOUND )
# Sadly there is no WebEngineWidget support for mingw (Chromium does not compile in mingw) and WebKit has been removed
# Windows can only use it with msvc (which openwalnut does not support)
# Maybe switch WebEngineWidget to WebView, which is not based on chromium
ADD_DEFINITIONS( "-DOW_QT6_NO_WEBENGINE" )
ELSE()
LIST( APPEND QT_Link_Libs Qt6::WebEngineWidgets )
ENDIF()
# Using '+' to concatenate keys for a key sequence is deprecated
# For modifiers like SHIFT or CTRL it has already been removed -> use '|' now
ADD_DEFINITIONS( "-DOW_QT6_MODIFIER_ADD" )
# QRegExp was removed, now use QRegularExpression
ADD_DEFINITIONS( "-DOW_QT6_REGEXP" )
# QGLWidget was removed, now use QOpenGLWidget
ADD_DEFINITIONS( "-DOW_QT_GLWIDGET" )
# There is no signal mapping for QWidget anymore
ADD_DEFINITIONS( "-DOW_QT6_SIGNALMAPPER" )
LIST( APPEND QT_Link_Libs Qt6::Gui Qt6::Widgets Qt6::OpenGLWidgets )
ELSE()
IF( OW_GUI_QT5_WebKit )
ADD_DEFINITIONS( "-DOW_FORCE_WEBKIT" )
ENDIF()
# Use QOpenGLWidget instead of deprecated QGLWidget
ADD_DEFINITIONS( "-DOW_QT5_GLWIDGET" )
ADD_DEFINITIONS( "-DOW_QT_GLWIDGET" )
# Special handling if the user specified a QT path manually. Useful when using multiple installations of Qt.
IF( DEFINED ENV{QTDIR} )
......
......@@ -27,6 +27,10 @@
#include <QApplication>
#ifdef OW_QT6_REGEXP
typedef QRegularExpression QRegExp;
#endif
class WMainWindow;
/**
......
......@@ -48,7 +48,10 @@
#include <QtCore/QSettings>
#include <QtCore/QUrl>
#include <QInputDialog>
#ifdef OW_FORCE_WEBKIT
#ifdef OW_QT6_NO_WEBENGINE
#include <QTextBrowser> // NOLINT
#elif defined OW_FORCE_WEBKIT
#include <QWebView> // NOLINT
#else
#include <QWebEngineView> // NOLINT
......@@ -856,14 +859,21 @@ void WMainWindow::openOpenWalnutHelpDialog()
window->show();
#ifdef OW_FORCE_WEBKIT
QWebView *view = new QWebView( this );
QString location( QString( "file:///" ) + WPathHelper::getDocPath().string().c_str() + "/openwalnut-qt/" );
#ifndef OW_QT6_NO_WEBENGINE
#ifdef OW_FORCE_WEBKIT
QWebView *view = new QWebView( this );
#else
QWebEngineView *view = new QWebEngineView( this );
#endif
view->setHtml( content.c_str(), QUrl( location ) );
#else
QWebEngineView *view = new QWebEngineView( this );
QTextBrowser *view = new QTextBrowser( this );
view->document()->setMetaInformation( QTextDocument::DocumentUrl, location );
view->setOpenExternalLinks( true );
view->setHtml( content.c_str() );
#endif
QString location( QString( "file:///" ) + WPathHelper::getDocPath().string().c_str() + "/openwalnut-qt/" );
view->setHtml( content.c_str(), QUrl( location ) );
view->show();
layout->addWidget( view );
}
......@@ -1269,16 +1279,20 @@ void WMainWindow::showWelcomeDialog( bool force )
content = boost::regex_replace( content, reg2, std::string( W_VERSION ) );
QWidget* w = NULL;
#ifdef OW_FORCE_WEBKIT
QWebView *view = new QWebView( this );