Skip to content

Commit

Permalink
Correctly set context for annotation items (map canvas, message bar)
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 7, 2021
1 parent 00177d5 commit 76e20c6
Show file tree
Hide file tree
Showing 9 changed files with 128 additions and 0 deletions.
Expand Up @@ -36,6 +36,20 @@ Sets the ``item`` whose properties should be shown in the widget.
void updateItem( QgsAnnotationItem *item );
%Docstring
Updates an ``item``, setting the properties defined in the widget.
%End

void setContext( const QgsSymbolWidgetContext &context );
%Docstring
Sets the ``context`` in which the widget is shown, e.g., the associated map canvas and expression contexts.

.. seealso:: :py:func:`context`
%End

QgsSymbolWidgetContext context() const;
%Docstring
Returns the context in which the widget is shown, e.g., the associated map canvas and expression contexts.

.. seealso:: :py:func:`setContext`
%End

signals:
Expand Down
Expand Up @@ -49,6 +49,19 @@ If ``False`` is returned, then the widget could not be successfully updated
to show the properties of ``item``.
%End

virtual void setContext( const QgsSymbolWidgetContext &context );
%Docstring
Sets the ``context`` in which the widget is shown, e.g., the associated map canvas and expression contexts.

.. seealso:: :py:func:`context`
%End

QgsSymbolWidgetContext context() const;
%Docstring
Returns the context in which the widget is shown, e.g., the associated map canvas and expression contexts.

.. seealso:: :py:func:`setContext`
%End

signals:

Expand Down
13 changes: 13 additions & 0 deletions src/app/annotations/qgsannotationitempropertieswidget.cpp
Expand Up @@ -73,6 +73,14 @@ void QgsAnnotationItemPropertiesWidget::setMapLayerConfigWidgetContext( const Qg
{
QgsMapLayerConfigWidget::setMapLayerConfigWidgetContext( context );
setItemId( context.annotationId() );

if ( mItemWidget )
{
QgsSymbolWidgetContext symbolWidgetContext;
symbolWidgetContext.setMapCanvas( context.mapCanvas() );
symbolWidgetContext.setMessageBar( context.messageBar() );
mItemWidget->setContext( symbolWidgetContext );
}
}

void QgsAnnotationItemPropertiesWidget::setDockMode( bool dockMode )
Expand Down Expand Up @@ -143,6 +151,11 @@ void QgsAnnotationItemPropertiesWidget::setItemId( const QString &itemId )
connect( mItemWidget, &QgsAnnotationItemBaseWidget::itemChanged, this, &QgsAnnotationItemPropertiesWidget::onChanged );
mItemWidget->setDockMode( dockMode() );
connect( mItemWidget, &QgsPanelWidget::showPanel, this, &QgsPanelWidget::openPanel );

QgsSymbolWidgetContext symbolWidgetContext;
symbolWidgetContext.setMapCanvas( mMapLayerConfigWidgetContext.mapCanvas() );
symbolWidgetContext.setMessageBar( mMapLayerConfigWidgetContext.messageBar() );
mItemWidget->setContext( symbolWidgetContext );
}
}
}
Expand Down
13 changes: 13 additions & 0 deletions src/gui/annotations/qgsannotationitemcommonpropertieswidget.cpp
Expand Up @@ -53,3 +53,16 @@ void QgsAnnotationItemCommonPropertiesWidget::updateItem( QgsAnnotationItem *ite
item->setUseSymbologyReferenceScale( mReferenceScaleGroup->isChecked() );
item->setSymbologyReferenceScale( mReferenceScaleWidget->scale() );
}

void QgsAnnotationItemCommonPropertiesWidget::setContext( const QgsSymbolWidgetContext &context )
{
mContext = context;
mReferenceScaleWidget->setMapCanvas( context.mapCanvas() );
if ( context.mapCanvas() )
mReferenceScaleWidget->setShowCurrentScaleButton( true );
}

