Skip to content

Commit

Permalink
QgsLayerTreeEmbeddedWidgetRegistry is no longer a singleton
Browse files Browse the repository at this point in the history
Moved the global instance to QgsGui::layerTreeEmbeddedWidgetRegistry()
  • Loading branch information
nyalldawson committed May 14, 2017
1 parent 711f6dc commit a86b93e
Show file tree
Hide file tree
Showing 9 changed files with 45 additions and 23 deletions.
6 changes: 6 additions & 0 deletions doc/api_break.dox
Expand Up @@ -1308,6 +1308,12 @@ QgsLayerPropertiesWidget {#qgis_api_break_3_0_QgsLayerPropertiesWidget}
- expressionContext(), setExpressionContext(), setMapCanvas() and mapCanvas() have been removed in favor of setContext()/context()


QgsLayerTreeEmbeddedWidgetRegistry {#qgis_api_break_3_0_QgsLayerTreeEmbeddedWidgetRegistry}
----------------------------------

- QgsLayerTreeEmbeddedWidgetRegistry::instance() has been removed. Use QgsGui::layerTreeEmbeddedWidgetRegistry() instead.


QgsLayerTreeGroup {#qgis_api_break_3_0_QgsLayerTreeGroup}
-----------------

Expand Down
7 changes: 1 addition & 6 deletions python/gui/layertree/qgslayertreeembeddedwidgetregistry.sip
Expand Up @@ -47,8 +47,7 @@ class QgsLayerTreeEmbeddedWidgetRegistry

public:

/** Means of accessing canonical single instance */
static QgsLayerTreeEmbeddedWidgetRegistry *instance();
QgsLayerTreeEmbeddedWidgetRegistry();

~QgsLayerTreeEmbeddedWidgetRegistry();

Expand All @@ -66,10 +65,6 @@ class QgsLayerTreeEmbeddedWidgetRegistry
* Returns true on success, false if the provider was not registered. */
bool removeProvider( const QString &providerId );

protected:
//! Protected constructor - use instance() to access the registry.
QgsLayerTreeEmbeddedWidgetRegistry();

private:

QgsLayerTreeEmbeddedWidgetRegistry( const QgsLayerTreeEmbeddedWidgetRegistry &other );
Expand Down
6 changes: 6 additions & 0 deletions python/gui/qgsgui.sip
Expand Up @@ -43,6 +43,12 @@ class QgsGui
:rtype: QgsShortcutsManager
%End

static QgsLayerTreeEmbeddedWidgetRegistry *layerTreeEmbeddedWidgetRegistry();
%Docstring
Returns the global layer tree embedded widget registry, used for registering widgets that may be embedded into layer tree view.
:rtype: QgsLayerTreeEmbeddedWidgetRegistry
%End

~QgsGui();

private:
Expand Down
10 changes: 5 additions & 5 deletions src/gui/layertree/qgslayertreeembeddedconfigwidget.cpp
Expand Up @@ -17,7 +17,7 @@

#include "qgsmaplayer.h"
#include "qgslayertreeembeddedwidgetregistry.h"

#include "qgsgui.h"
#include <QStringListModel>
#include <QStandardItemModel>

Expand All @@ -39,9 +39,9 @@ void QgsLayerTreeEmbeddedConfigWidget::setLayer( QgsMapLayer *layer )
QStandardItemModel *modelUsed = new QStandardItemModel( this );

// populate available
Q_FOREACH ( const QString &providerId, QgsLayerTreeEmbeddedWidgetRegistry::instance()->providers() )
Q_FOREACH ( const QString &providerId, QgsGui::layerTreeEmbeddedWidgetRegistry()->providers() )
{
QgsLayerTreeEmbeddedWidgetProvider *provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId );
QgsLayerTreeEmbeddedWidgetProvider *provider = QgsGui::layerTreeEmbeddedWidgetRegistry()->provider( providerId );
QStandardItem *item = new QStandardItem( provider->name() );
item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
item->setData( provider->id(), Qt::UserRole + 1 );
Expand All @@ -54,7 +54,7 @@ void QgsLayerTreeEmbeddedConfigWidget::setLayer( QgsMapLayer *layer )
for ( int i = 0; i < widgetsCount; ++i )
{
QString providerId = layer->customProperty( QStringLiteral( "embeddedWidgets/%1/id" ).arg( i ) ).toString();
if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId ) )
if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsGui::layerTreeEmbeddedWidgetRegistry()->provider( providerId ) )
{
QStandardItem *item = new QStandardItem( provider->name() );
item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
Expand All @@ -71,7 +71,7 @@ void QgsLayerTreeEmbeddedConfigWidget::onAddClicked()
return;

QString providerId = mListAvailable->model()->data( mListAvailable->currentIndex(), Qt::UserRole + 1 ).toString();
QgsLayerTreeEmbeddedWidgetProvider *provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId );
QgsLayerTreeEmbeddedWidgetProvider *provider = QgsGui::layerTreeEmbeddedWidgetRegistry()->provider( providerId );
if ( !provider )
return;

Expand Down
7 changes: 0 additions & 7 deletions src/gui/layertree/qgslayertreeembeddedwidgetregistry.cpp
Expand Up @@ -18,13 +18,6 @@
#include "qgslayertreeembeddedwidgetsimpl.h"



QgsLayerTreeEmbeddedWidgetRegistry *QgsLayerTreeEmbeddedWidgetRegistry::instance()
{
static QgsLayerTreeEmbeddedWidgetRegistry *sInstance( new QgsLayerTreeEmbeddedWidgetRegistry() );
return sInstance;
}

QgsLayerTreeEmbeddedWidgetRegistry::QgsLayerTreeEmbeddedWidgetRegistry()
{
// populate with default implementations
Expand Down
14 changes: 10 additions & 4 deletions src/gui/layertree/qgslayertreeembeddedwidgetregistry.h
Expand Up @@ -57,15 +57,23 @@ class GUI_EXPORT QgsLayerTreeEmbeddedWidgetProvider
* Embedded widgets are assigned per individual map layers and they are shown before any legend entries.
* Layer tree must have UseEmbeddedWidgets flag enabled in order to show assigned widgets.
*
* QgsLayerTreeEmbeddedWidgetRegistry is not usually directly created, but rather accessed through
* QgsGui::layerTreeEmbeddedWidgetRegistry().
*
* \see QgsLayerTreeEmbeddedWidgetRegistry
* \since QGIS 2.16
*/
class GUI_EXPORT QgsLayerTreeEmbeddedWidgetRegistry
{
public:

//! Means of accessing canonical single instance
static QgsLayerTreeEmbeddedWidgetRegistry *instance();
/**
* Constructor for QgsLayerTreeEmbeddedWidgetRegistry/
*
* QgsLayerTreeEmbeddedWidgetRegistry is not usually directly created, but rather accessed through
* QgsGui::layerTreeEmbeddedWidgetRegistry().
*/
QgsLayerTreeEmbeddedWidgetRegistry();

~QgsLayerTreeEmbeddedWidgetRegistry();

Expand All @@ -89,8 +97,6 @@ class GUI_EXPORT QgsLayerTreeEmbeddedWidgetRegistry
bool removeProvider( const QString &providerId );

protected:
//! Protected constructor - use instance() to access the registry.
QgsLayerTreeEmbeddedWidgetRegistry();

//! storage of all the providers
QMap<QString, QgsLayerTreeEmbeddedWidgetProvider *> mProviders;
Expand Down
3 changes: 2 additions & 1 deletion src/gui/layertree/qgslayertreeview.cpp
Expand Up @@ -21,6 +21,7 @@
#include "qgslayertreemodellegendnode.h"
#include "qgslayertreeviewdefaultactions.h"
#include "qgsmaplayer.h"
#include "qgsgui.h"

#include <QMenu>
#include <QContextMenuEvent>
Expand Down Expand Up @@ -142,7 +143,7 @@ void QgsLayerTreeView::modelRowsInserted( const QModelIndex &index, int start, i
for ( int i = 0; i < widgetsCount; ++i )
{
QString providerId = layer->customProperty( QStringLiteral( "embeddedWidgets/%1/id" ).arg( i ) ).toString();
if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId ) )
if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsGui::layerTreeEmbeddedWidgetRegistry()->provider( providerId ) )
{
QModelIndex index = layerTreeModel()->legendNode2index( legendNodes[i] );
setIndexWidget( index, provider->createWidget( layer, i ) );
Expand Down
8 changes: 8 additions & 0 deletions src/gui/qgsgui.cpp
Expand Up @@ -17,6 +17,7 @@

#include "qgsgui.h"
#include "qgseditorwidgetregistry.h"
#include "qgslayertreeembeddedwidgetregistry.h"
#include "qgsshortcutsmanager.h"

QgsGui *QgsGui::instance()
Expand All @@ -35,14 +36,21 @@ QgsShortcutsManager *QgsGui::shortcutsManager()
return instance()->mShortcutsManager;
}

QgsLayerTreeEmbeddedWidgetRegistry *QgsGui::layerTreeEmbeddedWidgetRegistry()
{
return instance()->mLayerTreeEmbeddedWidgetRegistry;
}

QgsGui::~QgsGui()
{
delete mEditorWidgetRegistry;
delete mShortcutsManager;
delete mLayerTreeEmbeddedWidgetRegistry;
}

QgsGui::QgsGui()
{
mEditorWidgetRegistry = new QgsEditorWidgetRegistry();
mShortcutsManager = new QgsShortcutsManager();
mLayerTreeEmbeddedWidgetRegistry = new QgsLayerTreeEmbeddedWidgetRegistry();
}
7 changes: 7 additions & 0 deletions src/gui/qgsgui.h
Expand Up @@ -22,6 +22,7 @@

class QgsEditorWidgetRegistry;
class QgsShortcutsManager;
class QgsLayerTreeEmbeddedWidgetRegistry;

/**
* \ingroup gui
Expand Down Expand Up @@ -54,6 +55,11 @@ class GUI_EXPORT QgsGui
*/
static QgsShortcutsManager *shortcutsManager();

/**
* Returns the global layer tree embedded widget registry, used for registering widgets that may be embedded into layer tree view.
*/
static QgsLayerTreeEmbeddedWidgetRegistry *layerTreeEmbeddedWidgetRegistry();

~QgsGui();

private:
Expand All @@ -62,6 +68,7 @@ class GUI_EXPORT QgsGui

QgsEditorWidgetRegistry *mEditorWidgetRegistry = nullptr;
QgsShortcutsManager *mShortcutsManager = nullptr;
QgsLayerTreeEmbeddedWidgetRegistry *mLayerTreeEmbeddedWidgetRegistry = nullptr;

#ifdef SIP_RUN
QgsGui( const QgsGui &other );
Expand Down

0 comments on commit a86b93e

Please sign in to comment.