From 1f6dd8e5a7297229deef09653435cf87053b6d1b Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Mon, 25 Aug 2014 20:31:12 +1000 Subject: [PATCH] Add an edit button for shapeburst and gradient color ramps --- .../symbology-ng/qgssymbollayerv2widget.sip | 2 + .../symbology-ng/qgssymbollayerv2widget.cpp | 48 +++++++++++++++++++ src/gui/symbology-ng/qgssymbollayerv2widget.h | 2 + src/ui/symbollayer/widget_gradientfill.ui | 38 +++++++++------ src/ui/symbollayer/widget_shapeburstfill.ui | 19 +++++++- 5 files changed, 93 insertions(+), 16 deletions(-) mode change 100755 => 100644 src/gui/symbology-ng/qgssymbollayerv2widget.cpp diff --git a/python/gui/symbology-ng/qgssymbollayerv2widget.sip b/python/gui/symbology-ng/qgssymbollayerv2widget.sip index b0ded5bd1ee9..295f0e507a04 100644 --- a/python/gui/symbology-ng/qgssymbollayerv2widget.sip +++ b/python/gui/symbology-ng/qgssymbollayerv2widget.sip @@ -134,6 +134,7 @@ class QgsGradientFillSymbolLayerV2Widget : QgsSymbolLayerV2Widget void setColor( const QColor& color ); void setColor2( const QColor& color ); void applyColorRamp(); + void on_mButtonEditRamp_clicked(); void setGradientType( int index ); void setCoordinateMode( int index ); void setGradientSpread( int index ); @@ -170,6 +171,7 @@ class QgsShapeburstFillSymbolLayerV2Widget : QgsSymbolLayerV2Widget void on_mDistanceUnitWidget_changed( ); void on_mRadioUseWholeShape_toggled( bool value ); void applyColorRamp(); + void on_mButtonEditRamp_clicked(); void offsetChanged(); void on_mOffsetUnitWidget_changed( ); void on_mDataDefinedPropertiesButton_clicked(); diff --git a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp old mode 100755 new mode 100644 index eb705ac70484..6e67da50f116 --- a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp +++ b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp @@ -26,6 +26,8 @@ #include "qgssymbolv2selectordialog.h" #include "qgssvgcache.h" #include "qgssymbollayerv2utils.h" +#include "qgsvectorcolorrampv2.h" +#include "qgsvectorgradientcolorrampv2dialog.h" #include "qgsstylev2.h" //for symbol selector dialog @@ -959,6 +961,29 @@ void QgsGradientFillSymbolLayerV2Widget::applyColorRamp() emit changed(); } +void QgsGradientFillSymbolLayerV2Widget::on_mButtonEditRamp_clicked() +{ + if ( mLayer->colorRamp()->type() == "gradient" ) + { + QgsVectorColorRampV2* ramp = mLayer->colorRamp()->clone(); + QgsVectorGradientColorRampV2* gradRamp = static_cast( ramp ); + QgsVectorGradientColorRampV2Dialog dlg( gradRamp, this ); + + if ( dlg.exec() && gradRamp ) + { + mLayer->setColorRamp( gradRamp ); + cboGradientColorRamp->blockSignals( true ); + cboGradientColorRamp->setSourceColorRamp( mLayer->colorRamp() ); + cboGradientColorRamp->blockSignals( false ); + emit changed(); + } + else + { + delete ramp; + } + } +} + void QgsGradientFillSymbolLayerV2Widget::setGradientType( int index ) { switch ( index ) @@ -1325,6 +1350,29 @@ void QgsShapeburstFillSymbolLayerV2Widget::applyColorRamp() emit changed(); } +void QgsShapeburstFillSymbolLayerV2Widget::on_mButtonEditRamp_clicked() +{ + if ( mLayer->colorRamp()->type() == "gradient" ) + { + QgsVectorColorRampV2* ramp = mLayer->colorRamp()->clone(); + QgsVectorGradientColorRampV2* gradRamp = static_cast( ramp ); + QgsVectorGradientColorRampV2Dialog dlg( gradRamp, this ); + + if ( dlg.exec() && gradRamp ) + { + mLayer->setColorRamp( gradRamp ); + cboGradientColorRamp->blockSignals( true ); + cboGradientColorRamp->setSourceColorRamp( mLayer->colorRamp() ); + cboGradientColorRamp->blockSignals( false ); + emit changed(); + } + else + { + delete ramp; + } + } +} + void QgsShapeburstFillSymbolLayerV2Widget::offsetChanged() { if ( mLayer ) diff --git a/src/gui/symbology-ng/qgssymbollayerv2widget.h b/src/gui/symbology-ng/qgssymbollayerv2widget.h index 31026a271d52..e2a4fe6fe087 100644 --- a/src/gui/symbology-ng/qgssymbollayerv2widget.h +++ b/src/gui/symbology-ng/qgssymbollayerv2widget.h @@ -182,6 +182,7 @@ class GUI_EXPORT QgsGradientFillSymbolLayerV2Widget : public QgsSymbolLayerV2Wid void setColor( const QColor& color ); void setColor2( const QColor& color ); void applyColorRamp(); + void on_mButtonEditRamp_clicked(); void setGradientType( int index ); void setCoordinateMode( int index ); void setGradientSpread( int index ); @@ -224,6 +225,7 @@ class GUI_EXPORT QgsShapeburstFillSymbolLayerV2Widget : public QgsSymbolLayerV2W void on_mDistanceUnitWidget_changed( ); void on_mRadioUseWholeShape_toggled( bool value ); void applyColorRamp(); + void on_mButtonEditRamp_clicked(); void offsetChanged(); void on_mOffsetUnitWidget_changed( ); void on_mDataDefinedPropertiesButton_clicked(); diff --git a/src/ui/symbollayer/widget_gradientfill.ui b/src/ui/symbollayer/widget_gradientfill.ui index 8d29d5b6f6c8..1cc6f4a237da 100755 --- a/src/ui/symbollayer/widget_gradientfill.ui +++ b/src/ui/symbollayer/widget_gradientfill.ui @@ -14,21 +14,12 @@ Form - - 1 - - - 1 - - - 1 - - - 1 - 28 + + 1 + @@ -102,7 +93,24 @@ - + + + + + + + + + 100 + 16777215 + + + + Edit + + + + @@ -408,7 +416,7 @@ - + @@ -448,7 +456,7 @@ QgsUnitSelectionWidget - QComboBox + QWidget
qgsunitselectionwidget.h
1
diff --git a/src/ui/symbollayer/widget_shapeburstfill.ui b/src/ui/symbollayer/widget_shapeburstfill.ui index 8719f3361b71..c85b7acd7da2 100755 --- a/src/ui/symbollayer/widget_shapeburstfill.ui +++ b/src/ui/symbollayer/widget_shapeburstfill.ui @@ -90,7 +90,24 @@ - + + + + + + + + + 100 + 16777215 + + + + Edit + + + +