Skip to content

Commit

Permalink
Have TopoViewer use custom layer ordering
Browse files Browse the repository at this point in the history
This is used to make sure edges are rendered above faces and nodes
above edges, despite legend order.
  • Loading branch information
strk committed Sep 6, 2019
1 parent 3abbc0f commit a01db64
Showing 1 changed file with 31 additions and 3 deletions.
Expand Up @@ -6,9 +6,10 @@
Description : Create a project to display topology schema on Qgis
Date : Sep 23, 2011
copyright : (C) 2011 by Giuseppe Sucameli
email : brush.tyler@gmail.com
(C) 2019 by Sandro Santilli
email : strk@kbt.io
Based on qgis_pgis_topoview by Sandro Santilli <strk@keybit.net>
Based on qgis_pgis_topoview by Sandro Santilli <strk@kbt.io>
***************************************************************************/
/***************************************************************************
Expand Down Expand Up @@ -243,6 +244,8 @@ def run(item, action, mainwindow):
QgsProject.instance().addMapLayers(nodeLayers, False)
QgsProject.instance().addMapLayers(edgeLayers, False)

# Organize layers in groups

groupFaces = QgsLayerTreeGroup(u'Faces')
for layer in faceLayers:
nodeLayer = groupFaces.addLayer(layer)
Expand All @@ -264,7 +267,32 @@ def run(item, action, mainwindow):
supergroup = QgsLayerTreeGroup(u'Topology "%s"' % toponame)
supergroup.insertChildNodes(-1, [groupFaces, groupNodes, groupEdges])

QgsProject.instance().layerTreeRoot().addChildNode(supergroup)
layerTree = QgsProject.instance().layerTreeRoot()

layerTree.addChildNode(supergroup)

# Set layers rendering order

order = layerTree.layerOrder()

order.insert(0, order.pop(order.index(layerFaceMbr)))
order.insert(0, order.pop(order.index(layerFaceGeom)))
order.insert(0, order.pop(order.index(layerEdge)))
order.insert(0, order.pop(order.index(layerDirectedEdge)))

order.insert(0, order.pop(order.index(layerNode)))
order.insert(0, order.pop(order.index(layerFaceSeed)))

order.insert(0, order.pop(order.index(layerNodeLabel)))
order.insert(0, order.pop(order.index(layerEdgeLabel)))

order.insert(0, order.pop(order.index(layerNextLeft)))
order.insert(0, order.pop(order.index(layerNextRight)))
order.insert(0, order.pop(order.index(layerFaceLeft)))
order.insert(0, order.pop(order.index(layerFaceRight)))

layerTree.setHasCustomLayerOrder(True)
layerTree.setCustomLayerOrder(order)

finally:

Expand Down

0 comments on commit a01db64

Please sign in to comment.