Skip to content

Commit 5a5f10c

Browse files
committedJun 9, 2011
Add and wire in ellipse symbol layer widget
1 parent 3dc9659 commit 5a5f10c

File tree

7 files changed

+475
-1
lines changed

7 files changed

+475
-1
lines changed
 

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ void QgsEllipseSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Rend
112112

113113
QString QgsEllipseSymbolLayerV2::layerType() const
114114
{
115-
return "Ellipse";
115+
return "EllipseMarker";
116116
}
117117

118118
void QgsEllipseSymbolLayerV2::startRender( QgsSymbolV2RenderContext& context )

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
#include "qgssymbollayerv2registry.h"
33

4+
#include "qgsellipsesymbollayerv2.h"
45
#include "qgsmarkersymbollayerv2.h"
56
#include "qgslinesymbollayerv2.h"
67
#include "qgsfillsymbollayerv2.h"
@@ -23,6 +24,8 @@ QgsSymbolLayerV2Registry::QgsSymbolLayerV2Registry()
2324
QgsSvgMarkerSymbolLayerV2::create ) );
2425
addSymbolLayerType( new QgsSymbolLayerV2Metadata( "FontMarker", QObject::tr( "Font marker" ), QgsSymbolV2::Marker,
2526
QgsFontMarkerSymbolLayerV2::create ) );
27+
addSymbolLayerType( new QgsSymbolLayerV2Metadata( "EllipseMarker", QObject::tr("Ellipse marker"), QgsSymbolV2::Marker,
28+
QgsEllipseSymbolLayerV2::create ) );
2629

2730
addSymbolLayerType( new QgsSymbolLayerV2Metadata( "SimpleFill", QObject::tr( "Simple fill" ), QgsSymbolV2::Fill,
2831
QgsSimpleFillSymbolLayerV2::create ) );

‎src/gui/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ symbology-ng/qgsvectorrandomcolorrampv2dialog.cpp
2121
symbology-ng/qgsvectorcolorbrewercolorrampv2dialog.cpp
2222
symbology-ng/characterwidget.cpp
2323
symbology-ng/qgsstylev2exportimportdialog.cpp
24+
symbology-ng/qgsellipsesymbollayerv2widget.cpp
2425

2526
attributetable/qgsattributetablemodel.cpp
2627
attributetable/qgsattributetablememorymodel.cpp
@@ -93,6 +94,7 @@ symbology-ng/characterwidget.h
9394
symbology-ng/qgspenstylecombobox.h
9495
symbology-ng/qgsbrushstylecombobox.h
9596
symbology-ng/qgsstylev2exportimportdialog.h
97+
symbology-ng/qgsellipsesymbollayerv2widget.h
9698

