Skip to content

Commit a70f812

Browse files
author
wonder
committedJan 29, 2010
QgsRendererV2 metadata: for renderer icon use QIcon instead of icon file name.
git-svn-id: http://svn.osgeo.org/qgis/trunk@12852 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent d2af21c commit a70f812

File tree

4 files changed

+27
-24
lines changed

4 files changed

+27
-24
lines changed
 

‎python/core/symbology-ng-core.sip

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -809,11 +809,13 @@ class QgsRendererV2AbstractMetadata
809809
%End
810810

811811
public:
812-
QgsRendererV2AbstractMetadata( QString name, QString visibleName, QString iconName = QString() );
812+
QgsRendererV2AbstractMetadata( QString name, QString visibleName, QIcon icon = QIcon() );
813813

814814
QString name() const;
815815
QString visibleName() const;
816-
QString iconName() const;
816+
817+
QIcon icon() const;
818+
void setIcon(const QIcon& icon);
817819

818820
/** Return new instance of the renderer given the DOM element. Returns NULL on error.
819821
* Pure virtual function: must be implemented in derived classes. */

‎src/core/symbology-ng/qgsrendererv2registry.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,13 @@ QgsRendererV2Registry::QgsRendererV2Registry()
1313
// add default renderers
1414
addRenderer( new QgsRendererV2Metadata( "singleSymbol",
1515
QObject::tr( "Single Symbol" ),
16-
QgsSingleSymbolRendererV2::create,
17-
"rendererSingleSymbol.png" ) );
16+
QgsSingleSymbolRendererV2::create ) );
1817
addRenderer( new QgsRendererV2Metadata( "categorizedSymbol",
1918
QObject::tr( "Categorized" ),
20-
QgsCategorizedSymbolRendererV2::create,
21-
"rendererCategorizedSymbol.png" ) );
19+
QgsCategorizedSymbolRendererV2::create ) );
2220
addRenderer( new QgsRendererV2Metadata( "graduatedSymbol",
2321
QObject::tr( "Graduated" ),
24-
QgsGraduatedSymbolRendererV2::create,
25-
"rendererGraduatedSymbol.png" ) );
22+
QgsGraduatedSymbolRendererV2::create ) );
2623
}
2724

2825
QgsRendererV2Registry::~QgsRendererV2Registry()

‎src/core/symbology-ng/qgsrendererv2registry.h

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef QGSRENDERERV2REGISTRY_H
22
#define QGSRENDERERV2REGISTRY_H
33

4+
#include <QIcon>
45
#include <QMap>
56
#include <QStringList>
67

@@ -19,12 +20,14 @@ class QgsRendererV2Widget;
1920
class CORE_EXPORT QgsRendererV2AbstractMetadata
2021
{
2122
public:
22-
QgsRendererV2AbstractMetadata( QString name, QString visibleName, QString iconName = QString() )
23-
: mName( name ), mVisibleName( visibleName ), mIconName( iconName ) {}
23+
QgsRendererV2AbstractMetadata( QString name, QString visibleName, QIcon icon = QIcon() )
24+
: mName( name ), mVisibleName( visibleName ), mIcon( icon ) {}
2425

2526
QString name() const { return mName; }
2627
QString visibleName() const { return mVisibleName; }
27-
QString iconName() const { return mIconName; }
28+
29+
QIcon icon() const { return mIcon; }
30+
void setIcon(const QIcon& icon) { mIcon = icon; }
2831

2932
/** Return new instance of the renderer given the DOM element. Returns NULL on error.
3033
* Pure virtual function: must be implemented in derived classes. */
@@ -39,7 +42,7 @@ class CORE_EXPORT QgsRendererV2AbstractMetadata
3942
//! name visible for users (translatable)
4043
QString mVisibleName;
4144
//! icon to be shown in the renderer properties dialog
42-
QString mIconName;
45+
QIcon mIcon;
4346
};
4447

4548

@@ -57,9 +60,9 @@ class CORE_EXPORT QgsRendererV2Metadata : public QgsRendererV2AbstractMetadata
5760
QgsRendererV2Metadata( QString name,
5861
QString visibleName,
5962
QgsRendererV2CreateFunc pfCreate,
60-
QString iconName = QString(),
63+
QIcon icon = QIcon(),
6164
QgsRendererV2WidgetFunc pfWidget = NULL )
62-
: QgsRendererV2AbstractMetadata( name, visibleName, iconName ), mCreateFunc( pfCreate ), mWidgetFunc( pfWidget ) {}
65+
: QgsRendererV2AbstractMetadata( name, visibleName, icon ), mCreateFunc( pfCreate ), mWidgetFunc( pfWidget ) {}
6366

6467
virtual QgsFeatureRendererV2* createRenderer( QDomElement& elem ) { return mCreateFunc ? mCreateFunc(elem):NULL; }
6568
virtual QgsRendererV2Widget* createRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer )

‎src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include <QKeyEvent>
1919
#include <QMessageBox>
2020

21-
static bool _initRendererWidgetFunction(QString name, QgsRendererV2WidgetFunc f )
21+
static bool _initRenderer(QString name, QgsRendererV2WidgetFunc f, QString iconName )
2222
{
2323
QgsRendererV2Registry* reg = QgsRendererV2Registry::instance();
2424
QgsRendererV2AbstractMetadata* am = reg->rendererMetadata( name );
@@ -29,6 +29,12 @@ static bool _initRendererWidgetFunction(QString name, QgsRendererV2WidgetFunc f
2929
return false;
3030

3131
m->setWidgetFunction(f);
32+
33+
QString iconPath = QgsApplication::defaultThemePath() + iconName;
34+
QPixmap pix;
35+
if ( pix.load( iconPath, "png" ) )
36+
m->setIcon(pix);
37+
3238
QgsDebugMsg("Set for "+name);
3339
return true;
3440
}
@@ -39,9 +45,9 @@ static void _initRendererWidgetFunctions()
3945
if (initialized)
4046
return;
4147

42-
_initRendererWidgetFunction( "singleSymbol", QgsSingleSymbolRendererV2Widget::create );
43-
_initRendererWidgetFunction( "categorizedSymbol", QgsCategorizedSymbolRendererV2Widget::create );
44-
_initRendererWidgetFunction( "graduatedSymbol", QgsGraduatedSymbolRendererV2Widget::create );
48+
_initRenderer( "singleSymbol", QgsSingleSymbolRendererV2Widget::create, "rendererSingleSymbol.png" );
49+
_initRenderer( "categorizedSymbol", QgsCategorizedSymbolRendererV2Widget::create, "rendererCategorizedSymbol.png" );
50+
_initRenderer( "graduatedSymbol", QgsGraduatedSymbolRendererV2Widget::create, "rendererGraduatedSymbol.png" );
4551
initialized = true;
4652
}
4753

@@ -70,12 +76,7 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog( QgsVectorLayer* la
7076
foreach( QString name, renderers )
7177
{
7278
QgsRendererV2AbstractMetadata* m = reg->rendererMetadata( name );
73-
74-
QString iconPath = QgsApplication::defaultThemePath() + m->iconName();
75-
if ( !pix.load( iconPath, "png" ) )
76-
pix = QPixmap();
77-
78-
cboRenderers->addItem( QIcon( pix ), m->visibleName(), name );
79+
cboRenderers->addItem( m->icon(), m->visibleName(), name );
7980
}
8081

8182
cboRenderers->setCurrentIndex( -1 ); // set no current renderer

0 commit comments

Comments
 (0)
Please sign in to comment.