mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-02 00:02:12 -05:00
Add CompatibleGeometryTypesRole to style model
This commit is contained in:
parent
6245b552a4
commit
d65b52db77
@ -43,6 +43,7 @@ instead.
|
||||
SymbolTypeRole,
|
||||
IsFavoriteRole,
|
||||
LayerTypeRole,
|
||||
CompatibleGeometryTypesRole,
|
||||
};
|
||||
|
||||
explicit QgsStyleModel( QgsStyle *style, QObject *parent /TransferThis/ = 0 );
|
||||
|
@ -364,10 +364,49 @@ QVariant QgsStyleModel::data( const QModelIndex &index, int role ) const
|
||||
|
||||
case LayerTypeRole:
|
||||
{
|
||||
if ( entityType != QgsStyle::LabelSettingsEntity )
|
||||
return QVariant();
|
||||
switch ( entityType )
|
||||
{
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
return mStyle->labelSettingsLayerType( name );
|
||||
|
||||
return mStyle->labelSettingsLayerType( name );
|
||||
case QgsStyle::Symbol3DEntity:
|
||||
case QgsStyle::SymbolEntity:
|
||||
case QgsStyle::LegendPatchShapeEntity:
|
||||
case QgsStyle::TagEntity:
|
||||
case QgsStyle::ColorrampEntity:
|
||||
case QgsStyle::SmartgroupEntity:
|
||||
case QgsStyle::TextFormatEntity:
|
||||
return QVariant();
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
case CompatibleGeometryTypesRole:
|
||||
{
|
||||
switch ( entityType )
|
||||
{
|
||||
case QgsStyle::Symbol3DEntity:
|
||||
{
|
||||
QVariantList res;
|
||||
const QList< QgsWkbTypes::GeometryType > types = mStyle->symbol3DCompatibleGeometryTypes( name );
|
||||
res.reserve( types.size() );
|
||||
for ( QgsWkbTypes::GeometryType type : types )
|
||||
{
|
||||
res << static_cast< int >( type );
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
case QgsStyle::SymbolEntity:
|
||||
case QgsStyle::LegendPatchShapeEntity:
|
||||
case QgsStyle::TagEntity:
|
||||
case QgsStyle::ColorrampEntity:
|
||||
case QgsStyle::SmartgroupEntity:
|
||||
case QgsStyle::TextFormatEntity:
|
||||
return QVariant();
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
default:
|
||||
|
@ -63,6 +63,7 @@ class CORE_EXPORT QgsStyleModel: public QAbstractItemModel
|
||||
SymbolTypeRole, //!< Symbol type (for symbol or legend patch shape entities)
|
||||
IsFavoriteRole, //!< Whether entity is flagged as a favorite
|
||||
LayerTypeRole, //!< Layer type (for label settings entities)
|
||||
CompatibleGeometryTypesRole, //!< Compatible layer geometry types (for 3D symbols)
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -54,6 +54,9 @@ class Dummy3dSymbol(QgsAbstract3DSymbol):
|
||||
def writeXml(self, elem, context):
|
||||
pass
|
||||
|
||||
def compatibleGeometryTypes(self):
|
||||
return [int(QgsWkbTypes.PointGeometry), int(QgsWkbTypes.LineGeometry)]
|
||||
|
||||
|
||||
def createMarkerSymbol():
|
||||
symbol = QgsMarkerSymbol.createSimple({
|
||||
@ -496,6 +499,13 @@ class TestQgsStyleModel(unittest.TestCase):
|
||||
self.assertEqual(model.data(model.index(3, 0), QgsStyleModel.IsFavoriteRole), False)
|
||||
self.assertEqual(model.data(model.index(4, 0), QgsStyleModel.IsFavoriteRole), False)
|
||||
|
||||
self.assertEqual(model.data(model.index(0, 0), QgsStyleModel.CompatibleGeometryTypesRole), [0, 1])
|
||||
self.assertEqual(model.data(model.index(1, 0), QgsStyleModel.CompatibleGeometryTypesRole), [0, 1])
|
||||
self.assertEqual(model.data(model.index(2, 0), QgsStyleModel.CompatibleGeometryTypesRole), [0, 1])
|
||||
self.assertEqual(model.data(model.index(3, 0), QgsStyleModel.CompatibleGeometryTypesRole), [0, 1])
|
||||
self.assertEqual(model.data(model.index(4, 0), QgsStyleModel.CompatibleGeometryTypesRole), [0, 1])
|
||||
self.assertEqual(model.data(model.index(5, 0), QgsStyleModel.CompatibleGeometryTypesRole), None)
|
||||
|
||||
def test_mixed_style(self):
|
||||
"""
|
||||
Test style with both symbols and ramps
|
||||
|
Loading…
x
Reference in New Issue
Block a user