378 changes: 276 additions & 102 deletions src/core/symbology-ng/qgsellipsesymbollayerv2.cpp

Large diffs are not rendered by default.

72 changes: 17 additions & 55 deletions src/core/symbology-ng/qgsellipsesymbollayerv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#include "qgsmarkersymbollayerv2.h"
#include <QPainterPath>

class QgsExpression;

/**A symbol layer for rendering objects with major and minor axis (e.g. ellipse, rectangle )*/
class CORE_EXPORT QgsEllipseSymbolLayerV2: public QgsMarkerSymbolLayerV2
{
Expand All @@ -41,42 +43,21 @@ class CORE_EXPORT QgsEllipseSymbolLayerV2: public QgsMarkerSymbolLayerV2
void setSymbolName( const QString& name ) { mSymbolName = name; }
QString symbolName() const { return mSymbolName; }

void setSymbolNameField( const QString& field ) { mSymbolNameField = field; }
const QString& symbolNameField() const { return mSymbolNameField; }

void setSymbolWidth( double w ) { mSymbolWidth = w; }
double symbolWidth() const { return mSymbolWidth; }

void setWidthField( const QString& field ) { mWidthField = field; }
const QString& widthField() const { return mWidthField; }

void setSymbolHeight( double h ) { mSymbolHeight = h; }
double symbolHeight() const { return mSymbolHeight; }

void setHeightField( const QString& field ) { mHeightField = field; }
const QString& heightField() const { return mHeightField; }

void setRotationField( const QString& field ) { mRotationField = field; }
const QString& rotationField() const { return mRotationField; }

void setOutlineWidth( double w ) { mOutlineWidth = w; }
double outlineWidth() const { return mOutlineWidth; }

void setOutlineWidthField( const QString& field ) { mOutlineWidthField = field; }
const QString& outlineWidthField() const { return mOutlineWidthField; }

void setFillColor( const QColor& c ) { mFillColor = c;}
QColor fillColor() const { return mFillColor; }

void setFillColorField( const QString& field ) { mFillColorField = field; }
const QString& fillColorField() const { return mFillColorField; }

void setOutlineColor( const QColor& c ) { mOutlineColor = c; }
QColor outlineColor() const { return mOutlineColor; }

void setOutlineColorField( const QString& field ) { mOutlineColorField = field; }
const QString& outlineColorField() const { return mOutlineColorField; }

QSet<QString> usedAttributes() const;

void setSymbolWidthUnit( QgsSymbolV2::OutputUnit unit ) { mSymbolWidthUnit = unit; }
Expand All @@ -91,6 +72,12 @@ class CORE_EXPORT QgsEllipseSymbolLayerV2: public QgsMarkerSymbolLayerV2
void setOutputUnit( QgsSymbolV2::OutputUnit unit );
QgsSymbolV2::OutputUnit outputUnit() const;

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

private:
QString mSymbolName;
double mSymbolWidth;
Expand All @@ -102,41 +89,14 @@ class CORE_EXPORT QgsEllipseSymbolLayerV2: public QgsMarkerSymbolLayerV2
double mOutlineWidth;
QgsSymbolV2::OutputUnit mOutlineWidthUnit;

#if 0
/**Take width from attribute (-1 if fixed width)*/
QPair<int, QString> mWidthField;
/**Take height from attribute (-1 if fixed height)*/
QPair<int, QString> mHeightField;
/**Take symbol rotation from attribute (-1 if fixed rotation)*/
QPair<int, QString> mRotationField;
/**Take outline width from attribute (-1 if fixed outline width)*/
QPair<int, QString> mOutlineWidthField;
/**Take fill color from attribute (-1 if fixed fill color)*/
QPair<int, QString> mFillColorField;
/**Take outline color from attribute (-1 if fixed outline color)*/
QPair<int, QString> mOutlineColorField;
/**Take shape name from attribute (-1 if fixed shape type)*/
QPair<int, QString> mSymbolNameField;
#endif //0

//data defined property fields
QString mWidthField;
QString mHeightField;
QString mRotationField;
QString mOutlineWidthField;
QString mFillColorField;
QString mOutlineColorField;
QString mSymbolNameField;

//field indices for data defined properties
//resolved in startRender method
int mWidthIndex;
int mHeightIndex;
int mRotationIndex;
int mOutlineWidthIndex;
int mFillColorIndex;
int mOutlineColorIndex;
int mSymbolNameIndex;
QgsExpression* mWidthExpression;
QgsExpression* mHeightExpression;
QgsExpression* mRotationExpression;
QgsExpression* mOutlineWidthExpression;
QgsExpression* mFillColorExpression;
QgsExpression* mOutlineColorExpression;
QgsExpression* mSymbolNameExpression;

QPainterPath mPainterPath;

Expand All @@ -151,6 +111,8 @@ class CORE_EXPORT QgsEllipseSymbolLayerV2: public QgsMarkerSymbolLayerV2

/**True if this symbol layer uses a data defined property*/
bool hasDataDefinedProperty() const;

void prepareExpressions( const QgsVectorLayer* vl );
};

#endif // QGSELLIPSESYMBOLLAYERV2_H
962 changes: 925 additions & 37 deletions src/core/symbology-ng/qgsfillsymbollayerv2.cpp

Large diffs are not rendered by default.

84 changes: 84 additions & 0 deletions src/core/symbology-ng/qgsfillsymbollayerv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@ class CORE_EXPORT QgsSimpleFillSymbolLayerV2 : public QgsFillSymbolLayerV2
void setOutputUnit( QgsSymbolV2::OutputUnit unit );
QgsSymbolV2::OutputUnit outputUnit() const;

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

QSet<QString> usedAttributes() const;

protected:
QBrush mBrush;
QBrush mSelBrush;
Expand All @@ -96,6 +104,16 @@ class CORE_EXPORT QgsSimpleFillSymbolLayerV2 : public QgsFillSymbolLayerV2

QPointF mOffset;
QgsSymbolV2::OutputUnit mOffsetUnit;

//data defined properties
QgsExpression* mColorExpression;
QgsExpression* mColorBorderExpression;
QgsExpression* mWidthBorderExpression;

private:
//helper functions for data defined symbology
void prepareExpressions( const QgsVectorLayer* vl );
void applyDataDefinedSymbology( QgsSymbolV2RenderContext& context, QBrush& brush, QPen& pen, QPen& selPen );
};

/**Base class for polygon renderers generating texture images*/
Expand All @@ -121,6 +139,8 @@ class CORE_EXPORT QgsImageFillSymbolLayer: public QgsFillSymbolLayerV2

/**Custom outline*/
QgsLineSymbolV2* mOutline;

virtual void applyDataDefinedSettings( const QgsSymbolV2RenderContext& context ) { Q_UNUSED( context ); }
};

/**A class for svg fill patterns. The class automatically scales the pattern to
Expand Down Expand Up @@ -170,6 +190,14 @@ class CORE_EXPORT QgsSVGFillSymbolLayer: public QgsImageFillSymbolLayer
void setOutputUnit( QgsSymbolV2::OutputUnit unit );
QgsSymbolV2::OutputUnit outputUnit() const;

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

QSet<QString> usedAttributes() const;

protected:
/**Width of the pattern (in output units)*/
double mPatternWidth;
Expand All @@ -192,10 +220,25 @@ class CORE_EXPORT QgsSVGFillSymbolLayer: public QgsImageFillSymbolLayer
double mSvgOutlineWidth;
QgsSymbolV2::OutputUnit mSvgOutlineWidthUnit;

//data defined properties
QgsExpression* mWidthExpression;
QgsExpression* mSvgFileExpression;
QgsExpression* mAngleExpression;
QgsExpression* mFillColorExpression;
QgsExpression* mOutlineColorExpression;
QgsExpression* mOutlineWidthExpression;

void applyDataDefinedSettings( const QgsSymbolV2RenderContext& context );

private:
/**Helper function that gets the view box from the byte array*/
void storeViewBox();
void setDefaultSvgParams(); //fills mSvgFillColor, mSvgOutlineColor, mSvgOutlineWidth with default values for mSvgFilePath

void prepareExpressions( const QgsVectorLayer* vl );
/**Applies the svg pattern to the brush*/
void applyPattern( QBrush& brush, const QString& svgFilePath, double patternWidth, QgsSymbolV2::OutputUnit patternWidthUnit, const QColor& svgFillColor, const QColor& svgOutlineColor,
double svgOutlineWidth, QgsSymbolV2::OutputUnit svgOutlineWidthUnit, const QgsSymbolV2RenderContext& context );
};

class CORE_EXPORT QgsLinePatternFillSymbolLayer: public QgsImageFillSymbolLayer
Expand Down Expand Up @@ -245,6 +288,14 @@ class CORE_EXPORT QgsLinePatternFillSymbolLayer: public QgsImageFillSymbolLayer
void setOutputUnit( QgsSymbolV2::OutputUnit unit );
QgsSymbolV2::OutputUnit outputUnit() const;

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

QSet<QString> usedAttributes() const;

protected:
/**Distance (in mm or map units) between lines*/
double mDistance;
Expand All @@ -258,6 +309,19 @@ class CORE_EXPORT QgsLinePatternFillSymbolLayer: public QgsImageFillSymbolLayer
/**Offset perpendicular to line direction*/
double mOffset;
QgsSymbolV2::OutputUnit mOffsetUnit;

