Skip to content

Commit f808b53

Browse files
author
wonder
committed
Added a checkbox to options dialog to enable/disable symbology-ng
git-svn-id: http://svn.osgeo.org/qgis/branches/symbology-ng-branch@11157 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent b075404 commit f808b53

File tree

10 files changed

+482
-434
lines changed

10 files changed

+482
-434
lines changed

python/core/symbology-ng-core.sip

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ public:
4141
// TODO: user type?
4242
};
4343

44+
//! return a new renderer - used by default in vector layers
45+
static QgsFeatureRendererV2* defaultRenderer(QGis::GeometryType geomType) /Factory/;
46+
4447
RendererType type() const;
4548

4649
virtual QgsSymbolV2* symbolForFeature(QgsFeature& feature)=0;
@@ -397,6 +400,9 @@ public:
397400

398401
virtual ~QgsSymbolV2();
399402

403+
//! return new default symbol for specified geometry type
404+
static QgsSymbolV2* defaultSymbol(QGis::GeometryType geomType) /Factory/;
405+
400406
SymbolType type() const;
401407

402408
// symbol layers handling

src/app/qgsoptions.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WFlags fl ) :
132132
//set the state of the checkboxes
133133
chkAntiAliasing->setChecked( settings.value( "/qgis/enable_anti_aliasing", false ).toBool() );
134134

135+
chkUseSymbologyNG->setChecked( settings.value( "/qgis/use_symbology_ng", false ).toBool() );
136+
135137
// Slightly awkard here at the settings value is true to use QImage,
136138
// but the checkbox is true to use QPixmap
137139
chkUseQPixmap->setChecked( !( settings.value( "/qgis/use_qimage_to_render", true ).toBool() ) );
@@ -342,6 +344,7 @@ void QgsOptions::saveOptions()
342344
settings.setValue( "/qgis/new_layers_visible", chkAddedVisibility->isChecked() );
343345
settings.setValue( "/qgis/enable_anti_aliasing", chkAntiAliasing->isChecked() );
344346
settings.setValue( "/qgis/use_qimage_to_render", !( chkUseQPixmap->isChecked() ) );
347+
settings.setValue( "/qgis/use_symbology_ng", chkUseSymbologyNG->isChecked() );
345348
settings.setValue( "qgis/capitaliseLayerName", capitaliseCheckBox->isChecked() );
346349
settings.setValue( "qgis/askToSaveProjectChanges", chbAskToSaveProjectChanges->isChecked() );
347350
settings.setValue( "qgis/warnOldProjectVersion", chbWarnOldProjectVersion->isChecked() );

