From 328760437cf5f9edc330a27df457b10c3aab6853 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sun, 30 Sep 2018 09:37:59 +0200 Subject: [PATCH 1/4] Make QgsRubberBand fillColor a Q_PROPERTY --- python/gui/auto_generated/qgsrubberband.sip.in | 5 ++++- src/gui/CMakeLists.txt | 2 +- src/gui/qgsrubberband.cpp | 3 +++ src/gui/qgsrubberband.h | 8 +++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/python/gui/auto_generated/qgsrubberband.sip.in b/python/gui/auto_generated/qgsrubberband.sip.in index ee7d034a8cd..def7c60ecaa 100644 --- a/python/gui/auto_generated/qgsrubberband.sip.in +++ b/python/gui/auto_generated/qgsrubberband.sip.in @@ -8,7 +8,9 @@ -class QgsRubberBand: QgsMapCanvasItem + + +class QgsRubberBand : QObject, QgsMapCanvasItem { %Docstring A class for drawing transient features (e.g. digitizing lines) on the map. @@ -22,6 +24,7 @@ for tracking the mouse while drawing polylines or polygons. %End public: + enum IconType { diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index c18a5c262bb..3640bd1580c 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -522,6 +522,7 @@ SET(QGIS_GUI_MOC_HDRS qgsrasterlayersaveasdialog.h qgsrasterpyramidsoptionswidget.h qgsrelationeditorwidget.h + qgsrubberband.h qgsscalecombobox.h qgsscalerangewidget.h qgsscalevisibilitydialog.h @@ -778,7 +779,6 @@ SET(QGIS_GUI_HDRS qgsmaplayerconfigwidgetfactory.h qgsmapmouseevent.h qgsmaptip.h - qgsrubberband.h qgssnapindicator.h qgssqlcomposerdialog.h qgstablewidgetitem.h diff --git a/src/gui/qgsrubberband.cpp b/src/gui/qgsrubberband.cpp index 920c83501b0..0bda8d93276 100644 --- a/src/gui/qgsrubberband.cpp +++ b/src/gui/qgsrubberband.cpp @@ -49,6 +49,9 @@ void QgsRubberBand::setColor( const QColor &color ) void QgsRubberBand::setFillColor( const QColor &color ) { + if ( mBrush.color() == color ) + return; + mBrush.setColor( color ); } diff --git a/src/gui/qgsrubberband.h b/src/gui/qgsrubberband.h index 1ecd966aca5..3d6e688dd1c 100644 --- a/src/gui/qgsrubberband.h +++ b/src/gui/qgsrubberband.h @@ -18,10 +18,13 @@ #include "qgsmapcanvasitem.h" #include "qgis.h" #include "qgsgeometry.h" + #include #include #include #include +#include + #include "qgis_gui.h" class QgsVectorLayer; @@ -34,10 +37,13 @@ class QPaintEvent; * The QgsRubberBand class provides a transparent overlay widget * for tracking the mouse while drawing polylines or polygons. */ -class GUI_EXPORT QgsRubberBand: public QgsMapCanvasItem +class GUI_EXPORT QgsRubberBand : public QObject, public QgsMapCanvasItem { + Q_OBJECT public: + Q_PROPERTY( QColor fillColor READ fillColor WRITE setFillColor ) + //! Icons enum IconType { From ba186242f94c11eb8b330d787b542082fe451c08 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sun, 30 Sep 2018 09:45:06 +0200 Subject: [PATCH 2/4] More properties for QgsRubberBand --- src/gui/qgsrubberband.cpp | 6 ++++-- src/gui/qgsrubberband.h | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gui/qgsrubberband.cpp b/src/gui/qgsrubberband.cpp index 0bda8d93276..76a5033ea6b 100644 --- a/src/gui/qgsrubberband.cpp +++ b/src/gui/qgsrubberband.cpp @@ -23,7 +23,8 @@ #include QgsRubberBand::QgsRubberBand( QgsMapCanvas *mapCanvas, QgsWkbTypes::GeometryType geometryType ) - : QgsMapCanvasItem( mapCanvas ) + : QObject( nullptr ) + , QgsMapCanvasItem( mapCanvas ) , mGeometryType( geometryType ) { reset( geometryType ); @@ -37,7 +38,8 @@ QgsRubberBand::QgsRubberBand( QgsMapCanvas *mapCanvas, QgsWkbTypes::GeometryType } QgsRubberBand::QgsRubberBand() - : QgsMapCanvasItem( nullptr ) + : QObject( nullptr ) + , QgsMapCanvasItem( nullptr ) { } diff --git a/src/gui/qgsrubberband.h b/src/gui/qgsrubberband.h index 3d6e688dd1c..62f1a6b0863 100644 --- a/src/gui/qgsrubberband.h +++ b/src/gui/qgsrubberband.h @@ -43,6 +43,10 @@ class GUI_EXPORT QgsRubberBand : public QObject, public QgsMapCanvasItem public: Q_PROPERTY( QColor fillColor READ fillColor WRITE setFillColor ) + Q_PROPERTY( QColor strokeColor READ strokeColor WRITE setStrokeColor ) + Q_PROPERTY( int iconSize READ iconSize WRITE setIconSize ) + Q_PROPERTY( QColor secondaryStrokeColor READ secondaryStrokeColor WRITE setSecondaryStrokeColor ) + Q_PROPERTY( int width READ width WRITE setWidth ) //! Icons enum IconType From fe5ed43f2618e54e1af85daedff64ea587f27b32 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sun, 30 Sep 2018 11:50:47 +0200 Subject: [PATCH 3/4] Make sip code style test happy --- python/gui/gui_auto.sip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/gui/gui_auto.sip b/python/gui/gui_auto.sip index 5c1395e0d8e..bff290273b5 100644 --- a/python/gui/gui_auto.sip +++ b/python/gui/gui_auto.sip @@ -12,7 +12,6 @@ %Include auto_generated/qgsmaplayerconfigwidgetfactory.sip %Include auto_generated/qgsmapmouseevent.sip %Include auto_generated/qgsmaptip.sip -%Include auto_generated/qgsrubberband.sip %Include auto_generated/qgssnapindicator.sip %Include auto_generated/qgstablewidgetitem.sip %Include auto_generated/qgsuserinputwidget.sip @@ -188,6 +187,7 @@ %Include auto_generated/qgsrasterlayersaveasdialog.sip %Include auto_generated/qgsrasterpyramidsoptionswidget.sip %Include auto_generated/qgsrelationeditorwidget.sip +%Include auto_generated/qgsrubberband.sip %Include auto_generated/qgsscalecombobox.sip %Include auto_generated/qgsscalerangewidget.sip %Include auto_generated/qgsscalevisibilitydialog.sip From b60f42c8fe69a025aa923e05840293f40790116b Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sun, 30 Sep 2018 12:12:20 +0200 Subject: [PATCH 4/4] No notify signal, no reason for a safety check --- src/gui/qgsrubberband.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/gui/qgsrubberband.cpp b/src/gui/qgsrubberband.cpp index 76a5033ea6b..f13ac780b5f 100644 --- a/src/gui/qgsrubberband.cpp +++ b/src/gui/qgsrubberband.cpp @@ -51,9 +51,6 @@ void QgsRubberBand::setColor( const QColor &color ) void QgsRubberBand::setFillColor( const QColor &color ) { - if ( mBrush.color() == color ) - return; - mBrush.setColor( color ); }