Quantum GIS API Documentation  1.7.5-Wroclaw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
qgsrendererv2registry.h
Go to the documentation of this file.
1 #ifndef QGSRENDERERV2REGISTRY_H
2 #define QGSRENDERERV2REGISTRY_H
3 
4 #include <QIcon>
5 #include <QMap>
6 #include <QStringList>
7 
9 class QDomElement;
10 class QgsVectorLayer;
11 class QgsStyleV2;
12 class QgsRendererV2Widget;
13 
21 {
22  public:
23  QgsRendererV2AbstractMetadata( QString name, QString visibleName, QIcon icon = QIcon() )
24  : mName( name ), mVisibleName( visibleName ), mIcon( icon ) {}
25 
26  QString name() const { return mName; }
27  QString visibleName() const { return mVisibleName; }
28 
29  QIcon icon() const { return mIcon; }
30  void setIcon( const QIcon& icon ) { mIcon = icon; }
31 
34  virtual QgsFeatureRendererV2* createRenderer( QDomElement& elem ) = 0;
36  virtual QgsRendererV2Widget* createRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer )
37  { return NULL; }
38 
39  protected:
41  QString mName;
43  QString mVisibleName;
45  QIcon mIcon;
46 };
47 
48 
49 typedef QgsFeatureRendererV2*( *QgsRendererV2CreateFunc )( QDomElement& );
50 typedef QgsRendererV2Widget*( *QgsRendererV2WidgetFunc )( QgsVectorLayer*, QgsStyleV2*, QgsFeatureRendererV2* );
51 
56 {
57  public:
58 
60  QgsRendererV2Metadata( QString name,
61  QString visibleName,
62  QgsRendererV2CreateFunc pfCreate,
63  QIcon icon = QIcon(),
64  QgsRendererV2WidgetFunc pfWidget = NULL )
65  : QgsRendererV2AbstractMetadata( name, visibleName, icon ), mCreateFunc( pfCreate ), mWidgetFunc( pfWidget ) {}
66 
67  virtual QgsFeatureRendererV2* createRenderer( QDomElement& elem ) { return mCreateFunc ? mCreateFunc( elem ) : NULL; }
68  virtual QgsRendererV2Widget* createRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer )
69  { return mWidgetFunc ? mWidgetFunc( layer, style, renderer ) : NULL; }
70 
71  QgsRendererV2CreateFunc createFunction() const { return mCreateFunc; }
72  QgsRendererV2WidgetFunc widgetFunction() const { return mWidgetFunc; }
73 
74  void setWidgetFunction( QgsRendererV2WidgetFunc f ) { mWidgetFunc = f; }
75 
76  protected:
81 };
82 
88 class CORE_EXPORT QgsRendererV2Registry
89 {
90  public:
91 
92  static QgsRendererV2Registry* instance();
93 
95  bool addRenderer( QgsRendererV2AbstractMetadata* metadata );
96 
98  bool removeRenderer( QString rendererName );
99 
101  QgsRendererV2AbstractMetadata* rendererMetadata( QString rendererName );
102 
104  QStringList renderersList();
105 
106  protected:
110 
112 
113  QMap<QString, QgsRendererV2AbstractMetadata*> mRenderers;
114 
116  QStringList mRenderersOrder;
117 };
118 
119 #endif // QGSRENDERERV2REGISTRY_H