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)