Skip to content

Commit

Permalink
Merge pull request #33833 from kadas-albireo/vectorprops
Browse files Browse the repository at this point in the history
Move QgsVectorLayerProperties and dependencies to GUI
  • Loading branch information
manisandro committed Mar 9, 2020
2 parents cb01e4e + e45bea5 commit aca8e03
Show file tree
Hide file tree
Showing 69 changed files with 981 additions and 575 deletions.
1 change: 1 addition & 0 deletions python/CMakeLists.txt
Expand Up @@ -152,6 +152,7 @@ IF (WITH_GUI)
${CMAKE_SOURCE_DIR}/src/gui/processing
${CMAKE_SOURCE_DIR}/src/gui/processing/models
${CMAKE_SOURCE_DIR}/src/gui/tableeditor
${CMAKE_SOURCE_DIR}/src/gui/vector

${CMAKE_BINARY_DIR}/src/gui
)
Expand Down
7 changes: 7 additions & 0 deletions python/gui/auto_generated/qgsmaplayerconfigwidget.sip.in
Expand Up @@ -43,6 +43,13 @@ be called for the layer after applying changes. This is true by default, but som
(for example 3D rendering config) do not need layer repaint as they do not modify 2D map rendering.

.. versionadded:: 3.8
%End

virtual void syncToLayer( QgsMapLayer *layer );
%Docstring
Reset to original (vector layer) values

.. versionadded:: 3.14
%End

public slots:
Expand Down
54 changes: 54 additions & 0 deletions python/gui/auto_generated/vector/qgsvectorlayerproperties.sip.in
@@ -0,0 +1,54 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/gui/vector/qgsvectorlayerproperties.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/






class QgsVectorLayerProperties : QgsOptionsDialogBase
{
%Docstring
*************************************************************************

This program is free software; you can redistribute it and/or modify *
it under the terms of the GNU General Public License as published by *
the Free Software Foundation; either version 2 of the License, or *
(at your option) any later version. *

**************************************************************************
%End

%TypeHeaderCode
#include "qgsvectorlayerproperties.h"
%End
public:

QgsVectorLayerProperties( QgsMapCanvas *canvas, QgsMessageBar *messageBar, QgsVectorLayer *lyr = 0, QWidget *parent = 0, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags );

void addPropertiesPageFactory( QgsMapLayerConfigWidgetFactory *factory );
%Docstring
Adds a properties page factory to the vector layer properties dialog.
%End

protected slots:

signals:



};


