Skip to content

Commit a86b93e

Browse files
committedMay 14, 2017
QgsLayerTreeEmbeddedWidgetRegistry is no longer a singleton
Moved the global instance to QgsGui::layerTreeEmbeddedWidgetRegistry()
1 parent 711f6dc commit a86b93e

9 files changed

+45
-23
lines changed
 

‎doc/api_break.dox

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,6 +1308,12 @@ QgsLayerPropertiesWidget {#qgis_api_break_3_0_QgsLayerPropertiesWidget}
13081308
- expressionContext(), setExpressionContext(), setMapCanvas() and mapCanvas() have been removed in favor of setContext()/context()
13091309

13101310

1311+
QgsLayerTreeEmbeddedWidgetRegistry {#qgis_api_break_3_0_QgsLayerTreeEmbeddedWidgetRegistry}
1312+
----------------------------------
1313+
1314+
- QgsLayerTreeEmbeddedWidgetRegistry::instance() has been removed. Use QgsGui::layerTreeEmbeddedWidgetRegistry() instead.
1315+
1316+
13111317
QgsLayerTreeGroup {#qgis_api_break_3_0_QgsLayerTreeGroup}
13121318
-----------------
13131319

‎python/gui/layertree/qgslayertreeembeddedwidgetregistry.sip

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ class QgsLayerTreeEmbeddedWidgetRegistry
4747

4848
public:
4949

50-
/** Means of accessing canonical single instance */
51-
static QgsLayerTreeEmbeddedWidgetRegistry *instance();
50+
QgsLayerTreeEmbeddedWidgetRegistry();
5251

5352
~QgsLayerTreeEmbeddedWidgetRegistry();
5453

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

69-
protected:
70-
//! Protected constructor - use instance() to access the registry.
71-
QgsLayerTreeEmbeddedWidgetRegistry();
72-
7368
private:
7469

7570
QgsLayerTreeEmbeddedWidgetRegistry( const QgsLayerTreeEmbeddedWidgetRegistry &other );

‎python/gui/qgsgui.sip

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ class QgsGui
4343
:rtype: QgsShortcutsManager
4444
%End
4545

46+
static QgsLayerTreeEmbeddedWidgetRegistry *layerTreeEmbeddedWidgetRegistry();
47+
%Docstring
48+
Returns the global layer tree embedded widget registry, used for registering widgets that may be embedded into layer tree view.
49+
:rtype: QgsLayerTreeEmbeddedWidgetRegistry
50+
%End
51+
4652
~QgsGui();
4753

4854
private:

‎src/gui/layertree/qgslayertreeembeddedconfigwidget.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsmaplayer.h"
1919
#include "qgslayertreeembeddedwidgetregistry.h"
20-
20+
#include "qgsgui.h"
2121
#include <QStringListModel>
2222
#include <QStandardItemModel>
2323

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

4141
// populate available
42-
Q_FOREACH ( const QString &providerId, QgsLayerTreeEmbeddedWidgetRegistry::instance()->providers() )
42+
Q_FOREACH ( const QString &providerId, QgsGui::layerTreeEmbeddedWidgetRegistry()->providers() )
4343
{
44-
QgsLayerTreeEmbeddedWidgetProvider *provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId );
44+
QgsLayerTreeEmbeddedWidgetProvider *provider = QgsGui::layerTreeEmbeddedWidgetRegistry()->provider( providerId );
4545
QStandardItem *item = new QStandardItem( provider->name() );
4646
item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
4747
item->setData( provider->id(), Qt::UserRole + 1 );
@@ -54,7 +54,7 @@ void QgsLayerTreeEmbeddedConfigWidget::setLayer( QgsMapLayer *layer )
5454
for ( int i = 0; i < widgetsCount; ++i )
5555
{
5656
QString providerId = layer->customProperty( QStringLiteral( "embeddedWidgets/%1/id" ).arg( i ) ).toString();
57-
if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId ) )
57+
if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsGui::layerTreeEmbeddedWidgetRegistry()->provider( providerId ) )
5858
{
5959
QStandardItem *item = new QStandardItem( provider->name() );
6060
item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
@@ -71,7 +71,7 @@ void QgsLayerTreeEmbeddedConfigWidget::onAddClicked()
7171
return;
7272

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

‎src/gui/layertree/qgslayertreeembeddedwidgetregistry.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@
1818
#include "qgslayertreeembeddedwidgetsimpl.h"
1919

2020

21-
22-
QgsLayerTreeEmbeddedWidgetRegistry *QgsLayerTreeEmbeddedWidgetRegistry::instance()
23-
{
24-
static QgsLayerTreeEmbeddedWidgetRegistry *sInstance( new QgsLayerTreeEmbeddedWidgetRegistry() );
25-
return sInstance;
26-
}
27-
2821
QgsLayerTreeEmbeddedWidgetRegistry::QgsLayerTreeEmbeddedWidgetRegistry()
2922
{
3023
// populate with default implementations

‎src/gui/layertree/qgslayertreeembeddedwidgetregistry.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,23 @@ class GUI_EXPORT QgsLayerTreeEmbeddedWidgetProvider
5757
* Embedded widgets are assigned per individual map layers and they are shown before any legend entries.
5858
* Layer tree must have UseEmbeddedWidgets flag enabled in order to show assigned widgets.
5959
*
60+
* QgsLayerTreeEmbeddedWidgetRegistry is not usually directly created, but rather accessed through
61+
* QgsGui::layerTreeEmbeddedWidgetRegistry().
62+
*
6063
* \see QgsLayerTreeEmbeddedWidgetRegistry
6164
* \since QGIS 2.16
6265
*/
6366
class GUI_EXPORT QgsLayerTreeEmbeddedWidgetRegistry
6467
{
6568
public:
6669

67-
//! Means of accessing canonical single instance
68-
static QgsLayerTreeEmbeddedWidgetRegistry *instance();
70+
/**
71+
* Constructor for QgsLayerTreeEmbeddedWidgetRegistry/
72+
*
73+
* QgsLayerTreeEmbeddedWidgetRegistry is not usually directly created, but rather accessed through
74+
* QgsGui::layerTreeEmbeddedWidgetRegistry().
75+
*/
76+
QgsLayerTreeEmbeddedWidgetRegistry();
6977

7078
~QgsLayerTreeEmbeddedWidgetRegistry();
7179

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

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

95101
//! storage of all the providers
96102
QMap<QString, QgsLayerTreeEmbeddedWidgetProvider *> mProviders;

‎src/gui/layertree/qgslayertreeview.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "qgslayertreemodellegendnode.h"
2222
#include "qgslayertreeviewdefaultactions.h"
2323
#include "qgsmaplayer.h"
24+
#include "qgsgui.h"
2425

2526
#include <QMenu>
2627
#include <QContextMenuEvent>
@@ -142,7 +143,7 @@ void QgsLayerTreeView::modelRowsInserted( const QModelIndex &index, int start, i
142143
for ( int i = 0; i < widgetsCount; ++i )
143144
{
144145
QString providerId = layer->customProperty( QStringLiteral( "embeddedWidgets/%1/id" ).arg( i ) ).toString();
145-
if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId ) )
146+
if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsGui::layerTreeEmbeddedWidgetRegistry()->provider( providerId ) )
146147
{
147148
QModelIndex index = layerTreeModel()->legendNode2index( legendNodes[i] );
148149
setIndexWidget( index, provider->createWidget( layer, i ) );

‎src/gui/qgsgui.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "qgsgui.h"
1919
#include "qgseditorwidgetregistry.h"
20+
#include "qgslayertreeembeddedwidgetregistry.h"
2021
#include "qgsshortcutsmanager.h"
2122

2223
QgsGui *QgsGui::instance()
@@ -35,14 +36,21 @@ QgsShortcutsManager *QgsGui::shortcutsManager()
3536
return instance()->mShortcutsManager;
3637
}
3738

39+
QgsLayerTreeEmbeddedWidgetRegistry *QgsGui::layerTreeEmbeddedWidgetRegistry()
40+
{
41+
return instance()->mLayerTreeEmbeddedWidgetRegistry;
42+
}
43+
3844
QgsGui::~QgsGui()
3945
{
4046
delete mEditorWidgetRegistry;
4147
delete mShortcutsManager;
48+
delete mLayerTreeEmbeddedWidgetRegistry;
4249
}
4350

4451
QgsGui::QgsGui()
4552
{
4653
mEditorWidgetRegistry = new QgsEditorWidgetRegistry();
4754
mShortcutsManager = new QgsShortcutsManager();
55+
mLayerTreeEmbeddedWidgetRegistry = new QgsLayerTreeEmbeddedWidgetRegistry();
4856
}

‎src/gui/qgsgui.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
class QgsEditorWidgetRegistry;
2424
class QgsShortcutsManager;
25+
class QgsLayerTreeEmbeddedWidgetRegistry;
2526

2627
/**
2728
* \ingroup gui
@@ -54,6 +55,11 @@ class GUI_EXPORT QgsGui
5455
*/
5556
static QgsShortcutsManager *shortcutsManager();
5657

58+
/**
59+
* Returns the global layer tree embedded widget registry, used for registering widgets that may be embedded into layer tree view.
60+
*/
61+
static QgsLayerTreeEmbeddedWidgetRegistry *layerTreeEmbeddedWidgetRegistry();
62+
5763
~QgsGui();
5864

5965
private:
@@ -62,6 +68,7 @@ class GUI_EXPORT QgsGui
6268

6369
QgsEditorWidgetRegistry *mEditorWidgetRegistry = nullptr;
6470
QgsShortcutsManager *mShortcutsManager = nullptr;
71+
QgsLayerTreeEmbeddedWidgetRegistry *mLayerTreeEmbeddedWidgetRegistry = nullptr;
6572

6673
#ifdef SIP_RUN
6774
QgsGui( const QgsGui &other );

0 commit comments

Comments
 (0)
Please sign in to comment.