QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
31 #include <QDomElement>
35 #include <QGraphicsProxyWidget>
39 #include <QTextStream>
45 mWebPage->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff );
46 mWebPage->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAlwaysOff );
49 connect( mWebPage->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared,
this, &QgsHtmlAnnotation::javascript );
56 c->setSourceFile( mHtmlFile );
62 QFile file( htmlFile );
64 if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) )
70 QTextStream in( &file );
71 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
72 in.setCodec(
"UTF-8" );
74 mHtmlSource = in.readAll();
99 const double scaleFactor = context.
painter()->device()->logicalDpiX() / 96.0;
100 context.
painter()->scale( scaleFactor, scaleFactor );
103 mWebPage->setViewportSize( size.toSize() );
104 mWebPage->mainFrame()->render( context.
painter() );
111 const QSizeF widgetMinSize = QSizeF( 0, 0 );
117 return QSizeF( 0, 0 );
123 QDomElement formAnnotationElem = doc.createElement( QStringLiteral(
"HtmlAnnotationItem" ) );
124 if ( !mHtmlFile.isEmpty() )
126 formAnnotationElem.setAttribute( QStringLiteral(
"htmlfile" ),
sourceFile() );
130 formAnnotationElem.setAttribute( QStringLiteral(
"htmlsource" ), mHtmlSource );
133 _writeXml( formAnnotationElem, doc, context );
134 elem.appendChild( formAnnotationElem );
139 const QDomElement annotationElem = itemElem.firstChildElement( QStringLiteral(
"AnnotationItem" ) );
140 if ( !annotationElem.isNull() )
142 _readXml( annotationElem, context );
146 if ( !
mapLayer() && itemElem.hasAttribute( QStringLiteral(
"vectorLayer" ) ) )
153 mHtmlFile = itemElem.attribute( QStringLiteral(
"htmlfile" ), QString() );
154 if ( !mHtmlFile.isEmpty() )
160 setHtmlSource( itemElem.attribute( QStringLiteral(
"htmlsource" ), QString() ) );
170 if ( feature.
isValid() && vectorLayer )
178 newText = mHtmlSource;
180 mWebPage->mainFrame()->setHtml( newText );
184 void QgsHtmlAnnotation::javascript()
186 QWebFrame *frame = mWebPage->mainFrame();
187 frame->addToJavaScriptWindowObject( QStringLiteral(
"layer" ),
mapLayer() );
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QgsHtmlAnnotation(QObject *parent=nullptr)
Constructor for QgsHtmlAnnotation.
void _readXml(const QDomElement &annotationElem, const QgsReadWriteContext &context)
Reads common annotation properties from a DOM element.
QgsMargins contentsMargin() const
Returns the margins (in millimeters) between the outside of the frame and the annotation content.
The class is used as a container of context for various read/write operations on other objects.
QgsHtmlAnnotation * clone() const override
Clones the annotation, returning a new copy of the annotation reflecting the annotation's current sta...
void setSourceFile(const QString &htmlFile)
Sets the file path for the source HTML file.
void renderAnnotation(QgsRenderContext &context, QSizeF size) const override
Renders the annotation's contents to a target /a context at the specified /a size.
Contains information about the context of a rendering operation.
static QgsProject * instance()
Returns the QgsProject singleton instance.
static QList< QgsExpressionContextScope * > globalProjectLayerScopes(const QgsMapLayer *layer)
Creates a list of three scopes: global, layer's project and layer.
QgsMapLayer * mapLayer() const
Returns the map layer associated with the annotation.
QWebPage subclass which redirects JavaScript errors and console output to the QGIS message log.
Abstract base class for annotation items which are drawn over a map.
QString sourceFile() const
Returns the file path for the source HTML file.
bool isValid() const
Returns the validity of this feature.
void readXml(const QDomElement &itemElem, const QgsReadWriteContext &context) override
Restores the annotation's state from a DOM element.
QgsFeature associatedFeature() const
Returns the feature associated with the annotation, or an invalid feature if none has been set.
QSizeF minimumFrameSize() const override
Returns the minimum frame size for the annotation.
void _writeXml(QDomElement &itemElem, QDomDocument &doc, const QgsReadWriteContext &context) const
Writes common annotation properties to a DOM element.
void setHtmlSource(const QString &htmlSource)
Sets the html source directly (not coming from a file)
An annotation item that embeds HTML content.
Scoped object for saving and restoring a QPainter object's state.
virtual void setAssociatedFeature(const QgsFeature &feature)
Sets the feature associated with the annotation.
static QgsNetworkAccessManager * instance(Qt::ConnectionType connectionType=Qt::BlockingQueuedConnection)
Returns a pointer to the active QgsNetworkAccessManager for the current thread.
QString htmlSource() const
Returns html source text.
void setAssociatedFeature(const QgsFeature &feature) override
Sets the feature associated with the annotation.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
Represents a vector layer which manages a vector based data sets.
void appearanceChanged()
Emitted whenever the annotation's appearance changes.
void writeXml(QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context) const override
Writes the annotation state to a DOM element.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
QPainter * painter()
Returns the destination QPainter for the render operation.
static QString replaceExpressionText(const QString &action, const QgsExpressionContext *context, const QgsDistanceArea *distanceArea=nullptr)
This function replaces each expression between [% and %] in the string with the result of its evaluat...
void copyCommonProperties(QgsAnnotation *target) const
Copies common annotation properties to the targe annotation.
The QWebFrame class is a collection of stubs to mimic the API of a QWebFrame on systems where QtWebki...
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
void setMapLayer(QgsMapLayer *layer)
Sets the map layer associated with the annotation.