Skip to content

Commit d716640

Browse files
committed
Remove usage of legendInterface() from plugins (followup e5f62e4)
1 parent 0c58555 commit d716640

File tree

4 files changed

+79
-102
lines changed

4 files changed

+79
-102
lines changed

python/plugins/GdalTools/tools/GdalTools_utils.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
from qgis.PyQt.QtCore import QObject, QSettings, QFileInfo, QDir, QCoreApplication, pyqtSignal
3838
from qgis.PyQt.QtWidgets import QFileDialog
3939

40-
from qgis.core import QgsApplication, QgsMapLayerRegistry, QgsRectangle, QgsProviderRegistry, QgsLogger
40+
from qgis.core import QgsApplication, QgsMapLayerRegistry, QgsRectangle, QgsProviderRegistry, QgsLogger, QgsProject
4141
from qgis.gui import QgsEncodingFileDialog
4242

4343
from osgeo import gdal, ogr, osr
@@ -187,9 +187,7 @@ def __init__(self):
187187
QgsMapLayerRegistry.instance().layerWillBeRemoved.connect(self.removeLayer)
188188

189189
def getAllLayers(self):
190-
if LayerRegistry._iface and hasattr(LayerRegistry._iface, 'legendInterface'):
191-
return LayerRegistry._iface.legendInterface().layers()
192-
return list(QgsMapLayerRegistry.instance().mapLayers().values())
190+
return list(node.layer() for node in QgsProject.instance().layerTreeRoot().findLayers())
193191

194192
def layerAdded(self, layer):
195193
LayerRegistry.layers.append(layer)

python/plugins/db_manager/db_manager_plugin.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def initGui(self):
5656
self.iface.mainWindow())
5757
self.layerAction.setObjectName("dbManagerUpdateSqlLayer")
5858
self.layerAction.triggered.connect(self.onUpdateSqlLayer)
59-
self.iface.legendInterface().addLegendLayerAction(self.layerAction, "", "dbManagerUpdateSqlLayer", QgsMapLayer.VectorLayer, False)
59+
self.iface.addCustomActionForLayerType(self.layerAction, "", QgsMapLayer.VectorLayer, False)
6060
for l in list(QgsMapLayerRegistry.instance().mapLayers().values()):
6161
self.onLayerWasAdded(l)
6262
QgsMapLayerRegistry.instance().layerWasAdded.connect(self.onLayerWasAdded)
@@ -72,7 +72,7 @@ def unload(self):
7272
else:
7373
self.iface.removeToolBarIcon(self.action)
7474

75-
self.iface.legendInterface().removeLegendLayerAction(self.layerAction)
75+
self.iface.removeCustomActionForLayerType(self.layerAction)
7676
QgsMapLayerRegistry.instance().layerWasAdded.disconnect(self.onLayerWasAdded)
7777

7878
if self.dlg is not None:
@@ -82,15 +82,15 @@ def onLayerWasAdded(self, aMapLayer):
8282
if hasattr(aMapLayer, 'dataProvider') and aMapLayer.dataProvider().name() in ['postgres', 'spatialite', 'oracle']:
8383
uri = QgsDataSourceUri(aMapLayer.source())
8484
if re.search('^\(SELECT .+ FROM .+\)$', uri.table(), re.S):
85-
self.iface.legendInterface().addLegendLayerActionForLayer(self.layerAction, aMapLayer)
85+
self.addCustomActionForLayer(self.layerAction, aMapLayer)
8686
# virtual has QUrl source
8787
# url = QUrl(QUrl.fromPercentEncoding(l.source()))
8888
# url.queryItemValue('query')
8989
# url.queryItemValue('uid')
9090
# url.queryItemValue('geometry')
9191

9292
def onUpdateSqlLayer(self):
93-
l = self.iface.legendInterface().currentLayer()
93+
l = self.iface.activeLayer()
9494
if l.dataProvider().name() in ['postgres', 'spatialite', 'oracle']:
9595
uri = QgsDataSourceUri(l.source())
9696
if re.search('^\(SELECT .+ FROM .+\)$', uri.table(), re.S):

python/plugins/db_manager/db_plugins/postgis/plugins/qgis_topoview/__init__.py

Lines changed: 67 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -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

python/plugins/db_manager/dlg_import_vector.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from qgis.PyQt.QtWidgets import QDialog, QFileDialog, QMessageBox, QApplication
2929
from qgis.PyQt.QtGui import QCursor
3030

31-
from qgis.core import QgsDataSourceUri, QgsVectorLayer, QgsRasterLayer, QgsMimeDataUtils, QgsMapLayer, QgsProviderRegistry, QgsCoordinateReferenceSystem, QgsVectorLayerImport
31+
from qgis.core import QgsDataSourceUri, QgsVectorLayer, QgsRasterLayer, QgsMimeDataUtils, QgsMapLayer, QgsProviderRegistry, QgsCoordinateReferenceSystem, QgsVectorLayerImport, QgsProject, QgsMapLayerRegistry
3232
from qgis.gui import QgsMessageViewer
3333
from qgis.utils import iface
3434

@@ -118,10 +118,11 @@ def checkSupports(self):
118118

119119
def populateLayers(self):
120120
self.cboInputLayer.clear()
121-
for index, layer in enumerate(iface.legendInterface().layers()):
121+
for nodeLayer in QgsProject.instance().layerTreeRoot().findLayers():
122+
layer = nodeLayer.layer()
122123
# TODO: add import raster support!
123124
if layer.type() == QgsMapLayer.VectorLayer:
124-
self.cboInputLayer.addItem(layer.name(), index)
125+
self.cboInputLayer.addItem(layer.name(), layer.id())
125126

126127
def deleteInputLayer(self):
127128
""" unset the input layer, then destroy it but only if it was created from this dialog """
@@ -181,8 +182,8 @@ def reloadInputLayer(self):
181182
self.inLayerMustBeDestroyed = True
182183

183184
else:
184-
legendIndex = self.cboInputLayer.itemData(index)
185-
self.inLayer = iface.legendInterface().layers()[legendIndex]
185+
layerId = self.cboInputLayer.itemData(index)
186+
self.inLayer = QgsMapLayerRegistry.instance().mapLayer(layerId)
186187
self.inLayerMustBeDestroyed = False
187188

188189
self.checkSupports()

0 commit comments

Comments
 (0)