mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
104 lines
3.5 KiB
Plaintext
104 lines
3.5 KiB
Plaintext
|
|
/***************************************************************************
|
|
qgsprojectbadlayerhandler.sip - QgsProjectBadLayerHandler
|
|
|
|
---------------------
|
|
begin : 22.10.2016
|
|
copyright : (C) 2016 by Matthias Kuhn
|
|
email : matthias@opengis.ch
|
|
***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
/** Interface for classes that handle missing layer files when reading project file. */
|
|
class QgsProjectBadLayerHandler
|
|
{
|
|
%TypeHeaderCode
|
|
#include <qgsprojectbadlayerhandler.h>
|
|
%End
|
|
|
|
public:
|
|
/**
|
|
* 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.
|
|
*
|
|
* @note Added in QGIS 3.0
|
|
*/
|
|
virtual void handleBadLayers( const QList<QDomNode>& layers );
|
|
virtual ~QgsProjectBadLayerHandler();
|
|
|
|
|
|
protected:
|
|
|
|
//! file data representation
|
|
enum DataType
|
|
{
|
|
IS_VECTOR, //!< Vector data
|
|
IS_RASTER, //!< Raster data
|
|
IS_BOGUS //!< Bogus data
|
|
};
|
|
|
|
//! the flavors for data storage
|
|
enum ProviderType {
|
|
IS_FILE, //!< Saved in a file
|
|
IS_DATABASE, //!< Saved in a database
|
|
IS_URL, //!< Retrieved from a URL
|
|
IS_Unknown //!< Unknown type
|
|
};
|
|
|
|
|
|
/**
|
|
* Returns data type associated with the given QgsProject file Dom node
|
|
*
|
|
* The Dom node should represent the state associated with a specific layer.
|
|
*
|
|
* @note Added in QGIS 3.0
|
|
*/
|
|
DataType dataType( const QDomNode & layerNode );
|
|
|
|
/**
|
|
* Return the data source for the given layer
|
|
*
|
|
* The QDomNode is a QgsProject Dom node corresponding to a map layer state.
|
|
*
|
|
* Essentially dumps datasource tag.
|
|
*
|
|
* @note Added in QGIS 3.0
|
|
*/
|
|
QString dataSource( const QDomNode& layerNode );
|
|
|
|
/**
|
|
* Return 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.
|
|
*
|
|
* @note Added in QGIS 3.0
|
|
*/
|
|
ProviderType providerType( const QDomNode& layerNode );
|
|
|
|
/**
|
|
* Set the datasource element to the new value
|
|
*
|
|
* @note Added in QGIS 3.0
|
|
*/
|
|
void setDataSource( QDomNode& layerNode, const QString& dataSource );
|
|
};
|