42 mWidget = qobject_cast<QgsWebView *>( editor );
47 mWidget->setHtml( mHtmlCode.replace(
"\n",
"\\n" ) );
50 const int horizontalDpi = mWidget->logicalDpiX();
52 mWidget->setZoomFactor( horizontalDpi / 96.0 );
55 connect( page, &QWebPage::contentsChanged,
this, &QgsHtmlWidgetWrapper::fixHeight, Qt::ConnectionType::UniqueConnection );
56 connect( page, &QWebPage::loadFinished,
this, &QgsHtmlWidgetWrapper::fixHeight, Qt::ConnectionType::UniqueConnection );
71void QgsHtmlWidgetWrapper::checkGeometryNeeds()
79 NeedsGeometryEvaluator evaluator;
83 evaluator.setExpressionContext( expressionContext );
85 auto frame = webView.page()->mainFrame();
86 connect( frame, &QWebFrame::javaScriptWindowObjectCleared, frame, [ frame, &evaluator ]
88 frame->addToJavaScriptWindowObject( QStringLiteral(
"expression" ), &evaluator );
91 webView.setHtml( mHtmlCode );
93 mNeedsGeometry = evaluator.needsGeometry();
102void QgsHtmlWidgetWrapper::setHtmlContext( )
116 HtmlExpression *htmlExpression =
new HtmlExpression();
117 htmlExpression->setExpressionContext( expressionContext );
118 auto frame = mWidget->page()->mainFrame();
119 connect( frame, &QWebFrame::javaScriptWindowObjectCleared, frame, [ = ]
121 frame->addToJavaScriptWindowObject( QStringLiteral(
"expression" ), htmlExpression );
124 mWidget->setHtml( mHtmlCode );
128void QgsHtmlWidgetWrapper::fixHeight()
131 const int docHeight { page->mainFrame()->contentsSize().height() };
132 mWidget->setFixedHeight( docHeight );
147 return mNeedsGeometry;
154 mExpressionContext = context;
157QString HtmlExpression::evaluate(
const QString &expression )
const
160 exp.
prepare( &mExpressionContext );
161 return exp.
evaluate( &mExpressionContext ).toString();
164void NeedsGeometryEvaluator::evaluate(
const QString &expression )
167 exp.
prepare( &mExpressionContext );
173 mExpressionContext = context;
The QWebPage class is a collection of stubs to mimic the API of a QWebPage on systems where QtWebkit ...
This class contains context information for attribute editor widgets.
QString attributeFormModeString() const
Returns given attributeFormMode as string.
QgsFeature parentFormFeature() const
Returns the feature of the currently edited parent form in its actual state.
static QgsExpressionContextScope * parentFormScope(const QgsFeature &formFeature=QgsFeature(), const QString &formMode=QString())
Creates a new scope which contains functions and variables from the current parent attribute form/tab...
static QgsExpressionContextScope * formScope(const QgsFeature &formFeature=QgsFeature(), const QString &formMode=QString())
Creates a new scope which contains functions and variables from the current attribute form/table form...
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
Class for parsing and evaluation of expressions (formerly called "search strings").
bool prepare(const QgsExpressionContext *context)
Gets the expression ready for evaluation - find out column indexes.
bool needsGeometry() const
Returns true if the expression uses feature geometry for some computation.
QVariant evaluate()
Evaluate the feature and return the result.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
bool isValid() const
Returns the validity of this feature.
Represents a vector layer which manages a vector based data sets.
QgsExpressionContext createExpressionContext() const FINAL
This method needs to be reimplemented in all classes which implement this interface and return an exp...
The QgsWebView class is a collection of stubs to mimic the API of QWebView on systems where the real ...