/** \ingroup gui Handler for missing layers within project. Gives user a chance to select path to the missing layers. */ class QgsProjectBadLayerGuiHandler : QObject, QgsProjectBadLayerHandler { %TypeHeaderCode #include %End public: QgsProjectBadLayerGuiHandler(); /** Implementation of the handler */ virtual void handleBadLayers( const QList& layers, const QDomDocument& projectDom ); /** Flag to store the Ignore button press of MessageBox used by QgsLegend */ static bool mIgnore; protected: //! file data representation enum DataType { IS_VECTOR, IS_RASTER, IS_BOGUS }; //! the three flavors for data enum ProviderType { IS_FILE, IS_DATABASE, IS_URL, IS_Unknown }; /** Returns data type associated with the given QgsProject file Dom node The Dom node should represent the state associated with a specific layer. */ DataType dataType( 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. */ QString dataSource( 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. */ ProviderType providerType( QDomNode & layerNode ); /** Set the datasource element to the new value */ void setDataSource( QDomNode & layerNode, const QString &dataSource ); /** This is used to locate files that have moved or otherwise are missing */ bool findMissingFile( const QString &fileFilters, QDomNode &layerNode ); /** Find relocated data source for the given layer This QDom object represents a QgsProject node that maps to a specific layer. @param fileFilters file filters to use @param constLayerNode QDom node containing layer project information @todo XXX Only implemented for file based layers. It will need to be extended for XXX other data source types such as databases. */ bool findLayer( const QString &fileFilters, const QDomNode &constLayerNode ); /** Find relocated data sources for given layers These QDom objects represent QgsProject nodes that map to specific layers. */ void findLayers( const QString &fileFilters, const QList &layerNodes ); };