Add project setting if attribute form should be considered for feature info

This commit is contained in:
Marco Hugentobler 2021-01-14 13:22:22 +01:00
parent e28fb7f7d4
commit 090cd5c036
7 changed files with 416 additions and 353 deletions

View File

@ -212,6 +212,15 @@ Returns if the geometry is displayed as Well Known Text in GetFeatureInfo reques
:param project: the QGIS project
:return: if the geometry is displayed as Well Known Text in GetFeatureInfo request.
%End
bool wmsFeatureInfoUseAttributeFormSettings( const QgsProject &project );
%Docstring
Returns if feature form settings should be considered for the format of the feature info response
:param project: the QGIS project
:return: true if the feature form settings shall be considered for the feature info response
%End
bool wmsFeatureInfoSegmentizeWktGeometry( const QgsProject &project );

View File

@ -665,6 +665,9 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
mLayerRestrictionsListWidget->addItems( values );
}
bool useAttributeFormSettings = QgsProject::instance()->readBoolEntry( QStringLiteral( "WMSFeatureInfoUseAttributeFormSettings" ), QStringLiteral( "/" ) );
mUseAttributeFormSettingsCheckBox->setChecked( useAttributeFormSettings );
bool addWktGeometry = QgsProject::instance()->readBoolEntry( QStringLiteral( "WMSAddWktGeometry" ), QStringLiteral( "/" ) );
mAddWktGeometryCheckBox->setChecked( addWktGeometry );
@ -1393,6 +1396,7 @@ void QgsProjectProperties::apply()
QgsProject::instance()->removeEntry( QStringLiteral( "WMSRestrictedLayers" ), QStringLiteral( "/" ) );
}
QgsProject::instance()->writeEntry( QStringLiteral( "WMSFeatureInfoUseAttributeFormSettings" ), QStringLiteral( "/" ), mUseAttributeFormSettingsCheckBox->isChecked() );
QgsProject::instance()->writeEntry( QStringLiteral( "WMSAddWktGeometry" ), QStringLiteral( "/" ), mAddWktGeometryCheckBox->isChecked() );
QgsProject::instance()->writeEntry( QStringLiteral( "WMSSegmentizeFeatureInfoGeometry" ), QStringLiteral( "/" ), mSegmentizeFeatureInfoGeometryCheckBox->isChecked() );
QgsProject::instance()->writeEntry( QStringLiteral( "WMSUseLayerIDs" ), QStringLiteral( "/" ), mWmsUseLayerIDs->isChecked() );

View File

