Skip to content

Commit 019e73f

Browse files
author
wonder
committed
Embedded symbol selector directly to the renderer properties dialog for single symbol renderer.
git-svn-id: http://svn.osgeo.org/qgis/branches/symbology-ng-branch@11159 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent cac0f15 commit 019e73f

File tree

5 files changed

+39
-21
lines changed

5 files changed

+39
-21
lines changed

python/gui/symbology-ng-gui.sip

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class QgsSymbolV2SelectorDialog : QDialog //, private Ui::QgsSymbolV2SelectorDia
7272
%End
7373

7474
public:
75-
QgsSymbolV2SelectorDialog(QgsSymbolV2* symbol, QgsStyleV2* style, QWidget* parent = NULL);
75+
QgsSymbolV2SelectorDialog(QgsSymbolV2* symbol, QgsStyleV2* style, QWidget* parent = NULL, bool embedded = false);
7676

7777
protected:
7878
void populateSymbolView();
@@ -89,4 +89,7 @@ public slots:
8989
void setMarkerSize(double size);
9090
void setLineWidth(double width);
9191

92+
signals:
93+
void symbolModified();
94+
9295
};

src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,17 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog(QgsVectorLayer* lay
4747
connect(radCategorized, SIGNAL(clicked()), this, SLOT(updateRenderer()));
4848
connect(radGraduated, SIGNAL(clicked()), this, SLOT(updateRenderer()));
4949

50-
//connect(btnSymbolLevels, SIGNAL(clicked()), this, SLOT(setSymbolLevels()));
51-
5250
// simple symbol page
53-
connect(btnChangeSingleSymbol, SIGNAL(clicked()), this, SLOT(changeSingleSymbol()));
51+
if (mRenderer->type() == QgsFeatureRendererV2::RendererSingleSymbol)
52+
mSingleSymbol = ((QgsSingleSymbolRendererV2*)mRenderer)->symbol()->clone();
53+
else
54+
mSingleSymbol = QgsSymbolV2::defaultSymbol(mLayer->geometryType());
55+
56+
stackedWidget->removeWidget(pageSingleSymbol);
57+
delete pageSingleSymbol;
58+
pageSingleSymbol = new QgsSymbolV2SelectorDialog(mSingleSymbol, mStyle, NULL, true);
59+
stackedWidget->addWidget( pageSingleSymbol );
60+
connect(pageSingleSymbol, SIGNAL(symbolModified()), this, SLOT(changeSingleSymbol()));
5461

5562
// categorized symbol page
5663

@@ -95,6 +102,9 @@ QgsRendererV2PropertiesDialog::~QgsRendererV2PropertiesDialog()
95102
{
96103
// delete the temporary renderer (if exists)
97104
delete mRenderer;
105+
106+
delete mSingleSymbol;
107+
// TODO: delete categorized, graduated symbol?
98108
}
99109

100110
void QgsRendererV2PropertiesDialog::apply()
@@ -129,26 +139,16 @@ QgsGraduatedSymbolRendererV2* QgsRendererV2PropertiesDialog::rendererGraduated()
129139

130140
void QgsRendererV2PropertiesDialog::changeSingleSymbol()
131141
{
132-
133-
QgsSymbolV2SelectorDialog dlg(rendererSingle()->symbol(), mStyle, this);
134-
if (!dlg.exec())
135-
return;
136-
137-
updateSingleSymbolIcon();
138-
}
139-
140-
void QgsRendererV2PropertiesDialog::updateSingleSymbolIcon()
141-
{
142-
QIcon icon = QgsSymbolLayerV2Utils::symbolPreviewIcon(rendererSingle()->symbol(), btnChangeSingleSymbol->iconSize());
143-
btnChangeSingleSymbol->setIcon(icon);
142+
// update symbol from the GUI
143+
rendererSingle()->setSymbol( mSingleSymbol->clone() );
144144
}
145145

146146
void QgsRendererV2PropertiesDialog::updateRenderer()
147147
{
148148
delete mRenderer;
149149

150150
if (radSingleSymbol->isChecked())
151-
mRenderer = new QgsSingleSymbolRendererV2( QgsSymbolV2::defaultSymbol(mLayer->geometryType()) );
151+
mRenderer = new QgsSingleSymbolRendererV2( mSingleSymbol->clone() );
152152
else if (radCategorized->isChecked())
153153
mRenderer = new QgsCategorizedSymbolRendererV2(-1, QgsCategoryList());
154154
else if (radGraduated->isChecked())
@@ -167,7 +167,7 @@ void QgsRendererV2PropertiesDialog::updateUiFromRenderer()
167167
radSingleSymbol->setChecked(true);
168168

169169
stackedWidget->setCurrentWidget(pageSingleSymbol);
170-
updateSingleSymbolIcon();
170+
//updateSingleSymbolIcon();
171171
break;
172172

173173
case QgsFeatureRendererV2::RendererCategorizedSymbol:

src/gui/symbology-ng/qgsrendererv2propertiesdialog.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ public slots:
4646
//! update UI to reflect changes in renderer
4747
void updateUiFromRenderer();
4848

49-
void updateSingleSymbolIcon();
5049
void updateCategorizedSymbolIcon();
5150
void updateGraduatedSymbolIcon();
5251

@@ -82,6 +81,7 @@ public slots:
8281

8382
QgsStyleV2* mStyle;
8483

84+
QgsSymbolV2* mSingleSymbol;
8585
QgsSymbolV2* mGraduatedSymbol;
8686
QgsSymbolV2* mCategorizedSymbol;
8787
};

src/gui/symbology-ng/qgssymbolv2selectordialog.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,19 @@
1111
#include <QPainter>
1212
#include <QStandardItemModel>
1313

14-
QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog(QgsSymbolV2* symbol, QgsStyleV2* style, QWidget* parent)
14+
QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog(QgsSymbolV2* symbol, QgsStyleV2* style, QWidget* parent, bool embedded)
1515
: QDialog(parent)
1616
{
1717
mStyle = style;
1818
mSymbol = symbol;
1919

2020
setupUi(this);
21+
22+
// can be embedded in renderer properties dialog
23+
if (embedded)
24+
{
25+
buttonBox->hide();
26+
}
2127

2228
connect(btnSymbolProperties, SIGNAL(clicked()), this, SLOT(changeSymbolProperties()));
2329

@@ -91,6 +97,7 @@ void QgsSymbolV2SelectorDialog::setSymbolFromStyle(const QModelIndex & index)
9197

9298
updateSymbolPreview();
9399
updateSymbolInfo();
100+
emit symbolModified();
94101
}
95102

96103
void QgsSymbolV2SelectorDialog::updateSymbolPreview()
@@ -131,6 +138,7 @@ void QgsSymbolV2SelectorDialog::changeSymbolProperties()
131138

132139
updateSymbolPreview();
133140
updateSymbolInfo();
141+
emit symbolModified();
134142
}
135143