//data defined properties
QgsExpression* mLineAngleExpression;
QgsExpression* mDistanceExpression;
QgsExpression* mLineWidthExpression;
QgsExpression* mColorExpression;

void applyDataDefinedSettings( const QgsSymbolV2RenderContext& context );

private:
void prepareExpressions( const QgsVectorLayer* vl );
/**Applies the svg pattern to the brush*/
void applyPattern( const QgsSymbolV2RenderContext& context, QBrush& brush, double lineAngle, double distance, double lineWidth, const QColor& color );
};

class CORE_EXPORT QgsPointPatternFillSymbolLayer: public QgsImageFillSymbolLayer
Expand Down Expand Up @@ -312,6 +376,14 @@ class CORE_EXPORT QgsPointPatternFillSymbolLayer: public QgsImageFillSymbolLayer
void setOutputUnit( QgsSymbolV2::OutputUnit unit );
QgsSymbolV2::OutputUnit outputUnit() const;

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

QSet<QString> usedAttributes() const;

protected:
QgsMarkerSymbolV2* mMarkerSymbol;
double mDistanceX;
Expand All @@ -322,6 +394,18 @@ class CORE_EXPORT QgsPointPatternFillSymbolLayer: public QgsImageFillSymbolLayer
QgsSymbolV2::OutputUnit mDisplacementXUnit;
double mDisplacementY;
QgsSymbolV2::OutputUnit mDisplacementYUnit;

QgsExpression* mDistanceXExpression;
QgsExpression* mDistanceYExpression;
QgsExpression* mDisplacementXExpression;
QgsExpression* mDisplacementYExpression;

void applyDataDefinedSettings( const QgsSymbolV2RenderContext& context );

private:
void applyPattern( const QgsSymbolV2RenderContext& context, QBrush& brush, double distanceX, double distanceY,
double displacementX, double displacementY );
void prepareExpressions( const QgsVectorLayer* vl );
};

class CORE_EXPORT QgsCentroidFillSymbolLayerV2 : public QgsFillSymbolLayerV2
Expand Down
9 changes: 9 additions & 0 deletions src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1131,6 +1131,15 @@ void QgsGraduatedSymbolRendererV2::updateSymbols( QgsSymbolV2 *sym )
this->setSourceSymbol( sym->clone() );
}

void QgsGraduatedSymbolRendererV2::setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod )
{
mScaleMethod = scaleMethod;
foreach ( QgsRendererRangeV2 range, mRanges )
{
setScaleMethodToSymbol( range.symbol(), scaleMethod );
}
}

void QgsGraduatedSymbolRendererV2::addClass( QgsSymbolV2* symbol )
{
QgsSymbolV2* newSymbol = symbol->clone();
Expand Down
2 changes: 1 addition & 1 deletion src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2
QString sizeScaleField() const { return mSizeScaleField; }

//! @note added in 2.0
void setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod ) { mScaleMethod = scaleMethod; }
void setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod );
//! @note added in 2.0
QgsSymbolV2::ScaleMethod scaleMethod() const { return mScaleMethod; }

Expand Down
504 changes: 479 additions & 25 deletions src/core/symbology-ng/qgslinesymbollayerv2.cpp

Large diffs are not rendered by default.

44 changes: 43 additions & 1 deletion src/core/symbology-ng/qgslinesymbollayerv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
#include <QPen>
#include <QVector>

class QgsExpression;

#define DEFAULT_SIMPLELINE_COLOR QColor(0,0,0)
#define DEFAULT_SIMPLELINE_WIDTH DEFAULT_LINE_WIDTH
#define DEFAULT_SIMPLELINE_PENSTYLE Qt::SolidLine
Expand All @@ -35,6 +37,8 @@ class CORE_EXPORT QgsSimpleLineSymbolLayerV2 : public QgsLineSymbolLayerV2
double width = DEFAULT_SIMPLELINE_WIDTH,
Qt::PenStyle penStyle = DEFAULT_SIMPLELINE_PENSTYLE );

~QgsSimpleLineSymbolLayerV2();

// static stuff

static QgsSymbolLayerV2* create( const QgsStringMap& properties = QgsStringMap() );
Expand Down Expand Up @@ -87,6 +91,14 @@ class CORE_EXPORT QgsSimpleLineSymbolLayerV2 : public QgsLineSymbolLayerV2
QVector<qreal> customDashVector() const { return mCustomDashVector; }
void setCustomDashVector( const QVector<qreal>& vector ) { mCustomDashVector = vector; }

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

QSet<QString> usedAttributes() const;

protected:
Qt::PenStyle mPenStyle;
Qt::PenJoinStyle mPenJoinStyle;
Expand All @@ -102,6 +114,19 @@ class CORE_EXPORT QgsSimpleLineSymbolLayerV2 : public QgsLineSymbolLayerV2

/**Vector with an even number of entries for the */
QVector<qreal> mCustomDashVector;

//data defined properties
QgsExpression* mStrokeColorExpression;
QgsExpression* mStrokeWidthExpression;
QgsExpression* mLineOffsetExpression;
QgsExpression* mDashPatternExpression;
QgsExpression* mJoinStyleExpression;
QgsExpression* mCapStyleExpression;

private:
//helper functions for data defined symbology
void prepareExpressions( const QgsVectorLayer* vl );
void applyDataDefinedSymbology( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen, double& offset );
};

/////////
Expand Down Expand Up @@ -178,10 +203,18 @@ class CORE_EXPORT QgsMarkerLineSymbolLayerV2 : public QgsLineSymbolLayerV2
void setOutputUnit( QgsSymbolV2::OutputUnit unit );
QgsSymbolV2::OutputUnit outputUnit() const;

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

QSet<QString> usedAttributes() const;

protected:

void renderPolylineInterval( const QPolygonF& points, QgsSymbolV2RenderContext& context );
void renderPolylineVertex( const QPolygonF& points, QgsSymbolV2RenderContext& context );
void renderPolylineVertex( const QPolygonF& points, QgsSymbolV2RenderContext& context, Placement placement = Vertex );
void renderPolylineCentral( const QPolygonF& points, QgsSymbolV2RenderContext& context );

bool mRotateMarker;
Expand All @@ -191,6 +224,15 @@ class CORE_EXPORT QgsMarkerLineSymbolLayerV2 : public QgsLineSymbolLayerV2
double mOffset;
QgsSymbolV2::OutputUnit mOffsetUnit;
Placement mPlacement;

//data defined properties
QgsExpression* mIntervalExpression;
QgsExpression* mOffsetExpression;
QgsExpression* mPlacementExpression;

private:
//helper functions for data defined symbology
void prepareExpressions( const QgsVectorLayer* vl );
};

/////////
Expand Down
669 changes: 631 additions & 38 deletions src/core/symbology-ng/qgsmarkersymbollayerv2.cpp

Large diffs are not rendered by default.

45 changes: 43 additions & 2 deletions src/core/symbology-ng/qgsmarkersymbollayerv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#define QGSMARKERSYMBOLLAYERV2_H

#include "qgssymbollayerv2.h"
#include "qgsvectorlayer.h"

#define DEFAULT_SIMPLEMARKER_NAME "circle"
#define DEFAULT_SIMPLEMARKER_COLOR QColor(255,0,0)
Expand Down Expand Up @@ -70,12 +71,20 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
QColor borderColor() const { return mBorderColor; }
void setBorderColor( QColor color ) { mBorderColor = color; }

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

QSet<QString> usedAttributes() const;

protected:

void drawMarker( QPainter* p, QgsSymbolV2RenderContext& context );

bool prepareShape();
bool preparePath();
bool prepareShape( QString name = QString() );
bool preparePath( QString name = QString() );

void prepareCache( QgsSymbolV2RenderContext& context );

Expand All @@ -90,6 +99,19 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
QBrush mSelBrush;
QImage mSelCache;
bool mUsingCache;

//data defined properties
QgsExpression* mNameExpression;
QgsExpression* mColorExpression;
QgsExpression* mColorBorderExpression;
QgsExpression* mSizeExpression;
QgsExpression* mAngleExpression;
QgsExpression* mOffsetExpression;

private:
//helper functions for data defined symbology
void prepareExpressions( const QgsVectorLayer* vl );
void markerOffset( QgsSymbolV2RenderContext& context, double& offsetX, double& offsetY );
};

//////////
Expand Down Expand Up @@ -144,6 +166,14 @@ class CORE_EXPORT QgsSvgMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
void setOutputUnit( QgsSymbolV2::OutputUnit unit );
QgsSymbolV2::OutputUnit outputUnit() const;

const QgsExpression* dataDefinedProperty( const QString& property ) const;
QString dataDefinedPropertyString( const QString& property ) const;
void setDataDefinedProperty( const QString& property, const QString& expressionString );
void removeDataDefinedProperty( const QString& property );
void removeDataDefinedProperties();

QSet<QString> usedAttributes() const;

protected:
QString mPath;

Expand All @@ -154,6 +184,17 @@ class CORE_EXPORT QgsSvgMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
double mOutlineWidth;
QgsSymbolV2::OutputUnit mOutlineWidthUnit;
double mOrigSize;