QgsSymbolWidgetContext QgsAnnotationItemCommonPropertiesWidget::context() const
{
return mContext;
}
15 changes: 15 additions & 0 deletions src/gui/annotations/qgsannotationitemcommonpropertieswidget.h
Expand Up @@ -19,6 +19,7 @@
#include "qgis_sip.h"

#include "ui_qgsannotationcommonpropertieswidgetbase.h"
#include "qgssymbolwidgetcontext.h"

class QgsAnnotationItem;

Expand Down Expand Up @@ -51,6 +52,18 @@ class GUI_EXPORT QgsAnnotationItemCommonPropertiesWidget: public QWidget, privat
*/
void updateItem( QgsAnnotationItem *item );

/**
* Sets the \a context in which the widget is shown, e.g., the associated map canvas and expression contexts.
* \see context()
*/
void setContext( const QgsSymbolWidgetContext &context );

/**
* Returns the context in which the widget is shown, e.g., the associated map canvas and expression contexts.
* \see setContext()
*/
QgsSymbolWidgetContext context() const;

signals:

/**
Expand All @@ -62,6 +75,8 @@ class GUI_EXPORT QgsAnnotationItemCommonPropertiesWidget: public QWidget, privat

bool mBlockChangedSignal = false;

//! Context in which widget is shown
QgsSymbolWidgetContext mContext;
};

#endif // QGSANNOTATIONITEMCOMMONPROPERTIESWIDGET_H
10 changes: 10 additions & 0 deletions src/gui/annotations/qgsannotationitemwidget.cpp
Expand Up @@ -26,6 +26,16 @@ bool QgsAnnotationItemBaseWidget::setItem( QgsAnnotationItem *item )
return setNewItem( item );
}

void QgsAnnotationItemBaseWidget::setContext( const QgsSymbolWidgetContext &context )
{
mContext = context;
}

QgsSymbolWidgetContext QgsAnnotationItemBaseWidget::context() const
{
return mContext;
}

bool QgsAnnotationItemBaseWidget::setNewItem( QgsAnnotationItem * )
{
return false;
Expand Down
14 changes: 14 additions & 0 deletions src/gui/annotations/qgsannotationitemwidget.h
Expand Up @@ -18,6 +18,7 @@
#include "qgis_gui.h"
#include "qgis_sip.h"
#include "qgspanelwidget.h"
#include "qgssymbolwidgetcontext.h"

class QgsAnnotationItem;

Expand Down Expand Up @@ -62,6 +63,17 @@ class GUI_EXPORT QgsAnnotationItemBaseWidget: public QgsPanelWidget
*/
bool setItem( QgsAnnotationItem *item );

/**
* Sets the \a context in which the widget is shown, e.g., the associated map canvas and expression contexts.
* \see context()
*/
virtual void setContext( const QgsSymbolWidgetContext &context );

/**
* Returns the context in which the widget is shown, e.g., the associated map canvas and expression contexts.
* \see setContext()
*/
QgsSymbolWidgetContext context() const;

signals:

Expand All @@ -83,6 +95,8 @@ class GUI_EXPORT QgsAnnotationItemBaseWidget: public QgsPanelWidget
*/
virtual bool setNewItem( QgsAnnotationItem *item );

//! Context in which widget is shown
QgsSymbolWidgetContext mContext;
};

#endif // QGSANNOTATIONITEMWIDGET_H
32 changes: 32 additions & 0 deletions src/gui/annotations/qgsannotationitemwidget_impl.cpp
Expand Up @@ -77,6 +77,14 @@ void QgsAnnotationPolygonItemWidget::setDockMode( bool dockMode )
mSelector->setDockMode( dockMode );
}

void QgsAnnotationPolygonItemWidget::setContext( const QgsSymbolWidgetContext &context )
{
QgsAnnotationItemBaseWidget::setContext( context );
if ( mSelector )
mSelector->setContext( context );
mPropertiesWidget->setContext( context );
}

QgsAnnotationPolygonItemWidget::~QgsAnnotationPolygonItemWidget() = default;