@ -172,6 +172,13 @@ bool QgsServerProjectUtils::wmsFeatureInfoAddWktGeometry( const QgsProject &proj
|| wktGeom.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
}
bool QgsServerProjectUtils::wmsFeatureInfoUseAttributeFormSettings( const QgsProject &project )
{
QString useFormSettings = project.readEntry( QStringLiteral( "WMSFeatureInfoUseAttributeFormSettings" ), QStringLiteral( "/" ), "" );
return useFormSettings.compare( QLatin1String( "enabled" ), Qt::CaseInsensitive ) == 0
|| useFormSettings.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
}
bool QgsServerProjectUtils::wmsFeatureInfoSegmentizeWktGeometry( const QgsProject &project )
{
QString segmGeom = project.readEntry( QStringLiteral( "WMSSegmentizeFeatureInfoGeometry" ), QStringLiteral( "/" ), "" );

View File

@ -207,6 +207,13 @@ namespace QgsServerProjectUtils
*/
SERVER_EXPORT bool wmsFeatureInfoAddWktGeometry( const QgsProject &project );
/**
* Returns if feature form settings should be considered for the format of the feature info response
* \param project the QGIS project
* \returns true if the feature form settings shall be considered for the feature info response
*/
SERVER_EXPORT bool wmsFeatureInfoUseAttributeFormSettings( const QgsProject &project );
/**
* Returns if the geometry has to be segmentize in GetFeatureInfo request.
* \param project the QGIS project

View File

@ -1566,7 +1566,7 @@ namespace QgsWms
featureAttributes = feature.attributes();
QgsEditFormConfig editConfig = layer->editFormConfig();
if ( editConfig.layout() == QgsEditFormConfig::TabLayout )
if ( QgsServerProjectUtils::wmsFeatureInfoUseAttributeFormSettings( *mProject ) && editConfig.layout() == QgsEditFormConfig::TabLayout )
{
writeAttributesTabLayout( editConfig, layer, fields, featureAttributes, infoDocument, featureElement, renderContext );
}

View File

@ -223,11 +223,40 @@ namespace QgsWms
QgsRectangle *featureBBox = nullptr,
QgsGeometry *filterGeom = nullptr ) const;
//!Recursively called to write tab layout groups to XML
/**
* Recursively called to write tab layout groups to XML
* \param group the tab layout group
* \param layer The vector layer
* \param fields attribute fields
* \param featureAttributes the feature attributes
* \param doc Feature info XML document
* \param featureElem the feature XML element
* \param renderContext Context to use for feature rendering
*/
void writeAttributesTabGroup( const QgsAttributeEditorElement *group, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext ) const;
//!Writes attributes to XML document using the group/attribute layout defined in the tab layout
/**
* Writes attributes to XML document using the group/attribute layout defined in the tab layout
* \param config editor config object
* \param layer The vector layer
* \param fields attribute fields
* \param featureAttributes the feature attributes
* \param doc Feature info XML document
* \param featureElem the feature XML element
* \param renderContext Context to use for feature rendering
*/
void writeAttributesTabLayout( QgsEditFormConfig &config, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext ) const;
//! Writes a vectorlayer attribute into the XML document
/**
* Writes a vectorlayer attribute into the XML document
* \param index of attribute to be written
* \param layer The vector layer
* \param fields attribute fields
* \param featureAttributes the feature attributes
* \param doc Feature info XML document
* \param featureElem the feature XML element
* \param renderContext Context to use for feature rendering
*/
void writeVectorLayerAttribute( int attributeIndex, QgsVectorLayer *layer, const QgsFields &fields, QgsAttributes &featureAttributes, QDomDocument &doc, QDomElement &featureElem, QgsRenderContext &renderContext ) const;
//! Appends feature info xml for the layer to the layer element of the dom document

View File

@ -269,7 +269,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
<number>2</number>
<number>0</number>
</property>
<widget class="QWidget" name="mProjOptsGeneral">
<layout class="QVBoxLayout" name="verticalLayout_6">
@ -297,9 +297,9 @@
<property name="geometry">
<rect>
<x>0</x>
<y>-16</y>
<y>0</y>
<width>671</width>
<height>695</height>
<height>821</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@ -954,8 +954,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>337</width>
<height>74</height>
<width>692</width>
<height>673</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
@ -1007,8 +1007,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>604</width>
<height>105</height>
<width>692</width>
<height>673</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
@ -1067,8 +1067,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>291</width>
<height>563</height>
<width>692</width>
<height>673</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
@ -1643,8 +1643,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>179</width>
<height>56</height>
<width>692</width>
<height>673</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_17">
@ -1705,8 +1705,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>653</width>
<height>3187</height>
<width>685</width>
<height>3591</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_13">
@ -2037,72 +2037,79 @@
<string notr="true">projowsserver</string>
</property>
<layout class="QGridLayout" name="gridLayout_13">
<item row="1" column="2">
<widget class="QgsCollapsibleGroupBox" name="mLayerRestrictionsGroupBox">
<property name="title">
<string>Exclude layers</string>
<item row="5" column="0" colspan="2">
<widget class="QCheckBox" name="mAddWktGeometryCheckBox">
<property name="text">
<string>Add geometry to feature response</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="collapsed" stdset="0">
<bool>false</bool>
</property>
<property name="saveCollapsedState" stdset="0">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="3">
<widget class="QListWidget" name="mLayerRestrictionsListWidget"/>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="mAddLayerRestrictionButton">
<property name="toolTip">
<string>Add layer to exclude</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QToolButton" name="mRemoveLayerRestrictionButton">
<property name="toolTip">
<string>Remove selected layer</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
</property>
</widget>
</item>
<item row="1" column="2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="8" column="0" colspan="3">
<item row="10" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<widget class="QLabel" name="mWMSImageQualityLabel">
<property name="text">
<string>Quality for JPEG images ( 10 : smaller image - 100 : best quality )</string>
</property>
</widget>
</item>
<item>
<widget class="QgsSpinBox" name="mWMSImageQualitySpinBox">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>90</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="11" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_17">
<item>
<widget class="QLabel" name="mWMSMaxAtlasFeaturesLabel">
<property name="text">
<string>Maximum features for Atlas print requests</string>
</property>
</widget>
</item>
<item>
<widget class="QgsSpinBox" name="mWMSMaxAtlasFeaturesSpinBox">
<property name="maximum">
<number>9999999</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="12" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_18">
<item>
<widget class="QLabel" name="label_33">
<property name="toolTip">
<string>When using tiles set this to the size of the larger symbols to avoid cut symbols at tile boundaries. This works by drawing features that are outside the tile extent.</string>
</property>
<property name="text">
<string>Tile buffer in pixels</string>
</property>
</widget>
</item>
<item>
<widget class="QgsSpinBox" name="mWMSTileBufferSpinBox"/>
</item>
</layout>
</item>
<item row="9" column="0" colspan="3">
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="1">
<widget class="QLabel" name="mMaxWidthLabel">
@ -2149,241 +2156,6 @@
</item>
</layout>
</item>
<item row="0" column="2">
<widget class="QgsCollapsibleGroupBox" name="grpWMSList">
<property name="title">
<string>CRS restrictions</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="collapsed" stdset="0">
<bool>false</bool>
</property>
<property name="saveCollapsedState" stdset="0">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="1" column="1">
<widget class="QToolButton" name="pbnWMSRemoveSRS">
<property name="toolTip">
<string>Remove selected CRS</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
</property>
</widget>
</item>
<item row="0" column="0" colspan="4">
<widget class="QListWidget" name="mWMSList"/>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pbnWMSSetUsedSRS">
<property name="toolTip">
<string>Fetch all CRS's from layers</string>
</property>
<property name="text">
<string>Used</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="pbnWMSAddSRS">
<property name="toolTip">
<string>Add new CRS</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="10" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_17">
<item>
<widget class="QLabel" name="mWMSMaxAtlasFeaturesLabel">
<property name="text">
<string>Maximum features for Atlas print requests</string>
</property>
</widget>
</item>
<item>
<widget class="QgsSpinBox" name="mWMSMaxAtlasFeaturesSpinBox">
<property name="maximum">
<number>9999999</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="mWmsUseLayerIDs">
<property name="text">
<string>Use layer ids as names</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="3">
<layout class="QHBoxLayout" name="grpWMSPrecision">
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>GetFeatureInfo geometry precision (decimal places)</string>
</property>
</widget>
</item>
<item>
<widget class="QgsSpinBox" name="mWMSPrecisionSpinBox">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>17</number>
</property>
<property name="value">
<number>8</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="12" column="0" colspan="3">
<layout class="QHBoxLayout" name="mWMSDefaultMapUnitsPerMmLayout">
<item>
<widget class="QLabel" name="mWMSDefaultMapUnitsPerMmLabel">
<property name="text">
<string>Default map units per mm in legend</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0" colspan="2">
<widget class="QgsCollapsibleGroupBox" name="grpWMSExt">
<property name="title">
<string>Ad&amp;vertised extent</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="collapsed" stdset="0">
<bool>false</bool>
</property>
<property name="saveCollapsedState" stdset="0">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="1">
<widget class="QLineEdit" name="mWMSExtMinX">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Min. &amp;Y</string>
</property>
<property name="buddy">
<cstring>mWMSExtMinY</cstring>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Min. &amp;X</string>
</property>
<property name="buddy">
<cstring>mWMSExtMinX</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="mWMSExtMinY">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Max. X</string>
</property>
<property name="buddy">
<cstring>mWMSExtMaxX</cstring>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="pbnWMSExtCanvas">
<property name="text">
<string>Use Current Canvas Extent</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
<string>Max. Y</string>
</property>
<property name="buddy">
<cstring>mWMSExtMaxY</cstring>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="mWMSExtMaxY">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="mWMSExtMaxX">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="mAddWktGeometryCheckBox">
<property name="text">
<string>Add geometry to feature response</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="QgsCollapsibleGroupBox" name="mWMSInspire">
<property name="title">
@ -2516,13 +2288,202 @@
</layout>
</widget>
</item>
<item row="5" column="0" colspan="2">
<item row="0" column="2">
<widget class="QgsCollapsibleGroupBox" name="grpWMSList">
<property name="title">
<string>CRS restrictions</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="collapsed" stdset="0">
<bool>false</bool>
</property>
<property name="saveCollapsedState" stdset="0">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="1" column="1">
<widget class="QToolButton" name="pbnWMSRemoveSRS">
<property name="toolTip">
<string>Remove selected CRS</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
</property>
</widget>
</item>
<item row="0" column="0" colspan="4">
<widget class="QListWidget" name="mWMSList"/>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pbnWMSSetUsedSRS">
<property name="toolTip">
<string>Fetch all CRS's from layers</string>
</property>
<property name="text">
<string>Used</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="pbnWMSAddSRS">
<property name="toolTip">
<string>Add new CRS</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QgsCollapsibleGroupBox" name="grpWMSExt">
<property name="title">
<string>Ad&amp;vertised extent</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="collapsed" stdset="0">
<bool>false</bool>
</property>
<property name="saveCollapsedState" stdset="0">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="1">
<widget class="QLineEdit" name="mWMSExtMinX">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Min. &amp;Y</string>
</property>
<property name="buddy">
<cstring>mWMSExtMinY</cstring>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Min. &amp;X</string>
</property>
<property name="buddy">
<cstring>mWMSExtMinX</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="mWMSExtMinY">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Max. X</string>
</property>
<property name="buddy">
<cstring>mWMSExtMaxX</cstring>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="pbnWMSExtCanvas">
<property name="text">
<string>Use Current Canvas Extent</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
<string>Max. Y</string>
</property>
<property name="buddy">
<cstring>mWMSExtMaxY</cstring>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="mWMSExtMaxY">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="mWMSExtMaxX">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QCheckBox" name="mSegmentizeFeatureInfoGeometryCheckBox">
<property name="text">
<string>Segmentize feature info geometry</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="3">
<layout class="QHBoxLayout" name="grpWMSPrecision">
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>GetFeatureInfo geometry precision (decimal places)</string>
</property>
</widget>
</item>
<item>
<widget class="QgsSpinBox" name="mWMSPrecisionSpinBox">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>17</number>
</property>
<property name="value">
<number>8</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<widget class="QgsCollapsibleGroupBox" name="mWMSPrintLayoutGroupBox">
<property name="title">
@ -2588,7 +2549,7 @@
</layout>
</widget>
</item>
<item row="7" column="0" colspan="2">
<item row="8" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="mWMSUrlLabel">
@ -2602,49 +2563,95 @@
</item>
</layout>
</item>
<item row="9" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item row="3" column="0">
<widget class="QCheckBox" name="mWmsUseLayerIDs">
<property name="text">
<string>Use layer ids as names</string>
</property>
</widget>
</item>
<item row="13" column="0" colspan="3">
<layout class="QHBoxLayout" name="mWMSDefaultMapUnitsPerMmLayout">
<item>
<widget class="QLabel" name="mWMSImageQualityLabel">
<widget class="QLabel" name="mWMSDefaultMapUnitsPerMmLabel">
<property name="text">
<string>Quality for JPEG images ( 10 : smaller image - 100 : best quality )</string>
</property>
</widget>
</item>
<item>
<widget class="QgsSpinBox" name="mWMSImageQualitySpinBox">
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>90</number>
<string>Default map units per mm in legend</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="11" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_18">
<item>
<widget class="QLabel" name="label_33">
<property name="toolTip">
<string>When using tiles set this to the size of the larger symbols to avoid cut symbols at tile boundaries. This works by drawing features that are outside the tile extent.</string>
</property>
<property name="text">
<string>Tile buffer in pixels</string>
</property>
</widget>
</item>
<item>
<widget class="QgsSpinBox" name="mWMSTileBufferSpinBox"/>
</item>
</layout>
<item row="1" column="2">
<widget class="QgsCollapsibleGroupBox" name="mLayerRestrictionsGroupBox">
<property name="title">
<string>Exclude layers</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="collapsed" stdset="0">
<bool>false</bool>
</property>
<property name="saveCollapsedState" stdset="0">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="3">
<widget class="QListWidget" name="mLayerRestrictionsListWidget"/>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="mAddLayerRestrictionButton">
<property name="toolTip">
<string>Add layer to exclude</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QToolButton" name="mRemoveLayerRestrictionButton">
<property name="toolTip">
<string>Remove selected layer</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
</property>
</widget>
</item>
<item row="1" column="2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="mUseAttributeFormSettingsCheckBox">
<property name="text">
<string>Use attribute form settings for GetFeatureInfo response</string>
</property>
</widget>
</item>
</layout>
</widget>