Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgspluginlayerregistry.cpp - class for 3 : : registering plugin layer creators 4 : : ------------------- 5 : : begin : Mon Nov 30 2009 6 : : copyright : (C) 2009 by Mathias Walker, Sourcepole 7 : : email : mwa at sourcepole.ch 8 : : ***************************************************************************/ 9 : : 10 : : /*************************************************************************** 11 : : * * 12 : : * This program is free software; you can redistribute it and/or modify * 13 : : * it under the terms of the GNU General Public License as published by * 14 : : * the Free Software Foundation; either version 2 of the License, or * 15 : : * (at your option) any later version. * 16 : : * * 17 : : ***************************************************************************/ 18 : : 19 : : #ifndef QGSPLUGINLAYERREGSITRY_H 20 : : #define QGSPLUGINLAYERREGSITRY_H 21 : : 22 : : #include <QMap> 23 : : #include "qgis_sip.h" 24 : : #include <QDomNode> 25 : : 26 : : #include "qgis_core.h" 27 : : 28 : : class QgsPluginLayer; 29 : : 30 : : /** 31 : : * \ingroup core 32 : : * \brief Class for creating plugin specific layers 33 : : */ 34 : : class CORE_EXPORT QgsPluginLayerType 35 : : { 36 : : public: 37 : : 38 : : QgsPluginLayerType( const QString &name ); 39 : 0 : virtual ~QgsPluginLayerType() = default; 40 : : 41 : : QString name(); 42 : : 43 : : //! Returns new layer of this type. Return NULLPTR on error 44 : : virtual QgsPluginLayer *createLayer() SIP_FACTORY; 45 : : 46 : : /** 47 : : * Returns new layer of this type, using layer URI (specific to this plugin layer type). Return NULLPTR on error. 48 : : * \since QGIS 2.10 49 : : */ 50 : : virtual QgsPluginLayer *createLayer( const QString &uri ) SIP_FACTORY; 51 : : 52 : : //! Show plugin layer properties dialog. Return FALSE if the dialog cannot be shown. 53 : : virtual bool showLayerProperties( QgsPluginLayer *layer ); 54 : : 55 : : protected: 56 : : QString mName; 57 : : }; 58 : : 59 : : //============================================================================= 60 : : 61 : : /** 62 : : * \ingroup core 63 : : * \brief A registry of plugin layers types. 64 : : * 65 : : * QgsPluginLayerRegistry is not usually directly created, but rather accessed through 66 : : * QgsApplication::pluginLayerRegistry(). 67 : : */ 68 : : class CORE_EXPORT QgsPluginLayerRegistry 69 : : { 70 : : public: 71 : : 72 : : /** 73 : : * Constructor for QgsPluginLayerRegistry. 74 : : */ 75 : 5 : QgsPluginLayerRegistry() = default; 76 : : ~QgsPluginLayerRegistry(); 77 : : 78 : : //! QgsPluginLayerRegistry cannot be copied. 79 : : QgsPluginLayerRegistry( const QgsPluginLayerRegistry &rh ) = delete; 80 : : //! QgsPluginLayerRegistry cannot be copied. 81 : : QgsPluginLayerRegistry &operator=( const QgsPluginLayerRegistry &rh ) = delete; 82 : : 83 : : /** 84 : : * List all known layer types 85 : : */ 86 : : QStringList pluginLayerTypes(); 87 : : 88 : : //! Add plugin layer type (take ownership) and return TRUE on success 89 : : bool addPluginLayerType( QgsPluginLayerType *pluginLayerType SIP_TRANSFER ); 90 : : 91 : : //! Remove plugin layer type and return TRUE on success 92 : : bool removePluginLayerType( const QString &typeName ); 93 : : 94 : : //! Returns plugin layer type metadata or NULLPTR if doesn't exist 95 : : QgsPluginLayerType *pluginLayerType( const QString &typeName ); 96 : : 97 : : /** 98 : : * Returns new layer if corresponding plugin has been found else returns NULLPTR. 99 : : * \note parameter uri has been added in QGIS 2.10 100 : : */ 101 : : QgsPluginLayer *createLayer( const QString &typeName, const QString &uri = QString() ) SIP_FACTORY; 102 : : 103 : : private: 104 : : #ifdef SIP_RUN 105 : : QgsPluginLayerRegistry( const QgsPluginLayerRegistry &rh ); 106 : : #endif 107 : : 108 : : typedef QMap<QString, QgsPluginLayerType *> PluginLayerTypes; 109 : : 110 : : PluginLayerTypes mPluginLayerTypes; 111 : : }; 112 : : 113 : : #endif // QGSPLUGINLAYERREGSITRY_H