Class: QgsProjectBadLayerHandler

class qgis.core.QgsProjectBadLayerHandler

Bases: sip.wrapper

Interface for classes that handle missing layer files when reading project file.

Methods

dataSource

Returns the data source for the given layer

dataType

Returns data type associated with the given QgsProject file Dom node

handleBadLayers

This method will be called whenever the project tries to load layers which cannot be accessed.

providerType

Returns the physical storage type associated with the given layer

setDataSource

Set the datasource element to the new value

Attributes

IS_BOGUS

IS_DATABASE

IS_FILE

IS_RASTER

IS_URL

IS_Unknown

IS_VECTOR

class DataType

Bases: int

IS_BOGUS = 2
IS_DATABASE = 1
IS_FILE = 0
IS_RASTER = 1
IS_URL = 2
IS_Unknown = 3
IS_VECTOR = 0
class ProviderType

Bases: int

dataSource(self, layerNode: QDomNode) str

Returns the data source for the given layer

The QDomNode is a QgsProject Dom node corresponding to a map layer state.

Essentially dumps datasource tag.

Parameters:

layerNode (QDomNode) –

Return type:

str

dataType(self, layerNode: QDomNode) QgsProjectBadLayerHandler.DataType

Returns data type associated with the given QgsProject file Dom node

The Dom node should represent the state associated with a specific layer.

Parameters:

layerNode (QDomNode) –

Return type:

QgsProjectBadLayerHandler.DataType

handleBadLayers(self, layers: Iterable[QDomNode])

This method will be called whenever the project tries to load layers which cannot be accessed. It should inform the user about this and if possible offer to fix the unavailable layers by setting a valid datasource, e.g. by showing a file dialog.

The default implementation will dismiss all bad layers and write information to the log.

Parameters:

layers (Iterable[QDomNode]) –

providerType(self, layerNode: QDomNode) QgsProjectBadLayerHandler.ProviderType

Returns the physical storage type associated with the given layer

The QDomNode is a QgsProject Dom node corresponding to a map layer state.

If the provider tag is “ogr”, then it’s a file type.

However, if the layer is a raster, then there won’t be a provider tag. It will always have an associated file.

If the layer doesn’t fall into either of the previous two categories, then it’s either a database or URL. If the datasource tag has “url=”, then it’s URL based and if it has “dbname=”>, then the layer data is in a database.

Parameters:

layerNode (QDomNode) –

Return type:

QgsProjectBadLayerHandler.ProviderType

setDataSource(self, layerNode: QDomNode, dataSource: str)

Set the datasource element to the new value

Parameters:
  • layerNode (QDomNode) –

  • dataSource (str) –