QgsExpression* mSizeExpression;
QgsExpression* mOutlineWidthExpression;
QgsExpression* mAngleExpression;
QgsExpression* mOffsetExpression;
QgsExpression* mNameExpression;
QgsExpression* mFillExpression;
QgsExpression* mOutlineExpression;

private:
void prepareExpressions( const QgsVectorLayer* vl );
};


Expand Down
15 changes: 15 additions & 0 deletions src/core/symbology-ng/qgsrendererv2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,21 @@ unsigned char* QgsFeatureRendererV2::_getPolygon( QPolygonF& pts, QList<QPolygon
return wkb;
}

void QgsFeatureRendererV2::setScaleMethodToSymbol( QgsSymbolV2* symbol, int scaleMethod )
{
if ( symbol )
{
if ( symbol->type() == QgsSymbolV2::Marker )
{
QgsMarkerSymbolV2* ms = static_cast<QgsMarkerSymbolV2*>( symbol );
if ( ms )
{
ms->setScaleMethod(( QgsSymbolV2::ScaleMethod )scaleMethod );
}
}
}
}


QgsFeatureRendererV2::QgsFeatureRendererV2( QString type )
: mType( type ), mUsingSymbolLevels( false ),
Expand Down
2 changes: 2 additions & 0 deletions src/core/symbology-ng/qgsrendererv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,8 @@ class CORE_EXPORT QgsFeatureRendererV2
static unsigned char* _getLineString( QPolygonF& pts, QgsRenderContext& context, unsigned char* wkb );
static unsigned char* _getPolygon( QPolygonF& pts, QList<QPolygonF>& holes, QgsRenderContext& context, unsigned char* wkb );

void setScaleMethodToSymbol( QgsSymbolV2* symbol, int scaleMethod );

QString mType;

bool mUsingSymbolLevels;
Expand Down
6 changes: 6 additions & 0 deletions src/core/symbology-ng/qgssinglesymbolrendererv2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,12 @@ void QgsSingleSymbolRendererV2::setSymbol( QgsSymbolV2* s )
mSymbol = s;
}

void QgsSingleSymbolRendererV2::setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod )
{
mScaleMethod = scaleMethod;
setScaleMethodToSymbol( mSymbol, scaleMethod );
}

QString QgsSingleSymbolRendererV2::dump()
{
if ( mSymbol )
Expand Down
2 changes: 1 addition & 1 deletion src/core/symbology-ng/qgssinglesymbolrendererv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class CORE_EXPORT QgsSingleSymbolRendererV2 : public QgsFeatureRendererV2
QString sizeScaleField() const { return mSizeScaleField; }

//! @note added in 2.0
void setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod ) { mScaleMethod = scaleMethod; }
void setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod );
//! @note added in 2.0
QgsSymbolV2::ScaleMethod scaleMethod() const { return mScaleMethod; }

Expand Down
7 changes: 7 additions & 0 deletions src/core/symbology-ng/qgssymbollayerv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class QPainter;
class QSize;
class QPolygonF;

class QgsExpression;
class QgsRenderContext;

class CORE_EXPORT QgsSymbolLayerV2
Expand Down Expand Up @@ -79,6 +80,12 @@ class CORE_EXPORT QgsSymbolLayerV2
// symbol layers normally only use additional attributes to provide data defined settings
virtual QSet<QString> usedAttributes() const { return QSet<QString>(); }

virtual const QgsExpression* dataDefinedProperty( const QString& property ) const { Q_UNUSED( property ); return 0; } //= 0;
virtual QString dataDefinedPropertyString( const QString& property ) const { Q_UNUSED( property ); return QString(); } //= 0;
virtual void setDataDefinedProperty( const QString& property, const QString& expressionString ) { Q_UNUSED( property ); Q_UNUSED( expressionString ); } //=0;
virtual void removeDataDefinedProperty( const QString& property ) { Q_UNUSED( property ); } //=0;
virtual void removeDataDefinedProperties() {} //=0;

protected:
QgsSymbolLayerV2( QgsSymbolV2::SymbolType type, bool locked = false )
: mType( type ), mLocked( locked ), mRenderingPass( 0 ) {}
Expand Down
1 change: 1 addition & 0 deletions src/core/symbology-ng/qgssymbolv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ class CORE_EXPORT QgsSymbolV2RenderContext
~QgsSymbolV2RenderContext();

QgsRenderContext& renderContext() { return mRenderContext; }
const QgsRenderContext& renderContext() const { return mRenderContext; }
//void setRenderContext( QgsRenderContext& c ) { mRenderContext = c;}

QgsSymbolV2::OutputUnit outputUnit() const { return mOutputUnit; }
Expand Down
2 changes: 2 additions & 0 deletions src/gui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ raster/qgsrasterhistogramwidget.cpp
symbology-ng/qgsbrushstylecombobox.cpp
symbology-ng/qgscolorrampcombobox.cpp
symbology-ng/qgsdashspacedialog.cpp
symbology-ng/qgsdatadefinedsymboldialog.cpp
symbology-ng/qgspenstylecombobox.cpp
symbology-ng/qgssymbollayerv2widget.cpp
symbology-ng/qgsrendererv2widget.cpp
Expand Down Expand Up @@ -136,6 +137,7 @@ symbology-ng/qgsdashspacedialog.h
symbology-ng/qgssymbollayerv2widget.h
symbology-ng/qgssinglesymbolrendererv2widget.h
symbology-ng/qgscategorizedsymbolrendererv2widget.h
symbology-ng/qgsdatadefinedsymboldialog.h
symbology-ng/qgsgraduatedsymbolrendererv2widget.h
symbology-ng/qgsrulebasedrendererv2widget.h
symbology-ng/qgsrendererv2widget.h
Expand Down
154 changes: 154 additions & 0 deletions src/gui/symbology-ng/qgsdatadefinedsymboldialog.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
#include "qgsdatadefinedsymboldialog.h"
#include "qgsexpressionbuilderdialog.h"
#include "qgsvectorlayer.h"
#include <QCheckBox>
#include <QComboBox>
#include <QPushButton>

QgsDataDefinedSymbolDialog::QgsDataDefinedSymbolDialog( const QMap< QString, QPair< QString, QString > >& properties, const QgsVectorLayer* vl,
QWidget* parent, Qt::WindowFlags f ): QDialog( parent, f ), mVectorLayer( vl )
{
setupUi( this );

QgsFields attributeFields;
if ( mVectorLayer )
{
attributeFields = mVectorLayer->pendingFields();
}

mTableWidget->setRowCount( properties.size() );
int i = 0;
QMap< QString, QPair< QString, QString > >::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
//check box
QCheckBox* cb = new QCheckBox( this );
cb->setChecked( !it.value().second.isEmpty() );
mTableWidget->setCellWidget( i, 0, cb );

//property name
QTableWidgetItem* propertyItem = new QTableWidgetItem( it.value().first );
propertyItem->setData( Qt::UserRole, it.key() );
mTableWidget->setItem( i, 1, propertyItem );

//attribute list
QString expressionString = it.value().second;
QComboBox* attributeComboBox = new QComboBox( this );
attributeComboBox->addItem( QString() );
for ( int j = 0; j < attributeFields.count(); ++j )
{
attributeComboBox->addItem( attributeFields.at( j ).name() );
}

int attrComboIndex = comboIndexForExpressionString( expressionString, attributeComboBox );
if ( attrComboIndex >= 0 )
{
attributeComboBox->setCurrentIndex( attrComboIndex );
}
else
{
attributeComboBox->setItemText( 0, expressionString );
}

mTableWidget->setCellWidget( i, 2, attributeComboBox );

//expression button
QPushButton* expressionButton = new QPushButton( "...", this );
QObject::connect( expressionButton, SIGNAL( clicked() ), this, SLOT( expressionButtonClicked() ) );
mTableWidget->setCellWidget( i, 3, expressionButton );
++i;
}
}

QgsDataDefinedSymbolDialog::~QgsDataDefinedSymbolDialog()
{

}

QMap< QString, QString > QgsDataDefinedSymbolDialog::dataDefinedProperties() const
{
QMap< QString, QString > propertyMap;
int rowCount = mTableWidget->rowCount();
for ( int i = 0; i < rowCount; ++i )
{
//property
QString propertyKey = mTableWidget->item( i, 1 )->data( Qt::UserRole ).toString();
//checked?
bool checked = false;
QCheckBox* cb = qobject_cast<QCheckBox*>( mTableWidget->cellWidget( i, 0 ) );
if ( cb )
{
checked = cb->isChecked();
}
QString expressionString;
if ( checked )
{
QComboBox* comboBox = qobject_cast<QComboBox*>( mTableWidget->cellWidget( i, 2 ) );
expressionString = comboBox->currentText();
if ( comboBox->currentIndex() > 0 )
{
expressionString.prepend( "\"" ).append( "\"" );
}
}
propertyMap.insert( propertyKey, expressionString );
}
return propertyMap;
}

