Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Expose clipping blend modes for layers which are contained within group
layers
  • Loading branch information
nyalldawson committed Nov 25, 2021
1 parent ce408fc commit 711a363
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 1 deletion.
8 changes: 8 additions & 0 deletions python/core/auto_generated/project/qgsprojectutils.sip.in
Expand Up @@ -38,6 +38,14 @@ with sources which point to ``newPath``.
Returns ``True`` if any layers were updated as a result.
%End

static bool layerIsContainedInGroupLayer( QgsProject *project, QgsMapLayer *layer );
%Docstring
Returns ``True`` if the specified ``layer`` is a child layer from any :py:class:`QgsGroupLayer` in the given ``project``.

.. versionadded:: 3.24
%End


};


Expand Down
3 changes: 3 additions & 0 deletions src/app/annotations/qgsannotationitempropertieswidget.cpp
Expand Up @@ -23,6 +23,8 @@
#include "qgsgui.h"
#include "qgsannotationitemguiregistry.h"
#include "qgspainteffect.h"
#include "qgsproject.h"
#include "qgsprojectutils.h"

#include <QStackedWidget>
#include <QHBoxLayout>
Expand Down Expand Up @@ -70,6 +72,7 @@ void QgsAnnotationItemPropertiesWidget::syncToLayer( QgsMapLayer *layer )

// opacity and blend modes
mBlockLayerUpdates = true;
mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), mLayer ) );
mBlendModeComboBox->setBlendMode( mLayer->blendMode() );
mOpacityWidget->setOpacity( mLayer->opacity() );
if ( mLayer->paintEffect() )
Expand Down
3 changes: 3 additions & 0 deletions src/app/annotations/qgsannotationlayerproperties.cpp
Expand Up @@ -27,6 +27,8 @@
#include "qgsmaplayerconfigwidget.h"
#include "qgsdatumtransformdialog.h"
#include "qgspainteffect.h"
#include "qgsproject.h"
#include "qgsprojectutils.h"
#include <QFileDialog>
#include <QMenu>
#include <QMessageBox>
Expand Down Expand Up @@ -114,6 +116,7 @@ void QgsAnnotationLayerProperties::apply()
mLayer->setMinimumScale( mScaleRangeWidget->minimumScale() );

// set the blend mode and opacity for the layer
mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), mLayer ) );
mLayer->setBlendMode( mBlendModeComboBox->blendMode() );
mLayer->setOpacity( mOpacityWidget->opacity() );

Expand Down
3 changes: 3 additions & 0 deletions src/app/qgslayertreegrouppropertieswidget.cpp
Expand Up @@ -21,6 +21,8 @@
#include "qgspainteffect.h"
#include "qgsmapcanvas.h"
#include "qgspainteffectregistry.h"
#include "qgsproject.h"
#include "qgsprojectutils.h"

#include <QStackedWidget>
#include <QHBoxLayout>
Expand Down Expand Up @@ -54,6 +56,7 @@ void QgsLayerTreeGroupPropertiesWidget::setMapLayerConfigWidgetContext( const Qg
if ( QgsGroupLayer *groupLayer = mLayerTreeGroup->groupLayer() )
{
mRenderAsGroupCheckBox->setChecked( true );
mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), groupLayer ) );
mBlendModeComboBox->setBlendMode( groupLayer->blendMode() );
mOpacityWidget->setOpacity( groupLayer->opacity() );
if ( groupLayer->paintEffect() )
Expand Down
3 changes: 3 additions & 0 deletions src/gui/mesh/qgsrenderermeshpropertieswidget.cpp
Expand Up @@ -23,6 +23,8 @@
#include "qgsmeshdatasetgrouptreeview.h"
#include "qgsmeshrendereractivedatasetwidget.h"
#include "qgsmeshlayerutils.h"
#include "qgsproject.h"
#include "qgsprojectutils.h"

QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer *layer, QgsMapCanvas *canvas, QWidget *parent )
: QgsMapLayerConfigWidget( layer, canvas, parent )
Expand All @@ -48,6 +50,7 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer *
syncToLayer( mMeshLayer );

//blend mode
mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), mMeshLayer ) );
mBlendModeComboBox->setBlendMode( mMeshLayer->blendMode() );
connect( mBlendModeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPanelWidget::widgetChanged );

Expand Down
3 changes: 3 additions & 0 deletions src/gui/pointcloud/qgspointcloudrendererpropertieswidget.cpp
Expand Up @@ -28,6 +28,8 @@

#include "qgspointcloudrgbrenderer.h"
#include "qgslogger.h"
#include "qgsproject.h"
#include "qgsprojectutils.h"

static bool _initRenderer( const QString &name, QgsPointCloudRendererWidgetFunc f, const QString &iconName = QString() )
{
Expand Down Expand Up @@ -127,6 +129,7 @@ void QgsPointCloudRendererPropertiesWidget::syncToLayer( QgsMapLayer *layer )

mBlockChangedSignal = true;
mOpacityWidget->setOpacity( mLayer->opacity() );
mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), mLayer ) );
mBlendModeComboBox->setBlendMode( mLayer->blendMode() );

if ( mLayer->renderer() )
Expand Down
2 changes: 2 additions & 0 deletions src/gui/raster/qgsrasterlayerproperties.cpp
Expand Up @@ -67,6 +67,7 @@
#include "qgsrasterlayertemporalproperties.h"
#include "qgsdoublevalidator.h"
#include "qgsmaplayerconfigwidgetfactory.h"
#include "qgsprojectutils.h"

#include "qgsrasterlayertemporalpropertieswidget.h"
#include "qgsprojecttimesettings.h"
Expand Down Expand Up @@ -385,6 +386,7 @@ QgsRasterLayerProperties::QgsRasterLayerProperties( QgsMapLayer *lyr, QgsMapCanv
}

//blend mode
mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), mRasterLayer ) );
mBlendModeComboBox->setBlendMode( mRasterLayer->blendMode() );

//transparency band
Expand Down
4 changes: 3 additions & 1 deletion src/gui/raster/qgsrendererrasterpropertieswidget.cpp
Expand Up @@ -31,7 +31,8 @@
#include "qgssinglebandgrayrenderer.h"
#include "qgsapplication.h"
#include "qgscolorrampimpl.h"

#include "qgsproject.h"
#include "qgsprojectutils.h"

#include "qgsmessagelog.h"

Expand Down Expand Up @@ -227,6 +228,7 @@ void QgsRendererRasterPropertiesWidget::syncToLayer( QgsRasterLayer *layer )
}

//blend mode
mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), mRasterLayer ) );
mBlendModeComboBox->setBlendMode( mRasterLayer->blendMode() );

//set combo boxes to current resampling types
Expand Down
5 changes: 5 additions & 0 deletions src/gui/symbology/qgsrendererpropertiesdialog.cpp
Expand Up @@ -32,6 +32,8 @@
#include "qgsembeddedsymbolrendererwidget.h"
#include "qgspanelwidget.h"
#include "qgspainteffect.h"
#include "qgsproject.h"
#include "qgsprojectutils.h"

#include "qgsorderbydialog.h"
#include "qgsapplication.h"
Expand Down Expand Up @@ -344,6 +346,9 @@ void QgsRendererPropertiesDialog::openPanel( QgsPanelWidget *panel )

void QgsRendererPropertiesDialog::syncToLayer()
{
mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), mLayer ) );
mFeatureBlendComboBox->setShowClippingModes( mBlendModeComboBox->showClippingModes() );

// Blend mode
mBlendModeComboBox->setBlendMode( mLayer->blendMode() );

Expand Down

0 comments on commit 711a363

Please sign in to comment.