src/core/qgsvectorlayer.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,24 +123,31 @@ QgsVectorLayer::QgsVectorLayer( QString vectorLayerPath,
123123
}
124124
if ( mValid )
125125
{
126+
setCoordinateSystem();
127+
126128
// check if there is a default style / propertysheet defined
127129
// for this layer and if so apply it
128130
//
129-
if ( loadDefaultStyleFlag )
131+
QSettings settings;
132+
if ( settings.value( "/qgis/use_symbology_ng", false ).toBool() )
133+
{
134+
// using symbology-ng!
135+
setUsingRendererV2(true);
136+
setRendererV2( QgsFeatureRendererV2::defaultRenderer( geometryType() ) );
137+
}
138+
else if ( loadDefaultStyleFlag )
130139
{
131140
bool defaultLoadedFlag = false;
132141
loadDefaultStyle( defaultLoadedFlag );
133142
if ( !defaultLoadedFlag )
134143
{
135-
setCoordinateSystem();
136144
// add single symbol renderer as default
137145
QgsSingleSymbolRenderer *renderer = new QgsSingleSymbolRenderer( geometryType() );
138146
setRenderer( renderer );
139147
}
140148
}
141149
else // Otherwise use some very basic defaults
142150
{
143-
setCoordinateSystem();
144151
// add single symbol renderer as default
145152
QgsSingleSymbolRenderer *renderer = new QgsSingleSymbolRenderer( geometryType() );
146153
setRenderer( renderer );
@@ -2468,6 +2475,9 @@ bool QgsVectorLayer::writeXml( QDomNode & layer_node,
24682475

24692476
bool QgsVectorLayer::readSymbology( const QDomNode& node, QString& errorMessage )
24702477
{
2478+
// TODO: load symbology-ng renderers
2479+
setUsingRendererV2(false);
2480+
24712481
// process the attribute actions
24722482
mActions->readXML( node );
24732483

src/core/symbology-ng/qgsrendererv2.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ QgsFeatureRendererV2::QgsFeatureRendererV2(RendererType type)
115115
{
116116
}
117117

118+
QgsFeatureRendererV2* QgsFeatureRendererV2::defaultRenderer(QGis::GeometryType geomType)
119+
{
120+
return new QgsSingleSymbolRendererV2( QgsSymbolV2::defaultSymbol(geomType) );
121+
}
122+
118123

119124
void QgsFeatureRendererV2::renderFeature(QgsFeature& feature, QgsRenderContext& context, int layer)
120125
{

src/core/symbology-ng/qgsrendererv2.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
#ifndef QGSRENDERERV2_H
33
#define QGSRENDERERV2_H
44

5+
#include "qgis.h"
6+
57
#include <QList>
68
#include <QHash>
79
#include <QString>
@@ -49,6 +51,9 @@ class QgsFeatureRendererV2
4951
RendererGraduatedSymbol
5052
// TODO: user type?
5153
};
54+
55+
//! return a new renderer - used by default in vector layers
56+
static QgsFeatureRendererV2* defaultRenderer(QGis::GeometryType geomType);
5257

5358
RendererType type() const { return mType; }
5459

src/core/symbology-ng/qgssymbolv2.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "qgsmarkersymbollayerv2.h"
77
#include "qgsfillsymbollayerv2.h"
88

9+
#include "qgslogger.h"
910
#include "qgsrendercontext.h" // for bigSymbolPreview
1011

1112
#include <QColor>
@@ -40,6 +41,17 @@ QgsSymbolV2::~QgsSymbolV2()
4041
delete *it;
4142
}
4243

44+
QgsSymbolV2* QgsSymbolV2::defaultSymbol(QGis::GeometryType geomType)
45+
{
46+
switch (geomType)
47+
{
48+
case QGis::Point: return new QgsMarkerSymbolV2();
49+
case QGis::Line: return new QgsLineSymbolV2();
50+
case QGis::Polygon: return new QgsFillSymbolV2();
51+
default: QgsDebugMsg("unknown layer's geometry type"); return NULL;
52+
}
53+
}
54+
4355

4456
QgsSymbolLayerV2* QgsSymbolV2::symbolLayer(int layer)
4557
{

src/core/symbology-ng/qgssymbolv2.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#ifndef QGSSYMBOLV2_H
33
#define QGSSYMBOLV2_H
44

5+
#include "qgis.h"
56
#include <QList>
67

78
class QColor;
@@ -30,6 +31,9 @@ class QgsSymbolV2
3031

3132
virtual ~QgsSymbolV2();
3233

34+
//! return new default symbol for specified geometry type
35+
static QgsSymbolV2* defaultSymbol(QGis::GeometryType geomType);
36+
3337
SymbolType type() const { return mType; }
3438

3539
// symbol layers handling

src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog(QgsVectorLayer* lay
2525
// if the layer doesn't use renderer V2, let's start using it!
2626
if (!mLayer->isUsingRendererV2())
2727
{
28-
mLayer->setRendererV2(new QgsSingleSymbolRendererV2( createDefaultSymbol() ));
28+
mLayer->setRendererV2( QgsFeatureRendererV2::defaultRenderer(mLayer->geometryType()) );
2929
mLayer->setUsingRendererV2(true);
3030
}
3131

@@ -61,7 +61,7 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog(QgsVectorLayer* lay
6161
m->setHorizontalHeaderLabels(labels);
6262
viewCategories->setModel(m);
6363

64-
mCategorizedSymbol = createDefaultSymbol();
64+
mCategorizedSymbol = QgsSymbolV2::defaultSymbol(mLayer->geometryType());
6565

6666
connect(cboCategorizedColumn, SIGNAL(currentIndexChanged(int)), this, SLOT(categoryColumnChanged()));
6767

@@ -80,7 +80,7 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog(QgsVectorLayer* lay
8080
mg->setHorizontalHeaderLabels(labels);
8181
viewGraduated->setModel(mg);
8282

83-
mGraduatedSymbol = createDefaultSymbol();
83+
mGraduatedSymbol = QgsSymbolV2::defaultSymbol(mLayer->geometryType());
8484

8585
connect(viewGraduated, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(rangesDoubleClicked(const QModelIndex &)));
8686

@@ -148,7 +148,7 @@ void QgsRendererV2PropertiesDialog::updateRenderer()
148148
delete mRenderer;
149149

150150
if (radSingleSymbol->isChecked())
151-
mRenderer = new QgsSingleSymbolRendererV2( createDefaultSymbol() );
151+
mRenderer = new QgsSingleSymbolRendererV2( QgsSymbolV2::defaultSymbol(mLayer->geometryType()) );
152152
else if (radCategorized->isChecked())
153153
mRenderer = new QgsCategorizedSymbolRendererV2(-1, QgsCategoryList());
154154
else if (radGraduated->isChecked())
@@ -221,17 +221,6 @@ void QgsRendererV2PropertiesDialog::updateUiFromRenderer()
221221
}
222222

223223

224-
QgsSymbolV2* QgsRendererV2PropertiesDialog::createDefaultSymbol()
225-
{
226-
switch (mLayer->geometryType())
227-
{
228-
case QGis::Point: return new QgsMarkerSymbolV2();
229-
case QGis::Line: return new QgsLineSymbolV2();
230-
case QGis::Polygon: return new QgsFillSymbolV2();
231-
default: QgsDebugMsg("unknown layer's geometry type"); return NULL;
232-
}
233-
}
234-
235224
void QgsRendererV2PropertiesDialog::changeCategorizedSymbol()
236225
{
237226
QgsSymbolV2SelectorDialog dlg(mCategorizedSymbol, mStyle, this);

src/gui/symbology-ng/qgsrendererv2propertiesdialog.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,6 @@ public slots:
5050
void updateCategorizedSymbolIcon();
5151
void updateGraduatedSymbolIcon();
5252

53-
//! create default symbol for the layer's geometry type (point/line/polygon)
54-
QgsSymbolV2* createDefaultSymbol();
55-
5653
//! populate categories view
5754
void populateCategories();
5855

0 commit comments

Comments
 (0)