9799
attributetable/qgsattributetableview.h
98100
attributetable/qgsattributetablemodel.h
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
#include "qgsellipsesymbollayerv2widget.h"
2+
#include "qgsellipsesymbollayerv2.h"
3+
#include "qgsmaplayerregistry.h"
4+
#include "qgsvectorlayer.h"
5+
#include <QColorDialog>
6+
7+
QgsEllipseSymbolLayerV2Widget::QgsEllipseSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent ): QgsSymbolLayerV2Widget( parent, vl )
8+
{
9+
setupUi( this );
10+
QStringList names;
11+
names << "circle" << "rectangle" << "cross" << "triangle";
12+
QSize iconSize = mShapeListWidget->iconSize();
13+
14+
QStringList::const_iterator nameIt = names.constBegin();
15+
for(; nameIt != names.constEnd(); ++nameIt )
16+
{
17+
QgsEllipseSymbolLayerV2* lyr = new QgsEllipseSymbolLayerV2();
18+
lyr->setSymbolName( *nameIt );
19+
lyr->setOutlineColor( QColor( 0, 0, 0 ) );
20+
lyr->setFillColor( QColor( 200, 200, 200 ) );
21+
lyr->setSymbolWidth(4);
22+
lyr->setSymbolHeight(2);
23+
QIcon icon = QgsSymbolLayerV2Utils::symbolLayerPreviewIcon( lyr, QgsSymbolV2::MM, iconSize );
24+
QListWidgetItem* item = new QListWidgetItem( icon, QString(), mShapeListWidget );
25+
item->setData( Qt::UserRole, *nameIt );
26+
delete lyr;
27+
}
28+
29+
blockComboSignals( true );
30+
fillDataDefinedComboBoxes();
31+
blockComboSignals( false );
32+
}
33+
34+
void QgsEllipseSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
35+
{
36+
if( layer->layerType() != "EllipseMarker" )
37+
{
38+
return;
39+
}
40+
41+
mLayer = static_cast<QgsEllipseSymbolLayerV2*>( layer );
42+
mWidthSpinBox->setValue( mLayer->symbolWidth() );
43+
mHeightSpinBox->setValue( mLayer->symbolHeight() );
44+
mOutlineWidthSpinBox->setValue( mLayer->outlineWidth() );
45+
46+
QList<QListWidgetItem *> symbolItemList = mShapeListWidget->findItems( mLayer->symbolName(), Qt::MatchExactly );
47+
if( symbolItemList.size() > 0 )
48+
{
49+
mShapeListWidget->setCurrentItem( symbolItemList.at( 0 ) );
50+
}
51+
}
52+
53+
QgsSymbolLayerV2* QgsEllipseSymbolLayerV2Widget::symbolLayer()
54+
{
55+
return mLayer;
56+
}
57+
58+
void QgsEllipseSymbolLayerV2Widget::on_mShapeListWidget_itemSelectionChanged()
59+
{
60+
if( mLayer )
61+
{
62+
QListWidgetItem* item = mShapeListWidget->currentItem();
63+
if( item )
64+
{
65+
mLayer->setSymbolName( item->data( Qt::UserRole ).toString() );
66+
emit changed();
67+
}
68+
}
69+
}
70+
71+
void QgsEllipseSymbolLayerV2Widget::on_mWidthSpinBox_valueChanged( double d )
72+
{
73+
if( mLayer )
74+
{
75+
mLayer->setSymbolWidth( d );
76+
emit changed();
77+
}
78+
}
79+
80+
void QgsEllipseSymbolLayerV2Widget::on_mHeightSpinBox_valueChanged( double d )
81+
{
82+
if( mLayer )
83+
{
84+
mLayer->setSymbolHeight( d );
85+
emit changed();
86+
}
87+
}
88+
89+
void QgsEllipseSymbolLayerV2Widget::on_mOutlineWidthSpinBox_valueChanged( double d )
90+
{
91+
if( mLayer )
92+
{
93+
mLayer->setOutlineWidth( d );
94+
emit changed();
95+
}
96+
}
97+
98+
void QgsEllipseSymbolLayerV2Widget::on_btnChangeColorBorder_clicked()
99+
{
100+
if( mLayer )
101+
{
102+
QColor newColor = QColorDialog::getColor( mLayer->outlineColor() );
103+
if( newColor.isValid() )
104+
{
105+
mLayer->setOutlineColor( newColor );
106+
emit changed();
107+
}
108+
}
109+
}
110+
111+
void QgsEllipseSymbolLayerV2Widget::on_btnChangeColorFill_clicked()
112+
{
113+
if( mLayer )
114+
{
115+
QColor newColor = QColorDialog::getColor( mLayer->fillColor() );
116+
if( newColor.isValid() )
117+
{
118+
mLayer->setFillColor( newColor );
119+
emit changed();
120+
}
121+
}
122+
}
123+
124+
void QgsEllipseSymbolLayerV2Widget::fillDataDefinedComboBoxes()
125+
{
126+
mDDSymbolWidthComboBox->clear();
127+
mDDSymbolWidthComboBox->addItem( "", -1 );
128+
mDDSymbolHeightComboBox->clear();
129+
mDDSymbolHeightComboBox->addItem( "", -1 );
130+
mDDOutlineWidthComboBox->clear();
131+
mDDOutlineWidthComboBox->addItem( "", -1 );
132+
mDDFillColorComboBox->clear();
133+
mDDFillColorComboBox->addItem( "", -1 );
134+
mDDOutlineColorComboBox->clear();
135+
mDDOutlineColorComboBox->addItem( "", -1 );
136+
mDDShapeComboBox->clear();
137+
mDDShapeComboBox->addItem( "", -1 );
138+
139+
if( mVectorLayer )
140+
{
141+
const QgsFieldMap& fm =mVectorLayer->pendingFields();
142+
QgsFieldMap::const_iterator fieldIt = fm.constBegin();
143+
for(; fieldIt != fm.constEnd(); ++fieldIt )
144+
{
145+
QString fieldName = fieldIt.value().name();
146+
int index = fieldIt.key();
147+
148+
mDDSymbolWidthComboBox->addItem( fieldName, index );
149+
mDDSymbolHeightComboBox->addItem( fieldName, index );
150+
mDDOutlineWidthComboBox->addItem( fieldName, index );
151+
mDDFillColorComboBox->addItem( fieldName, index );
152+
mDDOutlineColorComboBox->addItem( fieldName, index );
153+
mDDShapeComboBox->addItem( fieldName, index );
154+
}
155+
}
156+
}
157+
158+
void QgsEllipseSymbolLayerV2Widget::on_mDDSymbolWidthComboBox_currentIndexChanged( int idx )
159+
{
160+
if( mLayer )
161+
{
162+
mLayer->setDataDefinedWidth( mDDSymbolWidthComboBox->itemData( idx ).toInt() );
163+
}
164+
}
165+
166+
void QgsEllipseSymbolLayerV2Widget::on_mDDSymbolHeightComboBox_currentIndexChanged( int idx )
167+
{
168+
if( mLayer )
169+
{
170+
mLayer->setDataDefinedHeight( mDDSymbolHeightComboBox->itemData( idx ).toInt() );
171+
}
172+
}
173+
174+
void QgsEllipseSymbolLayerV2Widget::on_mDDOutlineWidthComboBox_currentIndexChanged( int idx )
175+
{
176+
if( mLayer )
177+
{
178+
mLayer->setDataDefinedOutlineWidth( mDDOutlineWidthComboBox->itemData( idx ).toInt() );
179+
}
180+
}
181+
182+
void QgsEllipseSymbolLayerV2Widget::on_mDDFillColorComboBox_currentIndexChanged( int idx )
183+
{
184+
if( mLayer )
185+
{
186+
mLayer->setDataDefinedFillColor( mDDFillColorComboBox->itemData( idx ).toInt() );
187+
}
188+
}
189+
190+
void QgsEllipseSymbolLayerV2Widget::on_mDDOutlineColorComboBox_currentIndexChanged( int idx )
191+
{
192+
if( mLayer )
193+
{
194+
mLayer->setDataDefinedOutlineColor( mDDOutlineColorComboBox->itemData( idx ).toInt() );
195+
}
196+
}
197+
198+
void QgsEllipseSymbolLayerV2Widget::on_mDDShapeComboBox_currentIndexChanged( int idx )
199+
{
200+
//todo...
201+
}
202+
203+
void QgsEllipseSymbolLayerV2Widget::blockComboSignals( bool block )
204+
{
205+
mDDSymbolWidthComboBox->blockSignals( block );
206+
mDDSymbolHeightComboBox->blockSignals( block );
207+
mDDOutlineWidthComboBox->blockSignals( block );
208+
mDDFillColorComboBox->blockSignals( block );
209+
mDDOutlineColorComboBox->blockSignals( block);
210+
mDDShapeComboBox->blockSignals( block );
211+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#ifndef QGSELLIPSESYMBOLLAYERV2WIDGET_H
2+
#define QGSELLIPSESYMBOLLAYERV2WIDGET_H
3+
4+
#include "ui_widget_ellipse.h"
5+
#include "qgssymbollayerv2widget.h"
6+
7+
class QgsEllipseSymbolLayerV2;
8+
9+
class GUI_EXPORT QgsEllipseSymbolLayerV2Widget: public QgsSymbolLayerV2Widget, private Ui::WidgetEllipseBase
10+
{
11+
Q_OBJECT
12+
13+
public:
14+
QgsEllipseSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = 0 );
15+
16+
static QgsSymbolLayerV2Widget* create( const QgsVectorLayer* vl ) { return new QgsEllipseSymbolLayerV2Widget( vl ); }
17+
18+
// from base class
19+
virtual void setSymbolLayer( QgsSymbolLayerV2* layer );
20+
virtual QgsSymbolLayerV2* symbolLayer();
21+
22+
protected:
23+
QgsEllipseSymbolLayerV2* mLayer;
24+
25+
private:
26+
void blockComboSignals( bool block );
27+
//insert available attributes for data defined symbolisation
28+
void fillDataDefinedComboBoxes();
29+
30+
private slots:
31+
void on_mShapeListWidget_itemSelectionChanged();
32+
void on_mWidthSpinBox_valueChanged( double d );
33+
void on_mHeightSpinBox_valueChanged( double d );
34+
void on_mOutlineWidthSpinBox_valueChanged( double d );
35+
void on_btnChangeColorBorder_clicked();
36+
void on_btnChangeColorFill_clicked();
37+
38+
void on_mDDSymbolWidthComboBox_currentIndexChanged( int idx );
39+
void on_mDDSymbolHeightComboBox_currentIndexChanged( int idx );
40+
void on_mDDOutlineWidthComboBox_currentIndexChanged( int idx );
41+
void on_mDDFillColorComboBox_currentIndexChanged( int idx );
42+
void on_mDDOutlineColorComboBox_currentIndexChanged( int idx );
43+
void on_mDDShapeComboBox_currentIndexChanged( int idx );
44+
};
45+
46+
#endif // QGSELLIPSESYMBOLLAYERV2WIDGET_H

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "qgslogger.h"
1313

