sipify QgsMapLayerModel, QgsMapLayerProxyModel

This commit is contained in:
Denis Rouzaud 2017-04-19 14:49:35 +02:00
parent 0b0e8a6a89
commit be9a51c42d
7 changed files with 211 additions and 153 deletions

View File

@ -54,8 +54,6 @@ core/qgslogger.sip
core/qgsmaphittest.sip
core/qgsmaplayerdependency.sip
core/qgsmaplayerlegend.sip
core/qgsmaplayermodel.sip
core/qgsmaplayerproxymodel.sip
core/qgsmaplayerrenderer.sip
core/qgsmaplayerstylemanager.sip
core/qgsmaprenderercache.sip

View File

@ -29,11 +29,11 @@ class QgsFieldProxyModel : QSortFilterProxyModel
Int,
LongLong,
Double,
Numeric
Numeric,
Date,
Time,
HideReadOnly,
AllTypes
AllTypes,
};
typedef QFlags<QgsFieldProxyModel::Filter> Filters;

View File

@ -1,120 +1,148 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsmaplayermodel.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
/**
* @brief The QgsMapLayerModel class is a model to display layers in widgets.
* @see QgsMapLayerProxyModel to sort and/filter the layers
* @see QgsFieldModel to combine in with a field selector.
* @note added in 2.3
*/
class QgsMapLayerModel : QAbstractItemModel
{
%Docstring
The QgsMapLayerModel class is a model to display layers in widgets.
\see QgsMapLayerProxyModel to sort and/filter the layers
\see QgsFieldModel to combine in with a field selector.
.. versionadded:: 2.3
%End
%TypeHeaderCode
#include "qgsmaplayermodel.h"
%End
public:
//! Item data roles
enum ItemDataRole
{
LayerIdRole, /*!< Stores the map layer ID */
LayerRole, /*!< Stores pointer to the map layer itself */
EmptyRole, //!< True if index corresponds to the empty (not set) value
AdditionalRole, //!< True if index corresponds to an additional (non map layer) item
LayerIdRole
LayerRole,
EmptyRole,
AdditionalRole,
};
/**
* @brief QgsMapLayerModel creates a model to display layers in widgets.
*/
explicit QgsMapLayerModel( QObject *parent /TransferThis/ = 0 );
/**
* @brief QgsMapLayerModel creates a model to display a specific list of layers in a widget.
*/
explicit QgsMapLayerModel( const QList<QgsMapLayer*>& layers, QObject *parent /TransferThis/ = 0 );
%Docstring
QgsMapLayerModel creates a model to display layers in widgets.
%End
explicit QgsMapLayerModel( const QList<QgsMapLayer *> &layers, QObject *parent = 0 );
%Docstring
QgsMapLayerModel creates a model to display a specific list of layers in a widget.
%End
/**
* @brief setItemsCheckable defines if layers should be selectable in the widget
*/
void setItemsCheckable( bool checkable );
/**
* @brief checkAll changes the checkstate for all the layers
*/
%Docstring
setItemsCheckable defines if layers should be selectable in the widget
%End
void checkAll( Qt::CheckState checkState );
%Docstring
checkAll changes the checkstate for all the layers
%End
/**
* Sets whether an optional empty layer ("not set") option is present in the model.
* @see allowEmptyLayer()
* @note added in QGIS 3.0
*/
void setAllowEmptyLayer( bool allowEmpty );
%Docstring
Sets whether an optional empty layer ("not set") option is present in the model.
\see allowEmptyLayer()
.. versionadded:: 3.0
%End
/**
* Returns true if the model allows the empty layer ("not set") choice.
* @see setAllowEmptyLayer()
* @note added in QGIS 3.0
*/
bool allowEmptyLayer() const;
%Docstring
Returns true if the model allows the empty layer ("not set") choice.
\see setAllowEmptyLayer()
.. versionadded:: 3.0
:rtype: bool
%End
/**
* Sets whether the CRS of layers is also included in the model's display role.
* @see showCrs()
* @note added in QGIS 3.0
*/
void setShowCrs( bool showCrs );
%Docstring
Sets whether the CRS of layers is also included in the model's display role.
\see showCrs()
.. versionadded:: 3.0
%End
/**
* Returns true if the model includes layer's CRS in the display role.
* @see setShowCrs()
* @note added in QGIS 3.0
*/
bool showCrs() const;
%Docstring
Returns true if the model includes layer's CRS in the display role.
\see setShowCrs()
.. versionadded:: 3.0
:rtype: bool
%End
/**
* Sets a list of additional (non map layer) items to include at the end of the model.
* These may represent additional layers such as layers which are not included in the map
* layer registry, or paths to layers which have not yet been loaded into QGIS.
* @see additionalItems()
* @note added in QGIS 3.0
*/
void setAdditionalItems( const QStringList& items );
/**
* Return the list of additional (non map layer) items included at the end of the model.
* @see setAdditionalItems()
* @note added in QGIS 3.0
*/
QStringList additionalItems() const;
/**
* @brief layersChecked returns the list of layers which are checked (or unchecked)
*/
QList<QgsMapLayer*> layersChecked( Qt::CheckState checkState = Qt::Checked );
//! returns if the items can be checked or not
QList<QgsMapLayer *> layersChecked( Qt::CheckState checkState = Qt::Checked );
%Docstring
layersChecked returns the list of layers which are checked (or unchecked)
:rtype: list of QgsMapLayer
%End
bool itemsCheckable() const;
%Docstring
returns if the items can be checked or not
:rtype: bool
%End
/**
* @brief indexFromLayer returns the model index for a given layer
*/
QModelIndex indexFromLayer( QgsMapLayer* layer ) const;
QModelIndex indexFromLayer( QgsMapLayer *layer ) const;
%Docstring
indexFromLayer returns the model index for a given layer
:rtype: QModelIndex
%End
void setAdditionalItems( const QStringList &items );
%Docstring
Sets a list of additional (non map layer) items to include at the end of the model.
These may represent additional layers such as layers which are not included in the map
layer registry, or paths to layers which have not yet been loaded into QGIS.
\see additionalItems()
.. versionadded:: 3.0
%End
QStringList additionalItems() const;
%Docstring
Return the list of additional (non map layer) items included at the end of the model.
\see setAdditionalItems()
.. versionadded:: 3.0
:rtype: list of str
%End
virtual QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;
%Docstring
QAbstractItemModel interface
:rtype: QModelIndex
%End
virtual QModelIndex parent( const QModelIndex &child ) const;
virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const;
virtual int columnCount( const QModelIndex &parent = QModelIndex() ) const;
virtual QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
virtual bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole );
virtual Qt::ItemFlags flags( const QModelIndex &index ) const;
protected slots:
void removeLayers( const QStringList& layerIds );
void addLayers( const QList<QgsMapLayer*>& layers );
void removeLayers( const QStringList &layerIds );
void addLayers( const QList<QgsMapLayer *> &layers );
// QAbstractItemModel interface
public:
QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;
QModelIndex parent( const QModelIndex &child ) const;
int rowCount( const QModelIndex &parent = QModelIndex() ) const;
int columnCount( const QModelIndex &parent = QModelIndex() ) const;
QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
protected:
/**
* Returns strings for all roles supported by this model.
*/
QHash<int, QByteArray> roleNames() const;
bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole );
Qt::ItemFlags flags( const QModelIndex &index ) const;
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsmaplayermodel.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/

