Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Register 3d widgets on startup
  • Loading branch information
nyalldawson committed Jul 22, 2020
1 parent 368a58b commit 0ed6ff5
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/app/3d/qgsline3dsymbolwidget.cpp
Expand Up @@ -40,6 +40,11 @@ QgsLine3DSymbolWidget::QgsLine3DSymbolWidget( QWidget *parent )
connect( widgetMaterial, &QgsPhongMaterialWidget::changed, this, &QgsLine3DSymbolWidget::changed );
}

Qgs3DSymbolWidget *QgsLine3DSymbolWidget::create( QgsVectorLayer * )
{
return new QgsLine3DSymbolWidget();
}

void QgsLine3DSymbolWidget::setSymbol( const QgsAbstract3DSymbol *symbol, QgsVectorLayer * )
{
const QgsLine3DSymbol *lineSymbol = dynamic_cast< const QgsLine3DSymbol *>( symbol );
Expand Down
2 changes: 2 additions & 0 deletions src/app/3d/qgsline3dsymbolwidget.h
Expand Up @@ -29,6 +29,8 @@ class QgsLine3DSymbolWidget : public Qgs3DSymbolWidget, private Ui::Line3DSymbol
public:
explicit QgsLine3DSymbolWidget( QWidget *parent = nullptr );

static Qgs3DSymbolWidget *create( QgsVectorLayer *layer );

void setSymbol( const QgsAbstract3DSymbol *symbol, QgsVectorLayer *layer ) override;
QgsAbstract3DSymbol *symbol() override;

Expand Down
5 changes: 5 additions & 0 deletions src/app/3d/qgspoint3dsymbolwidget.cpp
Expand Up @@ -74,6 +74,11 @@ QgsPoint3DSymbolWidget::QgsPoint3DSymbolWidget( QWidget *parent )
connect( spinTY, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), spinBillboardHeight, &QDoubleSpinBox::setValue );
}

Qgs3DSymbolWidget *QgsPoint3DSymbolWidget::create( QgsVectorLayer * )
{
return new QgsPoint3DSymbolWidget();
}

void QgsPoint3DSymbolWidget::onOverwriteMaterialChecked( int state )
{
if ( state == Qt::Checked )
Expand Down
2 changes: 2 additions & 0 deletions src/app/3d/qgspoint3dsymbolwidget.h
Expand Up @@ -29,6 +29,8 @@ class QgsPoint3DSymbolWidget : public Qgs3DSymbolWidget, private Ui::Point3DSymb
public:
explicit QgsPoint3DSymbolWidget( QWidget *parent = nullptr );

static Qgs3DSymbolWidget *create( QgsVectorLayer *layer );

void setSymbol( const QgsAbstract3DSymbol *symbol, QgsVectorLayer *layer ) override;
QgsAbstract3DSymbol *symbol() override;

Expand Down
5 changes: 5 additions & 0 deletions src/app/3d/qgspolygon3dsymbolwidget.cpp
Expand Up @@ -46,6 +46,11 @@ QgsPolygon3DSymbolWidget::QgsPolygon3DSymbolWidget( QWidget *parent )
widgetMaterial->activateTexturingUI( true );
}

Qgs3DSymbolWidget *QgsPolygon3DSymbolWidget::create( QgsVectorLayer * )
{
return new QgsPolygon3DSymbolWidget();
}

void QgsPolygon3DSymbolWidget::setSymbol( const QgsAbstract3DSymbol *symbol, QgsVectorLayer *layer )
{
const QgsPolygon3DSymbol *polygonSymbol = dynamic_cast< const QgsPolygon3DSymbol * >( symbol );
Expand Down
2 changes: 2 additions & 0 deletions src/app/3d/qgspolygon3dsymbolwidget.h
Expand Up @@ -28,6 +28,8 @@ class QgsPolygon3DSymbolWidget : public Qgs3DSymbolWidget, private Ui::Polygon3D
public:
explicit QgsPolygon3DSymbolWidget( QWidget *parent = nullptr );

static Qgs3DSymbolWidget *create( QgsVectorLayer *layer );

void setSymbol( const QgsAbstract3DSymbol *symbol, QgsVectorLayer *layer ) override;
QgsAbstract3DSymbol *symbol() override;

Expand Down
9 changes: 9 additions & 0 deletions src/app/qgisapp.cpp
Expand Up @@ -108,9 +108,13 @@
#include "qgslayoutitem3dmap.h"
#include "processing/qgs3dalgorithms.h"
#include "qgs3dmaptoolmeasureline.h"
#include "qgs3dsymbolregistry.h"
#include "layout/qgslayout3dmapwidget.h"
#include "layout/qgslayoutviewrubberband.h"
#include "qgsvectorlayer3drendererwidget.h"
#include "qgspoint3dsymbolwidget.h"
#include "qgsline3dsymbolwidget.h"
#include "qgspolygon3dsymbolwidget.h"
#endif

#ifdef HAVE_GEOREFERENCER
Expand Down Expand Up @@ -12653,6 +12657,11 @@ void QgisApp::init3D()
#ifdef HAVE_3D
// initialize 3D registries
Qgs3D::initialize();

dynamic_cast< Qgs3DSymbolMetadata * >( QgsApplication::symbol3DRegistry()->symbolMetadata( QStringLiteral( "point" ) ) )->setWidgetFunction( QgsPoint3DSymbolWidget::create );
dynamic_cast< Qgs3DSymbolMetadata * >( QgsApplication::symbol3DRegistry()->symbolMetadata( QStringLiteral( "line" ) ) )->setWidgetFunction( QgsLine3DSymbolWidget::create );
dynamic_cast< Qgs3DSymbolMetadata * >( QgsApplication::symbol3DRegistry()->symbolMetadata( QStringLiteral( "polygon" ) ) )->setWidgetFunction( QgsPolygon3DSymbolWidget::create );

#else
mActionNew3DMapCanvas->setVisible( false );
#endif
Expand Down

0 comments on commit 0ed6ff5

Please sign in to comment.