1414
#include "qgssymbollayerv2widget.h"
15+
#include "qgsellipsesymbollayerv2widget.h"
1516
#include "qgssymbolv2.h" //for the unit
1617

1718

@@ -90,6 +91,7 @@ static void _initWidgetFunctions()
9091
_initWidgetFunction( "SimpleMarker", QgsSimpleMarkerSymbolLayerV2Widget::create );
9192
_initWidgetFunction( "SvgMarker", QgsSvgMarkerSymbolLayerV2Widget::create );
9293
_initWidgetFunction( "FontMarker", QgsFontMarkerSymbolLayerV2Widget::create );
94+
_initWidgetFunction( "EllipseMarker", QgsEllipseSymbolLayerV2Widget::create );
9395

9496
_initWidgetFunction( "SimpleFill", QgsSimpleFillSymbolLayerV2Widget::create );
9597
_initWidgetFunction( "SVGFill", QgsSVGFillSymbolLayerWidget::create );

‎src/ui/symbollayer/widget_ellipse.ui

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>WidgetEllipseBase</class>
4+
<widget class="QWidget" name="WidgetEllipseBase">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>336</width>
10+
<height>318</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Form</string>
15+
</property>
16+
<layout class="QGridLayout" name="gridLayout_2">
17+
<item row="0" column="0">
18+
<widget class="QTabWidget" name="tabWidget">
19+
<property name="currentIndex">
20+
<number>0</number>
21+
</property>
22+
<widget class="QWidget" name="tab">
23+
<attribute name="title">
24+
<string>Settings</string>
25+
</attribute>
26+
<layout class="QGridLayout" name="gridLayout">
27+
<item row="0" column="0">
28+
<widget class="QLabel" name="label">
29+
<property name="text">
30+
<string>Border color</string>
31+
</property>
32+
</widget>
33+
</item>
34+
<item row="0" column="1">
35+
<widget class="QgsColorButtonV2" name="btnChangeColorBorder">
36+
<property name="text">
37+
<string>Change</string>
38+
</property>
39+
</widget>
40+
</item>
41+
<item row="1" column="0">
42+
<widget class="QLabel" name="label_2">
43+
<property name="text">
44+
<string>Fill color</string>
45+
</property>
46+
</widget>
47+
</item>
48+
<item row="1" column="1">
49+
<widget class="QgsColorButtonV2" name="btnChangeColorFill">
50+
<property name="text">
51+
<string>Change</string>
52+
</property>
53+
</widget>
54+
</item>
55+
<item row="2" column="0">
56+
<widget class="QLabel" name="mSymbolWidthLabel">
57+
<property name="text">
58+
<string>Symbol width</string>
59+
</property>
60+
</widget>
61+
</item>
62+
<item row="2" column="1">
63+
<widget class="QDoubleSpinBox" name="mWidthSpinBox">
64+
<property name="decimals">
65+
<number>6</number>
66+
</property>
67+
<property name="maximum">
68+
<double>999999999.000000000000000</double>
69+
</property>
70+
</widget>
71+
</item>
72+
<item row="3" column="0">
73+
<widget class="QLabel" name="mOutlineWidthLabel">
74+
<property name="text">
75+
<string>Outline width</string>
76+
</property>
77+
</widget>
78+
</item>
79+
<item row="3" column="1">
80+
<widget class="QDoubleSpinBox" name="mOutlineWidthSpinBox">
81+
<property name="decimals">
82+
<number>6</number>
83+
</property>
84+
<property name="maximum">
85+
<double>999999999.000000000000000</double>
86+
</property>
87+
</widget>
88+
</item>
89+
<item row="4" column="0">
90+
<widget class="QLabel" name="mSymbolHeightLabel">
91+
<property name="text">
92+
<string>Symbol height</string>
93+
</property>
94+
</widget>
95+
</item>
96+
<item row="4" column="1">
97+
<widget class="QDoubleSpinBox" name="mHeightSpinBox">
98+
<property name="decimals">
99+
<number>6</number>
100+
</property>
101+
<property name="maximum">
102+
<double>999999999.000000000000000</double>
103+
</property>
104+
</widget>
105+
</item>
106+
<item row="5" column="0" colspan="2">
107+
<widget class="QListWidget" name="mShapeListWidget">
108+
<property name="dragDropMode">
109+
<enum>QAbstractItemView::DragDrop</enum>
110+
</property>
111+
<property name="iconSize">
112+
<size>
113+
<width>20</width>
114+
<height>20</height>
115+
</size>
116+
</property>
117+
<property name="flow">
118+
<enum>QListView::LeftToRight</enum>
119+
</property>
120+
<property name="spacing">
121+
<number>4</number>
122+
</property>
123+
<property name="viewMode">
124+
<enum>QListView::IconMode</enum>
125+
</property>
126+
</widget>
127+
</item>
128+
</layout>
129+
</widget>
130+
<widget class="QWidget" name="tab_2">
131+
<attribute name="title">
132+
<string>Data defined settings</string>
133+
</attribute>
134+
<layout class="QGridLayout" name="gridLayout_3">
135+
<item row="0" column="0">
136+
<widget class="QLabel" name="mDdSymbolWidthLabel">
137+
<property name="text">
138+
<string>Symbol width</string>
139+
</property>
140+
</widget>
141+
</item>
142+
<item row="0" column="1">
143+
<widget class="QComboBox" name="mDDSymbolWidthComboBox"/>
144+
</item>
145+
<item row="1" column="0">
146+
<widget class="QLabel" name="mDdSymbolHeightLabel">
147+
<property name="text">
148+
<string>Symbol height</string>
149+
</property>
150+
</widget>
151+
</item>
152+
<item row="1" column="1">
153+
<widget class="QComboBox" name="mDDSymbolHeightComboBox"/>
154+
</item>
155+
<item row="2" column="0">
156+
<widget class="QLabel" name="mDDOutlineWidthLabel">
157+
<property name="text">
158+
<string>Outline width</string>
159+
</property>
160+
</widget>
161+
</item>
162+
<item row="2" column="1">
163+
<widget class="QComboBox" name="mDDOutlineWidthComboBox"/>
164+
</item>
165+
<item row="3" column="0">
166+
<widget class="QLabel" name="mDDFillColorLabel">
167+
<property name="text">
168+
<string>Fill color</string>
169+
</property>
170+
</widget>
171+
</item>
172+
<item row="3" column="1">
173+
<widget class="QComboBox" name="mDDFillColorComboBox"/>
174+
</item>
175+
<item row="4" column="0">
176+
<widget class="QLabel" name="mDDOutlineLabel">
177+
<property name="text">
178+
<string>Outline color</string>
179+
</property>
180+
</widget>
181+
</item>
182+
<item row="4" column="1">
183+
<widget class="QComboBox" name="mDDOutlineColorComboBox"/>
184+
</item>
185+
<item row="5" column="0">
186+
<widget class="QLabel" name="mDDShapeLabel">
187+
<property name="text">
188+
<string>Shape</string>
189+
</property>
190+
</widget>
191+
</item>
192+
<item row="5" column="1">
193+
<widget class="QComboBox" name="mDDShapeComboBox"/>
194+
</item>
195+
</layout>
196+
</widget>
197+
</widget>
198+
</item>
199+
</layout>
200+
</widget>
201+
<customwidgets>
202+
<customwidget>
203+
<class>QgsColorButtonV2</class>
204+
<extends>QPushButton</extends>
205+
<header>qgscolorbutton.h</header>
206+
</customwidget>
207+
</customwidgets>
208+
<resources/>
209+
<connections/>
210+
</ui>

0 commit comments

Comments
 (0)
Please sign in to comment.