View File

@ -1,14 +1,25 @@
/**
* @brief The QgsMapLayerProxyModel class provides an easy to use model to display the list of layers in widgets.
* @note added in 2.3
*/
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsmaplayerproxymodel.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
class QgsMapLayerProxyModel : QSortFilterProxyModel
{
%Docstring
The QgsMapLayerProxyModel class provides an easy to use model to display the list of layers in widgets.
.. versionadded:: 2.3
%End
%TypeHeaderCode
#include "qgsmaplayerproxymodel.h"
%End
public:
enum Filter
{
@ -21,57 +32,79 @@ class QgsMapLayerProxyModel : QSortFilterProxyModel
VectorLayer,
PluginLayer,
WritableLayer,
All
};
All };
typedef QFlags<QgsMapLayerProxyModel::Filter> Filters;
/**
* @brief QgsMapLayerProxModel creates a proxy model with a QgsMapLayerModel as source model.
* It can be used to filter the layers list in a widget.
*/
explicit QgsMapLayerProxyModel( QObject *parent /TransferThis/ = 0 );
%Docstring
QgsMapLayerProxModel creates a proxy model with a QgsMapLayerModel as source model.
It can be used to filter the layers list in a widget.
%End
/**
* @brief layerModel returns the QgsMapLayerModel used in this QSortFilterProxyModel
*/
QgsMapLayerModel* sourceLayerModel() const;
QgsMapLayerModel *sourceLayerModel() const;
%Docstring
layerModel returns the QgsMapLayerModel used in this QSortFilterProxyModel
:rtype: QgsMapLayerModel
%End
/**
* @brief setFilters set flags that affect how layers are filtered
* @param filters are Filter flags
* @note added in 2.3
*/
QgsMapLayerProxyModel* setFilters( Filters filters );
const Filters& filters() const;
QgsMapLayerProxyModel *setFilters( QgsMapLayerProxyModel::Filters filters );
%Docstring
setFilters set flags that affect how layers are filtered
\param filters are Filter flags
.. versionadded:: 2.3
:rtype: QgsMapLayerProxyModel
%End
const Filters &filters() const;
%Docstring
:rtype: Filters
%End
//! offer the possibility to except some layers to be listed
void setExceptedLayerList( const QList<QgsMapLayer*>& exceptList );
//! Get the list of maplayers which are excluded from the list
QList<QgsMapLayer*> exceptedLayerList();
void setExceptedLayerList( const QList<QgsMapLayer *> &exceptList );
%Docstring
offer the possibility to except some layers to be listed
%End
QList<QgsMapLayer *> exceptedLayerList();
%Docstring
Get the list of maplayers which are excluded from the list
:rtype: list of QgsMapLayer
%End
//! Set the list of maplayer ids which are excluded from the list
void setExceptedLayerIds( const QStringList& ids );
//! Get the list of maplayer ids which are excluded from the list
void setExceptedLayerIds( const QStringList &ids );
%Docstring
Set the list of maplayer ids which are excluded from the list
%End
QStringList exceptedLayerIds() const;
%Docstring
Get the list of maplayer ids which are excluded from the list
:rtype: list of str
%End
/**
* Sets a list of data providers which should be excluded from the model.
* @note added in QGIS 3.0
* @see excludedProviders()
*/
void setExcludedProviders( const QStringList& providers );
void setExcludedProviders( const QStringList &providers );
%Docstring
Sets a list of data providers which should be excluded from the model.
.. versionadded:: 3.0
\see excludedProviders()
%End
/**
* Returns the list of data providers which are excluded from the model.
* @see setExcludedProviders()
* @note added in QGIS 3.0
*/
QStringList excludedProviders() const;
%Docstring
Returns the list of data providers which are excluded from the model.
\see setExcludedProviders()
.. versionadded:: 3.0
:rtype: list of str
%End
virtual bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const;
virtual bool lessThan( const QModelIndex &left, const QModelIndex &right ) const;
// QSortFilterProxyModel interface
public:
bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const;
bool lessThan( const QModelIndex &left, const QModelIndex &right ) const;
};
QFlags<QgsMapLayerProxyModel::Filter> operator|(QgsMapLayerProxyModel::Filter f1, QFlags<QgsMapLayerProxyModel::Filter> f2);
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsmaplayerproxymodel.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/

