mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
sipify QgsVectorLayer, QgsFeature
This commit is contained in:
parent
85894ed4c8
commit
7b08608f7f
@ -1,126 +1,121 @@
|
|||||||
|
/******************************************************************
|
||||||
|
* This file has been generated automatically by sipify.pl *
|
||||||
|
* Do not edit manually ! Edit header file and generate it again. *
|
||||||
|
*****************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef qint64 QgsFeatureId;
|
typedef qint64 QgsFeatureId;
|
||||||
|
|
||||||
typedef QMap<int, QVariant> QgsAttributeMap;
|
typedef QMap<int, QVariant> QgsAttributeMap;
|
||||||
|
|
||||||
typedef QVector<QVariant> QgsAttributes;
|
typedef QVector<QVariant> QgsAttributes;
|
||||||
|
|
||||||
// QgsAttributes is implemented as a Python list of Python objects.
|
|
||||||
%MappedType QgsAttributes
|
%MappedType QgsAttributes
|
||||||
{
|
{
|
||||||
%TypeHeaderCode
|
%TypeHeaderCode
|
||||||
#include <qgsfeature.h> // NO_SIPIFY
|
#include <qgsfeature.h>
|
||||||
%End
|
%End
|
||||||
|
|
||||||
%ConvertFromTypeCode
|
%ConvertFromTypeCode
|
||||||
// Create the list.
|
// Create the list.
|
||||||
PyObject *l;
|
PyObject *l;
|
||||||
|
|
||||||
if ( ( l = PyList_New(sipCpp->size() ) ) == NULL )
|
if ( ( l = PyList_New( sipCpp->size() ) ) == NULL )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
// Set the list elements.
|
// Set the list elements.
|
||||||
for ( int i = 0; i < sipCpp->size(); ++i )
|
for ( int i = 0; i < sipCpp->size(); ++i )
|
||||||
|
{
|
||||||
|
QVariant *v = new QVariant( sipCpp->at( i ) );
|
||||||
|
PyObject *tobj;
|
||||||
|
|
||||||
|
if ( ( tobj = sipConvertFromNewType( v, sipType_QVariant, Py_None ) ) == NULL )
|
||||||
{
|
{
|
||||||
QVariant *v = new QVariant( sipCpp->at( i ) );
|
Py_DECREF( l );
|
||||||
PyObject *tobj;
|
delete v;
|
||||||
|
|
||||||
if ( ( tobj = sipConvertFromNewType( v, sipType_QVariant,Py_None ) ) == NULL )
|
return NULL;
|
||||||
{
|
|
||||||
Py_DECREF( l );
|
|
||||||
delete v;
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyList_SET_ITEM( l, i, tobj );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return l;
|
PyList_SET_ITEM( l, i, tobj );
|
||||||
|
}
|
||||||
|
|
||||||
|
return l;
|
||||||
%End
|
%End
|
||||||
|
|
||||||
%ConvertToTypeCode
|
%ConvertToTypeCode
|
||||||
// Check the type if that is all that is required.
|
// Check the type if that is all that is required.
|
||||||
if (sipIsErr == NULL)
|
if ( sipIsErr == NULL )
|
||||||
{
|
{
|
||||||
if (!PyList_Check(sipPy))
|
if ( !PyList_Check( sipPy ) )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for ( SIP_SSIZE_T i = 0; i < PyList_GET_SIZE( sipPy ); ++i )
|
||||||
|
if ( !sipCanConvertToType( PyList_GET_ITEM( sipPy, i ), sipType_QVariant, SIP_NOT_NONE ) )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(sipPy); ++i)
|
return 1;
|
||||||
if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_QVariant, SIP_NOT_NONE))
|
}
|
||||||
return 0;
|
|
||||||
|
|
||||||
return 1;
|
QgsAttributes *qv = new QgsAttributes;
|
||||||
}
|
|
||||||
|
|
||||||
QgsAttributes *qv = new QgsAttributes;
|
for ( SIP_SSIZE_T i = 0; i < PyList_GET_SIZE( sipPy ); ++i )
|
||||||
|
{
|
||||||
for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(sipPy); ++i)
|
int state;
|
||||||
|
PyObject *obj = PyList_GET_ITEM( sipPy, i );
|
||||||
|
QVariant *t;
|
||||||
|
if ( obj == Py_None )
|
||||||
{
|
{
|
||||||
int state;
|
t = new QVariant( QVariant::Int );
|
||||||
PyObject *obj = PyList_GET_ITEM(sipPy, i);
|
}
|
||||||
QVariant *t;
|
else
|
||||||
if ( obj == Py_None )
|
{
|
||||||
|
t = reinterpret_cast<QVariant *>( sipConvertToType( obj, sipType_QVariant, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr ) );
|
||||||
|
|
||||||
|
if ( *sipIsErr )
|
||||||
{
|
{
|
||||||
t = new QVariant( QVariant::Int );
|
sipReleaseType( t, sipType_QVariant, state );
|
||||||
|
|
||||||
|
delete qv;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
t = reinterpret_cast<QVariant *>(sipConvertToType(obj, sipType_QVariant, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
|
|
||||||
|
|
||||||
if (*sipIsErr)
|
|
||||||
{
|
|
||||||
sipReleaseType(t, sipType_QVariant, state);
|
|
||||||
|
|
||||||
delete qv;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
qv->append(*t);
|
|
||||||
|
|
||||||
sipReleaseType(t, sipType_QVariant, state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*sipCppPtr = qv;
|
qv->append( *t );
|
||||||
|
|
||||||
return sipGetState(sipTransferObj);
|
sipReleaseType( t, sipType_QVariant, state );
|
||||||
|
}
|
||||||
|
|
||||||
|
*sipCppPtr = qv;
|
||||||
|
|
||||||
|
return sipGetState( sipTransferObj );
|
||||||
%End
|
%End
|
||||||
};
|
};
|
||||||
|
|
||||||
// key = feature id, value = changed attributes
|
|
||||||
typedef QMap<qint64, QMap<int, QVariant> > QgsChangedAttributesMap;
|
|
||||||
|
|
||||||
// key = feature id, value = changed geometry
|
|
||||||
typedef QMap<qint64, QgsGeometry> QgsGeometryMap;
|
|
||||||
|
|
||||||
// key = field index, value = field name
|
|
||||||
typedef QMap<int, QString> QgsFieldNameMap;
|
|
||||||
|
|
||||||
typedef QList<QgsFeature> QgsFeatureList;
|
|
||||||
|
|
||||||
typedef QMap<int, QgsField> QgsFieldMap;
|
|
||||||
|
|
||||||
/** \ingroup core
|
|
||||||
* The feature class encapsulates a single feature including its id,
|
|
||||||
* geometry and a list of field/values attributes.
|
|
||||||
* \note QgsFeature objects are implicitly shared.
|
|
||||||
* @author Gary E.Sherman
|
|
||||||
*/
|
|
||||||
class QgsFeature
|
class QgsFeature
|
||||||
{
|
{
|
||||||
%TypeHeaderCode
|
|
||||||
#include <qgsfeature.h>
|
|
||||||
#if (SIP_VERSION >= 0x040900 && SIP_VERSION < 0x040c01)
|
|
||||||
#define sipType_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
|
|
||||||
#endif
|
|
||||||
%End
|
|
||||||
%Docstring
|
%Docstring
|
||||||
/** \ingroup core
|
|
||||||
The feature class encapsulates a single feature including its id,
|
The feature class encapsulates a single feature including its id,
|
||||||
geometry and a list of field/values attributes.
|
geometry and a list of field/values attributes.
|
||||||
\note QgsFeature objects are implicitly shared.
|
\note QgsFeature objects are implicitly shared.
|
||||||
@author Gary E.Sherman
|
@author Gary E.Sherman
|
||||||
/
|
|
||||||
|
|
||||||
|
|
||||||
|
%End
|
||||||
|
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include "qgsfeature.h"
|
||||||
|
#if (SIP_VERSION >= 0x040900 && SIP_VERSION < 0x040c01)
|
||||||
|
#define sipType_QVariant ((sipWrapperType *) sipTypeAsPyTypeObject (sipType_QVariant))
|
||||||
|
#endif
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
|
||||||
@ -130,101 +125,101 @@ class QgsFeature
|
|||||||
%MethodCode
|
%MethodCode
|
||||||
QgsAttributes attributes = sipCpp->attributes();
|
QgsAttributes attributes = sipCpp->attributes();
|
||||||
PyObject *attrs = sipConvertFromType( &attributes, sipType_QgsAttributes, Py_None );
|
PyObject *attrs = sipConvertFromType( &attributes, sipType_QgsAttributes, Py_None );
|
||||||
sipRes = PyObject_GetIter(attrs);
|
sipRes = PyObject_GetIter( attrs );
|
||||||
%End
|
%End
|
||||||
|
|
||||||
SIP_PYOBJECT __getitem__(int key);
|
SIP_PYOBJECT __getitem__( int key );
|
||||||
%MethodCode
|
%MethodCode
|
||||||
QgsAttributes attrs = sipCpp->attributes();
|
QgsAttributes attrs = sipCpp->attributes();
|
||||||
if (a0 < 0 || a0 >= attrs.count())
|
if ( a0 < 0 || a0 >= attrs.count() )
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_KeyError, QByteArray::number(a0));
|
|
||||||
sipIsErr = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
QVariant *v = new QVariant( attrs.at(a0) );
|
|
||||||
sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
|
|
||||||
}
|
|
||||||
%End
|
|
||||||
|
|
||||||
SIP_PYOBJECT __getitem__(const QString &name);
|
|
||||||
%MethodCode
|
|
||||||
int fieldIdx = sipCpp->fieldNameIndex(*a0);
|
|
||||||
if (fieldIdx == -1)
|
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_KeyError, a0->toAscii());
|
|
||||||
sipIsErr = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
QVariant *v = new QVariant( sipCpp->attribute(fieldIdx) );
|
|
||||||
sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
|
|
||||||
}
|
|
||||||
%End
|
|
||||||
|
|
||||||
void __setitem__(int key, QVariant value /GetWrapper/);
|
|
||||||
%MethodCode
|
|
||||||
bool rv;
|
|
||||||
|
|
||||||
if ( a1Wrapper == Py_None )
|
|
||||||
{
|
|
||||||
rv = sipCpp->setAttribute(a0, QVariant( QVariant::Int ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rv = sipCpp->setAttribute(a0, *a1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !rv )
|
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_KeyError, QByteArray::number(a0));
|
|
||||||
sipIsErr = 1;
|
|
||||||
}
|
|
||||||
%End
|
|
||||||
|
|
||||||
void __setitem__(const QString &key, QVariant value /GetWrapper/);
|
|
||||||
%MethodCode
|
|
||||||
int fieldIdx = sipCpp->fieldNameIndex(*a0);
|
|
||||||
if (fieldIdx == -1)
|
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_KeyError, a0->toAscii());
|
|
||||||
sipIsErr = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( a1Wrapper == Py_None )
|
|
||||||
{
|
{
|
||||||
sipCpp->setAttribute(*a0, QVariant( QVariant::Int ) );
|
PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
|
||||||
|
sipIsErr = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sipCpp->setAttribute(fieldIdx, *a1);
|
QVariant *v = new QVariant( attrs.at( a0 ) );
|
||||||
|
sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
%End
|
%End
|
||||||
|
|
||||||
void __delitem__(int key);
|
SIP_PYOBJECT __getitem__( const QString &name );
|
||||||
%MethodCode
|
%MethodCode
|
||||||
if (a0 >= 0 && a0 < sipCpp->attributes().count())
|
int fieldIdx = sipCpp->fieldNameIndex( *a0 );
|
||||||
sipCpp->deleteAttribute(a0);
|
if ( fieldIdx == -1 )
|
||||||
else
|
{
|
||||||
{
|
PyErr_SetString( PyExc_KeyError, a0->toAscii() );
|
||||||
PyErr_SetString(PyExc_KeyError, QByteArray::number(a0));
|
sipIsErr = 1;
|
||||||
sipIsErr = 1;
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
|
QVariant *v = new QVariant( sipCpp->attribute( fieldIdx ) );
|
||||||
|
sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
|
||||||
|
}
|
||||||
%End
|
%End
|
||||||
|
|
||||||
void __delitem__(const QString &name);
|
void __setitem__( int key, QVariant value /GetWrapper/ );
|
||||||
%MethodCode
|
%MethodCode
|
||||||
int fieldIdx = sipCpp->fieldNameIndex(*a0);
|
bool rv;
|
||||||
if (fieldIdx == -1)
|
|
||||||
{
|
if ( a1Wrapper == Py_None )
|
||||||
PyErr_SetString(PyExc_KeyError, a0->toAscii());
|
{
|
||||||
sipIsErr = 1;
|
rv = sipCpp->setAttribute( a0, QVariant( QVariant::Int ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sipCpp->deleteAttribute(fieldIdx);
|
{
|
||||||
|
rv = sipCpp->setAttribute( a0, *a1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !rv )
|
||||||
|
{
|
||||||
|
PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
|
||||||
|
sipIsErr = 1;
|
||||||
|
}
|
||||||
|
%End
|
||||||
|
|
||||||
|
void __setitem__( const QString &key, QVariant value /GetWrapper/ );
|
||||||
|
%MethodCode
|
||||||
|
int fieldIdx = sipCpp->fieldNameIndex( *a0 );
|
||||||
|
if ( fieldIdx == -1 )
|
||||||
|
{
|
||||||
|
PyErr_SetString( PyExc_KeyError, a0->toAscii() );
|
||||||
|
sipIsErr = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( a1Wrapper == Py_None )
|
||||||
|
{
|
||||||
|
sipCpp->setAttribute( *a0, QVariant( QVariant::Int ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sipCpp->setAttribute( fieldIdx, *a1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%End
|
||||||
|
|
||||||
|
void __delitem__( int key );
|
||||||
|
%MethodCode
|
||||||
|
if ( a0 >= 0 && a0 < sipCpp->attributes().count() )
|
||||||
|
sipCpp->deleteAttribute( a0 );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
|
||||||
|
sipIsErr = 1;
|
||||||
|
}
|
||||||
|
%End
|
||||||
|
|
||||||
|
void __delitem__( const QString &name );
|
||||||
|
%MethodCode
|
||||||
|
int fieldIdx = sipCpp->fieldNameIndex( *a0 );
|
||||||
|
if ( fieldIdx == -1 )
|
||||||
|
{
|
||||||
|
PyErr_SetString( PyExc_KeyError, a0->toAscii() );
|
||||||
|
sipIsErr = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sipCpp->deleteAttribute( fieldIdx );
|
||||||
%End
|
%End
|
||||||
|
|
||||||
QgsFeature( qint64 id = 0 );
|
QgsFeature( qint64 id = 0 );
|
||||||
@ -233,7 +228,16 @@ class QgsFeature
|
|||||||
|
|
||||||
QgsFeature( const QgsFeature &rhs );
|
QgsFeature( const QgsFeature &rhs );
|
||||||
|
|
||||||
~QgsFeature();
|
// QgsFeature &operator=( const QgsFeature &rhs ); // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
|
// bool operator==( const QgsFeature &other ) const; // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
|
// bool operator!=( const QgsFeature &other ) const; // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
|
virtual ~QgsFeature();
|
||||||
|
|
||||||
QgsFeatureId id() const;
|
QgsFeatureId id() const;
|
||||||
|
|
||||||
@ -243,39 +247,39 @@ class QgsFeature
|
|||||||
|
|
||||||
void setAttributes( const QgsAttributes &attrs );
|
void setAttributes( const QgsAttributes &attrs );
|
||||||
|
|
||||||
bool setAttribute( int field, const QVariant &attr /GetWrapper/);
|
bool setAttribute( int field, const QVariant &attr /GetWrapper/ );
|
||||||
%MethodCode
|
%MethodCode
|
||||||
bool rv;
|
bool rv;
|
||||||
|
|
||||||
if ( a1Wrapper == Py_None )
|
if ( a1Wrapper == Py_None )
|
||||||
{
|
{
|
||||||
rv = sipCpp->setAttribute(a0, QVariant( QVariant::Int ) );
|
rv = sipCpp->setAttribute( a0, QVariant( QVariant::Int ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rv = sipCpp->setAttribute(a0, *a1);
|
rv = sipCpp->setAttribute( a0, *a1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !rv )
|
if ( !rv )
|
||||||
{
|
{
|
||||||
PyErr_SetString(PyExc_KeyError, QByteArray::number(a0));
|
PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
|
||||||
sipIsErr = 1;
|
sipIsErr = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
sipRes = rv;
|
sipRes = rv;
|
||||||
%End
|
%End
|
||||||
|
|
||||||
void initAttributes( int fieldCount );
|
void initAttributes( int fieldCount );
|
||||||
|
|
||||||
void deleteAttribute( int field );
|
void deleteAttribute( int field );
|
||||||
%MethodCode
|
%MethodCode
|
||||||
if ( a0 >= 0 && a0 < sipCpp->attributes().count() )
|
if ( a0 >= 0 && a0 < sipCpp->attributes().count() )
|
||||||
sipCpp->deleteAttribute(a0);
|
sipCpp->deleteAttribute( a0 );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PyErr_SetString(PyExc_KeyError, QByteArray::number(a0));
|
PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
|
||||||
sipIsErr = 1;
|
sipIsErr = 1;
|
||||||
}
|
}
|
||||||
%End
|
%End
|
||||||
|
|
||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
@ -296,77 +300,97 @@ class QgsFeature
|
|||||||
|
|
||||||
void setAttribute( const QString &name, const QVariant &value /GetWrapper/ );
|
void setAttribute( const QString &name, const QVariant &value /GetWrapper/ );
|
||||||
%MethodCode
|
%MethodCode
|
||||||
int fieldIdx = sipCpp->fieldNameIndex(*a0);
|
int fieldIdx = sipCpp->fieldNameIndex( *a0 );
|
||||||
if (fieldIdx == -1)
|
if ( fieldIdx == -1 )
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_KeyError, a0->toAscii());
|
|
||||||
sipIsErr = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( a1Wrapper == Py_None )
|
|
||||||
{
|
{
|
||||||
sipCpp->setAttribute(*a0, QVariant( QVariant::Int ) );
|
PyErr_SetString( PyExc_KeyError, a0->toAscii() );
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sipCpp->setAttribute(fieldIdx, *a1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
%End
|
|
||||||
|
|
||||||
bool deleteAttribute( const QString &name );
|
|
||||||
%MethodCode
|
|
||||||
int fieldIdx = sipCpp->fieldNameIndex(*a0);
|
|
||||||
if (fieldIdx == -1)
|
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_KeyError, a0->toAscii());
|
|
||||||
sipIsErr = 1;
|
|
||||||
sipRes = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sipCpp->deleteAttribute( fieldIdx );
|
|
||||||
sipRes = true;
|
|
||||||
}
|
|
||||||
%End
|
|
||||||
|
|
||||||
SIP_PYOBJECT attribute( const QString &name ) const;
|
|
||||||
%MethodCode
|
|
||||||
int fieldIdx = sipCpp->fieldNameIndex(*a0);
|
|
||||||
if (fieldIdx == -1)
|
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_KeyError, a0->toAscii());
|
|
||||||
sipIsErr = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
QVariant *v = new QVariant( sipCpp->attribute(fieldIdx) );
|
|
||||||
sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
|
|
||||||
}
|
|
||||||
%End
|
|
||||||
|
|
||||||
SIP_PYOBJECT attribute( int fieldIdx ) const;
|
|
||||||
%MethodCode
|
|
||||||
{
|
|
||||||
if (a0 < 0 || a0 >= sipCpp->attributes().count())
|
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_KeyError, QByteArray::number(a0));
|
|
||||||
sipIsErr = 1;
|
sipIsErr = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
QVariant *v = new QVariant( sipCpp->attribute(a0) );
|
if ( a1Wrapper == Py_None )
|
||||||
|
{
|
||||||
|
sipCpp->setAttribute( *a0, QVariant( QVariant::Int ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sipCpp->setAttribute( fieldIdx, *a1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%End
|
||||||
|
|
||||||
|
bool deleteAttribute( const QString &name );
|
||||||
|
%MethodCode
|
||||||
|
int fieldIdx = sipCpp->fieldNameIndex( *a0 );
|
||||||
|
if ( fieldIdx == -1 )
|
||||||
|
{
|
||||||
|
PyErr_SetString( PyExc_KeyError, a0->toAscii() );
|
||||||
|
sipIsErr = 1;
|
||||||
|
sipRes = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sipCpp->deleteAttribute( fieldIdx );
|
||||||
|
sipRes = true;
|
||||||
|
}
|
||||||
|
%End
|
||||||
|
|
||||||
|
SIP_PYOBJECT attribute( const QString &name ) const;
|
||||||
|
%MethodCode
|
||||||
|
int fieldIdx = sipCpp->fieldNameIndex( *a0 );
|
||||||
|
if ( fieldIdx == -1 )
|
||||||
|
{
|
||||||
|
PyErr_SetString( PyExc_KeyError, a0->toAscii() );
|
||||||
|
sipIsErr = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QVariant *v = new QVariant( sipCpp->attribute( fieldIdx ) );
|
||||||
sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
|
sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
|
||||||
}
|
}
|
||||||
}
|
%End
|
||||||
|
|
||||||
|
SIP_PYOBJECT attribute( int fieldIdx ) const;
|
||||||
|
%MethodCode
|
||||||
|
{
|
||||||
|
if ( a0 < 0 || a0 >= sipCpp->attributes().count() )
|
||||||
|
{
|
||||||
|
PyErr_SetString( PyExc_KeyError, QByteArray::number( a0 ) );
|
||||||
|
sipIsErr = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QVariant *v = new QVariant( sipCpp->attribute( a0 ) );
|
||||||
|
sipRes = sipConvertFromNewType( v, sipType_QVariant, Py_None );
|
||||||
|
}
|
||||||
|
}
|
||||||
%End
|
%End
|
||||||
|
|
||||||
int fieldNameIndex( const QString &fieldName ) const;
|
int fieldNameIndex( const QString &fieldName ) const;
|
||||||
|
|
||||||
//! Allows direct construction of QVariants from features.
|
|
||||||
operator QVariant() const;
|
operator QVariant() const;
|
||||||
|
|
||||||
}; // class QgsFeature
|
}; // class QgsFeature
|
||||||
|
|
||||||
|
// CORE_EXPORT QDataStream &operator<<( QDataStream &out, const QgsFeature &feature ); // SIP_SKIP
|
||||||
|
|
||||||
|
// CORE_EXPORT QDataStream &operator>>( QDataStream &in, QgsFeature &feature ); // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
|
typedef QMap<qint64, QMap<int, QVariant> > QgsChangedAttributesMap;
|
||||||
|
|
||||||
|
typedef QMap<qint64, QgsGeometry> QgsGeometryMap;
|
||||||
|
|
||||||
typedef QSet<qint64> QgsFeatureIds;
|
typedef QSet<qint64> QgsFeatureIds;
|
||||||
|
|
||||||
|
typedef QMap<int, QString> QgsFieldNameMap;
|
||||||
|
|
||||||
|
|
||||||
|
typedef QMap<int, QgsField> QgsFieldMap;
|
||||||
|
|
||||||
|
typedef QList<QgsFeature> QgsFeatureList;
|
||||||
|
|
||||||
|
// uint qHash( const QgsFeature &key, uint seed = 0 ); // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,290 +1,307 @@
|
|||||||
|
/******************************************************************
|
||||||
|
* This file has been generated automatically by sipify.pl *
|
||||||
|
* Do not edit manually ! Edit header file and generate it again. *
|
||||||
|
*****************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef QList<int> QgsAttributeList;
|
typedef QList<int> QgsAttributeList;
|
||||||
typedef QSet<int> QgsAttributeIds;
|
typedef QSet<int> QgsAttributeIds;
|
||||||
|
typedef QList<QgsPointV2> QgsPointSequence;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** \ingroup core
|
|
||||||
* Represents a vector layer which manages a vector based data sets.
|
|
||||||
*
|
|
||||||
* The QgsVectorLayer is instantiated by specifying the name of a data provider,
|
|
||||||
* such as postgres or wfs, and url defining the specific data set to connect to.
|
|
||||||
* The vector layer constructor in turn instantiates a QgsVectorDataProvider subclass
|
|
||||||
* corresponding to the provider type, and passes it the url. The data provider
|
|
||||||
* connects to the data source.
|
|
||||||
*
|
|
||||||
* The QgsVectorLayer provides a common interface to the different data types. It also
|
|
||||||
* manages editing transactions.
|
|
||||||
*
|
|
||||||
* Sample usage of the QgsVectorLayer class:
|
|
||||||
*
|
|
||||||
* \code
|
|
||||||
* QString uri = "point?crs=epsg:4326&field=id:integer";
|
|
||||||
* QgsVectorLayer *scratchLayer = new QgsVectorLayer(uri, "Scratch point layer", "memory");
|
|
||||||
* \endcode
|
|
||||||
*
|
|
||||||
* The main data providers supported by QGIS are listed below.
|
|
||||||
*
|
|
||||||
* \section providers Vector data providers
|
|
||||||
*
|
|
||||||
* \subsection memory Memory data providerType (memory)
|
|
||||||
*
|
|
||||||
* The memory data provider is used to construct in memory data, for example scratch
|
|
||||||
* data or data generated from spatial operations such as contouring. There is no
|
|
||||||
* inherent persistent storage of the data. The data source uri is constructed. The
|
|
||||||
* url specifies the geometry type ("point", "linestring", "polygon",
|
|
||||||
* "multipoint","multilinestring","multipolygon"), optionally followed by url parameters
|
|
||||||
* as follows:
|
|
||||||
*
|
|
||||||
* - crs=definition
|
|
||||||
* Defines the coordinate reference system to use for the layer.
|
|
||||||
* definition is any string accepted by QgsCoordinateReferenceSystem::createFromString()
|
|
||||||
*
|
|
||||||
* - index=yes
|
|
||||||
* Specifies that the layer will be constructed with a spatial index
|
|
||||||
*
|
|
||||||
* - field=name:type(length,precision)
|
|
||||||
* Defines an attribute of the layer. Multiple field parameters can be added
|
|
||||||
* to the data provider definition. type is one of "integer", "double", "string".
|
|
||||||
*
|
|
||||||
* An example url is "Point?crs=epsg:4326&field=id:integer&field=name:string(20)&index=yes"
|
|
||||||
*
|
|
||||||
* \subsection ogr OGR data provider (ogr)
|
|
||||||
*
|
|
||||||
* Accesses data using the OGR drivers (http://www.gdal.org/ogr/ogr_formats.html). The url
|
|
||||||
* is the OGR connection string. A wide variety of data formats can be accessed using this
|
|
||||||
* driver, including file based formats used by many GIS systems, database formats, and
|
|
||||||
* web services. Some of these formats are also supported by custom data providers listed
|
|
||||||
* below.
|
|
||||||
*
|
|
||||||
* \subsection spatialite Spatialite data provider (spatialite)
|
|
||||||
*
|
|
||||||
* Access data in a spatialite database. The url defines the connection parameters, table,
|
|
||||||
* geometry column, and other attributes. The url can be constructed using the
|
|
||||||
* QgsDataSourceUri class.
|
|
||||||
*
|
|
||||||
* \subsection postgres Postgresql data provider (postgres)
|
|
||||||
*
|
|
||||||
* Connects to a postgresql database. The url defines the connection parameters, table,
|
|
||||||
* geometry column, and other attributes. The url can be constructed using the
|
|
||||||
* QgsDataSourceUri class.
|
|
||||||
*
|
|
||||||
* \subsection mssql Microsoft SQL server data provider (mssql)
|
|
||||||
*
|
|
||||||
* Connects to a Microsoft SQL server database. The url defines the connection parameters, table,
|
|
||||||
* geometry column, and other attributes. The url can be constructed using the
|
|
||||||
* QgsDataSourceUri class.
|
|
||||||
*
|
|
||||||
* \subsection wfs WFS (web feature service) data provider (wfs)
|
|
||||||
*
|
|
||||||
* Used to access data provided by a web feature service.
|
|
||||||
*
|
|
||||||
* The url can be a HTTP url to a WFS server (legacy, e.g. http://foobar/wfs?TYPENAME=xxx&SRSNAME=yyy[&FILTER=zzz]), or,
|
|
||||||
* starting with QGIS 2.16, a URI constructed using the QgsDataSourceUri class with the following parameters :
|
|
||||||
* - url=string (mandatory): HTTP url to a WFS server endpoint. e.g http://foobar/wfs
|
|
||||||
* - typename=string (mandatory): WFS typename
|
|
||||||
* - srsname=string (recommended): SRS like 'EPSG:XXXX'
|
|
||||||
* - username=string
|
|
||||||
* - password=string
|
|
||||||
* - authcfg=string
|
|
||||||
* - version=auto/1.0.0/1.1.0/2.0.0
|
|
||||||
* -sql=string: full SELECT SQL statement with optional WHERE, ORDER BY and possibly with JOIN if supported on server
|
|
||||||
* - filter=string: QGIS expression or OGC/FES filter
|
|
||||||
* - retrictToRequestBBOX=1: to download only features in the view extent (or more generally
|
|
||||||
* in the bounding box of the feature iterator)
|
|
||||||
* - maxNumFeatures=number
|
|
||||||
* - IgnoreAxisOrientation=1: to ignore EPSG axis order for WFS 1.1 or 2.0
|
|
||||||
* - InvertAxisOrientation=1: to invert axis order
|
|
||||||
* - hideDownloadProgressDialog=1: to hide the download progress dialog
|
|
||||||
*
|
|
||||||
* The ‘FILTER’ query string parameter can be used to filter
|
|
||||||
* the WFS feature type. The ‘FILTER’ key value can either be a QGIS expression
|
|
||||||
* or an OGC XML filter. If the value is set to a QGIS expression the driver will
|
|
||||||
* turn it into OGC XML filter before passing it to the WFS server. Beware the
|
|
||||||
* QGIS expression filter only supports” =, !=, <, >, <=, >=, AND, OR, NOT, LIKE, IS NULL”
|
|
||||||
* attribute operators, “BBOX, Disjoint, Intersects, Touches, Crosses, Contains, Overlaps, Within”
|
|
||||||
* spatial binary operators and the QGIS local “geomFromWKT, geomFromGML”
|
|
||||||
* geometry constructor functions.
|
|
||||||
*
|
|
||||||
* Also note:
|
|
||||||
*
|
|
||||||
* - You can use various functions available in the QGIS Expression list,
|
|
||||||
* however the function must exist server side and have the same name and arguments to work.
|
|
||||||
*
|
|
||||||
* - Use the special $geometry parameter to provide the layer geometry column as input
|
|
||||||
* into the spatial binary operators e.g intersects($geometry, geomFromWKT('POINT (5 6)'))
|
|
||||||
*
|
|
||||||
* \subsection delimitedtext Delimited text file data provider (delimitedtext)
|
|
||||||
*
|
|
||||||
* Accesses data in a delimited text file, for example CSV files generated by
|
|
||||||
* spreadsheets. The contents of the file are split into columns based on specified
|
|
||||||
* delimiter characters. Each record may be represented spatially either by an
|
|
||||||
* X and Y coordinate column, or by a WKT (well known text) formatted columns.
|
|
||||||
*
|
|
||||||
* The url defines the filename, the formatting options (how the
|
|
||||||
* text in the file is divided into data fields, and which fields contain the
|
|
||||||
* X,Y coordinates or WKT text definition. The options are specified as url query
|
|
||||||
* items.
|
|
||||||
*
|
|
||||||
* At its simplest the url can just be the filename, in which case it will be loaded
|
|
||||||
* as a CSV formatted file.
|
|
||||||
*
|
|
||||||
* The url may include the following items:
|
|
||||||
*
|
|
||||||
* - encoding=UTF-8
|
|
||||||
*
|
|
||||||
* Defines the character encoding in the file. The default is UTF-8. To use
|
|
||||||
* the default encoding for the operating system use "System".
|
|
||||||
*
|
|
||||||
* - type=(csv|regexp|whitespace|plain)
|
|
||||||
*
|
|
||||||
* Defines the algorithm used to split records into columns. Records are
|
|
||||||
* defined by new lines, except for csv format files for which quoted fields
|
|
||||||
* may span multiple records. The default type is csv.
|
|
||||||
*
|
|
||||||
* - "csv" splits the file based on three sets of characters:
|
|
||||||
* delimiter characters, quote characters,
|
|
||||||
* and escape characters. Delimiter characters mark the end
|
|
||||||
* of a field. Quote characters enclose a field which can contain
|
|
||||||
* delimiter characters, and newlines. Escape characters cause the
|
|
||||||
* following character to be treated literally (including delimiter,
|
|
||||||
* quote, and newline characters). Escape and quote characters must
|
|
||||||
* be different from delimiter characters. Escape characters that are
|
|
||||||
* also quote characters are treated specially - they can only
|
|
||||||
* escape themselves within quotes. Elsewhere they are treated as
|
|
||||||
* quote characters. The defaults for delimiter, quote, and escape
|
|
||||||
* are ',', '"', '"'.
|
|
||||||
* - "regexp" splits each record using a regular expression (see QRegExp
|
|
||||||
* documentation for details).
|
|
||||||
* - "whitespace" splits each record based on whitespace (on or more whitespace
|
|
||||||
* characters. Leading whitespace in the record is ignored.
|
|
||||||
* - "plain" is provided for backwards compatibility. It is equivalent to
|
|
||||||
* CSV except that the default quote characters are single and double quotes,
|
|
||||||
* and there is no escape characters.
|
|
||||||
*
|
|
||||||
* - delimiter=characters
|
|
||||||
*
|
|
||||||
* Defines the delimiter characters used for csv and plain type files, or the
|
|
||||||
* regular expression for regexp type files. It is a literal string of characters
|
|
||||||
* except that "\t" may be used to represent a tab character.
|
|
||||||
*
|
|
||||||
* - quote=characters
|
|
||||||
*
|
|
||||||
* Defines the characters that are used as quote characters for csv and plain type
|
|
||||||
* files.
|
|
||||||
*
|
|
||||||
* - escape=characters
|
|
||||||
*
|
|
||||||
* Defines the characters used to escape delimiter, quote, and newline characters.
|
|
||||||
*
|
|
||||||
* - skipLines=n
|
|
||||||
*
|
|
||||||
* Defines the number of lines to ignore at the beginning of the file (default 0)
|
|
||||||
*
|
|
||||||
* - useHeader=(yes|no)
|
|
||||||
*
|
|
||||||
* Defines whether the first record in the file (after skipped lines) contains
|
|
||||||
* column names (default yes)
|
|
||||||
*
|
|
||||||
* - trimFields=(yes|no)
|
|
||||||
*
|
|
||||||
* If yes then leading and trailing whitespace will be removed from fields
|
|
||||||
*
|
|
||||||
* - skipEmptyFields=(yes|no)
|
|
||||||
*
|
|
||||||
* If yes then empty fields will be discarded (equivalent to concatenating consecutive
|
|
||||||
* delimiters)
|
|
||||||
*
|
|
||||||
* - maxFields=#
|
|
||||||
*
|
|
||||||
* Specifies the maximum number of fields to load for each record. Additional
|
|
||||||
* fields will be discarded. Default is 0 - load all fields.
|
|
||||||
*
|
|
||||||
* - decimalPoint=c
|
|
||||||
*
|
|
||||||
* Defines a character that is used as a decimal point in the numeric columns
|
|
||||||
* The default is '.'.
|
|
||||||
*
|
|
||||||
* - xField=column yField=column
|
|
||||||
*
|
|
||||||
* Defines the name of the columns holding the x and y coordinates for XY point geometries.
|
|
||||||
* If the useHeader is no (ie there are no column names), then this is the column
|
|
||||||
* number (with the first column as 1).
|
|
||||||
*
|
|
||||||
* - xyDms=(yes|no)
|
|
||||||
*
|
|
||||||
* If yes then the X and Y coordinates are interpreted as
|
|
||||||
* degrees/minutes/seconds format (fairly permissively),
|
|
||||||
* or degree/minutes format.
|
|
||||||
*
|
|
||||||
* - wktField=column
|
|
||||||
*
|
|
||||||
* Defines the name of the columns holding the WKT geometry definition for WKT geometries.
|
|
||||||
* If the useHeader is no (ie there are no column names), then this is the column
|
|
||||||
* number (with the first column as 1).
|
|
||||||
*
|
|
||||||
* - geomType=(point|line|polygon|none)
|
|
||||||
*
|
|
||||||
* Defines the geometry type for WKT type geometries. QGIS will only display one
|
|
||||||
* type of geometry for the layer - any others will be ignored when the file is
|
|
||||||
* loaded. By default the provider uses the type of the first geometry in the file.
|
|
||||||
* Use geomType to override this type.
|
|
||||||
*
|
|
||||||
* geomType can also be set to none, in which case the layer is loaded without
|
|
||||||
* geometries.
|
|
||||||
*
|
|
||||||
* - subset=expression
|
|
||||||
*
|
|
||||||
* Defines an expression that will identify a subset of records to display
|
|
||||||
*
|
|
||||||
* - crs=crsstring
|
|
||||||
*
|
|
||||||
* Defines the coordinate reference system used for the layer. This can be
|
|
||||||
* any string accepted by QgsCoordinateReferenceSystem::createFromString()
|
|
||||||
*
|
|
||||||
* -subsetIndex=(yes|no)
|
|
||||||
*
|
|
||||||
* Determines whether the provider generates an index to improve the efficiency
|
|
||||||
* of subsets. The default is yes
|
|
||||||
*
|
|
||||||
* -spatialIndex=(yes|no)
|
|
||||||
*
|
|
||||||
* Determines whether the provider generates a spatial index. The default is no.
|
|
||||||
*
|
|
||||||
* -watchFile=(yes|no)
|
|
||||||
*
|
|
||||||
* Defines whether the file will be monitored for changes. The default is
|
|
||||||
* to monitor for changes.
|
|
||||||
*
|
|
||||||
* - quiet
|
|
||||||
*
|
|
||||||
* Errors encountered loading the file will not be reported in a user dialog if
|
|
||||||
* quiet is included (They will still be shown in the output log).
|
|
||||||
*
|
|
||||||
* \subsection gpx GPX data provider (gpx)
|
|
||||||
*
|
|
||||||
* Provider reads tracks, routes, and waypoints from a GPX file. The url
|
|
||||||
* defines the name of the file, and the type of data to retrieve from it
|
|
||||||
* ("track", "route", or "waypoint").
|
|
||||||
*
|
|
||||||
* An example url is "/home/user/data/holiday.gpx?type=route"
|
|
||||||
*
|
|
||||||
* \subsection grass Grass data provider (grass)
|
|
||||||
*
|
|
||||||
* Provider to display vector data in a GRASS GIS layer.
|
|
||||||
*
|
|
||||||
* TODO QGIS3: Remove virtual from non-inherited methods (like isModified)
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
||||||
{
|
{
|
||||||
|
%Docstring
|
||||||
|
Represents a vector layer which manages a vector based data sets.
|
||||||
|
|
||||||
|
The QgsVectorLayer is instantiated by specifying the name of a data provider,
|
||||||
|
such as postgres or wfs, and url defining the specific data set to connect to.
|
||||||
|
The vector layer constructor in turn instantiates a QgsVectorDataProvider subclass
|
||||||
|
corresponding to the provider type, and passes it the url. The data provider
|
||||||
|
connects to the data source.
|
||||||
|
|
||||||
|
The QgsVectorLayer provides a common interface to the different data types. It also
|
||||||
|
manages editing transactions.
|
||||||
|
|
||||||
|
Sample usage of the QgsVectorLayer class:
|
||||||
|
|
||||||
|
\code
|
||||||
|
QString uri = "point?crs=epsg:4326&field=id:integer";
|
||||||
|
QgsVectorLayer *scratchLayer = new QgsVectorLayer(uri, "Scratch point layer", "memory");
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The main data providers supported by QGIS are listed below.
|
||||||
|
|
||||||
|
\section providers Vector data providers
|
||||||
|
|
||||||
|
\subsection memory Memory data providerType (memory)
|
||||||
|
|
||||||
|
The memory data provider is used to construct in memory data, for example scratch
|
||||||
|
data or data generated from spatial operations such as contouring. There is no
|
||||||
|
inherent persistent storage of the data. The data source uri is constructed. The
|
||||||
|
url specifies the geometry type ("point", "linestring", "polygon",
|
||||||
|
"multipoint","multilinestring","multipolygon"), optionally followed by url parameters
|
||||||
|
as follows:
|
||||||
|
|
||||||
|
- crs=definition
|
||||||
|
Defines the coordinate reference system to use for the layer.
|
||||||
|
definition is any string accepted by QgsCoordinateReferenceSystem::createFromString()
|
||||||
|
|
||||||
|
- index=yes
|
||||||
|
Specifies that the layer will be constructed with a spatial index
|
||||||
|
|
||||||
|
- field=name:type(length,precision)
|
||||||
|
Defines an attribute of the layer. Multiple field parameters can be added
|
||||||
|
to the data provider definition. type is one of "integer", "double", "string".
|
||||||
|
|
||||||
|
An example url is "Point?crs=epsg:4326&field=id:integer&field=name:string(20)&index=yes"
|
||||||
|
|
||||||
|
\subsection ogr OGR data provider (ogr)
|
||||||
|
|
||||||
|
Accesses data using the OGR drivers (http://www.gdal.org/ogr/ogr_formats.html). The url
|
||||||
|
is the OGR connection string. A wide variety of data formats can be accessed using this
|
||||||
|
driver, including file based formats used by many GIS systems, database formats, and
|
||||||
|
web services. Some of these formats are also supported by custom data providers listed
|
||||||
|
below.
|
||||||
|
|
||||||
|
\subsection spatialite Spatialite data provider (spatialite)
|
||||||
|
|
||||||
|
Access data in a spatialite database. The url defines the connection parameters, table,
|
||||||
|
geometry column, and other attributes. The url can be constructed using the
|
||||||
|
QgsDataSourceUri class.
|
||||||
|
|
||||||
|
\subsection postgres Postgresql data provider (postgres)
|
||||||
|
|
||||||
|
Connects to a postgresql database. The url defines the connection parameters, table,
|
||||||
|
geometry column, and other attributes. The url can be constructed using the
|
||||||
|
QgsDataSourceUri class.
|
||||||
|
|
||||||
|
\subsection mssql Microsoft SQL server data provider (mssql)
|
||||||
|
|
||||||
|
Connects to a Microsoft SQL server database. The url defines the connection parameters, table,
|
||||||
|
geometry column, and other attributes. The url can be constructed using the
|
||||||
|
QgsDataSourceUri class.
|
||||||
|
|
||||||
|
\subsection wfs WFS (web feature service) data provider (wfs)
|
||||||
|
|
||||||
|
Used to access data provided by a web feature service.
|
||||||
|
|
||||||
|
The url can be a HTTP url to a WFS server (legacy, e.g. http://foobar/wfs?TYPENAME=xxx&SRSNAME=yyy[&FILTER=zzz]), or,
|
||||||
|
starting with QGIS 2.16, a URI constructed using the QgsDataSourceUri class with the following parameters :
|
||||||
|
- url=string (mandatory): HTTP url to a WFS server endpoint. e.g http://foobar/wfs
|
||||||
|
- typename=string (mandatory): WFS typename
|
||||||
|
- srsname=string (recommended): SRS like 'EPSG:XXXX'
|
||||||
|
- username=string
|
||||||
|
- password=string
|
||||||
|
- authcfg=string
|
||||||
|
- version=auto/1.0.0/1.1.0/2.0.0
|
||||||
|
-sql=string: full SELECT SQL statement with optional WHERE, ORDER BY and possibly with JOIN if supported on server
|
||||||
|
- filter=string: QGIS expression or OGC/FES filter
|
||||||
|
- restrictToRequestBBOX=1: to download only features in the view extent (or more generally
|
||||||
|
in the bounding box of the feature iterator)
|
||||||
|
- maxNumFeatures=number
|
||||||
|
- IgnoreAxisOrientation=1: to ignore EPSG axis order for WFS 1.1 or 2.0
|
||||||
|
- InvertAxisOrientation=1: to invert axis order
|
||||||
|
- hideDownloadProgressDialog=1: to hide the download progress dialog
|
||||||
|
|
||||||
|
The ‘FILTER’ query string parameter can be used to filter
|
||||||
|
the WFS feature type. The ‘FILTER’ key value can either be a QGIS expression
|
||||||
|
or an OGC XML filter. If the value is set to a QGIS expression the driver will
|
||||||
|
turn it into OGC XML filter before passing it to the WFS server. Beware the
|
||||||
|
QGIS expression filter only supports” =, !=, <, >, <=, >=, AND, OR, NOT, LIKE, IS NULL”
|
||||||
|
attribute operators, “BBOX, Disjoint, Intersects, Touches, Crosses, Contains, Overlaps, Within”
|
||||||
|
spatial binary operators and the QGIS local “geomFromWKT, geomFromGML”
|
||||||
|
geometry constructor functions.
|
||||||
|
|
||||||
|
Also note:
|
||||||
|
|
||||||
|
- You can use various functions available in the QGIS Expression list,
|
||||||
|
however the function must exist server side and have the same name and arguments to work.
|
||||||
|
|
||||||
|
- Use the special $geometry parameter to provide the layer geometry column as input
|
||||||
|
into the spatial binary operators e.g intersects($geometry, geomFromWKT('POINT (5 6)'))
|
||||||
|
|
||||||
|
\subsection delimitedtext Delimited text file data provider (delimitedtext)
|
||||||
|
|
||||||
|
Accesses data in a delimited text file, for example CSV files generated by
|
||||||
|
spreadsheets. The contents of the file are split into columns based on specified
|
||||||
|
delimiter characters. Each record may be represented spatially either by an
|
||||||
|
X and Y coordinate column, or by a WKT (well known text) formatted columns.
|
||||||
|
|
||||||
|
The url defines the filename, the formatting options (how the
|
||||||
|
text in the file is divided into data fields, and which fields contain the
|
||||||
|
X,Y coordinates or WKT text definition. The options are specified as url query
|
||||||
|
items.
|
||||||
|
|
||||||
|
At its simplest the url can just be the filename, in which case it will be loaded
|
||||||
|
as a CSV formatted file.
|
||||||
|
|
||||||
|
The url may include the following items:
|
||||||
|
|
||||||
|
- encoding=UTF-8
|
||||||
|
|
||||||
|
Defines the character encoding in the file. The default is UTF-8. To use
|
||||||
|
the default encoding for the operating system use "System".
|
||||||
|
|
||||||
|
- type=(csv|regexp|whitespace|plain)
|
||||||
|
|
||||||
|
Defines the algorithm used to split records into columns. Records are
|
||||||
|
defined by new lines, except for csv format files for which quoted fields
|
||||||
|
may span multiple records. The default type is csv.
|
||||||
|
|
||||||
|
- "csv" splits the file based on three sets of characters:
|
||||||
|
delimiter characters, quote characters,
|
||||||
|
and escape characters. Delimiter characters mark the end
|
||||||
|
of a field. Quote characters enclose a field which can contain
|
||||||
|
delimiter characters, and newlines. Escape characters cause the
|
||||||
|
following character to be treated literally (including delimiter,
|
||||||
|
quote, and newline characters). Escape and quote characters must
|
||||||
|
be different from delimiter characters. Escape characters that are
|
||||||
|
also quote characters are treated specially - they can only
|
||||||
|
escape themselves within quotes. Elsewhere they are treated as
|
||||||
|
quote characters. The defaults for delimiter, quote, and escape
|
||||||
|
are ',', '"', '"'.
|
||||||
|
- "regexp" splits each record using a regular expression (see QRegExp
|
||||||
|
documentation for details).
|
||||||
|
- "whitespace" splits each record based on whitespace (on or more whitespace
|
||||||
|
characters. Leading whitespace in the record is ignored.
|
||||||
|
- "plain" is provided for backwards compatibility. It is equivalent to
|
||||||
|
CSV except that the default quote characters are single and double quotes,
|
||||||
|
and there is no escape characters.
|
||||||
|
|
||||||
|
- delimiter=characters
|
||||||
|
|
||||||
|
Defines the delimiter characters used for csv and plain type files, or the
|
||||||
|
regular expression for regexp type files. It is a literal string of characters
|
||||||
|
except that "\t" may be used to represent a tab character.
|
||||||
|
|
||||||
|
- quote=characters
|
||||||
|
|
||||||
|
Defines the characters that are used as quote characters for csv and plain type
|
||||||
|
files.
|
||||||
|
|
||||||
|
- escape=characters
|
||||||
|
|
||||||
|
Defines the characters used to escape delimiter, quote, and newline characters.
|
||||||
|
|
||||||
|
- skipLines=n
|
||||||
|
|
||||||
|
Defines the number of lines to ignore at the beginning of the file (default 0)
|
||||||
|
|
||||||
|
- useHeader=(yes|no)
|
||||||
|
|
||||||
|
Defines whether the first record in the file (after skipped lines) contains
|
||||||
|
column names (default yes)
|
||||||
|
|
||||||
|
- trimFields=(yes|no)
|
||||||
|
|
||||||
|
If yes then leading and trailing whitespace will be removed from fields
|
||||||
|
|
||||||
|
- skipEmptyFields=(yes|no)
|
||||||
|
|
||||||
|
If yes then empty fields will be discarded (equivalent to concatenating consecutive
|
||||||
|
delimiters)
|
||||||
|
|
||||||
|
- maxFields=#
|
||||||
|
|
||||||
|
Specifies the maximum number of fields to load for each record. Additional
|
||||||
|
fields will be discarded. Default is 0 - load all fields.
|
||||||
|
|
||||||
|
- decimalPoint=c
|
||||||
|
|
||||||
|
Defines a character that is used as a decimal point in the numeric columns
|
||||||
|
The default is '.'.
|
||||||
|
|
||||||
|
- xField=column yField=column
|
||||||
|
|
||||||
|
Defines the name of the columns holding the x and y coordinates for XY point geometries.
|
||||||
|
If the useHeader is no (ie there are no column names), then this is the column
|
||||||
|
number (with the first column as 1).
|
||||||
|
|
||||||
|
- xyDms=(yes|no)
|
||||||
|
|
||||||
|
If yes then the X and Y coordinates are interpreted as
|
||||||
|
degrees/minutes/seconds format (fairly permissively),
|
||||||
|
or degree/minutes format.
|
||||||
|
|
||||||
|
- wktField=column
|
||||||
|
|
||||||
|
Defines the name of the columns holding the WKT geometry definition for WKT geometries.
|
||||||
|
If the useHeader is no (ie there are no column names), then this is the column
|
||||||
|
number (with the first column as 1).
|
||||||
|
|
||||||
|
- geomType=(point|line|polygon|none)
|
||||||
|
|
||||||
|
Defines the geometry type for WKT type geometries. QGIS will only display one
|
||||||
|
type of geometry for the layer - any others will be ignored when the file is
|
||||||
|
loaded. By default the provider uses the type of the first geometry in the file.
|
||||||
|
Use geomType to override this type.
|
||||||
|
|
||||||
|
geomType can also be set to none, in which case the layer is loaded without
|
||||||
|
geometries.
|
||||||
|
|
||||||
|
- subset=expression
|
||||||
|
|
||||||
|
Defines an expression that will identify a subset of records to display
|
||||||
|
|
||||||
|
- crs=crsstring
|
||||||
|
|
||||||
|
Defines the coordinate reference system used for the layer. This can be
|
||||||
|
any string accepted by QgsCoordinateReferenceSystem::createFromString()
|
||||||
|
|
||||||
|
-subsetIndex=(yes|no)
|
||||||
|
|
||||||
|
Determines whether the provider generates an index to improve the efficiency
|
||||||
|
of subsets. The default is yes
|
||||||
|
|
||||||
|
-spatialIndex=(yes|no)
|
||||||
|
|
||||||
|
Determines whether the provider generates a spatial index. The default is no.
|
||||||
|
|
||||||
|
-watchFile=(yes|no)
|
||||||
|
|
||||||
|
Defines whether the file will be monitored for changes. The default is
|
||||||
|
to monitor for changes.
|
||||||
|
|
||||||
|
- quiet
|
||||||
|
|
||||||
|
Errors encountered loading the file will not be reported in a user dialog if
|
||||||
|
quiet is included (They will still be shown in the output log).
|
||||||
|
|
||||||
|
\subsection gpx GPX data provider (gpx)
|
||||||
|
|
||||||
|
Provider reads tracks, routes, and waypoints from a GPX file. The url
|
||||||
|
defines the name of the file, and the type of data to retrieve from it
|
||||||
|
("track", "route", or "waypoint").
|
||||||
|
|
||||||
|
An example url is "/home/user/data/holiday.gpx?type=route"
|
||||||
|
|
||||||
|
\subsection grass Grass data provider (grass)
|
||||||
|
|
||||||
|
Provider to display vector data in a GRASS GIS layer.
|
||||||
|
|
||||||
|
TODO QGIS3: Remove virtual from non-inherited methods (like isModified)
|
||||||
|
@see QgsVectorLayerUtils()
|
||||||
|
|
||||||
|
|
||||||
|
%End
|
||||||
|
|
||||||
%TypeHeaderCode
|
%TypeHeaderCode
|
||||||
#include "qgsvectorlayer.h"
|
#include "qgsvectorlayer.h"
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//! Result of an edit operation
|
|
||||||
enum EditResult
|
enum EditResult
|
||||||
{
|
{
|
||||||
Success,
|
Success,
|
||||||
@ -294,7 +311,6 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
InvalidLayer,
|
InvalidLayer,
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Selection behavior
|
|
||||||
enum SelectBehavior
|
enum SelectBehavior
|
||||||
{
|
{
|
||||||
SetSelection,
|
SetSelection,
|
||||||
@ -306,8 +322,12 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
QgsVectorLayer( const QString &path = QString::null, const QString &baseName = QString::null,
|
QgsVectorLayer( const QString &path = QString::null, const QString &baseName = QString::null,
|
||||||
const QString &providerLib = "ogr", bool loadDefaultStyleFlag = true );
|
const QString &providerLib = "ogr", bool loadDefaultStyleFlag = true );
|
||||||
|
|
||||||
|
|
||||||
virtual ~QgsVectorLayer();
|
virtual ~QgsVectorLayer();
|
||||||
|
|
||||||
|
// QgsVectorLayer( const QgsVectorLayer &rhs ) = delete;
|
||||||
|
// QgsVectorLayer &operator=( QgsVectorLayer const &rhs ) = delete;
|
||||||
|
|
||||||
QString storageType() const;
|
QString storageType() const;
|
||||||
|
|
||||||
QString capabilitiesString() const;
|
QString capabilitiesString() const;
|
||||||
@ -322,7 +342,8 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
QgsVectorDataProvider *dataProvider();
|
QgsVectorDataProvider *dataProvider();
|
||||||
|
|
||||||
// const QgsVectorDataProvider *dataProvider() const;
|
// const QgsVectorDataProvider *dataProvider() const; // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
void setProviderEncoding( const QString &encoding );
|
void setProviderEncoding( const QString &encoding );
|
||||||
|
|
||||||
@ -387,7 +408,8 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
QgsFeatureRenderer *renderer();
|
QgsFeatureRenderer *renderer();
|
||||||
|
|
||||||
// const QgsFeatureRenderer *renderer() const { return mRendererV2; }
|
// const QgsFeatureRenderer *renderer() const { return mRenderer; } // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
void setRenderer( QgsFeatureRenderer *r /Transfer/ );
|
void setRenderer( QgsFeatureRenderer *r /Transfer/ );
|
||||||
|
|
||||||
@ -420,7 +442,7 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
virtual QString loadNamedStyle( const QString &theURI, bool &resultFlag /Out/ );
|
virtual QString loadNamedStyle( const QString &theURI, bool &resultFlag /Out/ );
|
||||||
|
|
||||||
bool readSymbology( const QDomNode &node, QString &errorMessage );
|
bool readSymbology( const QDomNode &layerNode, QString &errorMessage );
|
||||||
|
|
||||||
bool readStyle( const QDomNode &node, QString &errorMessage );
|
bool readStyle( const QDomNode &node, QString &errorMessage );
|
||||||
|
|
||||||
@ -428,7 +450,8 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage ) const;
|
bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage ) const;
|
||||||
|
|
||||||
bool writeSld( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsStringMap &props ) const;
|
bool writeSld( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsStringMap &props = QgsStringMap() ) const;
|
||||||
|
|
||||||
bool readSld( const QDomNode &node, QString &errorMessage );
|
bool readSld( const QDomNode &node, QString &errorMessage );
|
||||||
|
|
||||||
long featureCount( const QString &legendKey ) const;
|
long featureCount( const QString &legendKey ) const;
|
||||||
@ -447,7 +470,7 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
QgsFeature getFeature( QgsFeatureId fid );
|
QgsFeature getFeature( QgsFeatureId fid );
|
||||||
|
|
||||||
QgsFeatureIterator getFeatures( QgsFeatureIds fids );
|
QgsFeatureIterator getFeatures( const QgsFeatureIds &fids );
|
||||||
|
|
||||||
QgsFeatureIterator getFeatures( const QgsRectangle &rectangle );
|
QgsFeatureIterator getFeatures( const QgsRectangle &rectangle );
|
||||||
|
|
||||||
@ -473,7 +496,7 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
int addPart( const QList<QgsPoint> &ring );
|
int addPart( const QList<QgsPoint> &ring );
|
||||||
|
|
||||||
int addPart( const QList<QgsPointV2> &ring ) /PyName=addPartV2/;
|
int addPart( const QgsPointSequence &ring ) /PyName=addPartV2/;
|
||||||
|
|
||||||
int addPart( QgsCurve *ring /Transfer/ ) /PyName=addCurvedPart/;
|
int addPart( QgsCurve *ring /Transfer/ ) /PyName=addCurvedPart/;
|
||||||
|
|
||||||
@ -489,9 +512,11 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
int insertSegmentVerticesForSnap( const QList<QgsSnappingResult> &snapResults );
|
int insertSegmentVerticesForSnap( const QList<QgsSnappingResult> &snapResults );
|
||||||
|
|
||||||
// const QgsAbstractVectorLayerLabeling *labeling() const { return mLabeling; }
|
// const QgsAbstractVectorLayerLabeling *labeling() const { return mLabeling; } // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
|
// void setLabeling( QgsAbstractVectorLayerLabeling *labeling ); // SIP_SKIP
|
||||||
|
|
||||||
// void setLabeling( QgsAbstractVectorLayerLabeling *labeling );
|
|
||||||
|
|
||||||
virtual bool isEditable() const;
|
virtual bool isEditable() const;
|
||||||
|
|
||||||
@ -546,19 +571,21 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
QString attributeDisplayName( int index ) const;
|
QString attributeDisplayName( int index ) const;
|
||||||
|
|
||||||
const QMap< QString, QString > &attributeAliases() const;
|
QgsStringMap attributeAliases() const;
|
||||||
|
|
||||||
QSet<QString> excludeAttributesWms() const;
|
QSet<QString> excludeAttributesWms() const;
|
||||||
|
|
||||||
void setExcludeAttributesWms( const QSet<QString> &att );
|
void setExcludeAttributesWms( const QSet<QString> &att );
|
||||||
|
|
||||||
QSet<QString> excludeAttributesWfs() const;
|
QSet<QString> excludeAttributesWfs() const;
|
||||||
|
|
||||||
void setExcludeAttributesWfs( const QSet<QString> &att );
|
void setExcludeAttributesWfs( const QSet<QString> &att );
|
||||||
|
|
||||||
bool deleteAttribute( int attr );
|
bool deleteAttribute( int attr );
|
||||||
|
|
||||||
bool deleteAttributes( QList<int> attrs );
|
bool deleteAttributes( QList<int> attrs );
|
||||||
|
|
||||||
bool addFeatures( QList<QgsFeature> features, bool makeSelected = true );
|
bool addFeatures( QgsFeatureList features, bool makeSelected = true );
|
||||||
|
|
||||||
bool deleteFeature( QgsFeatureId fid );
|
bool deleteFeature( QgsFeatureId fid );
|
||||||
|
|
||||||
@ -578,6 +605,9 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
QgsVectorLayerEditBuffer *editBuffer();
|
QgsVectorLayerEditBuffer *editBuffer();
|
||||||
|
|
||||||
|
// const QgsVectorLayerEditBuffer *editBuffer() const { return mEditBuffer; } // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
void beginEditCommand( const QString &text );
|
void beginEditCommand( const QString &text );
|
||||||
|
|
||||||
void endEditCommand();
|
void endEditCommand();
|
||||||
@ -596,7 +626,7 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
void updateFields();
|
void updateFields();
|
||||||
|
|
||||||
QVariant defaultValue( int index, const QgsFeature &feature = QgsFeature(),
|
QVariant defaultValue( int index, const QgsFeature &feature = QgsFeature(),
|
||||||
QgsExpressionContext *context = nullptr ) const;
|
QgsExpressionContext *context = 0 ) const;
|
||||||
|
|
||||||
void setDefaultValueExpression( int index, const QString &expression );
|
void setDefaultValueExpression( int index, const QString &expression );
|
||||||
|
|
||||||
@ -613,13 +643,15 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
QString constraintDescription( int index ) const;
|
QString constraintDescription( int index ) const;
|
||||||
|
|
||||||
void setConstraintExpression( int index, const QString &expression, const QString &description = QString() );
|
void setConstraintExpression( int index, const QString &expression, const QString &description = QString() );
|
||||||
|
|
||||||
void setEditorWidgetSetup( int index, const QgsEditorWidgetSetup &setup );
|
void setEditorWidgetSetup( int index, const QgsEditorWidgetSetup &setup );
|
||||||
|
|
||||||
QgsEditorWidgetSetup editorWidgetSetup( int index ) const;
|
QgsEditorWidgetSetup editorWidgetSetup( int index ) const;
|
||||||
|
|
||||||
void uniqueValues( int index, QList<QVariant> &uniqueValues /Out/, int limit = -1 ) const;
|
void uniqueValues( int index, QList<QVariant> &uniqueValues /Out/, int limit = -1 ) const;
|
||||||
|
|
||||||
QStringList uniqueStringsMatching( int index, const QString &substring, int limit = -1,
|
QStringList uniqueStringsMatching( int index, const QString &substring, int limit = -1,
|
||||||
QgsFeedback *feedback = nullptr ) const;
|
QgsFeedback *feedback = 0 ) const;
|
||||||
|
|
||||||
QVariant minimumValue( int index ) const;
|
QVariant minimumValue( int index ) const;
|
||||||
|
|
||||||
@ -628,8 +660,8 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
QVariant aggregate( QgsAggregateCalculator::Aggregate aggregate,
|
QVariant aggregate( QgsAggregateCalculator::Aggregate aggregate,
|
||||||
const QString &fieldOrExpression,
|
const QString &fieldOrExpression,
|
||||||
const QgsAggregateCalculator::AggregateParameters ¶meters = QgsAggregateCalculator::AggregateParameters(),
|
const QgsAggregateCalculator::AggregateParameters ¶meters = QgsAggregateCalculator::AggregateParameters(),
|
||||||
QgsExpressionContext *context = nullptr,
|
QgsExpressionContext *context = 0,
|
||||||
bool *ok = nullptr ) const;
|
bool *ok = 0 ) const;
|
||||||
|
|
||||||
QList< QVariant > getValues( const QString &fieldOrExpression, bool &ok, bool selectedOnly = false, QgsFeedback *feedback = 0 ) const;
|
QList< QVariant > getValues( const QString &fieldOrExpression, bool &ok, bool selectedOnly = false, QgsFeedback *feedback = 0 ) const;
|
||||||
|
|
||||||
@ -643,7 +675,8 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
QString metadata() const;
|
QString metadata() const;
|
||||||
|
|
||||||
// inline QgsGeometryCache *cache();
|
// inline QgsGeometryCache *cache() { return mCache; } // SIP_SKIP
|
||||||
|
|
||||||
|
|
||||||
void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod );
|
void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod );
|
||||||
|
|
||||||
@ -668,6 +701,7 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
void setEditFormConfig( const QgsEditFormConfig &editFormConfig );
|
void setEditFormConfig( const QgsEditFormConfig &editFormConfig );
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
void select( QgsFeatureId featureId );
|
void select( QgsFeatureId featureId );
|
||||||
|
|
||||||
void select( const QgsFeatureIds &featureIds );
|
void select( const QgsFeatureIds &featureIds );
|
||||||
@ -720,6 +754,7 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
|
|
||||||
void updatedFields();
|
void updatedFields();
|
||||||
|
|
||||||
|
|
||||||
void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant &value );
|
void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant &value );
|
||||||
|
|
||||||
void geometryChanged( QgsFeatureId fid, const QgsGeometry &geometry );
|
void geometryChanged( QgsFeatureId fid, const QgsGeometry &geometry );
|
||||||
@ -756,12 +791,12 @@ class QgsVectorLayer : QgsMapLayer, QgsExpressionContextGenerator
|
|||||||
void editFormConfigChanged();
|
void editFormConfigChanged();
|
||||||
|
|
||||||
void readOnlyChanged();
|
void readOnlyChanged();
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setExtent( const QgsRectangle &rect );
|
void setExtent( const QgsRectangle &rect );
|
||||||
|
|
||||||
private: // Private methods
|
private: // Private methods
|
||||||
|
QgsVectorLayer( const QgsVectorLayer &rhs );
|
||||||
QgsVectorLayer( const QgsVectorLayer &rhs );
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ my $SIP_RUN = 0;
|
|||||||
my $HEADER_CODE = 0;
|
my $HEADER_CODE = 0;
|
||||||
my $PRIVATE_SECTION = 0;
|
my $PRIVATE_SECTION = 0;
|
||||||
|
|
||||||
my $comment;
|
my $comment = '';
|
||||||
my $nesting_index = 0;
|
my $nesting_index = 0;
|
||||||
my $private_section_line = '';
|
my $private_section_line = '';
|
||||||
|
|
||||||
@ -131,10 +131,10 @@ while(!eof $header) {
|
|||||||
|
|
||||||
# Detect comment block
|
# Detect comment block
|
||||||
if ($line =~ m/\s*\/\*\*/) {
|
if ($line =~ m/\s*\/\*\*/) {
|
||||||
$comment = "";
|
$comment = '';
|
||||||
while(!eof $header) {
|
while(!eof $header) {
|
||||||
$line = readline $header;
|
$line = readline $header;
|
||||||
$line =~ m/\s*\*?(.*)/;
|
$line =~ m/\s*\*?(.*?)(\/)?$/;
|
||||||
$comment .= "$1\n";
|
$comment .= "$1\n";
|
||||||
if ( $line =~ m/\*\/$/ ) {
|
if ( $line =~ m/\*\/$/ ) {
|
||||||
last;
|
last;
|
||||||
@ -237,7 +237,7 @@ while(!eof $header) {
|
|||||||
|
|
||||||
# deleted functions
|
# deleted functions
|
||||||
if ( $line =~ m/^(\s*)?(const )?(virtual |static )?((\w+(<.*?>)?\s+(\*|&)?)?(\w+|operator.)\(.*?(\(.*\))*.*\)( const)?)\s*= delete;$/ ) {
|
if ( $line =~ m/^(\s*)?(const )?(virtual |static )?((\w+(<.*?>)?\s+(\*|&)?)?(\w+|operator.)\(.*?(\(.*\))*.*\)( const)?)\s*= delete;$/ ) {
|
||||||
$line = readline $header;
|
$line =~ s/^/\/\//;
|
||||||
}
|
}
|
||||||
|
|
||||||
$line =~ s/SIP_FACTORY/\/Factory\//;
|
$line =~ s/SIP_FACTORY/\/Factory\//;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user