136144

@@ -143,6 +151,7 @@ void QgsSymbolV2SelectorDialog::setSymbolColor()
143151
mSymbol->setColor(color);
144152
updateSymbolColor();
145153
updateSymbolPreview();
154+
emit symbolModified();
146155
}
147156

148157
void QgsSymbolV2SelectorDialog::setMarkerAngle(double angle)
@@ -152,6 +161,7 @@ void QgsSymbolV2SelectorDialog::setMarkerAngle(double angle)
152161
return;
153162
markerSymbol->setAngle(angle);
154163
updateSymbolPreview();
164+
emit symbolModified();
155165
}
156166

157167
void QgsSymbolV2SelectorDialog::setMarkerSize(double size)
@@ -161,6 +171,7 @@ void QgsSymbolV2SelectorDialog::setMarkerSize(double size)
161171
return;
162172
markerSymbol->setSize(size);
163173
updateSymbolPreview();
174+
emit symbolModified();
164175
}
165176

166177
void QgsSymbolV2SelectorDialog::setLineWidth(double width)
@@ -170,4 +181,5 @@ void QgsSymbolV2SelectorDialog::setLineWidth(double width)
170181
return;
171182
lineSymbol->setWidth(width);
172183
updateSymbolPreview();
184+
emit symbolModified();
173185
}

src/gui/symbology-ng/qgssymbolv2selectordialog.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymbolV2Selecto
1414
Q_OBJECT
1515

1616
public:
17-
QgsSymbolV2SelectorDialog(QgsSymbolV2* symbol, QgsStyleV2* style, QWidget* parent = NULL);
17+
QgsSymbolV2SelectorDialog(QgsSymbolV2* symbol, QgsStyleV2* style, QWidget* parent = NULL, bool embedded = false);
1818

1919
protected:
2020
void populateSymbolView();
@@ -31,6 +31,9 @@ public slots:
3131
void setMarkerSize(double size);
3232
void setLineWidth(double width);
3333

34+
signals:
35+
void symbolModified();
36+
3437
protected:
3538
QgsStyleV2* mStyle;
3639
QgsSymbolV2* mSymbol;

0 commit comments

Comments
 (0)