@@ -97,34 +97,27 @@ def run(item, action, mainwindow):
9797 # load layers into the current project
9898 toponame = item .schema ().name
9999 template_dir = os .path .join (current_path , 'templates' )
100- registry = QgsMapLayerRegistry .instance ()
101- legend = iface .legendInterface ()
102100
103101 # do not refresh the canvas until all the layers are added
104102 prevRenderFlagState = iface .mapCanvas ().renderFlag ()
105103 iface .mapCanvas ().setRenderFlag (False )
106104 try :
107- supergroup = legend .addGroup (u'Topology "%s"' % toponame , False )
108105 provider = db .dbplugin ().providerName ()
109106 uri = db .uri ()
110107
111108 # Force use of estimated metadata (topologies can be big)
112109 uri .setUseEstimatedMetadata (True )
113110
114111 # FACES
115- group = legend .addGroup (u'Faces' , False , supergroup )
116112
117113 # face mbr
118114 uri .setDataSource (toponame , 'face' , 'mbr' , '' , 'face_id' )
119115 uri .setSrid (toposrid )
120116 uri .setWkbType (QgsWkbTypes .Polygon )
121- layer = QgsVectorLayer (uri .uri (False ), u'%s.face_mbr' % toponame , provider )
122- layer .loadNamedStyle (os .path .join (template_dir , 'face_mbr.qml' ))
123- registry .addMapLayers ([layer ])
124- legend .moveLayer (layer , group )
125- legend .setLayerVisible (layer , False )
126- legend .setLayerExpanded (layer , False )
127- face_extent = layer .extent ()
117+ layerFaceMbr = QgsVectorLayer (uri .uri (False ), u'%s.face_mbr' % toponame , provider )
118+ layerFaceMbr .loadNamedStyle (os .path .join (template_dir , 'face_mbr.qml' ))
119+
120+ face_extent = layerFaceMbr .extent ()
128121
129122 # face geometry
130123 sql = u'SELECT face_id, topology.ST_GetFaceGeometry(%s,' \
@@ -134,13 +127,9 @@ def run(item, action, mainwindow):
134127 uri .setDataSource ('' , u'(%s\n )' % sql , 'geom' , '' , 'face_id' )
135128 uri .setSrid (toposrid )
136129 uri .setWkbType (QgsWkbTypes .Polygon )
137- layer = QgsVectorLayer (uri .uri (False ), u'%s.face' % toponame , provider )
138- layer .setExtent (face_extent )
139- layer .loadNamedStyle (os .path .join (template_dir , 'face.qml' ))
140- registry .addMapLayers ([layer ])
141- legend .moveLayer (layer , group )
142- legend .setLayerVisible (layer , False )
143- legend .setLayerExpanded (layer , False )
130+ layerFaceGeom = QgsVectorLayer (uri .uri (False ), u'%s.face' % toponame , provider )
131+ layerFaceGeom .setExtent (face_extent )
132+ layerFaceGeom .loadNamedStyle (os .path .join (template_dir , 'face.qml' ))
144133
145134 # face_seed
146135 sql = u'SELECT face_id, ST_PointOnSurface(' \
@@ -151,128 +140,117 @@ def run(item, action, mainwindow):
151140 uri .setDataSource ('' , u'(%s)' % sql , 'geom' , '' , 'face_id' )
152141 uri .setSrid (toposrid )
153142 uri .setWkbType (QgsWkbTypes .Point )
154- layer = QgsVectorLayer (uri .uri (False ), u'%s.face_seed' % toponame , provider )
155- layer .setExtent (face_extent )
156- layer .loadNamedStyle (os .path .join (template_dir , 'face_seed.qml' ))
157- registry .addMapLayers ([layer ])
158- legend .moveLayer (layer , group )
159- legend .setLayerVisible (layer , False )
160- legend .setLayerExpanded (layer , False )
143+ layerFaceSeed = QgsVectorLayer (uri .uri (False ), u'%s.face_seed' % toponame , provider )
144+ layerFaceSeed .setExtent (face_extent )
145+ layerFaceSeed .loadNamedStyle (os .path .join (template_dir , 'face_seed.qml' ))
161146
162147 # TODO: add polygon0, polygon1 and polygon2 ?
163148
164149 # NODES
165- group = legend .addGroup (u'Nodes' , False , supergroup )
166150
167151 # node
168152 uri .setDataSource (toponame , 'node' , 'geom' , '' , 'node_id' )
169153 uri .setSrid (toposrid )
170154 uri .setWkbType (QgsWkbTypes .Point )
171- layer = QgsVectorLayer (uri .uri (False ), u'%s.node' % toponame , provider )
172- layer .loadNamedStyle (os .path .join (template_dir , 'node.qml' ))
173- registry .addMapLayers ([layer ])
174- legend .moveLayer (layer , group )
175- legend .setLayerVisible (layer , False )
176- legend .setLayerExpanded (layer , False )
177- node_extent = layer .extent ()
155+ layerNode = QgsVectorLayer (uri .uri (False ), u'%s.node' % toponame , provider )
156+ layerNode .loadNamedStyle (os .path .join (template_dir , 'node.qml' ))
157+ node_extent = layerNode .extent ()
178158
179159 # node labels
180160 uri .setDataSource (toponame , 'node' , 'geom' , '' , 'node_id' )
181161 uri .setSrid (toposrid )
182162 uri .setWkbType (QgsWkbTypes .Point )
183- layer = QgsVectorLayer (uri .uri (False ), u'%s.node_id' % toponame , provider )
184- layer .setExtent (node_extent )
185- layer .loadNamedStyle (os .path .join (template_dir , 'node_label.qml' ))
186- registry .addMapLayers ([layer ])
187- legend .moveLayer (layer , group )
188- legend .setLayerVisible (layer , False )
189- legend .setLayerExpanded (layer , False )
163+ layerNodeLabel = QgsVectorLayer (uri .uri (False ), u'%s.node_id' % toponame , provider )
164+ layerNodeLabel .setExtent (node_extent )
165+ layerNodeLabel .loadNamedStyle (os .path .join (template_dir , 'node_label.qml' ))
190166
191167 # EDGES
192- group = legend .addGroup (u'Edges' , False , supergroup )
193168
194169 # edge
195170 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
196171 uri .setSrid (toposrid )
197172 uri .setWkbType (QgsWkbTypes .LineString )
198- layer = QgsVectorLayer (uri .uri (False ), u'%s.edge' % toponame , provider )
199- registry .addMapLayers ([layer ])
200- legend .moveLayer (layer , group )
201- legend .setLayerVisible (layer , False )
202- legend .setLayerExpanded (layer , False )
203- edge_extent = layer .extent ()
173+ layerEdge = QgsVectorLayer (uri .uri (False ), u'%s.edge' % toponame , provider )
174+ edge_extent = layerEdge .extent ()
204175
205176 # directed edge
206177 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
207178 uri .setSrid (toposrid )
208179 uri .setWkbType (QgsWkbTypes .LineString )
209- layer = QgsVectorLayer (uri .uri (False ), u'%s.directed_edge' % toponame , provider )
210- layer .setExtent (edge_extent )
211- layer .loadNamedStyle (os .path .join (template_dir , 'edge.qml' ))
212- registry .addMapLayers ([layer ])
213- legend .moveLayer (layer , group )
214- legend .setLayerVisible (layer , False )
215- legend .setLayerExpanded (layer , False )
180+ layerDirectedEdge = QgsVectorLayer (uri .uri (False ), u'%s.directed_edge' % toponame , provider )
181+ layerDirectedEdge .setExtent (edge_extent )
182+ layerDirectedEdge .loadNamedStyle (os .path .join (template_dir , 'edge.qml' ))
216183
217184 # edge labels
218185 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
219186 uri .setSrid (toposrid )
220187 uri .setWkbType (QgsWkbTypes .LineString )
221- layer = QgsVectorLayer (uri .uri (False ), u'%s.edge_id' % toponame , provider )
222- layer .setExtent (edge_extent )
223- layer .loadNamedStyle (os .path .join (template_dir , 'edge_label.qml' ))
224- registry .addMapLayers ([layer ])
225- legend .moveLayer (layer , group )
226- legend .setLayerVisible (layer , False )
227- legend .setLayerExpanded (layer , False )
188+ layerEdgeLabel = QgsVectorLayer (uri .uri (False ), u'%s.edge_id' % toponame , provider )
189+ layerEdgeLabel .setExtent (edge_extent )
190+ layerEdgeLabel .loadNamedStyle (os .path .join (template_dir , 'edge_label.qml' ))
228191
229192 # face_left
230193 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
231194 uri .setSrid (toposrid )
232195 uri .setWkbType (QgsWkbTypes .LineString )
233- layer = QgsVectorLayer (uri .uri (False ), u'%s.face_left' % toponame , provider )
234- layer .setExtent (edge_extent )
235- layer .loadNamedStyle (os .path .join (template_dir , 'face_left.qml' ))
236- registry .addMapLayers ([layer ])
237- legend .moveLayer (layer , group )
238- legend .setLayerVisible (layer , False )
239- legend .setLayerExpanded (layer , False )
196+ layerFaceLeft = QgsVectorLayer (uri .uri (False ), u'%s.face_left' % toponame , provider )
197+ layerFaceLeft .setExtent (edge_extent )
198+ layerFaceLeft .loadNamedStyle (os .path .join (template_dir , 'face_left.qml' ))
240199
241200 # face_right
242201 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
243202 uri .setSrid (toposrid )
244203 uri .setWkbType (QgsWkbTypes .LineString )
245- layer = QgsVectorLayer (uri .uri (False ), u'%s.face_right' % toponame , provider )
246- layer .setExtent (edge_extent )
247- layer .loadNamedStyle (os .path .join (template_dir , 'face_right.qml' ))
248- registry .addMapLayers ([layer ])
249- legend .moveLayer (layer , group )
250- legend .setLayerVisible (layer , False )
251- legend .setLayerExpanded (layer , False )
204+ layerFaceRight = QgsVectorLayer (uri .uri (False ), u'%s.face_right' % toponame , provider )
205+ layerFaceRight .setExtent (edge_extent )
206+ layerFaceRight .loadNamedStyle (os .path .join (template_dir , 'face_right.qml' ))
252207
253208 # next_left
254209 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
255210 uri .setSrid (toposrid )
256211 uri .setWkbType (QgsWkbTypes .LineString )
257- layer = QgsVectorLayer (uri .uri (False ), u'%s.next_left' % toponame , provider )
258- layer .setExtent (edge_extent )
259- layer .loadNamedStyle (os .path .join (template_dir , 'next_left.qml' ))
260- registry .addMapLayers ([layer ])
261- legend .moveLayer (layer , group )
262- legend .setLayerVisible (layer , False )
263- legend .setLayerExpanded (layer , False )
212+ layerNextLeft = QgsVectorLayer (uri .uri (False ), u'%s.next_left' % toponame , provider )
213+ layerNextLeft .setExtent (edge_extent )
214+ layerNextLeft .loadNamedStyle (os .path .join (template_dir , 'next_left.qml' ))
264215
265216 # next_right
266217 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
267218 uri .setSrid (toposrid )
268219 uri .setWkbType (QgsWkbTypes .LineString )
269- layer = QgsVectorLayer (uri .uri (False ), u'%s.next_right' % toponame , provider )
270- layer .setExtent (edge_extent )
271- layer .loadNamedStyle (os .path .join (template_dir , 'next_right.qml' ))
272- registry .addMapLayers ([layer ])
273- legend .moveLayer (layer , group )
274- legend .setLayerVisible (layer , False )
275- legend .setLayerExpanded (layer , False )
220+ layerNextRight = QgsVectorLayer (uri .uri (False ), u'%s.next_right' % toponame , provider )
221+ layerNextRight .setExtent (edge_extent )
222+ layerNextRight .loadNamedStyle (os .path .join (template_dir , 'next_right.qml' ))
223+
224+ # Add layers to the layer tree
225+
226+ faceLayers = [layerFaceMbr , layerFaceGeom , layerFaceSeed ]
227+ nodeLayers = [layerNode , layerNodeLabel ]
228+ edgeLayers = [layerEdge , layerDirectedEdge , layerEdgeLabel , layerEdgeFaceLeft , layerEdgeFaceRight , layerEdgeNextLeft , layerEdgeNextRight ]
229+
230+ QgsMapLayerRegistry .instance ().addMapLayers (faceLayers , False )
231+
232+ groupFaces = QgsLayerTreeGroup (u'Faces' )
233+ for layer in faceLayers :
234+ nodeLayer = groupFaces .addLayer (layer )
235+ nodeLayer .setVisible (Qt .Unchecked )
236+ nodeLayer .setExpanded (False )
237+
238+ groupNodes = QgsLayerTreeGroup (u'Nodes' )
239+ for layer in faceLayers :
240+ nodeLayer = groupNodes .addLayer (layer )
241+ nodeLayer .setVisible (Qt .Unchecked )
242+ nodeLayer .setExpanded (False )
243+
244+ groupEdges = QgsLayerTreeGroup (u'Edges' )
245+ for layer in faceLayers :
246+ nodeLayer = groupEdges .addLayer (layer )
247+ nodeLayer .setVisible (Qt .Unchecked )
248+ nodeLayer .setExpanded (False )
249+
250+ supergroup = QgsLayerTreeGroup (u'Topology "%s"' % toponame )
251+ supergroup .insertChildNodes (- 1 , [groupFaces , groupNodes , groupEdges ])
252+
253+ QgsProject .instance ().layerTreeRoot ().addChildNode (supergroup )
276254
277255 finally :
278256
0 commit comments