Skip to content

Commit 301fd98

Browse files
committed
Added python bindings
1 parent ea58024 commit 301fd98

10 files changed

+141
-13
lines changed

python/gui/gui.sip

+2
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,8 @@
192192
%Include auth/qgsauthtrustedcasdialog.sip
193193

194194
%Include layertree/qgscustomlayerorderwidget.sip
195+
%Include layertree/qgslayertreeembeddedconfigwidget.sip
196+
%Include layertree/qgslayertreeembeddedwidgetregistry.sip
195197
%Include layertree/qgslayertreemapcanvasbridge.sip
196198
%Include layertree/qgslayertreeview.sip
197199
%Include layertree/qgslayertreeviewdefaultactions.sip
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
/** \ingroup gui
3+
* \class QgsLayerTreeEmbeddedConfigWidget
4+
* A widget to configure layer tree embedded widgets for a particular map layer.
5+
* @note introduced in QGIS 2.16
6+
*/
7+
class QgsLayerTreeEmbeddedConfigWidget : public QWidget
8+
{
9+
%TypeHeaderCode
10+
#include <qgslayertreeembeddedconfigwidget.h>
11+
%End
12+
13+
public:
14+
QgsLayerTreeEmbeddedConfigWidget( QWidget* parent /TransferThis/ = nullptr );
15+
16+
//! Initialize widget with a map layer
17+
void setLayer( QgsMapLayer* layer );
18+
19+
//! Store changes made in the widget to the layer
20+
void applyToLayer();
21+
22+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
2+
/** \ingroup gui
3+
* \class QgsLayerTreeEmbeddedWidgetProvider
4+
* Provider interface to be implemented in order to introduce new kinds of embedded widgets for use in layer tree.
5+
* Embedded widgets are assigned per individual map layers and they are shown before any legend entries.
6+
* @see QgsLayerTreeEmbeddedWidgetRegistry
7+
* @note introduced in QGIS 2.16
8+
*/
9+
class QgsLayerTreeEmbeddedWidgetProvider
10+
{
11+
%TypeHeaderCode
12+
#include <qgslayertreeembeddedwidgetregistry.h>
13+
%End
14+
15+
public:
16+
virtual ~QgsLayerTreeEmbeddedWidgetProvider();
17+
18+
//! Unique name of the provider (among other providers)
19+
virtual QString id() const = 0;
20+
21+
//! Human readable name - may be translatable with tr()
22+
virtual QString name() const = 0;
23+
24+
//! Factory to create widgets. The returned widget is owned by the caller.
25+
//! The widgetIndex argument may be used to identify which widget is being
26+
//! created (useful when using multiple widgets from the same provider for one layer).
27+
virtual QWidget* createWidget( QgsMapLayer* layer, int widgetIndex ) = 0 /Factory/;
28+
29+
//! Whether it makes sense to use this widget for a particular layer
30+
virtual bool supportsLayer( QgsMapLayer* layer ) = 0;
31+
};
32+
33+
/** \ingroup gui
34+
* \class QgsLayerTreeEmbeddedWidgetRegistry
35+
* Registry of widgets that may be embedded into layer tree view.
36+
* Embedded widgets are assigned per individual map layers and they are shown before any legend entries.
37+
* Layer tree must have UseEmbeddedWidgets flag enabled in order to show assigned widgets.
38+
*
39+
* @see QgsLayerTreeEmbeddedWidgetRegistry
40+
* @note introduced in QGIS 2.16
41+
*/
42+
class QgsLayerTreeEmbeddedWidgetRegistry
43+
{
44+
%TypeHeaderCode
45+
#include <qgslayertreeembeddedwidgetregistry.h>
46+
%End
47+
48+
public:
49+
50+
/** Means of accessing canonical single instance */
51+
static QgsLayerTreeEmbeddedWidgetRegistry* instance();
52+
53+
~QgsLayerTreeEmbeddedWidgetRegistry();
54+
55+
/** Return list of all registered providers */
56+
QStringList providers() const;
57+
58+
/** Get provider object from the provider's ID */
59+
QgsLayerTreeEmbeddedWidgetProvider* provider( const QString& providerId ) const;
60+
61+
/** Register a provider, takes ownership of the object.
62+
* Returns true on success, false if the provider is already registered. */
63+
bool addProvider( QgsLayerTreeEmbeddedWidgetProvider* provider /Transfer/ );
64+
65+
/** Unregister a provider, the provider object is deleted.
66+
* Returns true on success, false if the provider was not registered. */
67+
bool removeProvider( const QString& providerId );
68+
69+
protected:
70+
//! Protected constructor - use instance() to access the registry.
71+
QgsLayerTreeEmbeddedWidgetRegistry();
72+
};

src/gui/layertree/qgslayertreeembeddedconfigwidget.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
/***************************************************************************
2+
qgslayertreeembeddedconfigwidget.cpp
3+
--------------------------------------
4+
Date : May 2016
5+
Copyright : (C) 2016 by Martin Dobias
6+
Email : wonder dot sk at gmail dot com
7+
***************************************************************************
8+
* *
9+
* This program is free software; you can redistribute it and/or modify *
10+
* it under the terms of the GNU General Public License as published by *
11+
* the Free Software Foundation; either version 2 of the License, or *
12+
* (at your option) any later version. *
13+
* *
14+
***************************************************************************/
15+
116
#include "qgslayertreeembeddedconfigwidget.h"
217

318
#include "qgsmaplayer.h"

src/gui/layertree/qgslayertreeembeddedconfigwidget.h

+15
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
/***************************************************************************
2+
qgslayertreeembeddedconfigwidget.h
3+
--------------------------------------
4+
Date : May 2016
5+
Copyright : (C) 2016 by Martin Dobias
6+
Email : wonder dot sk at gmail dot com
7+
***************************************************************************
8+
* *
9+
* This program is free software; you can redistribute it and/or modify *
10+
* it under the terms of the GNU General Public License as published by *
11+
* the Free Software Foundation; either version 2 of the License, or *
12+
* (at your option) any later version. *
13+
* *
14+
***************************************************************************/
15+
116
#ifndef QGSLAYERTREEEMBEDDEDCONFIGWIDGET_H
217
#define QGSLAYERTREEEMBEDDEDCONFIGWIDGET_H
318

src/gui/layertree/qgslayertreeembeddedwidgetregistry.h

+7-6
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,19 @@ class GUI_EXPORT QgsLayerTreeEmbeddedWidgetProvider
3434
public:
3535
virtual ~QgsLayerTreeEmbeddedWidgetProvider() {}
3636

37-
//! unique name of the provider (among other providers)
37+
//! Unique name of the provider (among other providers)
3838
virtual QString id() const = 0;
3939

40-
//! human readable name - may be translatable with tr()
40+
//! Human readable name - may be translatable with tr()
4141
virtual QString name() const = 0;
4242

43-
//! factory to create widgets
44-
virtual QWidget* createWidget( QgsMapLayer* layer, QMap<QString, QString> properties ) = 0;
43+
//! Factory to create widgets. The returned widget is owned by the caller.
44+
//! The widgetIndex argument may be used to identify which widget is being
45+
//! created (useful when using multiple widgets from the same provider for one layer).
46+
virtual QWidget* createWidget( QgsMapLayer* layer, int widgetIndex ) = 0;
4547

46-
//! whether it makes sense to use this widget for a particular layer
48+
//! Whether it makes sense to use this widget for a particular layer
4749
virtual bool supportsLayer( QgsMapLayer* layer ) = 0;
48-
4950
};
5051