void QgsDataDefinedSymbolDialog::expressionButtonClicked()
{
qWarning( "Expression button clicked" );

//find out row
QObject* senderObj = sender();
int row = 0;
for ( ; row < mTableWidget->rowCount(); ++row )
{
if ( senderObj == mTableWidget->cellWidget( row, 3 ) )
{
break;
}
}

QComboBox* attributeCombo = qobject_cast<QComboBox*>( mTableWidget->cellWidget( row, 2 ) );
if ( !attributeCombo )
{
return;
}

QString previousText = attributeCombo->itemText( attributeCombo->currentIndex() );
if ( attributeCombo->currentIndex() > 0 )
{
previousText.prepend( "\"" ).append( "\"" );
}

QgsExpressionBuilderDialog d( const_cast<QgsVectorLayer*>( mVectorLayer ), previousText );
if ( d.exec() == QDialog::Accepted )
{
QString expressionString = d.expressionText();
int comboIndex = comboIndexForExpressionString( d.expressionText(), attributeCombo );

if ( comboIndex == -1 )
{
attributeCombo->setItemText( 0, d.expressionText() );
attributeCombo->setCurrentIndex( 0 );
}
else
{
attributeCombo->setItemText( 0, QString() );
attributeCombo->setCurrentIndex( comboIndex );
}
}
}

int QgsDataDefinedSymbolDialog::comboIndexForExpressionString( const QString& expr, const QComboBox* cb )
{
QString attributeString = expr.trimmed();
int comboIndex = cb->findText( attributeString );
if ( comboIndex == -1 )
{
attributeString.remove( 0, 1 ).chop( 1 );
comboIndex = cb->findText( attributeString );
}
return comboIndex;
}
29 changes: 29 additions & 0 deletions src/gui/symbology-ng/qgsdatadefinedsymboldialog.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#ifndef QGSDATADEFINEDSYMBOLLAYERDIALOG_H
#define QGSDATADEFINEDSYMBOLLAYERDIALOG_H

#include "ui_qgsdatadefinedsymboldialogbase.h"
#include <QDialog>

class QgsVectorLayer;
class QComboBox;

class GUI_EXPORT QgsDataDefinedSymbolDialog: public QDialog, private Ui::QgsDataDefinedSymbolDialog
{
Q_OBJECT
public:
QgsDataDefinedSymbolDialog( const QMap< QString, QPair< QString, QString > >& properties, const QgsVectorLayer* vl, QWidget * parent = 0, Qt::WindowFlags f = 0 );
~QgsDataDefinedSymbolDialog();
QMap< QString, QString > dataDefinedProperties() const;

private slots:
void expressionButtonClicked();

private:
const QgsVectorLayer* mVectorLayer;

/**Tries to fiend a combo box field for an expression string (considering whitespaces, brackets around attribute names)
@return index or -1 in case not found*/
int comboIndexForExpressionString( const QString& expr, const QComboBox* cb );
};

#endif // QGSDATADEFINEDSYMBOLLAYERDIALOG_H
198 changes: 36 additions & 162 deletions src/gui/symbology-ng/qgsellipsesymbollayerv2widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
* *
***************************************************************************/
#include "qgsellipsesymbollayerv2widget.h"
#include "qgsdatadefinedsymboldialog.h"
#include "qgsellipsesymbollayerv2.h"
#include "qgsmaplayerregistry.h"
#include "qgsvectorlayer.h"
Expand Down Expand Up @@ -42,7 +43,6 @@ QgsEllipseSymbolLayerV2Widget::QgsEllipseSymbolLayerV2Widget( const QgsVectorLay
}

blockComboSignals( true );
fillDataDefinedComboBoxes();
blockComboSignals( false );
}

Expand Down Expand Up @@ -77,63 +77,6 @@ void QgsEllipseSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
mSymbolWidthUnitComboBox->setCurrentIndex( mLayer->symbolWidthUnit() );
mOutlineWidthUnitComboBox->setCurrentIndex( mLayer->outlineWidthUnit() );
mSymbolHeightUnitComboBox->setCurrentIndex( mLayer->symbolHeightUnit() );

if ( mLayer->widthField().isEmpty() )
{
mDDSymbolWidthComboBox->setCurrentIndex( 0 );
}
else
{
mDDSymbolWidthComboBox->setCurrentIndex( mDDSymbolWidthComboBox->findText( mLayer->widthField() ) );
}
if ( mLayer->heightField().isEmpty() )
{
mDDSymbolHeightComboBox->setCurrentIndex( 0 );
}
else
{
mDDSymbolHeightComboBox->setCurrentIndex( mDDSymbolHeightComboBox->findText( mLayer->heightField() ) );
}
if ( mLayer->rotationField().isEmpty() )
{
mDDRotationComboBox->setCurrentIndex( 0 );
}
else
{
mDDRotationComboBox->setCurrentIndex( mDDRotationComboBox->findText( mLayer->rotationField() ) );
}
if ( mLayer->outlineWidthField().isEmpty() )
{
mDDOutlineWidthComboBox->setCurrentIndex( 0 );
}
else
{
mDDOutlineWidthComboBox->setCurrentIndex( mDDOutlineWidthComboBox->findText( mLayer->outlineWidthField() ) );
}
if ( mLayer->fillColorField().isEmpty() )
{
mDDFillColorComboBox->setCurrentIndex( 0 );
}
else
{
mDDFillColorComboBox->setCurrentIndex( mDDFillColorComboBox->findText( mLayer->fillColorField() ) );
}
if ( mLayer->outlineColorField().isEmpty() )
{
mDDOutlineColorComboBox->setCurrentIndex( 0 );
}
else
{
mDDOutlineColorComboBox->setCurrentIndex( mDDOutlineColorComboBox->findText( mLayer->outlineColorField() ) );
}
if ( mLayer->symbolNameField().isEmpty() )
{
mDDShapeComboBox->setCurrentIndex( 0 );
}
else
{
mDDShapeComboBox->setCurrentIndex( mDDShapeComboBox->findText( mLayer->symbolNameField() ) );
}
}
blockComboSignals( false );
}
Expand Down Expand Up @@ -214,103 +157,6 @@ void QgsEllipseSymbolLayerV2Widget::on_btnChangeColorFill_colorChanged( const QC
emit changed();
}

void QgsEllipseSymbolLayerV2Widget::fillDataDefinedComboBoxes()
{
mDDSymbolWidthComboBox->clear();
mDDSymbolWidthComboBox->addItem( "", -1 );
mDDSymbolHeightComboBox->clear();
mDDSymbolHeightComboBox->addItem( "", -1 );
mDDRotationComboBox->clear();
mDDRotationComboBox->addItem( "", -1 );
mDDOutlineWidthComboBox->clear();
mDDOutlineWidthComboBox->addItem( "", -1 );
mDDFillColorComboBox->clear();
mDDFillColorComboBox->addItem( "", -1 );
mDDOutlineColorComboBox->clear();
mDDOutlineColorComboBox->addItem( "", -1 );
mDDShapeComboBox->clear();
mDDShapeComboBox->addItem( "", -1 );

if ( mVectorLayer )
{
const QgsFields& fm = mVectorLayer->pendingFields();
for ( int index = 0; index < fm.count(); ++index )
{
QString fieldName = fm[index].name();

mDDSymbolWidthComboBox->addItem( fieldName, index );
mDDSymbolHeightComboBox->addItem( fieldName, index );
mDDRotationComboBox->addItem( fieldName, index );
mDDOutlineWidthComboBox->addItem( fieldName, index );
mDDFillColorComboBox->addItem( fieldName, index );
mDDOutlineColorComboBox->addItem( fieldName, index );
mDDShapeComboBox->addItem( fieldName, index );
}
}
}

void QgsEllipseSymbolLayerV2Widget::on_mDDSymbolWidthComboBox_currentIndexChanged( int idx )
{
if ( mLayer )
{
mLayer->setWidthField( mDDSymbolWidthComboBox->itemText( idx ) );
emit changed();
}
}

void QgsEllipseSymbolLayerV2Widget::on_mDDSymbolHeightComboBox_currentIndexChanged( int idx )
{
if ( mLayer )
{
mLayer->setHeightField( mDDSymbolHeightComboBox->itemText( idx ) );
emit changed();
}
}

void QgsEllipseSymbolLayerV2Widget::on_mDDRotationComboBox_currentIndexChanged( int idx )
{
if ( mLayer )
{
mLayer->setRotationField( mDDRotationComboBox->itemText( idx ) );
emit changed();
}
}

void QgsEllipseSymbolLayerV2Widget::on_mDDOutlineWidthComboBox_currentIndexChanged( int idx )
{
if ( mLayer )
{
mLayer->setOutlineWidthField( mDDOutlineWidthComboBox->itemText( idx ) );
emit changed();
}
}

void QgsEllipseSymbolLayerV2Widget::on_mDDFillColorComboBox_currentIndexChanged( int idx )
{
if ( mLayer )
{
mLayer->setFillColorField( mDDFillColorComboBox->itemText( idx ) );
emit changed();
}
}

void QgsEllipseSymbolLayerV2Widget::on_mDDOutlineColorComboBox_currentIndexChanged( int idx )
{
if ( mLayer )
{
mLayer->setOutlineColorField( mDDOutlineColorComboBox->itemText( idx ) );
emit changed();
}
}

