From c1f765aadb542ac5aab57b233a3917249fd31e6f Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Fri, 15 Sep 2017 08:09:23 +0200 Subject: [PATCH] Add reloadConnections to the app and expose to iface --- python/gui/qgisinterface.sip | 17 +++++++++-------- src/app/qgisapp.cpp | 9 ++++++--- src/app/qgisapp.h | 7 ++++++- src/app/qgisappinterface.cpp | 5 +++++ src/app/qgisappinterface.h | 8 ++++++++ src/gui/qgisinterface.h | 17 +++++++++-------- 6 files changed, 43 insertions(+), 20 deletions(-) diff --git a/python/gui/qgisinterface.sip b/python/gui/qgisinterface.sip index 35a85cc8736..73b00e56ac3 100644 --- a/python/gui/qgisinterface.sip +++ b/python/gui/qgisinterface.sip @@ -155,6 +155,15 @@ Add a project virtual void newProject( bool promptToSaveFlag = false ) = 0; %Docstring Start a blank project +%End + + virtual void reloadConnections( ) = 0; +%Docstring + Triggered when connections have changed. + This calls reloadConnections in the main application and triggers a signal that is + forwarder to the GUI elements that needs to be updated (i.e. the source + select dialogs and the browser widgets) +.. versionadded:: 3.0 %End virtual QgsMapLayer *activeLayer() = 0; @@ -1257,14 +1266,6 @@ Get timeout for timed messages: default of 5 seconds added in version 2.7 %End - void connectionsChanged(); -%Docstring - Emitted when connections have changed, this signal is forwarded - to the GUI elements that needs to be updated (i.e. the source - select dialogs and the browser widgets) -.. versionadded:: 3.0 -%End - }; /************************************************************************ diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index be272b7b045..20d73949b40 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -933,9 +933,7 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh mInternalClipboard = new QgsClipboard; // create clipboard connect( mInternalClipboard, &QgsClipboard::changed, this, &QgisApp::clipboardChanged ); - mQgisInterface = new QgisAppInterface( this ); // create the interfce - // Forward signal - connect( mQgisInterface, &QgisInterface::connectionsChanged, this, &QgisApp::connectionsChanged ); + mQgisInterface = new QgisAppInterface( this ); // create the interface #ifdef Q_OS_MAC // action for Window menu (create before generating WindowTitleChange event)) @@ -9668,6 +9666,11 @@ bool QgisApp::setActiveLayer( QgsMapLayer *layer ) return true; } +void QgisApp::reloadConnections() +{ + emit( connectionsChanged( ) ); +} + QgsVectorLayer *QgisApp::addVectorLayer( const QString &vectorLayerPath, const QString &baseName, const QString &providerKey ) { diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h index b2c24085fe4..84958ed9ed1 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -792,7 +792,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow /** - * \brief dataSourceManager Open the DataSourceManager dialog/dock + * \brief dataSourceManager Open the DataSourceManager dialog * \param pageName the page name, usually the provider name or "browser" (for the browser panel) * or "ogr" (vector layers) or "raster" (raster layers) */ @@ -858,6 +858,11 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow //! set the active layer bool setActiveLayer( QgsMapLayer * ); + /** Reload connections emitting the connectionsChanged signal + * \since QGIS 3.0 + */ + void reloadConnections(); + protected: //! Handle state changes (WindowTitleChange) diff --git a/src/app/qgisappinterface.cpp b/src/app/qgisappinterface.cpp index 38c1c63c7d8..7165924320f 100644 --- a/src/app/qgisappinterface.cpp +++ b/src/app/qgisappinterface.cpp @@ -171,6 +171,11 @@ void QgisAppInterface::newProject( bool promptToSaveFlag ) qgis->fileNew( promptToSaveFlag ); } +void QgisAppInterface::reloadConnections() +{ + qgis->reloadConnections( ); +} + QgsMapLayer *QgisAppInterface::activeLayer() { return qgis->activeLayer(); diff --git a/src/app/qgisappinterface.h b/src/app/qgisappinterface.h index ae6225b36cb..d7abb5cf506 100644 --- a/src/app/qgisappinterface.h +++ b/src/app/qgisappinterface.h @@ -81,6 +81,14 @@ class APP_EXPORT QgisAppInterface : public QgisInterface //! Start a new blank project void newProject( bool promptToSaveFlag = false ) override; + /** + * Triggered by plugins when connections have changed. + * This is forwarded to the GUI elements that needs to be updated (i.e. the source + * select dialogs and the browser widgets) + * \since QGIS 3.0 + */ + void reloadConnections( ) override; + //! Get pointer to the active layer (layer selected in the legend) QgsMapLayer *activeLayer() override; diff --git a/src/gui/qgisinterface.h b/src/gui/qgisinterface.h index 0f637d6798d..ba18725dda4 100644 --- a/src/gui/qgisinterface.h +++ b/src/gui/qgisinterface.h @@ -165,6 +165,15 @@ class GUI_EXPORT QgisInterface : public QObject //! Start a blank project virtual void newProject( bool promptToSaveFlag = false ) = 0; + /** + * Triggered when connections have changed. + * This calls reloadConnections in the main application and triggers a signal that is + * forwarder to the GUI elements that needs to be updated (i.e. the source + * select dialogs and the browser widgets) + * \since QGIS 3.0 + */ + virtual void reloadConnections( ) = 0; + //! Get pointer to the active layer (layer selected in the legend) virtual QgsMapLayer *activeLayer() = 0; @@ -797,14 +806,6 @@ class GUI_EXPORT QgisInterface : public QObject */ void layerSavedAs( QgsMapLayer *l, const QString &path ); - /** - * Emitted when connections have changed, this signal is forwarded - * to the GUI elements that needs to be updated (i.e. the source - * select dialogs and the browser widgets) - * \since QGIS 3.0 - */ - void connectionsChanged(); - }; Q_NOWARN_DEPRECATED_POP