mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-18 00:03:05 -04:00
Review fixes, sip, doc fixes, icons, style panel fix
This commit is contained in:
parent
f069342b35
commit
9875821b04
@ -1,6 +1,7 @@
|
|||||||
// Include auto-generated SIP files
|
// Include auto-generated SIP files
|
||||||
%Include auto_generated/qgs3dtypes.sip
|
%Include auto_generated/qgs3dtypes.sip
|
||||||
%Include auto_generated/qgsphongmaterialsettings.sip
|
%Include auto_generated/qgsphongmaterialsettings.sip
|
||||||
|
%Include auto_generated/qgsrulebased3drenderer.sip
|
||||||
%Include auto_generated/qgsvectorlayer3drenderer.sip
|
%Include auto_generated/qgsvectorlayer3drenderer.sip
|
||||||
%Include auto_generated/symbols/qgsabstract3dsymbol.sip
|
%Include auto_generated/symbols/qgsabstract3dsymbol.sip
|
||||||
%Include auto_generated/symbols/qgsline3dsymbol.sip
|
%Include auto_generated/symbols/qgsline3dsymbol.sip
|
||||||
|
280
python/3d/auto_generated/qgsrulebased3drenderer.sip.in
Normal file
280
python/3d/auto_generated/qgsrulebased3drenderer.sip.in
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* This file has been generated automatically from *
|
||||||
|
* *
|
||||||
|
* src/3d/qgsrulebased3drenderer.h *
|
||||||
|
* *
|
||||||
|
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
|
||||||
|
************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class QgsRuleBased3DRendererMetadata : Qgs3DRendererAbstractMetadata
|
||||||
|
{
|
||||||
|
%Docstring
|
||||||
|
Metadata for rule-based 3D renderer to allow creation of its instances from XML
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
This is not considered stable API, and may change in future QGIS releases. It is
|
||||||
|
exposed to the Python bindings as a tech preview only.
|
||||||
|
|
||||||
|
.. versionadded:: 3.6
|
||||||
|
%End
|
||||||
|
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include "qgsrulebased3drenderer.h"
|
||||||
|
%End
|
||||||
|
public:
|
||||||
|
QgsRuleBased3DRendererMetadata();
|
||||||
|
|
||||||
|
virtual QgsAbstract3DRenderer *createRenderer( QDomElement &elem, const QgsReadWriteContext &context ) /Factory/;
|
||||||
|
|
||||||
|
%Docstring
|
||||||
|
Creates an instance of a 3D renderer based on a DOM element with renderer configuration
|
||||||
|
%End
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class QgsRuleBased3DRenderer : QgsAbstract3DRenderer
|
||||||
|
{
|
||||||
|
%Docstring
|
||||||
|
Rule-based 3D renderer.
|
||||||
|
|
||||||
|
Similar to rule-based 2D renderer and rule-based labeling, it allows specification of rules for 3D symbols.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
This is not considered stable API, and may change in future QGIS releases. It is
|
||||||
|
exposed to the Python bindings as a tech preview only.
|
||||||
|
|
||||||
|
.. versionadded:: 3.6
|
||||||
|
%End
|
||||||
|
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include "qgsrulebased3drenderer.h"
|
||||||
|
%End
|
||||||
|
public:
|
||||||
|
|
||||||
|
typedef QList<QgsRuleBased3DRenderer::Rule *> RuleList;
|
||||||
|
typedef QMap<const QgsRuleBased3DRenderer::Rule *, QgsFeature3DHandler *> RuleToHandlerMap;
|
||||||
|
|
||||||
|
class Rule
|
||||||
|
{
|
||||||
|
%Docstring
|
||||||
|
|
||||||
|
.. versionadded:: 3.6
|
||||||
|
%End
|
||||||
|
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include "qgsrulebased3drenderer.h"
|
||||||
|
%End
|
||||||
|
public:
|
||||||
|
Rule( QgsAbstract3DSymbol *symbol /Transfer/, const QString &filterExp = QString(), const QString &description = QString(), bool elseRule = false );
|
||||||
|
%Docstring
|
||||||
|
takes ownership of symbol, symbol may be None
|
||||||
|
%End
|
||||||
|
~Rule();
|
||||||
|
|
||||||
|
|
||||||
|
enum RegisterResult
|
||||||
|
{
|
||||||
|
Filtered,
|
||||||
|
Inactive,
|
||||||
|
Registered
|
||||||
|
};
|
||||||
|
|
||||||
|
QgsAbstract3DSymbol *symbol() const;
|
||||||
|
%Docstring
|
||||||
|
Gets the labeling settings. May return a null pointer.
|
||||||
|
%End
|
||||||
|
|
||||||
|
QString filterExpression() const;
|
||||||
|
%Docstring
|
||||||
|
A filter that will check if this rule applies
|
||||||
|
|
||||||
|
:return: An expression
|
||||||
|
%End
|
||||||
|
|
||||||
|
QString description() const;
|
||||||
|
%Docstring
|
||||||
|
A human readable description for this rule
|
||||||
|
|
||||||
|
:return: Description
|
||||||
|
%End
|
||||||
|
|
||||||
|
bool active() const;
|
||||||
|
%Docstring
|
||||||
|
Returns if this rule is active
|
||||||
|
|
||||||
|
:return: True if the rule is active
|
||||||
|
%End
|
||||||
|
|
||||||
|
bool isElse() const;
|
||||||
|
%Docstring
|
||||||
|
Check if this rule is an ELSE rule
|
||||||
|
|
||||||
|
:return: True if this rule is an else rule
|
||||||
|
%End
|
||||||
|
|
||||||
|
QString ruleKey() const;
|
||||||
|
%Docstring
|
||||||
|
Unique rule identifier (for identification of rule within labeling, used as provider ID)
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setSymbol( QgsAbstract3DSymbol *symbol /Transfer/ );
|
||||||
|
%Docstring
|
||||||
|
Sets new symbol (or NULL). Deletes old symbol if any.
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setFilterExpression( const QString &filterExp );
|
||||||
|
%Docstring
|
||||||
|
Set the expression used to check if a given feature shall be rendered with this rule
|
||||||
|
|
||||||
|
:param filterExp: An expression
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setDescription( const QString &description );
|
||||||
|
%Docstring
|
||||||
|
Set a human readable description for this rule
|
||||||
|
|
||||||
|
:param description: Description
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setActive( bool state );
|
||||||
|
%Docstring
|
||||||
|
Sets if this rule is active
|
||||||
|
|
||||||
|
:param state: Determines if the rule should be activated or deactivated
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setIsElse( bool iselse );
|
||||||
|
%Docstring
|
||||||
|
Sets if this rule is an ELSE rule
|
||||||
|
|
||||||
|
:param iselse: If true, this rule is an ELSE rule
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setRuleKey( const QString &key );
|
||||||
|
%Docstring
|
||||||
|
Override the assigned rule key (should be used just internally by rule-based renderer)
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
const QgsRuleBased3DRenderer::RuleList &children() const;
|
||||||
|
%Docstring
|
||||||
|
Returns all children rules of this rule
|
||||||
|
|
||||||
|
:return: A list of rules
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
QgsRuleBased3DRenderer::RuleList descendants() const;
|
||||||
|
%Docstring
|
||||||
|
Returns all children, grand-children, grand-grand-children, grand-gra... you get it
|
||||||
|
|
||||||
|
:return: A list of descendant rules
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
QgsRuleBased3DRenderer::Rule *parent();
|
||||||
|
%Docstring
|
||||||
|
The parent rule
|
||||||
|
|
||||||
|
:return: Parent rule
|
||||||
|
%End
|
||||||
|
|
||||||
|
void appendChild( QgsRuleBased3DRenderer::Rule *rule /Transfer/ );
|
||||||
|
%Docstring
|
||||||
|
add child rule, take ownership, sets this as parent
|
||||||
|
%End
|
||||||
|
|
||||||
|
void insertChild( int i, QgsRuleBased3DRenderer::Rule *rule /Transfer/ );
|
||||||
|
%Docstring
|
||||||
|
add child rule, take ownership, sets this as parent
|
||||||
|
%End
|
||||||
|
|
||||||
|
void removeChildAt( int i );
|
||||||
|
%Docstring
|
||||||
|
delete child rule
|
||||||
|
%End
|
||||||
|
|
||||||
|
const QgsRuleBased3DRenderer::Rule *findRuleByKey( const QString &key ) const;
|
||||||
|
%Docstring
|
||||||
|
Try to find a rule given its unique key
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
QgsRuleBased3DRenderer::Rule *clone() const /Factory/;
|
||||||
|
%Docstring
|
||||||
|
clone this rule, return new instance
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
static QgsRuleBased3DRenderer::Rule *create( const QDomElement &ruleElem, const QgsReadWriteContext &context ) /Factory/;
|
||||||
|
%Docstring
|
||||||
|
Create a rule from an XML definition
|
||||||
|
|
||||||
|
:param ruleElem: The XML rule element
|
||||||
|
:param context: reading context
|
||||||
|
|
||||||
|
:return: A new rule
|
||||||
|
%End
|
||||||
|
|
||||||
|
QDomElement save( QDomDocument &doc, const QgsReadWriteContext &context ) const;
|
||||||
|
%Docstring
|
||||||
|
store labeling info to XML element
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
Rule( const QgsRuleBased3DRenderer::Rule &rh );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
QgsRuleBased3DRenderer( QgsRuleBased3DRenderer::Rule *root /Transfer/ );
|
||||||
|
%Docstring
|
||||||
|
Construct renderer with the given root rule (takes ownership)
|
||||||
|
%End
|
||||||
|
~QgsRuleBased3DRenderer();
|
||||||
|
|
||||||
|
void setLayer( QgsVectorLayer *layer );
|
||||||
|
%Docstring
|
||||||
|
Sets vector layer associated with the renderer
|
||||||
|
%End
|
||||||
|
QgsVectorLayer *layer() const;
|
||||||
|
%Docstring
|
||||||
|
Returns vector layer associated with the renderer
|
||||||
|
%End
|
||||||
|
|
||||||
|
QgsRuleBased3DRenderer::Rule *rootRule();
|
||||||
|
%Docstring
|
||||||
|
Returns pointer to the root rule
|
||||||
|
%End
|
||||||
|
|
||||||
|
virtual QString type() const;
|
||||||
|
virtual QgsRuleBased3DRenderer *clone() const /Factory/;
|
||||||
|
|
||||||
|
|
||||||
|
virtual void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const;
|
||||||
|
|
||||||
|
virtual void readXml( const QDomElement &elem, const QgsReadWriteContext &context );
|
||||||
|
|
||||||
|
virtual void resolveReferences( const QgsProject &project );
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
* This file has been generated automatically from *
|
||||||
|
* *
|
||||||
|
* src/3d/qgsrulebased3drenderer.h *
|
||||||
|
* *
|
||||||
|
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
|
||||||
|
************************************************************************/
|
@ -378,18 +378,26 @@ QgsVector3D Qgs3DUtils::transformWorldCoordinates( const QgsVector3D &worldPoint
|
|||||||
return mapToWorldCoordinates( mapPoint2, origin2 );
|
return mapToWorldCoordinates( mapPoint2, origin2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
QgsAbstract3DSymbol *Qgs3DUtils::symbolForGeometryType( QgsWkbTypes::GeometryType geomType )
|
std::unique_ptr<QgsAbstract3DSymbol> Qgs3DUtils::symbolForGeometryType( QgsWkbTypes::GeometryType geomType )
|
||||||
{
|
{
|
||||||
switch ( geomType )
|
switch ( geomType )
|
||||||
{
|
{
|
||||||
case QgsWkbTypes::PointGeometry:
|
case QgsWkbTypes::PointGeometry:
|
||||||
return new QgsPoint3DSymbol;
|
return std::unique_ptr<QgsAbstract3DSymbol>( new QgsPoint3DSymbol );
|
||||||
case QgsWkbTypes::LineGeometry:
|
case QgsWkbTypes::LineGeometry:
|
||||||
return new QgsLine3DSymbol;
|
return std::unique_ptr<QgsAbstract3DSymbol>( new QgsLine3DSymbol );
|
||||||
case QgsWkbTypes::PolygonGeometry:
|
case QgsWkbTypes::PolygonGeometry:
|
||||||
return new QgsPolygon3DSymbol;
|
return std::unique_ptr<QgsAbstract3DSymbol>( new QgsPolygon3DSymbol );
|
||||||
default:
|
default:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QgsExpressionContext Qgs3DUtils::globalProjectLayerExpressionContext( QgsVectorLayer *layer )
|
||||||
|
{
|
||||||
|
QgsExpressionContext exprContext;
|
||||||
|
exprContext << QgsExpressionContextUtils::globalScope()
|
||||||
|
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
||||||
|
<< QgsExpressionContextUtils::layerScope( layer );
|
||||||
|
return exprContext;
|
||||||
|
}
|
||||||
|
@ -29,6 +29,7 @@ class Qgs3DMapScene;
|
|||||||
#include "qgs3dtypes.h"
|
#include "qgs3dtypes.h"
|
||||||
#include "qgsaabb.h"
|
#include "qgsaabb.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#ifndef SIP_RUN
|
#ifndef SIP_RUN
|
||||||
|
|
||||||
@ -101,7 +102,11 @@ class _3D_EXPORT Qgs3DUtils
|
|||||||
static QgsVector3D transformWorldCoordinates( const QgsVector3D &worldPoint1, const QgsVector3D &origin1, const QgsCoordinateReferenceSystem &crs1, const QgsVector3D &origin2, const QgsCoordinateReferenceSystem &crs2,
|
static QgsVector3D transformWorldCoordinates( const QgsVector3D &worldPoint1, const QgsVector3D &origin1, const QgsCoordinateReferenceSystem &crs1, const QgsVector3D &origin2, const QgsCoordinateReferenceSystem &crs2,
|
||||||
const QgsCoordinateTransformContext &context );
|
const QgsCoordinateTransformContext &context );
|
||||||
|
|
||||||
static QgsAbstract3DSymbol *symbolForGeometryType( QgsWkbTypes::GeometryType geomType );
|
//! Returns a new 3D symbol based on given geometry type (or null pointer if geometry type is not supported)
|
||||||
|
static std::unique_ptr<QgsAbstract3DSymbol> symbolForGeometryType( QgsWkbTypes::GeometryType geomType );
|
||||||
|
|
||||||
|
//! Returns expression context for use in preparation of 3D data of a layer
|
||||||
|
static QgsExpressionContext globalProjectLayerExpressionContext( QgsVectorLayer *layer );
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "qgsvectorlayer.h"
|
#include "qgsvectorlayer.h"
|
||||||
|
|
||||||
#include "qgs3dmapsettings.h"
|
#include "qgs3dmapsettings.h"
|
||||||
|
#include "qgs3dutils.h"
|
||||||
|
|
||||||
/// @cond PRIVATE
|
/// @cond PRIVATE
|
||||||
|
|
||||||
@ -31,9 +32,7 @@ namespace Qgs3DSymbolImpl
|
|||||||
{
|
{
|
||||||
Qgs3DRenderContext context( map );
|
Qgs3DRenderContext context( map );
|
||||||
|
|
||||||
QgsExpressionContext exprContext;
|
QgsExpressionContext exprContext( Qgs3DUtils::globalProjectLayerExpressionContext( layer ) );
|
||||||
exprContext << QgsExpressionContextUtils::globalScope()
|
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() );
|
|
||||||
exprContext.setFields( layer->fields() );
|
exprContext.setFields( layer->fields() );
|
||||||
context.setExpressionContext( exprContext );
|
context.setExpressionContext( exprContext );
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "qgsxmlutils.h"
|
#include "qgsxmlutils.h"
|
||||||
|
|
||||||
#include "qgs3dmapsettings.h"
|
#include "qgs3dmapsettings.h"
|
||||||
|
#include "qgs3dutils.h"
|
||||||
#include "qgsline3dsymbol.h"
|
#include "qgsline3dsymbol.h"
|
||||||
#include "qgspoint3dsymbol.h"
|
#include "qgspoint3dsymbol.h"
|
||||||
#include "qgspolygon3dsymbol.h"
|
#include "qgspolygon3dsymbol.h"
|
||||||
@ -415,7 +416,10 @@ Qt3DCore::QEntity *QgsRuleBased3DRenderer::createEntity( const Qgs3DMapSettings
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
Qgs3DRenderContext context( map );
|
Qgs3DRenderContext context( map );
|
||||||
// TODO: add expr. context
|
|
||||||
|
QgsExpressionContext exprContext( Qgs3DUtils::globalProjectLayerExpressionContext( vl ) );
|
||||||
|
exprContext.setFields( vl->fields() );
|
||||||
|
context.setExpressionContext( exprContext );
|
||||||
|
|
||||||
RuleToHandlerMap handlers;
|
RuleToHandlerMap handlers;
|
||||||
mRootRule->createHandlers( vl, handlers );
|
mRootRule->createHandlers( vl, handlers );
|
||||||
@ -431,7 +435,7 @@ Qt3DCore::QEntity *QgsRuleBased3DRenderer::createEntity( const Qgs3DMapSettings
|
|||||||
QgsFeatureIterator fi = vl->getFeatures( req );
|
QgsFeatureIterator fi = vl->getFeatures( req );
|
||||||
while ( fi.nextFeature( f ) )
|
while ( fi.nextFeature( f ) )
|
||||||
{
|
{
|
||||||
// TODO: set feature in expr context?
|
context.expressionContext().setFeature( f );
|
||||||
mRootRule->registerFeature( f, context, handlers );
|
mRootRule->registerFeature( f, context, handlers );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,15 @@ class Qgs3DRenderContext;
|
|||||||
class QgsFeature3DHandler;
|
class QgsFeature3DHandler;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \ingroup 3d
|
||||||
|
* Metadata for rule-based 3D renderer to allow creation of its instances from XML
|
||||||
|
*
|
||||||
|
* \warning This is not considered stable API, and may change in future QGIS releases. It is
|
||||||
|
* exposed to the Python bindings as a tech preview only.
|
||||||
|
*
|
||||||
|
* \since QGIS 3.6
|
||||||
|
*/
|
||||||
class _3D_EXPORT QgsRuleBased3DRendererMetadata : public Qgs3DRendererAbstractMetadata
|
class _3D_EXPORT QgsRuleBased3DRendererMetadata : public Qgs3DRendererAbstractMetadata
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -43,6 +52,10 @@ class _3D_EXPORT QgsRuleBased3DRendererMetadata : public Qgs3DRendererAbstractMe
|
|||||||
* Rule-based 3D renderer.
|
* Rule-based 3D renderer.
|
||||||
*
|
*
|
||||||
* Similar to rule-based 2D renderer and rule-based labeling, it allows specification of rules for 3D symbols.
|
* Similar to rule-based 2D renderer and rule-based labeling, it allows specification of rules for 3D symbols.
|
||||||
|
*
|
||||||
|
* \warning This is not considered stable API, and may change in future QGIS releases. It is
|
||||||
|
* exposed to the Python bindings as a tech preview only.
|
||||||
|
*
|
||||||
* \since QGIS 3.6
|
* \since QGIS 3.6
|
||||||
*/
|
*/
|
||||||
class _3D_EXPORT QgsRuleBased3DRenderer : public QgsAbstract3DRenderer
|
class _3D_EXPORT QgsRuleBased3DRenderer : public QgsAbstract3DRenderer
|
||||||
@ -279,6 +292,7 @@ class _3D_EXPORT QgsRuleBased3DRenderer : public QgsAbstract3DRenderer
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//! Construct renderer with the given root rule (takes ownership)
|
||||||
QgsRuleBased3DRenderer( QgsRuleBased3DRenderer::Rule *root SIP_TRANSFER );
|
QgsRuleBased3DRenderer( QgsRuleBased3DRenderer::Rule *root SIP_TRANSFER );
|
||||||
~QgsRuleBased3DRenderer() override;
|
~QgsRuleBased3DRenderer() override;
|
||||||
|
|
||||||
@ -287,7 +301,9 @@ class _3D_EXPORT QgsRuleBased3DRenderer : public QgsAbstract3DRenderer
|
|||||||
//! Returns vector layer associated with the renderer
|
//! Returns vector layer associated with the renderer
|
||||||
QgsVectorLayer *layer() const;
|
QgsVectorLayer *layer() const;
|
||||||
|
|
||||||
|
//! Returns pointer to the root rule
|
||||||
QgsRuleBased3DRenderer::Rule *rootRule() { return mRootRule; }
|
QgsRuleBased3DRenderer::Rule *rootRule() { return mRootRule; }
|
||||||
|
//! Returns pointer to the root rule
|
||||||
const Rule *rootRule() const SIP_SKIP { return mRootRule; }
|
const Rule *rootRule() const SIP_SKIP { return mRootRule; }
|
||||||
|
|
||||||
QString type() const override { return "rulebased"; }
|
QString type() const override { return "rulebased"; }
|
||||||
|
@ -26,18 +26,6 @@
|
|||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
|
||||||
static QList<QgsExpressionContextScope *> _globalProjectLayerScopes( const QgsMapLayer *layer )
|
|
||||||
{
|
|
||||||
QList<QgsExpressionContextScope *> scopes;
|
|
||||||
scopes << QgsExpressionContextUtils::globalScope()
|
|
||||||
<< QgsExpressionContextUtils::projectScope( QgsProject::instance() )
|
|
||||||
<< QgsExpressionContextUtils::layerScope( layer );
|
|
||||||
return scopes;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// --------
|
|
||||||
|
|
||||||
QgsRuleBased3DRendererWidget::QgsRuleBased3DRendererWidget( QWidget *parent )
|
QgsRuleBased3DRendererWidget::QgsRuleBased3DRendererWidget( QWidget *parent )
|
||||||
: QgsPanelWidget( parent )
|
: QgsPanelWidget( parent )
|
||||||
{
|
{
|
||||||
@ -101,7 +89,7 @@ void QgsRuleBased3DRendererWidget::setLayer( QgsVectorLayer *layer )
|
|||||||
|
|
||||||
void QgsRuleBased3DRendererWidget::addRule()
|
void QgsRuleBased3DRendererWidget::addRule()
|
||||||
{
|
{
|
||||||
QgsRuleBased3DRenderer::Rule *newrule = new QgsRuleBased3DRenderer::Rule( Qgs3DUtils::symbolForGeometryType( mLayer->geometryType() ) );
|
QgsRuleBased3DRenderer::Rule *newrule = new QgsRuleBased3DRenderer::Rule( Qgs3DUtils::symbolForGeometryType( mLayer->geometryType() ).release() );
|
||||||
|
|
||||||
QgsRuleBased3DRenderer::Rule *current = currentRule();
|
QgsRuleBased3DRenderer::Rule *current = currentRule();
|
||||||
if ( current )
|
if ( current )
|
||||||
@ -543,7 +531,6 @@ Qgs3DRendererRulePropsWidget::Qgs3DRendererRulePropsWidget( QgsRuleBased3DRender
|
|||||||
: QgsPanelWidget( parent )
|
: QgsPanelWidget( parent )
|
||||||
, mRule( rule )
|
, mRule( rule )
|
||||||
, mLayer( layer )
|
, mLayer( layer )
|
||||||
, mSymbol( nullptr )
|
|
||||||
{
|
{
|
||||||
setupUi( this );
|
setupUi( this );
|
||||||
|
|
||||||
@ -557,7 +544,7 @@ Qgs3DRendererRulePropsWidget::Qgs3DRendererRulePropsWidget( QgsRuleBased3DRender
|
|||||||
if ( mRule->symbol() )
|
if ( mRule->symbol() )
|
||||||
{
|
{
|
||||||
groupSymbol->setChecked( true );
|
groupSymbol->setChecked( true );
|
||||||
mSymbol = mRule->symbol()->clone(); // use a clone!
|
mSymbol.reset( mRule->symbol()->clone() ); // use a clone!
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -566,7 +553,7 @@ Qgs3DRendererRulePropsWidget::Qgs3DRendererRulePropsWidget( QgsRuleBased3DRender
|
|||||||
}
|
}
|
||||||
|
|
||||||
mSymbolWidget = new QgsSymbol3DWidget( this );
|
mSymbolWidget = new QgsSymbol3DWidget( this );
|
||||||
mSymbolWidget->setSymbol( mSymbol, layer );
|
mSymbolWidget->setSymbol( mSymbol.get(), layer );
|
||||||
QVBoxLayout *l = new QVBoxLayout;
|
QVBoxLayout *l = new QVBoxLayout;
|
||||||
l->addWidget( mSymbolWidget );
|
l->addWidget( mSymbolWidget );
|
||||||
groupSymbol->setLayout( l );
|
groupSymbol->setLayout( l );
|
||||||
@ -581,16 +568,7 @@ Qgs3DRendererRulePropsWidget::Qgs3DRendererRulePropsWidget( QgsRuleBased3DRender
|
|||||||
connect( mElseRadio, &QRadioButton::toggled, this, [ = ]( bool toggled ) { if ( toggled ) editFilter->setText( QStringLiteral( "ELSE" ) );} );
|
connect( mElseRadio, &QRadioButton::toggled, this, [ = ]( bool toggled ) { if ( toggled ) editFilter->setText( QStringLiteral( "ELSE" ) );} );
|
||||||
}
|
}
|
||||||
|
|
||||||
Qgs3DRendererRulePropsWidget::~Qgs3DRendererRulePropsWidget()
|
Qgs3DRendererRulePropsWidget::~Qgs3DRendererRulePropsWidget() = default;
|
||||||
{
|
|
||||||
delete mSymbol;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Qgs3DRendererRulePropsWidget::setDockMode( bool dockMode )
|
|
||||||
{
|
|
||||||
QgsPanelWidget::setDockMode( dockMode );
|
|
||||||
// TODO mLabelingGui->setDockMode( dockMode );
|
|
||||||
}
|
|
||||||
|
|
||||||
void Qgs3DRendererRulePropsWidget::testFilter()
|
void Qgs3DRendererRulePropsWidget::testFilter()
|
||||||
{
|
{
|
||||||
@ -604,7 +582,7 @@ void Qgs3DRendererRulePropsWidget::testFilter()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QgsExpressionContext context( _globalProjectLayerScopes( mLayer ) );
|
QgsExpressionContext context( Qgs3DUtils::globalProjectLayerExpressionContext( mLayer ) );
|
||||||
|
|
||||||
if ( !filter.prepare( &context ) )
|
if ( !filter.prepare( &context ) )
|
||||||
{
|
{
|
||||||
@ -637,7 +615,7 @@ void Qgs3DRendererRulePropsWidget::testFilter()
|
|||||||
|
|
||||||
void Qgs3DRendererRulePropsWidget::buildExpression()
|
void Qgs3DRendererRulePropsWidget::buildExpression()
|
||||||
{
|
{
|
||||||
QgsExpressionContext context( _globalProjectLayerScopes( mLayer ) );
|
QgsExpressionContext context( Qgs3DUtils::globalProjectLayerExpressionContext( mLayer ) );
|
||||||
|
|
||||||
QgsExpressionBuilderDialog dlg( mLayer, editFilter->text(), this, QStringLiteral( "generic" ), context );
|
QgsExpressionBuilderDialog dlg( mLayer, editFilter->text(), this, QStringLiteral( "generic" ), context );
|
||||||
|
|
||||||
|
@ -148,8 +148,6 @@ class Qgs3DRendererRulePropsWidget : public QgsPanelWidget, private Ui::Qgs3DRen
|
|||||||
|
|
||||||
QgsRuleBased3DRenderer::Rule *rule() { return mRule; }
|
QgsRuleBased3DRenderer::Rule *rule() { return mRule; }
|
||||||
|
|
||||||
void setDockMode( bool dockMode ) override;
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void testFilter();
|
void testFilter();
|
||||||
void buildExpression();
|
void buildExpression();
|
||||||
@ -164,7 +162,7 @@ class Qgs3DRendererRulePropsWidget : public QgsPanelWidget, private Ui::Qgs3DRen
|
|||||||
QgsVectorLayer *mLayer = nullptr;
|
QgsVectorLayer *mLayer = nullptr;
|
||||||
|
|
||||||
QgsSymbol3DWidget *mSymbolWidget = nullptr;
|
QgsSymbol3DWidget *mSymbolWidget = nullptr;
|
||||||
QgsAbstract3DSymbol *mSymbol; // a clone of original symbol
|
std::unique_ptr<QgsAbstract3DSymbol> mSymbol; // a clone of original symbol
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -72,9 +72,9 @@ QgsVectorLayer3DRendererWidget::QgsVectorLayer3DRendererWidget( QgsVectorLayer *
|
|||||||
QVBoxLayout *layout = new QVBoxLayout( this );
|
QVBoxLayout *layout = new QVBoxLayout( this );
|
||||||
|
|
||||||
cboRendererType = new QComboBox( this );
|
cboRendererType = new QComboBox( this );
|
||||||
cboRendererType->addItem( tr( "No renderer" ) );
|
cboRendererType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "rendererNullSymbol.svg" ) ), tr( "No symbols" ) );
|
||||||
cboRendererType->addItem( tr( "Single symbol renderer" ) );
|
cboRendererType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "rendererSingleSymbol.svg" ) ), tr( "Single symbol" ) );
|
||||||
cboRendererType->addItem( tr( "Rule-based renderer" ) );
|
cboRendererType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "rendererRuleBasedSymbol.svg" ) ), tr( "Rule-based" ) );
|
||||||
|
|
||||||
widgetRendererStack = new QStackedWidget( this );
|
widgetRendererStack = new QStackedWidget( this );
|
||||||
layout->addWidget( cboRendererType );
|
layout->addWidget( cboRendererType );
|
||||||
@ -91,8 +91,11 @@ QgsVectorLayer3DRendererWidget::QgsVectorLayer3DRendererWidget( QgsVectorLayer *
|
|||||||
connect( cboRendererType, qgis::overload< int >::of( &QComboBox::currentIndexChanged ), this, &QgsVectorLayer3DRendererWidget::onRendererTypeChanged );
|
connect( cboRendererType, qgis::overload< int >::of( &QComboBox::currentIndexChanged ), this, &QgsVectorLayer3DRendererWidget::onRendererTypeChanged );
|
||||||
connect( widgetSingleSymbolRenderer, &QgsSingleSymbol3DRendererWidget::widgetChanged, this, &QgsVectorLayer3DRendererWidget::widgetChanged );
|
connect( widgetSingleSymbolRenderer, &QgsSingleSymbol3DRendererWidget::widgetChanged, this, &QgsVectorLayer3DRendererWidget::widgetChanged );
|
||||||
connect( widgetRuleBasedRenderer, &QgsRuleBased3DRendererWidget::widgetChanged, this, &QgsVectorLayer3DRendererWidget::widgetChanged );
|
connect( widgetRuleBasedRenderer, &QgsRuleBased3DRendererWidget::widgetChanged, this, &QgsVectorLayer3DRendererWidget::widgetChanged );
|
||||||
|
|
||||||
|
connect( widgetRuleBasedRenderer, &QgsRuleBased3DRendererWidget::showPanel, this, &QgsPanelWidget::openPanel );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void QgsVectorLayer3DRendererWidget::setLayer( QgsVectorLayer *layer )
|
void QgsVectorLayer3DRendererWidget::setLayer( QgsVectorLayer *layer )
|
||||||
{
|
{
|
||||||
mLayer = layer;
|
mLayer = layer;
|
||||||
@ -117,6 +120,12 @@ void QgsVectorLayer3DRendererWidget::setLayer( QgsVectorLayer *layer )
|
|||||||
whileBlocking( cboRendererType )->setCurrentIndex( pageIndex );
|
whileBlocking( cboRendererType )->setCurrentIndex( pageIndex );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsVectorLayer3DRendererWidget::setDockMode( bool dockMode )
|
||||||
|
{
|
||||||
|
QgsPanelWidget::setDockMode( dockMode );
|
||||||
|
widgetRuleBasedRenderer->setDockMode( dockMode );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void QgsVectorLayer3DRendererWidget::apply()
|
void QgsVectorLayer3DRendererWidget::apply()
|
||||||
{
|
{
|
||||||
|
@ -64,6 +64,8 @@ class QgsVectorLayer3DRendererWidget : public QgsMapLayerConfigWidget
|
|||||||
|
|
||||||
void setLayer( QgsVectorLayer *layer );
|
void setLayer( QgsVectorLayer *layer );
|
||||||
|
|
||||||
|
void setDockMode( bool dockMode ) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void apply() override;
|
void apply() override;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user