void QgsEllipseSymbolLayerV2Widget::on_mDDShapeComboBox_currentIndexChanged( int idx )
{
if ( mLayer )
{
mLayer->setSymbolNameField( mDDShapeComboBox->itemText( idx ) );
}
}

void QgsEllipseSymbolLayerV2Widget::on_mSymbolWidthUnitComboBox_currentIndexChanged( int index )
{
if ( mLayer )
Expand All @@ -337,14 +183,42 @@ void QgsEllipseSymbolLayerV2Widget::on_mSymbolHeightUnitComboBox_currentIndexCha

void QgsEllipseSymbolLayerV2Widget::blockComboSignals( bool block )
{
mDDSymbolWidthComboBox->blockSignals( block );
mDDSymbolHeightComboBox->blockSignals( block );
mDDRotationComboBox->blockSignals( block );
mDDOutlineWidthComboBox->blockSignals( block );
mDDFillColorComboBox->blockSignals( block );
mDDOutlineColorComboBox->blockSignals( block );
mDDShapeComboBox->blockSignals( block );
mSymbolWidthUnitComboBox->blockSignals( block );
mOutlineWidthUnitComboBox->blockSignals( block );
mSymbolHeightUnitComboBox->blockSignals( block );
}

void QgsEllipseSymbolLayerV2Widget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "width", qMakePair( tr( "Symbol width" ), mLayer->dataDefinedPropertyString( "width" ) ) );
dataDefinedProperties.insert( "height", qMakePair( tr( "Symbol height" ), mLayer->dataDefinedPropertyString( "height" ) ) );
dataDefinedProperties.insert( "rotation", qMakePair( tr( "Rotation" ), mLayer->dataDefinedPropertyString( "rotation" ) ) );
dataDefinedProperties.insert( "outline_width", qMakePair( tr( "Outline width" ), mLayer->dataDefinedPropertyString( "outline_width" ) ) );
dataDefinedProperties.insert( "fill_color", qMakePair( tr( "Fill color" ), mLayer->dataDefinedPropertyString( "fill_color" ) ) );
dataDefinedProperties.insert( "outline_color", qMakePair( tr( "Border color" ), mLayer->dataDefinedPropertyString( "outline_color" ) ) );
dataDefinedProperties.insert( "symbol_name", qMakePair( tr( "Symbol name" ), mLayer->dataDefinedPropertyString( "symbol_name" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}
12 changes: 2 additions & 10 deletions src/gui/symbology-ng/qgsellipsesymbollayerv2widget.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ class GUI_EXPORT QgsEllipseSymbolLayerV2Widget: public QgsSymbolLayerV2Widget, p

private:
void blockComboSignals( bool block );
//insert available attributes for data defined symbolisation
void fillDataDefinedComboBoxes();

private slots:
void on_mShapeListWidget_itemSelectionChanged();
Expand All @@ -50,17 +48,11 @@ class GUI_EXPORT QgsEllipseSymbolLayerV2Widget: public QgsSymbolLayerV2Widget, p
void on_btnChangeColorBorder_colorChanged( const QColor& newColor );
void on_btnChangeColorFill_colorChanged( const QColor& newColor );

void on_mDDSymbolWidthComboBox_currentIndexChanged( int idx );
void on_mDDSymbolHeightComboBox_currentIndexChanged( int idx );
void on_mDDRotationComboBox_currentIndexChanged( int idx );
void on_mDDOutlineWidthComboBox_currentIndexChanged( int idx );
void on_mDDFillColorComboBox_currentIndexChanged( int idx );
void on_mDDOutlineColorComboBox_currentIndexChanged( int idx );
void on_mDDShapeComboBox_currentIndexChanged( int idx );

void on_mSymbolWidthUnitComboBox_currentIndexChanged( int index );
void on_mOutlineWidthUnitComboBox_currentIndexChanged( int index );
void on_mSymbolHeightUnitComboBox_currentIndexChanged( int index );

void on_mDataDefinedPropertiesButton_clicked();
};

#endif // QGSELLIPSESYMBOLLAYERV2WIDGET_H
269 changes: 264 additions & 5 deletions src/gui/symbology-ng/qgssymbollayerv2widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

#include "characterwidget.h"
#include "qgsdashspacedialog.h"
#include "qgsdatadefinedsymboldialog.h"
#include "qgssymbolv2selectordialog.h"
#include "qgssvgcache.h"
#include "qgssymbollayerv2utils.h"
Expand Down Expand Up @@ -55,7 +56,6 @@ QgsSimpleLineSymbolLayerV2Widget::QgsSimpleLineSymbolLayerV2Widget( const QgsVec
connect( btnChangeColor, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( colorChanged( const QColor& ) ) );
connect( cboPenStyle, SIGNAL( currentIndexChanged( int ) ), this, SLOT( penStyleChanged() ) );
connect( spinOffset, SIGNAL( valueChanged( double ) ), this, SLOT( offsetChanged() ) );
connect( cboCapStyle, SIGNAL( currentIndexChanged( int ) ), this, SLOT( penStyleChanged() ) );
connect( cboJoinStyle, SIGNAL( currentIndexChanged( int ) ), this, SLOT( penStyleChanged() ) );
updatePatternIcon();

Expand Down Expand Up @@ -87,13 +87,10 @@ void QgsSimpleLineSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
spinOffset->setValue( mLayer->offset() );
cboPenStyle->blockSignals( true );
cboJoinStyle->blockSignals( true );
cboCapStyle->blockSignals( true );
cboPenStyle->setPenStyle( mLayer->penStyle() );
cboJoinStyle->setPenJoinStyle( mLayer->penJoinStyle() );
cboCapStyle->setPenCapStyle( mLayer->penCapStyle() );
cboPenStyle->blockSignals( false );
cboJoinStyle->blockSignals( false );
cboCapStyle->blockSignals( false );

//use a custom dash pattern?
bool useCustomDashPattern = mLayer->useCustomDashPattern();
Expand Down Expand Up @@ -129,7 +126,6 @@ void QgsSimpleLineSymbolLayerV2Widget::penStyleChanged()
{
mLayer->setPenStyle( cboPenStyle->penStyle() );
mLayer->setPenJoinStyle( cboJoinStyle->penJoinStyle() );
mLayer->setPenCapStyle( cboCapStyle->penCapStyle() );
emit changed();
}

Expand Down Expand Up @@ -188,6 +184,40 @@ void QgsSimpleLineSymbolLayerV2Widget::on_mDashPatternUnitComboBox_currentIndexC
emit changed();
}

void QgsSimpleLineSymbolLayerV2Widget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "color", qMakePair( tr( "Color" ), mLayer->dataDefinedPropertyString( "color" ) ) );
dataDefinedProperties.insert( "width", qMakePair( tr( "Pen width" ), mLayer->dataDefinedPropertyString( "width" ) ) );
dataDefinedProperties.insert( "offset", qMakePair( tr( "Offset" ), mLayer->dataDefinedPropertyString( "offset" ) ) );
dataDefinedProperties.insert( "customdash", qMakePair( tr( "Dash pattern" ), mLayer->dataDefinedPropertyString( "customdash" ) ) );
dataDefinedProperties.insert( "joinstyle", qMakePair( tr( "Join style" ), mLayer->dataDefinedPropertyString( "joinstyle" ) ) );
dataDefinedProperties.insert( "capstyle", qMakePair( tr( "Cap style" ), mLayer->dataDefinedPropertyString( "capstyle" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}

void QgsSimpleLineSymbolLayerV2Widget::updatePatternIcon()
{
if ( !mLayer )
Expand Down Expand Up @@ -339,6 +369,40 @@ void QgsSimpleMarkerSymbolLayerV2Widget::on_mOffsetUnitComboBox_currentIndexChan
}
}

void QgsSimpleMarkerSymbolLayerV2Widget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "name", qMakePair( tr( "Name" ), mLayer->dataDefinedPropertyString( "name" ) ) );
dataDefinedProperties.insert( "color", qMakePair( tr( "Fill color" ), mLayer->dataDefinedPropertyString( "color" ) ) );
dataDefinedProperties.insert( "color_border", qMakePair( tr( "Border color" ), mLayer->dataDefinedPropertyString( "color_border" ) ) );
dataDefinedProperties.insert( "size", qMakePair( tr( "Size" ), mLayer->dataDefinedPropertyString( "size" ) ) );
dataDefinedProperties.insert( "angle", qMakePair( tr( "Angle" ), mLayer->dataDefinedPropertyString( "angle" ) ) );
dataDefinedProperties.insert( "offset", qMakePair( tr( "Offset" ), mLayer->dataDefinedPropertyString( "offset" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}


///////////

Expand Down Expand Up @@ -448,6 +512,37 @@ void QgsSimpleFillSymbolLayerV2Widget::on_mOffsetUnitComboBox_currentIndexChange
}
}

void QgsSimpleFillSymbolLayerV2Widget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "color", qMakePair( tr( "Color" ), mLayer->dataDefinedPropertyString( "color" ) ) );
dataDefinedProperties.insert( "color_border", qMakePair( tr( "Bordere color" ), mLayer->dataDefinedPropertyString( "color_border" ) ) );
dataDefinedProperties.insert( "width_border", qMakePair( tr( "Border width" ), mLayer->dataDefinedPropertyString( "width_border" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}

///////////

QgsMarkerLineSymbolLayerV2Widget::QgsMarkerLineSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent )
Expand Down Expand Up @@ -561,6 +656,37 @@ void QgsMarkerLineSymbolLayerV2Widget::on_mOffsetUnitComboBox_currentIndexChange
emit changed();
}

