2
#ifndef QGSSYMBOLLAYERV2REGISTRY_H
3
#define QGSSYMBOLLAYERV2REGISTRY_H
5
#include "qgssymbolv2.h"
6
#include "qgssymbollayerv2.h"
8
typedef QgsSymbolLayerV2*( *QgsSymbolLayerV2CreateFunc )( const QgsStringMap& );
9
typedef QgsSymbolLayerV2Widget*( *QgsSymbolLayerV2WidgetFunc )();
12
Stores metadata about one symbol layer class.
14
class CORE_EXPORT QgsSymbolLayerV2Metadata
17
/** construct invalid metadata */
18
QgsSymbolLayerV2Metadata()
19
: mName(), mCreateFunc( NULL ), mWidgetFunc( NULL ) {}
21
/** construct metadata */
22
QgsSymbolLayerV2Metadata( QString name, QgsSymbolV2::SymbolType type,
23
QgsSymbolLayerV2CreateFunc pfCreate,
24
QgsSymbolLayerV2WidgetFunc pfWidget = NULL )
25
: mName( name ), mType( type ), mCreateFunc( pfCreate ), mWidgetFunc( pfWidget ) {}
27
QString name() const { return mName; }
28
QgsSymbolV2::SymbolType type() const { return mType; }
29
QgsSymbolLayerV2CreateFunc createFunction() const { return mCreateFunc; }
30
QgsSymbolLayerV2WidgetFunc widgetFunction() const { return mWidgetFunc; }
32
void setWidgetFunction( QgsSymbolLayerV2WidgetFunc f ) { mWidgetFunc = f; }
36
QgsSymbolV2::SymbolType mType;
37
QgsSymbolLayerV2CreateFunc mCreateFunc;
38
QgsSymbolLayerV2WidgetFunc mWidgetFunc;
42
Registry of available symbol layer classes.
43
Implemented as a singleton.
45
class CORE_EXPORT QgsSymbolLayerV2Registry
49
//! return the single instance of this class (instantiate it if not exists)
50
static QgsSymbolLayerV2Registry* instance();
52
//! return metadata for specified symbol layer
53
QgsSymbolLayerV2Metadata symbolLayerMetadata( QString name ) const;
55
//! register a new symbol layer type
56
void addSymbolLayerType( const QgsSymbolLayerV2Metadata& metadata );
58
//! set layer type's widget function
59
bool setLayerTypeWidgetFunction( QString name, QgsSymbolLayerV2WidgetFunc f );
61
//! create a new instance of symbol layer given symbol layer name and properties
62
QgsSymbolLayerV2* createSymbolLayer( QString name, const QgsStringMap& properties = QgsStringMap() ) const;
64
//! return a list of available symbol layers for a specified symbol type
65
QStringList symbolLayersForType( QgsSymbolV2::SymbolType type );
67
//! create a new instance of symbol layer for specified symbol type with default settings
68
static QgsSymbolLayerV2* defaultSymbolLayer( QgsSymbolV2::SymbolType type );
71
QgsSymbolLayerV2Registry();
73
static QgsSymbolLayerV2Registry* mInstance;
74
QMap<QString, QgsSymbolLayerV2Metadata> mMetadata;