void QgsVectorLayer3DRendererWidget::setRenderer( const QgsVectorLayer3DRenderer *renderer ) { mRenderer.reset( renderer ? renderer->clone() : nullptr ); whileBlocking( chkEnabled )->setChecked( ( bool )mRenderer ); widgetLine->setEnabled( chkEnabled->isChecked() ); widgetPoint->setEnabled( chkEnabled->isChecked() ); widgetPolygon->setEnabled( chkEnabled->isChecked() ); int pageIndex; QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mLayer ); switch ( vlayer->geometryType() ) { case QgsWkbTypes::PointGeometry: pageIndex = 2; if ( mRenderer && mRenderer->symbol() && mRenderer->symbol()->type() == "point" ) { whileBlocking( widgetPoint )->setSymbol( *static_cast<const QgsPoint3DSymbol *>( mRenderer->symbol() ) ); } else { whileBlocking( widgetPoint )->setSymbol( QgsPoint3DSymbol() ); } break; case QgsWkbTypes::LineGeometry: pageIndex = 1; if ( mRenderer && mRenderer->symbol() && mRenderer->symbol()->type() == "line" ) { whileBlocking( widgetLine )->setSymbol( *static_cast<const QgsLine3DSymbol *>( mRenderer->symbol() ) ); } else { whileBlocking( widgetLine )->setSymbol( QgsLine3DSymbol() ); } break; case QgsWkbTypes::PolygonGeometry: pageIndex = 3; if ( mRenderer && mRenderer->symbol() && mRenderer->symbol()->type() == "polygon" ) { whileBlocking( widgetPolygon )->setSymbol( *static_cast<const QgsPolygon3DSymbol *>( mRenderer->symbol() ) ); } else { whileBlocking( widgetPolygon )->setSymbol( QgsPolygon3DSymbol() ); } break; default: pageIndex = 0; // unsupported break; } widgetStack->setCurrentIndex( pageIndex ); }
void QgsSymbol3DWidget::setSymbol( const QgsAbstract3DSymbol *symbol, QgsVectorLayer *vlayer ) { int pageIndex; switch ( vlayer->geometryType() ) { case QgsWkbTypes::PointGeometry: pageIndex = 2; if ( symbol && symbol->type() == QLatin1String( "point" ) ) { whileBlocking( widgetPoint )->setSymbol( *static_cast<const QgsPoint3DSymbol *>( symbol ) ); } else { whileBlocking( widgetPoint )->setSymbol( QgsPoint3DSymbol() ); } break; case QgsWkbTypes::LineGeometry: pageIndex = 1; if ( symbol && symbol->type() == QLatin1String( "line" ) ) { whileBlocking( widgetLine )->setSymbol( *static_cast<const QgsLine3DSymbol *>( symbol ) ); } else { whileBlocking( widgetLine )->setSymbol( QgsLine3DSymbol() ); } break; case QgsWkbTypes::PolygonGeometry: pageIndex = 3; if ( symbol && symbol->type() == QLatin1String( "polygon" ) ) { whileBlocking( widgetPolygon )->setSymbol( *static_cast<const QgsPolygon3DSymbol *>( symbol ), vlayer ); } else { whileBlocking( widgetPolygon )->setSymbol( QgsPolygon3DSymbol(), vlayer ); } break; default: pageIndex = 0; // unsupported break; } widgetStack->setCurrentIndex( pageIndex ); }
QgsPoint3DSymbolWidget::QgsPoint3DSymbolWidget( QWidget *parent ) : QWidget( parent ) { setupUi( this ); spinTX->setClearValue( 0.0 ); spinTY->setClearValue( 0.0 ); spinTZ->setClearValue( 0.0 ); spinSX->setClearValue( 1.0 ); spinSY->setClearValue( 1.0 ); spinSZ->setClearValue( 1.0 ); spinRX->setClearValue( 0.0 ); spinRY->setClearValue( 0.0 ); spinRZ->setClearValue( 0.0 ); cboShape->addItem( tr( "Sphere" ), QgsPoint3DSymbol::Sphere ); cboShape->addItem( tr( "Cylinder" ), QgsPoint3DSymbol::Cylinder ); cboShape->addItem( tr( "Cube" ), QgsPoint3DSymbol::Cube ); cboShape->addItem( tr( "Cone" ), QgsPoint3DSymbol::Cone ); cboShape->addItem( tr( "Plane" ), QgsPoint3DSymbol::Plane ); cboShape->addItem( tr( "Torus" ), QgsPoint3DSymbol::Torus ); cboShape->addItem( tr( "3D Model" ), QgsPoint3DSymbol::Model ); setSymbol( QgsPoint3DSymbol() ); onShapeChanged(); connect( cboAltClamping, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPoint3DSymbolWidget::changed ); connect( cboShape, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPoint3DSymbolWidget::onShapeChanged ); QList<QDoubleSpinBox *> spinWidgets; spinWidgets << spinRadius << spinTopRadius << spinBottomRadius << spinMinorRadius << spinSize << spinLength; spinWidgets << spinTX << spinTY << spinTZ << spinSX << spinSY << spinSZ << spinRX << spinRY << spinRZ; Q_FOREACH ( QDoubleSpinBox *spinBox, spinWidgets ) connect( spinBox, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, &QgsPoint3DSymbolWidget::changed ); connect( lineEditModel, static_cast<void ( QLineEdit::* )( const QString & )>( &QLineEdit::textChanged ), this, &QgsPoint3DSymbolWidget::changed ); connect( btnModel, static_cast<void ( QToolButton::* )( bool )>( &QToolButton::clicked ), this, &QgsPoint3DSymbolWidget::onChooseModelClicked ); connect( cbOverwriteMaterial, static_cast<void ( QCheckBox::* )( int )>( &QCheckBox::stateChanged ), this, &QgsPoint3DSymbolWidget::onOverwriteMaterialChecked ); connect( widgetMaterial, &QgsPhongMaterialWidget::changed, this, &QgsPoint3DSymbolWidget::changed ); }