void QgsMarkerLineSymbolLayerV2Widget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "interval", qMakePair( tr( "Interval" ), mLayer->dataDefinedPropertyString( "interval" ) ) );
dataDefinedProperties.insert( "offset", qMakePair( tr( "Line offset" ), mLayer->dataDefinedPropertyString( "offset" ) ) );
dataDefinedProperties.insert( "placement", qMakePair( tr( "Placement" ), mLayer->dataDefinedPropertyString( "placement" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}

///////////


Expand Down Expand Up @@ -944,6 +1070,41 @@ void QgsSvgMarkerSymbolLayerV2Widget::on_mOffsetUnitComboBox_currentIndexChanged
emit changed();
}

void QgsSvgMarkerSymbolLayerV2Widget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "size", qMakePair( tr( "Size" ), mLayer->dataDefinedPropertyString( "size" ) ) );
dataDefinedProperties.insert( "outline-width", qMakePair( tr( "Border width" ), mLayer->dataDefinedPropertyString( "outline-width" ) ) );
dataDefinedProperties.insert( "angle", qMakePair( tr( "Angle" ), mLayer->dataDefinedPropertyString( "angle" ) ) );
dataDefinedProperties.insert( "offset", qMakePair( tr( "Offset" ), mLayer->dataDefinedPropertyString( "offset" ) ) );
dataDefinedProperties.insert( "name", qMakePair( tr( "SVG file" ), mLayer->dataDefinedPropertyString( "name" ) ) );
dataDefinedProperties.insert( "fill", qMakePair( tr( "Color" ), mLayer->dataDefinedPropertyString( "fill" ) ) );
dataDefinedProperties.insert( "outline", qMakePair( tr( "Border color" ), mLayer->dataDefinedPropertyString( "outline" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}

///////////////

QgsLineDecorationSymbolLayerV2Widget::QgsLineDecorationSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent )
Expand Down Expand Up @@ -1222,6 +1383,40 @@ void QgsSVGFillSymbolLayerWidget::on_mSvgOutlineWidthUnitComboBox_currentIndexCh
}
}

void QgsSVGFillSymbolLayerWidget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "width", qMakePair( tr( "Texture width" ), mLayer->dataDefinedPropertyString( "width" ) ) );
dataDefinedProperties.insert( "svgFile", qMakePair( tr( "SVG file" ), mLayer->dataDefinedPropertyString( "svgFile" ) ) );
dataDefinedProperties.insert( "angle", qMakePair( tr( "Rotation" ), mLayer->dataDefinedPropertyString( "angle" ) ) );
dataDefinedProperties.insert( "svgFillColor", qMakePair( tr( "Color" ), mLayer->dataDefinedPropertyString( "svgFillColor" ) ) );
dataDefinedProperties.insert( "svgOutlineColor", qMakePair( tr( "Border color" ), mLayer->dataDefinedPropertyString( "svgOutlineColor" ) ) );
dataDefinedProperties.insert( "svgOutlineWidth", qMakePair( tr( "Border width" ), mLayer->dataDefinedPropertyString( "svgOutlineWidth" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}

/////////////

QgsLinePatternFillSymbolLayerWidget::QgsLinePatternFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent ):
Expand Down Expand Up @@ -1340,6 +1535,38 @@ void QgsLinePatternFillSymbolLayerWidget::on_mOffsetUnitComboBox_currentIndexCha
}
}

void QgsLinePatternFillSymbolLayerWidget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "lineangle", qMakePair( tr( "Angle" ), mLayer->dataDefinedPropertyString( "lineangle" ) ) );
dataDefinedProperties.insert( "distance", qMakePair( tr( "Distance" ), mLayer->dataDefinedPropertyString( "distance" ) ) );
dataDefinedProperties.insert( "linewidth", qMakePair( tr( "Line width" ), mLayer->dataDefinedPropertyString( "linewidth" ) ) );
dataDefinedProperties.insert( "color", qMakePair( tr( "Color" ), mLayer->dataDefinedPropertyString( "color" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}


/////////////

Expand Down Expand Up @@ -1454,6 +1681,38 @@ void QgsPointPatternFillSymbolLayerWidget::on_mVerticalDisplacementUnitComboBox_
}
}

void QgsPointPatternFillSymbolLayerWidget::on_mDataDefinedPropertiesButton_clicked()
{
if ( !mLayer )
{
return;
}

QMap<QString, QPair< QString, QString> > dataDefinedProperties;
dataDefinedProperties.insert( "distance_x", qMakePair( tr( "Horizontal distance" ), mLayer->dataDefinedPropertyString( "distance_x" ) ) );
dataDefinedProperties.insert( "distance_y", qMakePair( tr( "Vertical distance" ), mLayer->dataDefinedPropertyString( "distance_y" ) ) );
dataDefinedProperties.insert( "displacement_x", qMakePair( tr( "Horizontal displacement" ), mLayer->dataDefinedPropertyString( "displacement_x" ) ) );
dataDefinedProperties.insert( "displacement_y", qMakePair( tr( "Vertical displacement" ), mLayer->dataDefinedPropertyString( "displacement_y" ) ) );

QgsDataDefinedSymbolDialog d( dataDefinedProperties, mVectorLayer );
if ( d.exec() == QDialog::Accepted )
{
//empty all existing properties first
mLayer->removeDataDefinedProperties();

QMap<QString, QString> properties = d.dataDefinedProperties();
QMap<QString, QString>::const_iterator it = properties.constBegin();
for ( ; it != properties.constEnd(); ++it )
{
if ( !it.value().isEmpty() )
{
mLayer->setDataDefinedProperty( it.key(), it.value() );
}
}
emit changed();
}
}

/////////////

QgsFontMarkerSymbolLayerV2Widget::QgsFontMarkerSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent )
Expand Down
9 changes: 8 additions & 1 deletion src/gui/symbology-ng/qgssymbollayerv2widget.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class GUI_EXPORT QgsSimpleLineSymbolLayerV2Widget : public QgsSymbolLayerV2Widge
void on_mPenWidthUnitComboBox_currentIndexChanged( int index );
void on_mOffsetUnitComboBox_currentIndexChanged( int index );
void on_mDashPatternUnitComboBox_currentIndexChanged( int index );

void on_mDataDefinedPropertiesButton_clicked();

protected:
QgsSimpleLineSymbolLayerV2* mLayer;
Expand Down Expand Up @@ -107,6 +107,7 @@ class GUI_EXPORT QgsSimpleMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Wid
void setOffset();
void on_mSizeUnitComboBox_currentIndexChanged( int index );
void on_mOffsetUnitComboBox_currentIndexChanged( int index );
void on_mDataDefinedPropertiesButton_clicked();

protected:
QgsSimpleMarkerSymbolLayerV2* mLayer;
Expand Down Expand Up @@ -140,6 +141,7 @@ class GUI_EXPORT QgsSimpleFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widge
void offsetChanged();
void on_mBorderWidthUnitComboBox_currentIndexChanged( int index );
void on_mOffsetUnitComboBox_currentIndexChanged( int index );
void on_mDataDefinedPropertiesButton_clicked();

protected:
QgsSimpleFillSymbolLayerV2* mLayer;
Expand Down Expand Up @@ -173,6 +175,7 @@ class GUI_EXPORT QgsMarkerLineSymbolLayerV2Widget : public QgsSymbolLayerV2Widge
void setPlacement();
void on_mIntervalUnitComboBox_currentIndexChanged( int index );
void on_mOffsetUnitComboBox_currentIndexChanged( int index );
void on_mDataDefinedPropertiesButton_clicked();

protected:

Expand Down Expand Up @@ -214,6 +217,7 @@ class GUI_EXPORT QgsSvgMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Widget
void on_mSizeUnitComboBox_currentIndexChanged( int index );
void on_mBorderWidthUnitComboBox_currentIndexChanged( int index );
void on_mOffsetUnitComboBox_currentIndexChanged( int index );
void on_mDataDefinedPropertiesButton_clicked();

protected:

Expand Down Expand Up @@ -290,6 +294,7 @@ class GUI_EXPORT QgsSVGFillSymbolLayerWidget : public QgsSymbolLayerV2Widget, pr
void on_mBorderWidthSpinBox_valueChanged( double d );
void on_mTextureWidthUnitComboBox_currentIndexChanged( int index );
void on_mSvgOutlineWidthUnitComboBox_currentIndexChanged( int index );
void on_mDataDefinedPropertiesButton_clicked();
};

//////////
Expand Down Expand Up @@ -322,6 +327,7 @@ class GUI_EXPORT QgsLinePatternFillSymbolLayerWidget : public QgsSymbolLayerV2Wi
void on_mDistanceUnitComboBox_currentIndexChanged( int index );
void on_mLineWidthUnitComboBox_currentIndexChanged( int index );
void on_mOffsetUnitComboBox_currentIndexChanged( int index );
void on_mDataDefinedPropertiesButton_clicked();
};

