diff --git a/python/gui/qgisinterface.sip b/python/gui/qgisinterface.sip index ce148fe136f..1ac30a40de4 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 + forwarded 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; @@ -1256,6 +1265,7 @@ Get timeout for timed messages: default of 5 seconds \note added in version 2.7 %End + }; /************************************************************************ diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index f24080d14b9..20d73949b40 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -933,7 +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 + mQgisInterface = new QgisAppInterface( this ); // create the interface #ifdef Q_OS_MAC // action for Window menu (create before generating WindowTitleChange event)) @@ -9666,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 171cb5f68cc..040aadc832d 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 + * forwarded 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; @@ -796,6 +805,7 @@ class GUI_EXPORT QgisInterface : public QObject * added in version 2.7 */ void layerSavedAs( QgsMapLayer *l, const QString &path ); + }; Q_NOWARN_DEPRECATED_POP