From 8dffa33a27cf42a823be24e4653bd45d476624fe Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Sun, 24 Sep 2017 08:29:39 +1000 Subject: [PATCH] Allow QgsOptionsPageWidget to set a specific help key to view when clicking help in the options dialog --- python/gui/qgsoptionswidgetfactory.sip | 13 ++++++++++ src/app/qgsoptions.cpp | 33 +++++++++++++++++++------- src/gui/qgsoptionswidgetfactory.h | 12 ++++++++++ 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/python/gui/qgsoptionswidgetfactory.sip b/python/gui/qgsoptionswidgetfactory.sip index cb8289e3490..f86e1ee7c21 100644 --- a/python/gui/qgsoptionswidgetfactory.sip +++ b/python/gui/qgsoptionswidgetfactory.sip @@ -25,6 +25,19 @@ class QgsOptionsPageWidget : QWidget Constructor for QgsOptionsPageWidget. %End + virtual QString helpKey() const; +%Docstring + Returns the optional help key for the options page. The default implementation + returns an empty string. + + If a non-empty string is returned by this method, it will be used as the help key + retrieved when the "help" button is clicked while this options page is active. + + If an empty string is returned by this method the default QGIS options + help will be retrieved. + :rtype: str +%End + public slots: virtual void apply() = 0; diff --git a/src/app/qgsoptions.cpp b/src/app/qgsoptions.cpp index 83bfc396bd4..dcf9d4eb5b0 100644 --- a/src/app/qgsoptions.cpp +++ b/src/app/qgsoptions.cpp @@ -2355,19 +2355,34 @@ void QgsOptions::setZoomFactorValue() void QgsOptions::showHelp() { QWidget *activeTab = mOptionsStackedWidget->currentWidget(); - QString link = QStringLiteral( "introduction/qgis_configuration.html" ); + QString link; - if ( activeTab == mOptionsPageAuth ) + // give first priority to created pages which have specified a help key + for ( const QgsOptionsPageWidget *widget : qgsAsConst( mAdditionalOptionWidgets ) ) { - link = QStringLiteral( "auth_system/index.html" ); + if ( widget == activeTab ) + { + link = widget->helpKey(); + break; + } } - else if ( activeTab == mOptionsPageVariables ) + + if ( link.isEmpty() ) { - link = QStringLiteral( "introduction/general_tools.html#variables" ); - } - else if ( activeTab == mOptionsPageCRS ) - { - link = QStringLiteral( "working_with_projections/working_with_projections.html" ); + link = QStringLiteral( "introduction/qgis_configuration.html" ); + + if ( activeTab == mOptionsPageAuth ) + { + link = QStringLiteral( "auth_system/index.html" ); + } + else if ( activeTab == mOptionsPageVariables ) + { + link = QStringLiteral( "introduction/general_tools.html#variables" ); + } + else if ( activeTab == mOptionsPageCRS ) + { + link = QStringLiteral( "working_with_projections/working_with_projections.html" ); + } } QgsHelp::openHelp( link ); } diff --git a/src/gui/qgsoptionswidgetfactory.h b/src/gui/qgsoptionswidgetfactory.h index 6c106bdf087..bf7ff4ec60b 100644 --- a/src/gui/qgsoptionswidgetfactory.h +++ b/src/gui/qgsoptionswidgetfactory.h @@ -38,6 +38,18 @@ class GUI_EXPORT QgsOptionsPageWidget : public QWidget : QWidget( parent ) {} + /** + * Returns the optional help key for the options page. The default implementation + * returns an empty string. + * + * If a non-empty string is returned by this method, it will be used as the help key + * retrieved when the "help" button is clicked while this options page is active. + * + * If an empty string is returned by this method the default QGIS options + * help will be retrieved. + */ + virtual QString helpKey() const { return QString(); } + public slots: /**