diff --git a/python/core/layout/qgslayoutitemhtml.sip b/python/core/layout/qgslayoutitemhtml.sip
index 71f4df6acdd..7235dd942bc 100644
--- a/python/core/layout/qgslayoutitemhtml.sip
+++ b/python/core/layout/qgslayoutitemhtml.sip
@@ -221,9 +221,9 @@ class QgsLayoutItemHtml: QgsLayoutMultiFrame
%Docstring
Recalculates the frame sizes for the current viewport dimensions
%End
- void refreshExpressionContext();
- void refreshDataDefinedProperty( const QgsLayoutObject::DataDefinedProperty property = QgsLayoutObject::AllProperties );
+ virtual void refreshDataDefinedProperty( const QgsLayoutObject::DataDefinedProperty property = QgsLayoutObject::AllProperties );
+
protected:
diff --git a/python/core/layout/qgslayoutmultiframe.sip b/python/core/layout/qgslayoutmultiframe.sip
index 7e82a7fbc1f..17a822f3b79 100644
--- a/python/core/layout/qgslayoutmultiframe.sip
+++ b/python/core/layout/qgslayoutmultiframe.sip
@@ -266,6 +266,12 @@ class QgsLayoutMultiFrame: QgsLayoutObject, QgsLayoutUndoObjectInterface
public slots:
+ virtual void refresh();
+
+%Docstring
+ Refreshes the multiframe, causing a recalculation of any property overrides.
+%End
+
void update();
%Docstring
Forces a redraw of all child frames.
@@ -290,6 +296,14 @@ class QgsLayoutMultiFrame: QgsLayoutObject, QgsLayoutUndoObjectInterface
.. seealso:: recalculateFrameSizes
%End
+ virtual void refreshDataDefinedProperty( const QgsLayoutObject::DataDefinedProperty property = QgsLayoutObject::AllProperties );
+%Docstring
+ Refreshes a data defined ``property`` for the multi frame by reevaluating the property's value
+ and redrawing the item with this new value. If ``property`` is set to
+ QgsLayoutObject.AllProperties then all data defined properties for the item will be
+ refreshed.
+%End
+
signals:
void changed();
diff --git a/src/app/qgscrashhandler.h b/src/app/qgscrashhandler.h
index f3c16fef525..c9ebfc4fc44 100644
--- a/src/app/qgscrashhandler.h
+++ b/src/app/qgscrashhandler.h
@@ -31,6 +31,7 @@ class APP_EXPORT QgsCrashHandler
{
public:
+
/**
* This class doesn't need to be created by anyone as is only used to handle
* crashes in the application.
diff --git a/src/core/layout/qgslayoutitemhtml.h b/src/core/layout/qgslayoutitemhtml.h
index 696d2a2ef2b..d0debea7b26 100644
--- a/src/core/layout/qgslayoutitemhtml.h
+++ b/src/core/layout/qgslayoutitemhtml.h
@@ -224,9 +224,8 @@ class CORE_EXPORT QgsLayoutItemHtml: public QgsLayoutMultiFrame
//! Recalculates the frame sizes for the current viewport dimensions
void recalculateFrameSizes() override;
- void refreshExpressionContext();
- void refreshDataDefinedProperty( const QgsLayoutObject::DataDefinedProperty property = QgsLayoutObject::AllProperties );
+ void refreshDataDefinedProperty( const QgsLayoutObject::DataDefinedProperty property = QgsLayoutObject::AllProperties ) override;
protected:
@@ -273,6 +272,8 @@ class CORE_EXPORT QgsLayoutItemHtml: public QgsLayoutMultiFrame
//! Calculates the max width of frames in the html multiframe
double maxFrameWidth() const;
+
+ void refreshExpressionContext();
};
#endif // QGSLAYOUTITEMHTML_H
diff --git a/src/core/layout/qgslayoutmultiframe.cpp b/src/core/layout/qgslayoutmultiframe.cpp
index d1c696f086d..5c70c59d192 100644
--- a/src/core/layout/qgslayoutmultiframe.cpp
+++ b/src/core/layout/qgslayoutmultiframe.cpp
@@ -233,6 +233,11 @@ void QgsLayoutMultiFrame::recalculateFrameRects()
}
}
+void QgsLayoutMultiFrame::refreshDataDefinedProperty( const QgsLayoutObject::DataDefinedProperty )
+{
+
+}
+
QgsLayoutFrame *QgsLayoutMultiFrame::createNewFrame( QgsLayoutFrame *currentFrame, QPointF pos, QSizeF size )
{
if ( !currentFrame )
@@ -289,6 +294,12 @@ void QgsLayoutMultiFrame::cancelCommand()
mLayout->undoStack()->cancelCommand();
}
+void QgsLayoutMultiFrame::refresh()
+{
+ QgsLayoutObject::refresh();
+ refreshDataDefinedProperty();
+}
+
void QgsLayoutMultiFrame::handleFrameRemoval()
{
if ( mBlockUpdates )
diff --git a/src/core/layout/qgslayoutmultiframe.h b/src/core/layout/qgslayoutmultiframe.h
index 4485128103b..9ce80a8e7d8 100644
--- a/src/core/layout/qgslayoutmultiframe.h
+++ b/src/core/layout/qgslayoutmultiframe.h
@@ -278,6 +278,11 @@ class CORE_EXPORT QgsLayoutMultiFrame: public QgsLayoutObject, public QgsLayoutU
public slots:
+ /**
+ * Refreshes the multiframe, causing a recalculation of any property overrides.
+ */
+ void refresh() override;
+
/**
* Forces a redraw of all child frames.
*/
@@ -302,6 +307,14 @@ class CORE_EXPORT QgsLayoutMultiFrame: public QgsLayoutObject, public QgsLayoutU
*/
void recalculateFrameRects();
+ /**
+ * Refreshes a data defined \a property for the multi frame by reevaluating the property's value
+ * and redrawing the item with this new value. If \a property is set to
+ * QgsLayoutObject::AllProperties then all data defined properties for the item will be
+ * refreshed.
+ */
+ virtual void refreshDataDefinedProperty( const QgsLayoutObject::DataDefinedProperty property = QgsLayoutObject::AllProperties );
+
signals:
/**
diff --git a/src/crashhandler/CMakeLists.txt b/src/crashhandler/CMakeLists.txt
index 22891b7f837..a0578e0af17 100644
--- a/src/crashhandler/CMakeLists.txt
+++ b/src/crashhandler/CMakeLists.txt
@@ -1,32 +1,32 @@
-INCLUDE_DIRECTORIES(SYSTEM
- ${CMAKE_CURRENT_BINARY_DIR}
-)
-
-QT5_WRAP_UI(CRASH_UIS_H qgscrashdialog.ui)
-QT5_WRAP_CPP(CRASH_HDR_MOC qgscrashdialog.h)
-
-SET(IMAGE_RCCS ../../images/images.qrc)
-QT5_ADD_RESOURCES(IMAGE_RCC_SRCS ${IMAGE_RCCS})
-
-# -wd4091 Avoid 'typedef' ignored on left of '' when no variable is declared warning in DbgHelp.h
-SET_SOURCE_FILES_PROPERTIES(qgsstacktrace.cpp PROPERTIES COMPILE_FLAGS -wd4091)
-
-ADD_EXECUTABLE(qgiscrashhandler WIN32
- main.cpp
- ${CRASH_UIS_H}
- ${CRASH_HDR_MOC}
- ${IMAGE_RCC_SRCS}
- qgscrashdialog.cpp
- qgsstacktrace.cpp
- qgscrashreport.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/../app/qgis_win32.rc
- )
-
-TARGET_LINK_LIBRARIES(qgiscrashhandler
- ${QT_QTCORE_LIBRARY}
- ${QT_QTGUI_LIBRARY}
- DbgHelp
-)
-
-INSTALL(CODE "MESSAGE(\"Installing crashhandler ...\")")
-INSTALL(TARGETS qgiscrashhandler RUNTIME DESTINATION ${QGIS_LIBEXEC_DIR})
+INCLUDE_DIRECTORIES(SYSTEM
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+QT5_WRAP_UI(CRASH_UIS_H qgscrashdialog.ui)
+QT5_WRAP_CPP(CRASH_HDR_MOC qgscrashdialog.h)
+
+SET(IMAGE_RCCS ../../images/images.qrc)
+QT5_ADD_RESOURCES(IMAGE_RCC_SRCS ${IMAGE_RCCS})
+
+# -wd4091 Avoid 'typedef' ignored on left of '' when no variable is declared warning in DbgHelp.h
+SET_SOURCE_FILES_PROPERTIES(qgsstacktrace.cpp PROPERTIES COMPILE_FLAGS -wd4091)
+
+ADD_EXECUTABLE(qgiscrashhandler WIN32
+ main.cpp
+ ${CRASH_UIS_H}
+ ${CRASH_HDR_MOC}
+ ${IMAGE_RCC_SRCS}
+ qgscrashdialog.cpp
+ qgsstacktrace.cpp
+ qgscrashreport.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/../app/qgis_win32.rc
+ )
+
+TARGET_LINK_LIBRARIES(qgiscrashhandler
+ ${QT_QTCORE_LIBRARY}
+ ${QT_QTGUI_LIBRARY}
+ DbgHelp
+)
+
+INSTALL(CODE "MESSAGE(\"Installing crashhandler ...\")")
+INSTALL(TARGETS qgiscrashhandler RUNTIME DESTINATION ${QGIS_LIBEXEC_DIR})
diff --git a/src/crashhandler/qgscrashdialog.h b/src/crashhandler/qgscrashdialog.h
index 447523a2aed..ee0d2daa0d0 100644
--- a/src/crashhandler/qgscrashdialog.h
+++ b/src/crashhandler/qgscrashdialog.h
@@ -1,55 +1,55 @@
-/***************************************************************************
- qgscrashdialog.h - QgsCrashDialog
-
- ---------------------
- begin : 11.4.2017
- copyright : (C) 2017 by Nathan Woodrow
- email : woodrow.nathan@gmail.com
- ***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
-#ifndef QGSCRASHDIALOG_H
-#define QGSCRASHDIALOG_H
-
-#include
-#include
-#include
-#include
-
-#include "ui_qgscrashdialog.h"
-
-/**
- * A dialog to show a nicer crash dialog to the user.
- */
-class QgsCrashDialog : public QDialog, private Ui::QgsCrashDialog
-{
- Q_OBJECT
- public:
-
- /**
- * A dialog to show a nicer crash dialog to the user.
- */
- QgsCrashDialog( QWidget *parent = nullptr );
-
- void setBugReport( const QString &reportData );
- void setReloadArgs( const QString &reloadArgs );
-
- static QString htmlToMarkdown( const QString &html );
-
- private slots:
- void showReportWidget();
- void createBugReport();
- void reloadQGIS();
-
- private:
- QString mReportData;
- QString mReloadArgs;
-};
-
-#endif // QGSCRASHDIALOG_H
+/***************************************************************************
+ qgscrashdialog.h - QgsCrashDialog
+
+ ---------------------
+ begin : 11.4.2017
+ copyright : (C) 2017 by Nathan Woodrow
+ email : woodrow.nathan@gmail.com
+ ***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef QGSCRASHDIALOG_H
+#define QGSCRASHDIALOG_H
+
+#include
+#include
+#include
+#include
+
+#include "ui_qgscrashdialog.h"
+
+/**
+ * A dialog to show a nicer crash dialog to the user.
+ */
+class QgsCrashDialog : public QDialog, private Ui::QgsCrashDialog
+{
+ Q_OBJECT
+ public:
+
+ /**
+ * A dialog to show a nicer crash dialog to the user.
+ */
+ QgsCrashDialog( QWidget *parent = nullptr );
+
+ void setBugReport( const QString &reportData );
+ void setReloadArgs( const QString &reloadArgs );
+
+ static QString htmlToMarkdown( const QString &html );
+
+ private slots:
+ void showReportWidget();
+ void createBugReport();
+ void reloadQGIS();
+
+ private:
+ QString mReportData;
+ QString mReloadArgs;
+};
+
+#endif // QGSCRASHDIALOG_H
diff --git a/src/crashhandler/qgscrashreport.h b/src/crashhandler/qgscrashreport.h
index d89855dd13c..78568495fa2 100644
--- a/src/crashhandler/qgscrashreport.h
+++ b/src/crashhandler/qgscrashreport.h
@@ -1,101 +1,101 @@
-/***************************************************************************
- qgscrashreport.h - QgsCrashReport
-
- ---------------------
- begin : 16.4.2017
- copyright : (C) 2017 by Nathan Woodrow
- email : woodrow.nathan@gmail.com
- ***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-#ifndef QGSCRASHREPORT_H
-#define QGSCRASHREPORT_H
-
-#include "qgsstacktrace.h"
-
-#include
-#include
-
-
-/**
- * Include information to generate user friendly crash report for QGIS.
- */
-class QgsCrashReport
-{
- public:
-
- /**
- * Include information to generate user friendly crash report for QGIS.
- */
- QgsCrashReport();
-
- public:
- enum Flag
- {
- Stack = 1 << 0,
- Plugins = 1 << 1,
- ProjectDetails = 1 << 2,
- SystemInfo = 1 << 3,
- QgisInfo = 1 << 4,
- All = Stack | Plugins | ProjectDetails | SystemInfo | QgisInfo
- };
- Q_DECLARE_FLAGS( Flags, Flag )
-
- /**
- * Sets the stack trace for the crash report.
- * \param value A string list for each line in the stack trace.
- */
- void setStackTrace( QgsStackTrace *value ) { mStackTrace = value; }
-
- /**
- * Returns the stack trace for this report.
- * \return A string list for each line in the stack trace.
- */
- QgsStackTrace *StackTrace() const { return mStackTrace; }
-
- /**
- * Set the flags to mark which features are included in this crash report.
- * \param flags The flag for each feature.
- */
- void setFlags( QgsCrashReport::Flags flags );
-
- /**
- * Returns the include flags that have been set for this report.
- * \return The flags marking what details are included in this report.
- */
- Flags flags() const { return mFlags; }
-
- const QString toMarkdown();
-
- /**
- * Generate a string version of the report.
- * \return A formatted string including all the information from the report.
- */
- const QString toHtml() const;
-
- /**
- * Generates a crash ID for the crash report.
- * \return
- */
- const QString crashID() const;
-
- void exportToCrashFolder();
-
- QString crashReportFolder();
-
- void setVersionInfo( const QStringList &versionInfo ) { mVersionInfo = versionInfo; }
-
- private:
- Flags mFlags;
- QgsStackTrace *mStackTrace;
- QStringList mVersionInfo;
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS( QgsCrashReport::Flags )
-
-#endif // QGSCRASHREPORT_H
+/***************************************************************************
+ qgscrashreport.h - QgsCrashReport
+
+ ---------------------
+ begin : 16.4.2017
+ copyright : (C) 2017 by Nathan Woodrow
+ email : woodrow.nathan@gmail.com
+ ***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#ifndef QGSCRASHREPORT_H
+#define QGSCRASHREPORT_H
+
+#include "qgsstacktrace.h"
+
+#include
+#include
+
+
+/**
+ * Include information to generate user friendly crash report for QGIS.
+ */
+class QgsCrashReport
+{
+ public:
+
+ /**
+ * Include information to generate user friendly crash report for QGIS.
+ */
+ QgsCrashReport();
+
+ public:
+ enum Flag
+ {
+ Stack = 1 << 0,
+ Plugins = 1 << 1,
+ ProjectDetails = 1 << 2,
+ SystemInfo = 1 << 3,
+ QgisInfo = 1 << 4,
+ All = Stack | Plugins | ProjectDetails | SystemInfo | QgisInfo
+ };
+ Q_DECLARE_FLAGS( Flags, Flag )
+
+ /**
+ * Sets the stack trace for the crash report.
+ * \param value A string list for each line in the stack trace.
+ */
+ void setStackTrace( QgsStackTrace *value ) { mStackTrace = value; }
+
+ /**
+ * Returns the stack trace for this report.
+ * \return A string list for each line in the stack trace.
+ */
+ QgsStackTrace *StackTrace() const { return mStackTrace; }
+
+ /**
+ * Set the flags to mark which features are included in this crash report.
+ * \param flags The flag for each feature.
+ */
+ void setFlags( QgsCrashReport::Flags flags );
+
+ /**
+ * Returns the include flags that have been set for this report.
+ * \return The flags marking what details are included in this report.
+ */
+ Flags flags() const { return mFlags; }
+
+ const QString toMarkdown();
+
+ /**
+ * Generate a string version of the report.
+ * \return A formatted string including all the information from the report.
+ */
+ const QString toHtml() const;
+
+ /**
+ * Generates a crash ID for the crash report.
+ * \return
+ */
+ const QString crashID() const;
+
+ void exportToCrashFolder();
+
+ QString crashReportFolder();
+
+ void setVersionInfo( const QStringList &versionInfo ) { mVersionInfo = versionInfo; }
+
+ private:
+ Flags mFlags;
+ QgsStackTrace *mStackTrace;
+ QStringList mVersionInfo;
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS( QgsCrashReport::Flags )
+
+#endif // QGSCRASHREPORT_H
diff --git a/tests/src/python/test_qgslayoutpagecollection.py b/tests/src/python/test_qgslayoutpagecollection.py
index a3205b3a61b..2d1b793c2e2 100644
--- a/tests/src/python/test_qgslayoutpagecollection.py
+++ b/tests/src/python/test_qgslayoutpagecollection.py
@@ -201,7 +201,7 @@ class TestQgsLayoutPageCollection(unittest.TestCase):
# add a page
page = QgsLayoutItemPage(l)
- page.setPageSize(QgsLayoutSize(10,10))
+ page.setPageSize(QgsLayoutSize(10, 10))
collection.addPage(page)
self.assertEqual(collection.pageCount(), 1)