View File

@ -36,6 +36,7 @@ from qgis.core import (
QgsApplication,
QgsCoordinateReferenceSystem,
QgsExpression,
QgsFieldProxyModel,
QgsMapLayerProxyModel,
QgsWkbTypes,
QgsSettings,
@ -59,7 +60,6 @@ from qgis.gui import (
QgsExpressionBuilderDialog,
QgsFieldComboBox,
QgsFieldExpressionWidget,
QgsFieldProxyModel,
QgsProjectionSelectionDialog,
QgsMapLayerComboBox,
QgsProjectionSelectionWidget,

View File

@ -21,6 +21,7 @@
#include <QStringList>
#include "qgis_core.h"
#include "qgis.h"
class QgsMapLayer;
@ -54,7 +55,7 @@ class CORE_EXPORT QgsMapLayerModel : public QAbstractItemModel
/**
* \brief QgsMapLayerModel creates a model to display layers in widgets.
*/
explicit QgsMapLayerModel( QObject *parent = nullptr );
explicit QgsMapLayerModel( QObject *parent SIP_TRANSFERTHIS = nullptr );
/**
* \brief QgsMapLayerModel creates a model to display a specific list of layers in a widget.
@ -127,17 +128,7 @@ class CORE_EXPORT QgsMapLayerModel : public QAbstractItemModel
*/
QStringList additionalItems() const { return mAdditionalItems; }
protected slots:
void removeLayers( const QStringList &layerIds );
void addLayers( const QList<QgsMapLayer *> &layers );
protected:
QList<QgsMapLayer *> mLayers;
QMap<QString, Qt::CheckState> mLayersChecked;
bool mItemCheckable;
// QAbstractItemModel interface
public:
QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const override;
QModelIndex parent( const QModelIndex &child ) const override;
int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
@ -149,11 +140,20 @@ class CORE_EXPORT QgsMapLayerModel : public QAbstractItemModel
*
* \note Available only with Qt5 (Python and c++)
*/
QHash<int, QByteArray> roleNames() const override;
QHash<int, QByteArray> roleNames() const override SIP_SKIP;
bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ) override;
Qt::ItemFlags flags( const QModelIndex &index ) const override;
protected slots:
void removeLayers( const QStringList &layerIds );
void addLayers( const QList<QgsMapLayer *> &layers );
protected:
QList<QgsMapLayer *> mLayers;
QMap<QString, Qt::CheckState> mLayersChecked;
bool mItemCheckable;
private:
bool mAllowEmpty;

View File

@ -20,6 +20,7 @@
#include <QStringList>
#include "qgis_core.h"
#include "qgis.h"
class QgsMapLayerModel;
class QgsMapLayer;
@ -57,7 +58,7 @@ class CORE_EXPORT QgsMapLayerProxyModel : public QSortFilterProxyModel
* \brief QgsMapLayerProxModel creates a proxy model with a QgsMapLayerModel as source model.
* It can be used to filter the layers list in a widget.
*/
explicit QgsMapLayerProxyModel( QObject *parent = nullptr );
explicit QgsMapLayerProxyModel( QObject *parent SIP_TRANSFERTHIS = nullptr );
/**
* \brief layerModel returns the QgsMapLayerModel used in this QSortFilterProxyModel
@ -96,16 +97,14 @@ class CORE_EXPORT QgsMapLayerProxyModel : public QSortFilterProxyModel
*/
QStringList excludedProviders() const { return mExcludedProviders; }
bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const override;
bool lessThan( const QModelIndex &left, const QModelIndex &right ) const override;
private:
Filters mFilters;
QList<QgsMapLayer *> mExceptList;
QgsMapLayerModel *mModel = nullptr;
QStringList mExcludedProviders;
// QSortFilterProxyModel interface
public:
bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const override;
bool lessThan( const QModelIndex &left, const QModelIndex &right ) const override;
};
Q_DECLARE_OPERATORS_FOR_FLAGS( QgsMapLayerProxyModel::Filters )