//////////
Expand Down Expand Up @@ -353,6 +359,7 @@ class GUI_EXPORT QgsPointPatternFillSymbolLayerWidget: public QgsSymbolLayerV2Wi
void on_mVerticalDistanceUnitComboBox_currentIndexChanged( int index );
void on_mHorizontalDisplacementUnitComboBox_currentIndexChanged( int index );
void on_mVerticalDisplacementUnitComboBox_currentIndexChanged( int index );
void on_mDataDefinedPropertiesButton_clicked();
};

/////////
Expand Down
88 changes: 88 additions & 0 deletions src/ui/qgsdatadefinedsymboldialogbase.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QgsDataDefinedSymbolDialog</class>
<widget class="QDialog" name="QgsDataDefinedSymbolDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Data defined properties</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QDialogButtonBox" name="mButtonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QTableWidget" name="mTableWidget">
<column>
<property name="text">
<string/>
</property>
</column>
<column>
<property name="text">
<string>Property</string>
</property>
</column>
<column>
<property name="text">
<string>Field</string>
</property>
</column>
<column>
<property name="text">
<string>Expression</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>mButtonBox</sender>
<signal>accepted()</signal>
<receiver>QgsDataDefinedSymbolDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>mButtonBox</sender>
<signal>rejected()</signal>
<receiver>QgsDataDefinedSymbolDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
509 changes: 215 additions & 294 deletions src/ui/symbollayer/widget_ellipse.ui

Large diffs are not rendered by default.