/************************************************************************
* This file has been generated automatically from *
* *
* src/gui/vector/qgsvectorlayerproperties.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
1 change: 1 addition & 0 deletions python/gui/gui_auto.sip
Expand Up @@ -332,6 +332,7 @@
%Include auto_generated/raster/qgssinglebandpseudocolorrendererwidget.sip
%Include auto_generated/raster/qgsrasterlayerproperties.sip
%Include auto_generated/raster/qgsrasterlayertemporalpropertieswidget.sip
%Include auto_generated/vector/qgsvectorlayerproperties.sip
%Include auto_generated/symbology/characterwidget.sip
%Include auto_generated/symbology/qgs25drendererwidget.sip
%Include auto_generated/symbology/qgsarrowsymbollayerwidget.sip
Expand Down
34 changes: 29 additions & 5 deletions src/app/3d/qgsvectorlayer3drendererwidget.cpp
Expand Up @@ -67,7 +67,7 @@ QgsAbstract3DSymbol *QgsSingleSymbol3DRendererWidget::symbol()

// -------

QgsVectorLayer3DRendererWidget::QgsVectorLayer3DRendererWidget( QgsVectorLayer *layer, QgsMapCanvas *canvas, QWidget *parent )
QgsVectorLayer3DRendererWidget::QgsVectorLayer3DRendererWidget( QgsMapLayer *layer, QgsMapCanvas *canvas, QWidget *parent )
: QgsMapLayerConfigWidget( layer, canvas, parent )
{
setPanelTitle( tr( "3D View" ) );
Expand Down Expand Up @@ -103,21 +103,26 @@ QgsVectorLayer3DRendererWidget::QgsVectorLayer3DRendererWidget( QgsVectorLayer *
}


void QgsVectorLayer3DRendererWidget::setLayer( QgsVectorLayer *layer )
void QgsVectorLayer3DRendererWidget::syncToLayer( QgsMapLayer *layer )
{
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
if ( !vlayer )
{
return;
}
mLayer = layer;

int pageIndex;
QgsAbstract3DRenderer *r = layer->renderer3D();
QgsAbstract3DRenderer *r = vlayer->renderer3D();
if ( r && r->type() == QLatin1String( "vector" ) )
{
pageIndex = 1;
widgetSingleSymbolRenderer->setLayer( layer );
widgetSingleSymbolRenderer->setLayer( vlayer );
}
else if ( r && r->type() == QLatin1String( "rulebased" ) )
{
pageIndex = 2;
widgetRuleBasedRenderer->setLayer( layer );
widgetRuleBasedRenderer->setLayer( vlayer );
}
else
{
Expand Down Expand Up @@ -186,3 +191,22 @@ void QgsVectorLayer3DRendererWidget::onRendererTypeChanged( int index )
}
emit widgetChanged();
}


QgsVectorLayer3DRendererWidgetFactory::QgsVectorLayer3DRendererWidgetFactory( QObject *parent )
: QObject( parent )
{
setIcon( QIcon( ":/images/themes/default/3d.svg" ) );
setTitle( tr( "3D View" ) );
}

QgsMapLayerConfigWidget *QgsVectorLayer3DRendererWidgetFactory::createWidget( QgsMapLayer *layer, QgsMapCanvas *canvas, bool dockWidget, QWidget *parent ) const
{
Q_UNUSED( dockWidget )
return new QgsVectorLayer3DRendererWidget( layer, canvas, parent );
}

bool QgsVectorLayer3DRendererWidgetFactory::supportsLayer( QgsMapLayer *layer ) const
{
return layer->type() == QgsMapLayerType::VectorLayer;
}
18 changes: 16 additions & 2 deletions src/app/3d/qgsvectorlayer3drendererwidget.h
Expand Up @@ -19,6 +19,7 @@
#include <memory>

#include "qgsmaplayerconfigwidget.h"
#include "qgsmaplayerconfigwidgetfactory.h"
#include "qgsvectorlayer3drenderer.h"

class QComboBox;
Expand Down Expand Up @@ -61,9 +62,9 @@ class QgsVectorLayer3DRendererWidget : public QgsMapLayerConfigWidget
{
Q_OBJECT
public:
explicit QgsVectorLayer3DRendererWidget( QgsVectorLayer *layer, QgsMapCanvas *canvas, QWidget *parent = nullptr );
explicit QgsVectorLayer3DRendererWidget( QgsMapLayer *layer, QgsMapCanvas *canvas, QWidget *parent = nullptr );

void setLayer( QgsVectorLayer *layer );
void syncToLayer( QgsMapLayer *layer ) override;

void setDockMode( bool dockMode ) override;

Expand All @@ -86,5 +87,18 @@ class QgsVectorLayer3DRendererWidget : public QgsMapLayerConfigWidget
QgsRuleBased3DRendererWidget *widgetRuleBasedRenderer = nullptr;
};

class QgsVectorLayer3DRendererWidgetFactory : public QObject, public QgsMapLayerConfigWidgetFactory
{
Q_OBJECT
public:
explicit QgsVectorLayer3DRendererWidgetFactory( QObject *parent = nullptr );
QgsMapLayerConfigWidget *createWidget( QgsMapLayer *layer, QgsMapCanvas *canvas, bool dockWidget, QWidget *parent ) const override;

bool supportLayerPropertiesDialog() const override { return true; }

bool supportsLayer( QgsMapLayer *layer ) const override;
};



#endif // QGSVECTORLAYER3DRENDERERWIDGET_H
31 changes: 3 additions & 28 deletions src/app/CMakeLists.txt
Expand Up @@ -7,11 +7,6 @@ SET(QGIS_APP_SRCS
${CMAKE_SOURCE_DIR}/external/nmea/gmath.c
${CMAKE_SOURCE_DIR}/external/nmea/time.c

attributeformconfig/qgsattributeformcontaineredit.cpp
attributeformconfig/qgsattributerelationedit.cpp
attributeformconfig/qgsattributetypedialog.cpp
attributeformconfig/qgsattributewidgetedit.cpp

qgisapp.cpp
qgisappinterface.cpp
qgisappstylesheet.cpp
Expand All @@ -22,16 +17,9 @@ SET(QGIS_APP_SRCS
qgsappcoordinateoperationhandlers.cpp
qgsapplayertreeviewmenuprovider.cpp
qgsappwindowmanager.cpp
qgsaddattrdialog.cpp
qgsaddtaborgroup.cpp
qgsappscreenshots.cpp
qgsjoindialog.cpp
qgswmsdimensiondialog.cpp
qgsannotationwidget.cpp
qgsappsslerrorhandler.cpp
qgsattributeactiondialog.cpp
qgsattributeactionpropertiesdialog.cpp
qgsattributesforminitcode.cpp
qgsattributetabledialog.cpp
qgsbookmarks.cpp
qgsbookmarkeditordialog.cpp
Expand All @@ -45,16 +33,12 @@ SET(QGIS_APP_SRCS
qgsguivectorlayertools.cpp
qgshtmlannotationdialog.cpp
qgsdelattrdialog.cpp
qgsdiagramproperties.cpp
qgsdisplayangle.cpp
qgsfieldcalculator.cpp
qgsfirstrundialog.cpp
qgsfixattributedialog.cpp
qgsgeometryvalidationservice.cpp
qgsgeometryvalidationdock.cpp
qgsgeometryvalidationmodel.cpp
qgssourcefieldsproperties.cpp
qgsattributesformproperties.cpp
qgsidentifyresultsdialog.cpp
qgsfeatureaction.cpp
qgslayercapabilitiesmodel.cpp
Expand All @@ -65,10 +49,7 @@ SET(QGIS_APP_SRCS
qgslayertreeviewnocrsindicator.cpp
qgslayertreeviewnonremovableindicator.cpp
qgslayertreeviewbadlayerindicator.cpp
qgsmaskingwidget.cpp
qgsmasksourceselectionwidget.cpp
qgsmapcanvasdockwidget.cpp
qgsmaplayerstylecategoriesmodel.cpp
qgsmapsavedialog.cpp
qgsprojectlistitemdelegate.cpp
qgspuzzlewidget.cpp
Expand All @@ -78,11 +59,10 @@ SET(QGIS_APP_SRCS
qgsstatusbarcoordinateswidget.cpp
qgsstatusbarmagnifierwidget.cpp
qgsstatusbarscalewidget.cpp
qgssymbollayerselectionwidget.cpp
qgstemplateprojectsmodel.cpp
qgsvectorlayerloadstyledialog.cpp
qgsversioninfo.cpp
qgsrecentprojectsitemsmodel.cpp
qgsvectorlayerdigitizingproperties.cpp
qgswelcomepage.cpp

qgsmaptooladdfeature.cpp
Expand Down Expand Up @@ -154,9 +134,6 @@ SET(QGIS_APP_SRCS
qgstextannotationdialog.cpp
qgssvgannotationdialog.cpp
qgsundowidget.cpp
qgsvectorlayerlegendwidget.cpp
qgsvectorlayersavestyledialog.cpp
qgsvectorlayerproperties.cpp
qgsmapthemes.cpp
qgshandlebadlayers.cpp
qgsmaptooladdcircularstring.cpp
Expand Down Expand Up @@ -185,15 +162,12 @@ SET(QGIS_APP_SRCS
browser/qgsinbuiltdataitemproviders.cpp

labeling/qgslabelpropertydialog.cpp
labeling/qgslabelengineconfigdialog.cpp
labeling/qgslabelingwidget.cpp
labeling/qgsmaptoolchangelabelproperties.cpp
labeling/qgsmaptoolpinlabels.cpp
labeling/qgsmaptoolshowhidelabels.cpp
labeling/qgsmaptoollabel.cpp
labeling/qgsmaptoolmovelabel.cpp
labeling/qgsmaptoolrotatelabel.cpp
labeling/qgsrulebasedlabelingwidget.cpp

layout/qgslayoutappmenuprovider.cpp
layout/qgslayoutdesignerdialog.cpp
Expand Down Expand Up @@ -395,7 +369,6 @@ INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/external

${CMAKE_SOURCE_DIR}/src/app
${CMAKE_SOURCE_DIR}/src/app/attributeformconfig
${CMAKE_SOURCE_DIR}/src/app/decorations
${CMAKE_SOURCE_DIR}/src/app/labeling
${CMAKE_SOURCE_DIR}/src/app/layout
Expand Down Expand Up @@ -430,6 +403,7 @@ INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/src/core/effects
${CMAKE_SOURCE_DIR}/src/core/validity
${CMAKE_SOURCE_DIR}/src/gui
${CMAKE_SOURCE_DIR}/src/gui/attributeformconfig
${CMAKE_SOURCE_DIR}/src/gui/symbology
${CMAKE_SOURCE_DIR}/src/gui/attributetable
${CMAKE_SOURCE_DIR}/src/gui/auth
Expand All @@ -443,6 +417,7 @@ INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/src/gui/editorwidgets/core
${CMAKE_SOURCE_DIR}/src/gui/layertree
${CMAKE_SOURCE_DIR}/src/gui/locator
${CMAKE_SOURCE_DIR}/src/gui/vector
${CMAKE_SOURCE_DIR}/src/plugins
${CMAKE_SOURCE_DIR}/src/python
${CMAKE_SOURCE_DIR}/src/native
Expand Down
23 changes: 22 additions & 1 deletion src/app/qgisapp.cpp
Expand Up @@ -110,6 +110,7 @@
#include "qgs3dmaptoolmeasureline.h"
#include "layout/qgslayout3dmapwidget.h"
#include "layout/qgslayoutviewrubberband.h"
#include "qgsvectorlayer3drendererwidget.h"
#endif

#include "qgsgui.h"
Expand Down Expand Up @@ -332,6 +333,7 @@ Q_GUI_EXPORT extern int qt_defaultDpiX();
#include "qgsvectorfilewriter.h"
#include "qgsvectorlayer.h"
#include "qgsvectorlayerproperties.h"
#include "qgsvectorlayerdigitizingproperties.h"
#include "qgsmapthemes.h"
#include "qgsmessagelogviewer.h"
#include "qgsdataitem.h"
Expand Down Expand Up @@ -1239,6 +1241,11 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh
addWindow( mWindowAction );
#endif

registerMapLayerPropertiesFactory( new QgsVectorLayerDigitizingPropertiesFactory( this ) );
#ifdef HAVE_3D
registerMapLayerPropertiesFactory( new QgsVectorLayer3DRendererWidgetFactory( this ) );
#endif

activateDeactivateLayerRelatedActions( nullptr ); // after members were created

connect( QgsGui::mapLayerActionRegistry(), &QgsMapLayerActionRegistry::changed, this, &QgisApp::refreshActionFeatureAction );
Expand Down Expand Up @@ -14835,7 +14842,21 @@ void QgisApp::showLayerProperties( QgsMapLayer *mapLayer )
{
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mapLayer );

QgsVectorLayerProperties *vectorLayerPropertiesDialog = new QgsVectorLayerProperties( vlayer, this );
QgsVectorLayerProperties *vectorLayerPropertiesDialog = new QgsVectorLayerProperties( mMapCanvas, visibleMessageBar(), vlayer, this );
connect(
vectorLayerPropertiesDialog, static_cast<void ( QgsVectorLayerProperties::* )( QgsMapLayer * )>( &QgsVectorLayerProperties::toggleEditing ),
this, [ = ]( QgsMapLayer * layer ) { toggleEditing( layer ); }
);
connect( vectorLayerPropertiesDialog, &QgsVectorLayerProperties::exportAuxiliaryLayer, this, [ = ]( QgsAuxiliaryLayer * layer )
{
if ( layer )
{
std::unique_ptr<QgsVectorLayer> clone;
clone.reset( layer->toSpatialLayer() );

saveAsFile( clone.get() );
}
} );
for ( QgsMapLayerConfigWidgetFactory *factory : qgis::as_const( mMapLayerPanelFactories ) )
{
vectorLayerPropertiesDialog->addPropertiesPageFactory( factory );
Expand Down
4 changes: 2 additions & 2 deletions src/app/qgsappscreenshots.cpp
Expand Up @@ -236,7 +236,7 @@ void QgsAppScreenShots::setGradientSize( int size )
void QgsAppScreenShots::takeVectorLayerProperties()
{
QString folder = QStringLiteral( "working_with_vector/img/auto_generated/vector_layer_properties" );
QgsVectorLayerProperties *dlg = new QgsVectorLayerProperties( mLineLayer, QgisApp::instance() );
QgsVectorLayerProperties *dlg = new QgsVectorLayerProperties( QgisApp::instance()->mapCanvas(), QgisApp::instance()->visibleMessageBar(), mLineLayer, QgisApp::instance() );
dlg->show();
dlg->mJoinTreeWidget->expandAll(); // expand join tree
// ----------------
Expand Down Expand Up @@ -273,7 +273,7 @@ void QgsAppScreenShots::takeVectorLayerProperties()
void QgsAppScreenShots::takeVectorLayerProperties25DSymbol()
{
QString folder = QStringLiteral( "working_with_vector/img/auto_generated/vector_layer_properties/" );
QgsVectorLayerProperties *dlg = new QgsVectorLayerProperties( mPolygonLayer, QgisApp::instance() );
QgsVectorLayerProperties *dlg = new QgsVectorLayerProperties( QgisApp::instance()->mapCanvas(), QgisApp::instance()->visibleMessageBar(), mPolygonLayer, QgisApp::instance() );
dlg->show();
dlg->mOptionsListWidget->setCurrentRow( 2 );
Q_ASSERT( dlg->mOptionsListWidget->currentItem()->icon().pixmap( 24, 24 ).toImage()
Expand Down
2 changes: 1 addition & 1 deletion src/app/qgslayerstylingwidget.cpp
Expand Up @@ -476,7 +476,7 @@ void QgsLayerStylingWidget::updateCurrentWidgetLayer()
mVector3DWidget->setDockMode( true );
connect( mVector3DWidget, &QgsVectorLayer3DRendererWidget::widgetChanged, this, &QgsLayerStylingWidget::autoApply );
}
mVector3DWidget->setLayer( vlayer );
mVector3DWidget->syncToLayer( vlayer );
mWidgetStack->setMainPanel( mVector3DWidget );
break;
}
Expand Down

0 comments on commit aca8e03

Please sign in to comment.