bool QgsAnnotationPolygonItemWidget::setNewItem( QgsAnnotationItem *item )
Expand Down Expand Up @@ -158,6 +166,14 @@ void QgsAnnotationLineItemWidget::setDockMode( bool dockMode )
mSelector->setDockMode( dockMode );
}

void QgsAnnotationLineItemWidget::setContext( const QgsSymbolWidgetContext &context )
{
QgsAnnotationItemBaseWidget::setContext( context );
if ( mSelector )
mSelector->setContext( context );
mPropertiesWidget->setContext( context );
}

QgsAnnotationLineItemWidget::~QgsAnnotationLineItemWidget() = default;

bool QgsAnnotationLineItemWidget::setNewItem( QgsAnnotationItem *item )
Expand Down Expand Up @@ -239,6 +255,14 @@ void QgsAnnotationMarkerItemWidget::setDockMode( bool dockMode )
mSelector->setDockMode( dockMode );
}

void QgsAnnotationMarkerItemWidget::setContext( const QgsSymbolWidgetContext &context )
{
QgsAnnotationItemBaseWidget::setContext( context );
if ( mSelector )
mSelector->setContext( context );
mPropertiesWidget->setContext( context );
}

QgsAnnotationMarkerItemWidget::~QgsAnnotationMarkerItemWidget() = default;

bool QgsAnnotationMarkerItemWidget::setNewItem( QgsAnnotationItem *item )
Expand Down Expand Up @@ -328,6 +352,14 @@ void QgsAnnotationPointTextItemWidget::setDockMode( bool dockMode )
mTextFormatWidget->setDockMode( dockMode );
}

void QgsAnnotationPointTextItemWidget::setContext( const QgsSymbolWidgetContext &context )
{
QgsAnnotationItemBaseWidget::setContext( context );
if ( mTextFormatWidget )
mTextFormatWidget->setContext( context );
mPropertiesWidget->setContext( context );
}

QgsAnnotationPointTextItemWidget::~QgsAnnotationPointTextItemWidget() = default;

bool QgsAnnotationPointTextItemWidget::setNewItem( QgsAnnotationItem *item )
Expand Down
4 changes: 4 additions & 0 deletions src/gui/annotations/qgsannotationitemwidget_impl.h
Expand Up @@ -48,6 +48,7 @@ class QgsAnnotationPolygonItemWidget : public QgsAnnotationItemBaseWidget, priva
QgsAnnotationItem *createItem() override;
void updateItem( QgsAnnotationItem *item ) override;
void setDockMode( bool dockMode ) override;
void setContext( const QgsSymbolWidgetContext &context ) override;

protected:
bool setNewItem( QgsAnnotationItem *item ) override;
Expand All @@ -70,6 +71,7 @@ class QgsAnnotationLineItemWidget : public QgsAnnotationItemBaseWidget, private
QgsAnnotationItem *createItem() override;
void updateItem( QgsAnnotationItem *item ) override;
void setDockMode( bool dockMode ) override;
void setContext( const QgsSymbolWidgetContext &context ) override;

protected:
bool setNewItem( QgsAnnotationItem *item ) override;
Expand All @@ -92,6 +94,7 @@ class QgsAnnotationMarkerItemWidget : public QgsAnnotationItemBaseWidget, privat
QgsAnnotationItem *createItem() override;
void updateItem( QgsAnnotationItem *item ) override;
void setDockMode( bool dockMode ) override;
void setContext( const QgsSymbolWidgetContext &context ) override;

protected:
bool setNewItem( QgsAnnotationItem *item ) override;
Expand All @@ -115,6 +118,7 @@ class QgsAnnotationPointTextItemWidget : public QgsAnnotationItemBaseWidget, pri
QgsAnnotationItem *createItem() override;
void updateItem( QgsAnnotationItem *item ) override;
void setDockMode( bool dockMode ) override;
void setContext( const QgsSymbolWidgetContext &context ) override;

protected:
bool setNewItem( QgsAnnotationItem *item ) override;
Expand Down

0 comments on commit 76e20c6

Please sign in to comment.