QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsvectorlayerselectionproperties.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectorlayerselectionproperties.cpp
3 ---------------
4 begin : July 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19
20#include "qgscolorutils.h"
21#include "qgssymbollayerutils.h"
22
23#include "moc_qgsvectorlayerselectionproperties.cpp"
24
29
31
32
33QDomElement QgsVectorLayerSelectionProperties::writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context )
34{
35 QDomElement element = document.createElement( QStringLiteral( "selection" ) );
36
37 element.setAttribute( QStringLiteral( "mode" ), qgsEnumValueToKey( mSelectionRenderingMode ) );
38
39 QgsColorUtils::writeXml( mSelectionColor, QStringLiteral( "selectionColor" ), document, element, context );
40
41 if ( mSelectionSymbol )
42 {
43 QDomElement selectionSymbolElement = document.createElement( QStringLiteral( "selectionSymbol" ) );
44 selectionSymbolElement.appendChild( QgsSymbolLayerUtils::saveSymbol( QString(), mSelectionSymbol.get(), document, context ) );
45 element.appendChild( selectionSymbolElement );
46 }
47
48 parentElement.appendChild( element );
49 return element;
50}
51
52bool QgsVectorLayerSelectionProperties::readXml( const QDomElement &element, const QgsReadWriteContext &context )
53{
54 const QDomElement selectionElement = element.firstChildElement( QStringLiteral( "selection" ) ).toElement();
55 if ( selectionElement.isNull() )
56 return false;
57
58 mSelectionRenderingMode = qgsEnumKeyToValue( selectionElement.attribute( QStringLiteral( "mode" ) ), Qgis::SelectionRenderingMode::Default );
59 mSelectionColor = QgsColorUtils::readXml( selectionElement, QStringLiteral( "selectionColor" ), context );
60
61 {
62 const QDomElement selectionSymbolElement = selectionElement.firstChildElement( QStringLiteral( "selectionSymbol" ) ).firstChildElement( QStringLiteral( "symbol" ) );
63 mSelectionSymbol = QgsSymbolLayerUtils::loadSymbol( selectionSymbolElement, context );
64 }
65 return true;
66}
67
69{
70 auto res = std::make_unique< QgsVectorLayerSelectionProperties >( nullptr );
71 res->mSelectionRenderingMode = mSelectionRenderingMode;
72 res->mSelectionColor = mSelectionColor;
73 res->mSelectionSymbol.reset( mSelectionSymbol ? mSelectionSymbol->clone() : nullptr );
74 return res.release();
75}
76
78{
79 return mSelectionColor;
80}
81
83{
84 if ( mSelectionColor == color )
85 {
86 return;
87 }
88
89 mSelectionColor = color;
91}
92
94{
95 return mSelectionSymbol.get();
96}
97
99{
100 mSelectionSymbol.reset( symbol );
102}
103
108
110{
111 if ( mSelectionRenderingMode == mode )
112 {
113 return;
114 }
115
116 mSelectionRenderingMode = mode;
118}
SelectionRenderingMode
Specifies how a selection should be rendered.
Definition qgis.h:1758
@ Default
Use default symbol and selection colors.
Definition qgis.h:1759
static QColor readXml(const QDomElement &element, const QString &identifier, const QgsReadWriteContext &context)
Reads a color from an XML element, matching the specified identifier string.
static void writeXml(const QColor &color, const QString &identifier, QDomDocument &document, QDomElement &element, const QgsReadWriteContext &context)
Writes a color to an XML element, storing it under the specified identifier.
QgsMapLayerSelectionProperties(QObject *parent)
Constructor for QgsMapLayerSelectionProperties, with the specified parent object.
A container for the context for various read/write operations on objects.
static std::unique_ptr< QgsSymbol > loadSymbol(const QDomElement &element, const QgsReadWriteContext &context)
Attempts to load a symbol from a DOM element.
static QDomElement saveSymbol(const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context)
Writes a symbol definition to XML.
Abstract base class for all rendered symbols.
Definition qgssymbol.h:231
void setSelectionSymbol(QgsSymbol *symbol)
Sets the symbol used to render selected features in the layer.
QgsVectorLayerSelectionProperties(QObject *parent=nullptr)
Constructor for QgsVectorLayerSelectionProperties, with the specified parent object.
QgsSymbol * selectionSymbol() const
Returns the symbol used to render selected features in the layer.
void selectionSymbolChanged()
Emitted whenever the selection symbol changes.
QgsVectorLayerSelectionProperties * clone() const override
Creates a clone of the properties.
QDomElement writeXml(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context) override
Writes the properties to a DOM element, to be used later with readXml().
bool readXml(const QDomElement &element, const QgsReadWriteContext &context) override
Reads temporal properties from a DOM element previously written by writeXml().
void setSelectionColor(const QColor &color)
Sets the color to use for rendering selected features in the layer.
void selectionColorChanged()
Emitted whenever the selection color changes.
void setSelectionRenderingMode(Qgis::SelectionRenderingMode mode)
Sets the selection rendering mode to use for selected features in the layer.
void selectionRenderingModeChanged()
Emitted whenever the selection rendering mode changes.
T qgsEnumKeyToValue(const QString &key, const T &defaultValue, bool tryValueAsKey=true, bool *returnOk=nullptr)
Returns the value corresponding to the given key of an enum.
Definition qgis.h:6817
QString qgsEnumValueToKey(const T &value, bool *returnOk=nullptr)
Returns the value for the given key of an enum.
Definition qgis.h:6798