154 changes: 89 additions & 65 deletions src/ui/symbollayer/widget_linepatternfill.ui
Original file line number Diff line number Diff line change
Expand Up @@ -17,33 +17,10 @@
<property name="margin">
<number>1</number>
</property>
<item row="5" column="1">
<widget class="QDoubleSpinBox" name="mOffsetSpinBox">
<property name="decimals">
<number>5</number>
</property>
<property name="minimum">
<double>-99.000000000000000</double>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="mLineWidthSpinBox">
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>99999999.000000000000000</double>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QgsColorButton" name="mColorPushButton">
<item row="4" column="0">
<widget class="QLabel" name="mLineWidthUnitLabel">
<property name="text">
<string>Change...</string>
<string>Line width unit</string>
</property>
</widget>
</item>
Expand All @@ -54,10 +31,10 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="mAngleSpinBox">
<property name="maximum">
<double>360.000000000000000</double>
<item row="1" column="0">
<widget class="QLabel" name="mDistanceLabel">
<property name="text">
<string>Distance</string>
</property>
</widget>
</item>
Expand All @@ -75,41 +52,13 @@
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="mDistanceLabel">
<property name="text">
<string>Distance</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="mDistanceUnitLabel">
<property name="text">
<string>Distance unit</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="mLineWidthLabel">
<property name="text">
<string>Line width</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="mLineWidthUnitLabel">
<property name="text">
<string>Line width unit</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mColorLabel">
<property name="text">
<string>Color</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="mDistanceUnitComboBox">
<item>
Expand All @@ -124,14 +73,28 @@
</item>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="mAngleSpinBox">
<property name="maximum">
<double>360.000000000000000</double>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="mOffsetUnitLabel">
<property name="text">
<string>Offset unit</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="mOffsetLabel">
<property name="text">
<string>Offset</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<item row="9" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
Expand All @@ -144,13 +107,57 @@
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QLabel" name="mDistanceUnitLabel">
<property name="text">
<string>Distance unit</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="mLineWidthSpinBox">
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>99999999.000000000000000</double>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QgsColorButtonV2" name="mColorPushButton">
<property name="text">
<string>Change</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mColorLabel">
<property name="text">
<string>Color</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="mDistanceSpinBox">
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QDoubleSpinBox" name="mOffsetSpinBox">
<property name="decimals">
<number>5</number>
</property>
<property name="minimum">
<double>-99.000000000000000</double>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="mOffsetUnitComboBox">
<item>
Expand All @@ -165,12 +172,29 @@
</item>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="mOffsetUnitLabel">
<property name="text">
<string>Offset unit</string>
</property>
</widget>
<item row="8" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="mDataDefinedPropertiesLabel">
<property name="text">
<string>Data defined properties</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mDataDefinedPropertiesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
Expand Down
186 changes: 105 additions & 81 deletions src/ui/symbollayer/widget_markerline.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>263</width>
<width>308</width>
<height>281</height>
</rect>
</property>
Expand All @@ -17,61 +17,109 @@
<property name="margin">
<number>1</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label_2">
<item row="3" column="0" colspan="2">
<widget class="QRadioButton" name="radVertexLast">
<property name="text">
<string>Marker placement</string>
<string>on last vertex only</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="radInterval">
<item row="7" column="0" colspan="2">
<widget class="QCheckBox" name="chkRotateMarker">
<property name="text">
<string>with interval</string>
<string>Rotate marker</string>
</property>
<property name="checked">
<bool>true</bool>
</widget>
</item>
<item row="5" column="0">
<widget class="QRadioButton" name="radCentralPoint">
<property name="text">
<string>on central point</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="spinInterval">
<item row="1" column="2">
<widget class="QComboBox" name="mIntervalUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
</property>
</item>
<item>
<property name="text">
<string>Map unit</string>
</property>
</item>
</widget>
</item>
<item row="6" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QComboBox" name="mOffsetUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
</property>
</item>
<item>
<property name="text">
<string>Map unit</string>
</property>
</item>
</widget>
</item>
<item row="10" column="0" colspan="3">
<spacer>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>261</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="8" column="1">
<widget class="QDoubleSpinBox" name="spinOffset">
<property name="decimals">
<number>2</number>
<number>5</number>
</property>
<property name="minimum">
<double>-100000.000000000000000</double>
</property>
<property name="maximum">
<double>100000.000000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QRadioButton" name="radVertex">
<item row="1" column="0">
<widget class="QRadioButton" name="radInterval">
<property name="text">
<string>on every vertex</string>
<string>with interval</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QRadioButton" name="radVertexLast">
<property name="text">
<string>on last vertex only</string>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QRadioButton" name="radVertexFirst">
<item row="2" column="0" colspan="2">
<widget class="QRadioButton" name="radVertex">
<property name="text">
<string>on first vertex only</string>
<string>on every vertex</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<widget class="QCheckBox" name="chkRotateMarker">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Rotate marker</string>
<string>Marker placement</string>
</property>
</widget>
</item>
Expand All @@ -82,73 +130,49 @@
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QDoubleSpinBox" name="spinOffset">
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="spinInterval">
<property name="decimals">
<number>5</number>
</property>
<property name="minimum">
<double>-100000.000000000000000</double>
<number>2</number>
</property>
<property name="maximum">
<double>100000.000000000000000</double>
</property>
</widget>
</item>
<item row="9" column="0" colspan="3">
<spacer>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>261</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QRadioButton" name="radCentralPoint">
<item row="4" column="0" colspan="2">
<widget class="QRadioButton" name="radVertexFirst">
<property name="text">
<string>on central point</string>
<string>on first vertex only</string>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QComboBox" name="mOffsetUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
</property>
</item>
<item>
<property name="text">
<string>Map unit</string>
</property>
</item>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="mIntervalUnitComboBox">
<item row="9" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<property name="text">
<string>Millimeter</string>
</property>
<widget class="QLabel" name="mDataDefinedPropertiesLabel">
<property name="text">
<string>Data defined properties</string>
</property>
</widget>
</item>
<item>
<property name="text">
<string>Map unit</string>
</property>
<widget class="QPushButton" name="mDataDefinedPropertiesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</widget>
</layout>
</item>
</layout>
</widget>
Expand Down
164 changes: 94 additions & 70 deletions src/ui/symbollayer/widget_pointpatternfill.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>283</width>
<height>244</height>
<width>289</width>
<height>252</height>
</rect>
</property>
<property name="windowTitle">
Expand All @@ -17,24 +17,38 @@
<property name="margin">
<number>1</number>
</property>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="mVerticalDistanceSpinBox">
<item row="4" column="0">
<widget class="QLabel" name="mHorizontalDisplacementLabel">
<property name="text">
<string>Horizontal displacement</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="mVerticalDisplacementUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
</property>
</item>
<item>
<property name="text">
<string>Map unit</string>
</property>
</item>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="mHorizontalDisplacementSpinBox">
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>999999999.990000009536743</double>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="mVerticalDistanceLabel">
<property name="text">
<string>Vertical distance</string>
<double>9999999.990000000223517</double>
</property>
</widget>
</item>
<item row="8" column="0">
<item row="9" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
Expand All @@ -57,8 +71,22 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="mVerticalDistanceUnitComboBox">
<item row="2" column="0">
<widget class="QLabel" name="mVerticalDistanceLabel">
<property name="text">
<string>Vertical distance</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="mHorizontalDistanceLabel">
<property name="text">
<string>Horizontal distance</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="mHorizontalDisplacementUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
Expand All @@ -71,8 +99,8 @@
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="mHorizontalDistanceUnitComboBox">
<item row="3" column="1">
<widget class="QComboBox" name="mVerticalDistanceUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
Expand All @@ -92,56 +120,39 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="mHorizontalDisplacementLabel">
<property name="text">
<string>Horizontal displacement</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="mHorizontalDistanceLabel">
<item row="3" column="0">
<widget class="QLabel" name="mVerticalDistanceUnitLabel">
<property name="text">
<string>Horizontal distance</string>
<string>Vertical distance unit</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="mHorizontalDistanceSpinBox">
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="mVerticalDistanceSpinBox">
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>99999999.989999994635582</double>
<double>999999999.990000009536743</double>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="mHorizontalDisplacementSpinBox">
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>9999999.990000000223517</double>
<item row="7" column="0">
<widget class="QLabel" name="mVerticalDisplacementUnitLabel">
<property name="text">
<string>Vertical displacement unit</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="mHorizontalDisplacementUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
</property>
</item>
<item>
<property name="text">
<string>Map unit</string>
</property>
</item>
<item row="5" column="0">
<widget class="QLabel" name="mHorizontalDisplacementUnitLabel">
<property name="text">
<string>Horizontal displacement unit</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="mVerticalDisplacementUnitComboBox">
<item row="1" column="1">
<widget class="QComboBox" name="mHorizontalDistanceUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
Expand All @@ -154,33 +165,46 @@
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="mHorizontalDistanceUnitLabel">
<property name="text">
<string>Horizontal distance unit</string>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="mHorizontalDistanceSpinBox">
<property name="decimals">
<number>5</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="mVerticalDistanceUnitLabel">
<property name="text">
<string>Vertical distance unit</string>
<property name="maximum">
<double>99999999.989999994635582</double>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="mHorizontalDisplacementUnitLabel">
<item row="1" column="0">
<widget class="QLabel" name="mHorizontalDistanceUnitLabel">
<property name="text">
<string>Horizontal displacement unit</string>
<string>Horizontal distance unit</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mVerticalDisplacementUnitLabel">
<property name="text">
<string>Vertical displacement unit</string>
</property>
</widget>
<item row="8" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="mDataDefinedPropertiesLabel">
<property name="text">
<string>Data defined properties</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mDataDefinedPropertiesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
Expand Down
148 changes: 86 additions & 62 deletions src/ui/symbollayer/widget_simplefill.ui
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>335</width>
<height>220</height>
<height>249</height>
</rect>
</property>
<property name="windowTitle">
Expand All @@ -19,31 +19,44 @@
</property>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QgsColorButton" name="btnChangeColor">
<property name="text">
<string>Change...</string>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="spinBorderWidth">
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>100000.000000000000000</double>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Offset X,Y</string>
</property>
<item row="7" column="1">
<widget class="QComboBox" name="mOffsetUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
</property>
</item>
<item>
<property name="text">
<string>Map unit</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Border color</string>
<string>Border width</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QgsColorButton" name="btnChangeBorderColor">
<item row="3" column="1">
<widget class="QgsPenStyleComboBox" name="cboBorderStyle"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Change...</string>
<string>Fill style</string>
</property>
</widget>
</item>
Expand Down Expand Up @@ -77,50 +90,37 @@
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<item row="7" column="0">
<widget class="QLabel" name="mOffsetUnitLabel">
<property name="text">
<string>Color</string>
<string>Offset unit</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QgsBrushStyleComboBox" name="cboFillStyle"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Border width</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QgsPenStyleComboBox" name="cboBorderStyle"/>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="spinBorderWidth">
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>100000.000000000000000</double>
<string>Border color</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<item row="5" column="0">
<widget class="QLabel" name="mBorderWidthUnitLabel">
<property name="text">
<string>Fill style</string>
<string>Border width unit</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Border style</string>
<string>Color</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QgsBrushStyleComboBox" name="cboFillStyle"/>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="mBorderWidthUnitComboBox">
<item>
Expand All @@ -135,31 +135,55 @@
</item>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="mBorderWidthUnitLabel">
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Border width unit</string>
<string>Border style</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="mOffsetUnitComboBox">
<item>
<property name="text">
<string>Millimeter</string>
</property>
</item>
<item>
<property name="text">
<string>Map unit</string>
</property>
</item>
<item row="2" column="1">
<widget class="QgsColorButtonV2" name="btnChangeBorderColor">
<property name="text">
<string>Change</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mOffsetUnitLabel">
<item row="0" column="1">
<widget class="QgsColorButtonV2" name="btnChangeColor">
<property name="text">
<string>Offset unit</string>
<string>Change</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Offset X,Y</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="mDataDefinedPropertiesLabel">
<property name="text">
<string>Data defined properties</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mDataDefinedPropertiesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
Expand Down
45 changes: 23 additions & 22 deletions src/ui/symbollayer/widget_simpleline.ui
Original file line number Diff line number Diff line change
Expand Up @@ -188,28 +188,29 @@
</item>
</widget>
</item>
<item row="5" column="1" colspan="2">
<widget class="QgsPenCapStyleComboBox" name="cboCapStyle"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Cap style</string>
</property>
</widget>
</item>
<item row="8" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
<item row="8" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="mDataDefinedPropertiesLabel">
<property name="text">
<string>Data defined properties</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mDataDefinedPropertiesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
Expand Down
26 changes: 25 additions & 1 deletion src/ui/symbollayer/widget_simplemarker.ui
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>378</width>
<height>290</height>
<height>301</height>
</rect>
</property>
<property name="windowTitle">
Expand Down Expand Up @@ -205,6 +205,30 @@
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="mDataDefinedPropertiesLabel">
<property name="text">
<string>Data defined properties</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mDataDefinedPropertiesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer>
<property name="orientation">
Expand Down
100 changes: 62 additions & 38 deletions src/ui/symbollayer/widget_svgfill.ui
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,57 @@
<property name="margin">
<number>1</number>
</property>
<item row="2" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="mSymbolGroupLabel">
<property name="text">
<string>SVG Groups</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="mSymbolListLabel">
<property name="text">
<string>SVG Symbols</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QTreeView" name="mSvgTreeView"/>
</item>
<item row="1" column="1">
<widget class="QListView" name="mSvgListView">
<property name="flow">
<enum>QListView::LeftToRight</enum>
</property>
<property name="layoutMode">
<enum>QListView::Batched</enum>
</property>
<property name="viewMode">
<enum>QListView::IconMode</enum>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="mSVGLineEdit"/>
</item>
<item>
<widget class="QToolButton" name="mBrowseToolButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
Expand Down Expand Up @@ -137,49 +188,22 @@
</layout>
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="mSymbolGroupLabel">
<property name="text">
<string>SVG Groups</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="mSymbolListLabel">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="mDataDefinedPropertiesLabel">
<property name="text">
<string>SVG Symbols</string>
<string>Data defined properties</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QTreeView" name="mSvgTreeView"/>
</item>
<item row="1" column="1">
<widget class="QListView" name="mSvgListView">
<property name="flow">
<enum>QListView::LeftToRight</enum>
</property>
<property name="layoutMode">
<enum>QListView::Batched</enum>
</property>
<property name="viewMode">
<enum>QListView::IconMode</enum>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="mSVGLineEdit"/>
</item>
<item>
<widget class="QToolButton" name="mBrowseToolButton">
<widget class="QPushButton" name="mDataDefinedPropertiesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
Expand Down
148 changes: 86 additions & 62 deletions src/ui/symbollayer/widget_svgmarker.ui
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>364</width>
<height>361</height>
<height>379</height>
</rect>
</property>
<property name="windowTitle">
Expand All @@ -17,6 +17,77 @@
<property name="margin">
<number>1</number>
</property>
<item row="2" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string>SVG Image</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="mFileLineEdit"/>
</item>
<item>
<widget class="QToolButton" name="mFileToolButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>SVG Groups</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QTreeView" name="viewGroups"/>
</item>
<item row="3" column="1">
<widget class="QListView" name="viewImages">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="movement">
<enum>QListView::Static</enum>
</property>
<property name="resizeMode">
<enum>QListView::Adjust</enum>
</property>
<property name="layoutMode">
<enum>QListView::Batched</enum>
</property>
<property name="spacing">
<number>2</number>
</property>
<property name="gridSize">
<size>
<width>36</width>
<height>36</height>
</size>
</property>
<property name="viewMode">
<enum>QListView::IconMode</enum>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<layout class="QGridLayout">
<item row="2" column="1">
Expand Down Expand Up @@ -215,70 +286,23 @@
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>SVG Groups</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string>SVG Image</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QTreeView" name="viewGroups"/>
</item>
<item row="2" column="1">
<widget class="QListView" name="viewImages">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="movement">
<enum>QListView::Static</enum>
</property>
<property name="resizeMode">
<enum>QListView::Adjust</enum>
</property>
<property name="layoutMode">
<enum>QListView::Batched</enum>
</property>
<property name="spacing">
<number>2</number>
</property>
<property name="gridSize">
<size>
<width>36</width>
<height>36</height>
</size>
</property>
<property name="viewMode">
<enum>QListView::IconMode</enum>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item row="4" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="mFileLineEdit"/>
<widget class="QLabel" name="mDataDefinedPropertiesLabel">
<property name="text">
<string>Data defined properties</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="mFileToolButton">
<widget class="QPushButton" name="mDataDefinedPropertiesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
Expand Down