mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-03 00:02:25 -05:00
Add CompatibleGeometryTypesRole to style model
This commit is contained in:
parent
6245b552a4
commit
d65b52db77
@ -43,6 +43,7 @@ instead.
|
|||||||
SymbolTypeRole,
|
SymbolTypeRole,
|
||||||
IsFavoriteRole,
|
IsFavoriteRole,
|
||||||
LayerTypeRole,
|
LayerTypeRole,
|
||||||
|
CompatibleGeometryTypesRole,
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit QgsStyleModel( QgsStyle *style, QObject *parent /TransferThis/ = 0 );
|
explicit QgsStyleModel( QgsStyle *style, QObject *parent /TransferThis/ = 0 );
|
||||||
|
@ -364,10 +364,49 @@ QVariant QgsStyleModel::data( const QModelIndex &index, int role ) const
|
|||||||
|
|
||||||
case LayerTypeRole:
|
case LayerTypeRole:
|
||||||
{
|
{
|
||||||
if ( entityType != QgsStyle::LabelSettingsEntity )
|
switch ( entityType )
|
||||||
return QVariant();
|
{
|
||||||
|
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:
|
default:
|
||||||
|
@ -63,6 +63,7 @@ class CORE_EXPORT QgsStyleModel: public QAbstractItemModel
|
|||||||
SymbolTypeRole, //!< Symbol type (for symbol or legend patch shape entities)
|
SymbolTypeRole, //!< Symbol type (for symbol or legend patch shape entities)
|
||||||
IsFavoriteRole, //!< Whether entity is flagged as a favorite
|
IsFavoriteRole, //!< Whether entity is flagged as a favorite
|
||||||
LayerTypeRole, //!< Layer type (for label settings entities)
|
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):
|
def writeXml(self, elem, context):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def compatibleGeometryTypes(self):
|
||||||
|
return [int(QgsWkbTypes.PointGeometry), int(QgsWkbTypes.LineGeometry)]
|
||||||
|
|
||||||
|
|
||||||
def createMarkerSymbol():
|
def createMarkerSymbol():
|
||||||
symbol = QgsMarkerSymbol.createSimple({
|
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(3, 0), QgsStyleModel.IsFavoriteRole), False)
|
||||||
self.assertEqual(model.data(model.index(4, 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):
|
def test_mixed_style(self):
|
||||||
"""
|
"""
|
||||||
Test style with both symbols and ramps
|
Test style with both symbols and ramps
|
||||||
|
Loading…
x
Reference in New Issue
Block a user