5152
/** \ingroup gui

src/gui/layertree/qgslayertreeembeddedwidgetsimpl.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,16 @@ QString QgsLayerTreeTransparencyWidget::Provider::id() const
8888

8989
QString QgsLayerTreeTransparencyWidget::Provider::name() const
9090
{
91-
return tr("Transparency slider");
91+
return tr( "Transparency slider" );
9292
}
9393

94-
QgsLayerTreeTransparencyWidget* QgsLayerTreeTransparencyWidget::Provider::createWidget(QgsMapLayer* layer, QMap<QString, QString> properties)
94+
QgsLayerTreeTransparencyWidget* QgsLayerTreeTransparencyWidget::Provider::createWidget( QgsMapLayer* layer, int widgetIndex )
9595
{
96-
Q_UNUSED( properties );
96+
Q_UNUSED( widgetIndex );
9797
return new QgsLayerTreeTransparencyWidget( layer );
9898
}
9999

100-
bool QgsLayerTreeTransparencyWidget::Provider::supportsLayer(QgsMapLayer* layer)
100+
bool QgsLayerTreeTransparencyWidget::Provider::supportsLayer( QgsMapLayer* layer )
101101
{
102102
return layer->type() == QgsMapLayer::VectorLayer || layer->type() == QgsMapLayer::RasterLayer;
103103
}

src/gui/layertree/qgslayertreeembeddedwidgetsimpl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class QgsLayerTreeTransparencyWidget : public QWidget
4141
public:
4242
virtual QString id() const override;
4343
virtual QString name() const override;
44-
virtual QgsLayerTreeTransparencyWidget* createWidget( QgsMapLayer* layer, QMap<QString, QString> properties ) override;
44+
virtual QgsLayerTreeTransparencyWidget* createWidget( QgsMapLayer* layer, int widgetIndex ) override;
4545
virtual bool supportsLayer( QgsMapLayer *layer ) override;
4646
};
4747

src/gui/layertree/qgslayertreeview.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ void QgsLayerTreeView::modelRowsInserted( const QModelIndex& index, int start, i
145145
if ( QgsLayerTreeEmbeddedWidgetProvider* provider = QgsLayerTreeEmbeddedWidgetRegistry::instance()->provider( providerId ) )
146146
{
147147
QModelIndex index = layerTreeModel()->legendNode2index( legendNodes[i] );
148-
setIndexWidget( index, provider->createWidget( layer, QMap<QString, QString>() ) );
148+
setIndexWidget( index, provider->createWidget( layer, i ) );
149149
}
150150
}
151151
}

src/plugins/georeferencer/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@ ADD_LIBRARY (georefplugin MODULE ${GEOREF_SRCS} ${GEOREF_MOC_SRCS} ${GEOREF_RCC_
7777
INCLUDE_DIRECTORIES(
7878
${CMAKE_CURRENT_SOURCE_DIR}
7979
${CMAKE_CURRENT_BINARY_DIR}
80+
${CMAKE_CURRENT_BINARY_DIR}/../../ui
8081
../../core ../../core/geometry ../../core/raster ../../core/composer
81-
../../gui ../../gui/editorwidgets
82+
../../gui ../../gui/editorwidgets ../../gui/layertree
8283
..
8384
)
8485
INCLUDE_DIRECTORIES(SYSTEM

0 commit comments

Comments
 (0)