From 00177d5932eb418df10163f6814127306ec19b6c Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Tue, 7 Sep 2021 12:57:52 +1000 Subject: [PATCH] Also show common properties for marker/line/polygon annotation item widgets --- .../qgsannotationitemwidget_impl.cpp | 51 +++++++++++++++--- .../qgsannotationitemwidget_impl.h | 7 +-- .../qgsannotationsymbolwidgetbase.ui | 54 +++++++++++++++++++ 3 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 src/ui/annotations/qgsannotationsymbolwidgetbase.ui diff --git a/src/gui/annotations/qgsannotationitemwidget_impl.cpp b/src/gui/annotations/qgsannotationitemwidget_impl.cpp index a48c61c1643..abe88f0beba 100644 --- a/src/gui/annotations/qgsannotationitemwidget_impl.cpp +++ b/src/gui/annotations/qgsannotationitemwidget_impl.cpp @@ -30,7 +30,8 @@ QgsAnnotationPolygonItemWidget::QgsAnnotationPolygonItemWidget( QWidget *parent ) : QgsAnnotationItemBaseWidget( parent ) { - // setup ui + setupUi( this ); + mSelector = new QgsSymbolSelectorWidget( mSymbol.get(), QgsStyle::defaultStyle(), nullptr, nullptr ); mSelector->setDockMode( dockMode() ); connect( mSelector, &QgsSymbolSelectorWidget::symbolModified, this, [ = ] @@ -40,22 +41,33 @@ QgsAnnotationPolygonItemWidget::QgsAnnotationPolygonItemWidget( QWidget *parent } ); connect( mSelector, &QgsPanelWidget::showPanel, this, &QgsPanelWidget::openPanel ); - QVBoxLayout *layout = new QVBoxLayout( this ); + QVBoxLayout *layout = new QVBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); layout->addWidget( mSelector ); + mSymbolSelectorFrame->setLayout( layout ); + + connect( mPropertiesWidget, &QgsAnnotationItemCommonPropertiesWidget::itemChanged, this, [ = ] + { + if ( !mBlockChangedSignal ) + emit itemChanged(); + } ); } QgsAnnotationItem *QgsAnnotationPolygonItemWidget::createItem() { QgsAnnotationPolygonItem *newItem = mItem->clone(); newItem->setSymbol( mSymbol->clone() ); + mPropertiesWidget->updateItem( newItem ); return newItem; } void QgsAnnotationPolygonItemWidget::updateItem( QgsAnnotationItem *item ) { if ( QgsAnnotationPolygonItem *polygonItem = dynamic_cast< QgsAnnotationPolygonItem * >( item ) ) + { polygonItem->setSymbol( mSymbol->clone() ); + mPropertiesWidget->updateItem( polygonItem ); + } } void QgsAnnotationPolygonItemWidget::setDockMode( bool dockMode ) @@ -85,6 +97,7 @@ bool QgsAnnotationPolygonItemWidget::setNewItem( QgsAnnotationItem *item ) mBlockChangedSignal = true; mSelector->loadSymbol( mSymbol.get() ); mSelector->updatePreview(); + mPropertiesWidget->setItem( mItem.get() ); mBlockChangedSignal = false; return true; @@ -98,7 +111,8 @@ bool QgsAnnotationPolygonItemWidget::setNewItem( QgsAnnotationItem *item ) QgsAnnotationLineItemWidget::QgsAnnotationLineItemWidget( QWidget *parent ) : QgsAnnotationItemBaseWidget( parent ) { - // setup ui + setupUi( this ); + mSelector = new QgsSymbolSelectorWidget( mSymbol.get(), QgsStyle::defaultStyle(), nullptr, nullptr ); mSelector->setDockMode( dockMode() ); connect( mSelector, &QgsSymbolSelectorWidget::symbolModified, this, [ = ] @@ -108,22 +122,33 @@ QgsAnnotationLineItemWidget::QgsAnnotationLineItemWidget( QWidget *parent ) } ); connect( mSelector, &QgsPanelWidget::showPanel, this, &QgsPanelWidget::openPanel ); - QVBoxLayout *layout = new QVBoxLayout( this ); + QVBoxLayout *layout = new QVBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); layout->addWidget( mSelector ); + mSymbolSelectorFrame->setLayout( layout ); + + connect( mPropertiesWidget, &QgsAnnotationItemCommonPropertiesWidget::itemChanged, this, [ = ] + { + if ( !mBlockChangedSignal ) + emit itemChanged(); + } ); } QgsAnnotationItem *QgsAnnotationLineItemWidget::createItem() { QgsAnnotationLineItem *newItem = mItem->clone(); newItem->setSymbol( mSymbol->clone() ); + mPropertiesWidget->updateItem( newItem ); return newItem; } void QgsAnnotationLineItemWidget::updateItem( QgsAnnotationItem *item ) { if ( QgsAnnotationLineItem *lineItem = dynamic_cast< QgsAnnotationLineItem * >( item ) ) + { lineItem->setSymbol( mSymbol->clone() ); + mPropertiesWidget->updateItem( lineItem ); + } } void QgsAnnotationLineItemWidget::setDockMode( bool dockMode ) @@ -153,6 +178,7 @@ bool QgsAnnotationLineItemWidget::setNewItem( QgsAnnotationItem *item ) mBlockChangedSignal = true; mSelector->loadSymbol( mSymbol.get() ); mSelector->updatePreview(); + mPropertiesWidget->setItem( mItem.get() ); mBlockChangedSignal = false; return true; @@ -166,7 +192,8 @@ bool QgsAnnotationLineItemWidget::setNewItem( QgsAnnotationItem *item ) QgsAnnotationMarkerItemWidget::QgsAnnotationMarkerItemWidget( QWidget *parent ) : QgsAnnotationItemBaseWidget( parent ) { - // setup ui + setupUi( this ); + mSelector = new QgsSymbolSelectorWidget( mSymbol.get(), QgsStyle::defaultStyle(), nullptr, nullptr ); mSelector->setDockMode( dockMode() ); connect( mSelector, &QgsSymbolSelectorWidget::symbolModified, this, [ = ] @@ -176,22 +203,33 @@ QgsAnnotationMarkerItemWidget::QgsAnnotationMarkerItemWidget( QWidget *parent ) } ); connect( mSelector, &QgsPanelWidget::showPanel, this, &QgsPanelWidget::openPanel ); - QVBoxLayout *layout = new QVBoxLayout( this ); + QVBoxLayout *layout = new QVBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); layout->addWidget( mSelector ); + mSymbolSelectorFrame->setLayout( layout ); + + connect( mPropertiesWidget, &QgsAnnotationItemCommonPropertiesWidget::itemChanged, this, [ = ] + { + if ( !mBlockChangedSignal ) + emit itemChanged(); + } ); } QgsAnnotationItem *QgsAnnotationMarkerItemWidget::createItem() { QgsAnnotationMarkerItem *newItem = mItem->clone(); newItem->setSymbol( mSymbol->clone() ); + mPropertiesWidget->updateItem( newItem ); return newItem; } void QgsAnnotationMarkerItemWidget::updateItem( QgsAnnotationItem *item ) { if ( QgsAnnotationMarkerItem *markerItem = dynamic_cast< QgsAnnotationMarkerItem * >( item ) ) + { markerItem->setSymbol( mSymbol->clone() ); + mPropertiesWidget->updateItem( markerItem ); + } } void QgsAnnotationMarkerItemWidget::setDockMode( bool dockMode ) @@ -221,6 +259,7 @@ bool QgsAnnotationMarkerItemWidget::setNewItem( QgsAnnotationItem *item ) mBlockChangedSignal = true; mSelector->loadSymbol( mSymbol.get() ); mSelector->updatePreview(); + mPropertiesWidget->setItem( mItem.get() ); mBlockChangedSignal = false; return true; diff --git a/src/gui/annotations/qgsannotationitemwidget_impl.h b/src/gui/annotations/qgsannotationitemwidget_impl.h index c745d1b007f..67ef34844fa 100644 --- a/src/gui/annotations/qgsannotationitemwidget_impl.h +++ b/src/gui/annotations/qgsannotationitemwidget_impl.h @@ -22,6 +22,7 @@ #include #include "ui_qgsannotationpointtextwidgetbase.h" +#include "ui_qgsannotationsymbolwidgetbase.h" class QgsSymbolSelectorWidget; class QgsFillSymbol; @@ -37,7 +38,7 @@ class QgsTextFormatWidget; ///@cond PRIVATE -class QgsAnnotationPolygonItemWidget : public QgsAnnotationItemBaseWidget +class QgsAnnotationPolygonItemWidget : public QgsAnnotationItemBaseWidget, private Ui_QgsAnnotationSymbolWidgetBase { Q_OBJECT @@ -59,7 +60,7 @@ class QgsAnnotationPolygonItemWidget : public QgsAnnotationItemBaseWidget std::unique_ptr< QgsAnnotationPolygonItem> mItem; }; -class QgsAnnotationLineItemWidget : public QgsAnnotationItemBaseWidget +class QgsAnnotationLineItemWidget : public QgsAnnotationItemBaseWidget, private Ui_QgsAnnotationSymbolWidgetBase { Q_OBJECT @@ -81,7 +82,7 @@ class QgsAnnotationLineItemWidget : public QgsAnnotationItemBaseWidget std::unique_ptr< QgsAnnotationLineItem> mItem; }; -class QgsAnnotationMarkerItemWidget : public QgsAnnotationItemBaseWidget +class QgsAnnotationMarkerItemWidget : public QgsAnnotationItemBaseWidget, private Ui_QgsAnnotationSymbolWidgetBase { Q_OBJECT diff --git a/src/ui/annotations/qgsannotationsymbolwidgetbase.ui b/src/ui/annotations/qgsannotationsymbolwidgetbase.ui new file mode 100644 index 00000000000..71b8827ef06 --- /dev/null +++ b/src/ui/annotations/qgsannotationsymbolwidgetbase.ui @@ -0,0 +1,54 @@ + + + QgsAnnotationSymbolWidgetBase + + + + 0 + 0 + 321 + 325 + + + + Marker Annotation + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Plain + + + + + + + + + + + QgsAnnotationItemCommonPropertiesWidget + QWidget +
qgsannotationitemcommonpropertieswidget.h
+ 1 +
+
+ + +