Skip to content

Commit

Permalink
Expose settings for override selection color and selection symbol for…
Browse files Browse the repository at this point in the history
… vector layers
  • Loading branch information
nyalldawson committed Jul 28, 2023
1 parent f54cba7 commit caa500b
Show file tree
Hide file tree
Showing 2 changed files with 138 additions and 1 deletion.
66 changes: 65 additions & 1 deletion src/gui/vector/qgsvectorlayerproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "qgsactionmanager.h"
#include "qgsjoindialog.h"
#include "qgssldexportcontext.h"
#include "qgsvectorlayerselectionproperties.h"
#include "qgswmsdimensiondialog.h"
#include "qgsapplication.h"
#include "qgsattributeactiondialog.h"
Expand Down Expand Up @@ -247,6 +248,36 @@ QgsVectorLayerProperties::QgsVectorLayerProperties(
mBtnMetadata->setMenu( menuMetadata );
buttonBox->addButton( mBtnMetadata, QDialogButtonBox::ResetRole );

mSelectionColorButton->setAllowOpacity( true );
mSelectionColorButton->setColorDialogTitle( tr( "Override Selection Color" ) );
if ( mCanvas )
{
mSelectionColorButton->setColor( mCanvas->selectionColor() );
mSelectionColorButton->setDefaultColor( mCanvas->selectionColor() );
}
connect( mRadioOverrideSelectionColor, &QRadioButton::toggled, mSelectionColorButton, &QWidget::setEnabled );
mSelectionColorButton->setEnabled( false );
connect( mRadioOverrideSelectionSymbol, &QRadioButton::toggled, mSelectionSymbolButton, &QWidget::setEnabled );
switch ( mLayer->geometryType() )
{

case Qgis::GeometryType::Point:
mSelectionSymbolButton->setSymbolType( Qgis::SymbolType::Marker );
break;
case Qgis::GeometryType::Line:
mSelectionSymbolButton->setSymbolType( Qgis::SymbolType::Line );
break;
case Qgis::GeometryType::Polygon:
mSelectionSymbolButton->setSymbolType( Qgis::SymbolType::Fill );
break;

case Qgis::GeometryType::Unknown:
case Qgis::GeometryType::Null:
break;
}
mSelectionSymbolButton->setEnabled( false );
mRadioDefaultSelectionColor->setChecked( true );

syncToLayer();

if ( mLayer->dataProvider() )
Expand Down Expand Up @@ -497,7 +528,6 @@ void QgsVectorLayerProperties::removeSelectedMetadataUrl()
mMetadataUrlModel->removeRow( selectedRows[0].row() );
}

// in raster props, this method is called sync()
void QgsVectorLayerProperties::syncToLayer()
{
if ( !mSourceWidget )
Expand Down Expand Up @@ -560,6 +590,22 @@ void QgsVectorLayerProperties::syncToLayer()
mSimplifyDrawingSpinBox->setValue( simplifyMethod.threshold() );
mSimplifyDrawingSpinBox->setClearValue( 1.0 );

QgsVectorLayerSelectionProperties *selectionProperties = qobject_cast< QgsVectorLayerSelectionProperties *>( mLayer->selectionProperties() );
if ( QgsSymbol *symbol = selectionProperties->selectionSymbol() )
{
mRadioOverrideSelectionSymbol->setChecked( true );
mSelectionSymbolButton->setSymbol( symbol->clone() );
}
else if ( selectionProperties->selectionColor().isValid() )
{
mSelectionColorButton->setColor( selectionProperties->selectionColor() );
mRadioOverrideSelectionColor->setChecked( true );
}
else
{
mRadioDefaultSelectionColor->setChecked( true );
}

QString remark = QStringLiteral( " (%1)" ).arg( tr( "Not supported" ) );
const QgsVectorDataProvider *provider = mLayer->dataProvider();
if ( !( provider && ( provider->capabilities() & QgsVectorDataProvider::SimplifyGeometries ) ) )
Expand Down Expand Up @@ -824,6 +870,24 @@ void QgsVectorLayerProperties::apply()
mLayer->renderer()->setReferenceScale( mUseReferenceScaleGroupBox->isChecked() ? mReferenceScaleWidget->scale() : -1 );
}


QgsVectorLayerSelectionProperties *selectionProperties = qobject_cast< QgsVectorLayerSelectionProperties *>( mLayer->selectionProperties() );
if ( mRadioOverrideSelectionSymbol->isChecked() )
{
selectionProperties->setSelectionColor( QColor() );
selectionProperties->setSelectionSymbol( mSelectionSymbolButton->symbol()->clone() );
}
else if ( mRadioOverrideSelectionColor->isChecked() )
{
selectionProperties->setSelectionColor( mSelectionColorButton->color() );
selectionProperties->setSelectionSymbol( nullptr );
}
else
{
selectionProperties->setSelectionColor( QColor() );
selectionProperties->setSelectionSymbol( nullptr );
}

mLayer->setAutoRefreshInterval( mRefreshLayerIntervalSpinBox->value() * 1000.0 );
mLayer->setAutoRefreshEnabled( mRefreshLayerCheckBox->isChecked() );

Expand Down
73 changes: 73 additions & 0 deletions src/ui/qgsvectorlayerpropertiesbase.ui
Original file line number Diff line number Diff line change
Expand Up @@ -1787,6 +1787,68 @@
</layout>
</widget>
</item>
<item>
<widget class="QgsCollapsibleGroupBox" name="groupBox_2">
<property name="title">
<string>Selections</string>
</property>
<layout class="QGridLayout" name="gridLayout_9">
<item row="3" column="0">
<widget class="QRadioButton" name="mRadioOverrideSelectionSymbol">
<property name="text">
<string>Override symbol for selected features</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QRadioButton" name="mRadioDefaultSelectionColor">
<property name="text">
<string>Use default selection color</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="mRadioOverrideSelectionColor">
<property name="text">
<string>Override color for selected features</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QgsColorButton" name="mSelectionColorButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QgsSymbolButton" name="mSelectionSymbolButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Change…</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="mForceRasterCheckBox">
<property name="text">
Expand Down Expand Up @@ -2677,6 +2739,17 @@
<header>qgsscalewidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QgsSymbolButton</class>
<extends>QToolButton</extends>
<header>qgssymbolbutton.h</header>
</customwidget>
<customwidget>
<class>QgsColorButton</class>
<extends>QToolButton</extends>
<header>qgscolorbutton.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>mSearchLineEdit</tabstop>
Expand Down

0 comments on commit caa500b

Please sign in to comment.