mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-05 00:09:32 -04:00
Promote FieldOrigin to enum class, move to Qgis
This commit is contained in:
parent
740075b8e8
commit
e2157cfe1f
@ -1420,6 +1420,31 @@ Qgis.SublayerPromptMode.NeverAskLoadAll.__doc__ = "Never ask users to select sub
|
||||
Qgis.SublayerPromptMode.__doc__ = "Specifies how to handle layer sources with multiple sublayers.\n\n.. versionadded:: 3.22\n\n" + '* ``AlwaysAsk``: ' + Qgis.SublayerPromptMode.AlwaysAsk.__doc__ + '\n' + '* ``AskExcludingRasterBands``: ' + Qgis.SublayerPromptMode.AskExcludingRasterBands.__doc__ + '\n' + '* ``NeverAskSkip``: ' + Qgis.SublayerPromptMode.NeverAskSkip.__doc__ + '\n' + '* ``NeverAskLoadAll``: ' + Qgis.SublayerPromptMode.NeverAskLoadAll.__doc__
|
||||
# --
|
||||
Qgis.SublayerPromptMode.baseClass = Qgis
|
||||
QgsFields.FieldOrigin = Qgis.FieldOrigin
|
||||
# monkey patching scoped based enum
|
||||
QgsFields.OriginUnknown = Qgis.FieldOrigin.Unknown
|
||||
QgsFields.FieldOrigin.OriginUnknown = Qgis.FieldOrigin.Unknown
|
||||
QgsFields.OriginUnknown.is_monkey_patched = True
|
||||
QgsFields.OriginUnknown.__doc__ = "The field origin has not been specified"
|
||||
QgsFields.OriginProvider = Qgis.FieldOrigin.Provider
|
||||
QgsFields.FieldOrigin.OriginProvider = Qgis.FieldOrigin.Provider
|
||||
QgsFields.OriginProvider.is_monkey_patched = True
|
||||
QgsFields.OriginProvider.__doc__ = "Field originates from the underlying data provider of the vector layer"
|
||||
QgsFields.OriginJoin = Qgis.FieldOrigin.Join
|
||||
QgsFields.FieldOrigin.OriginJoin = Qgis.FieldOrigin.Join
|
||||
QgsFields.OriginJoin.is_monkey_patched = True
|
||||
QgsFields.OriginJoin.__doc__ = "Field originates from a joined layer"
|
||||
QgsFields.OriginEdit = Qgis.FieldOrigin.Edit
|
||||
QgsFields.FieldOrigin.OriginEdit = Qgis.FieldOrigin.Edit
|
||||
QgsFields.OriginEdit.is_monkey_patched = True
|
||||
QgsFields.OriginEdit.__doc__ = "Field has been temporarily added in editing mode"
|
||||
QgsFields.OriginExpression = Qgis.FieldOrigin.Expression
|
||||
QgsFields.FieldOrigin.OriginExpression = Qgis.FieldOrigin.Expression
|
||||
QgsFields.OriginExpression.is_monkey_patched = True
|
||||
QgsFields.OriginExpression.__doc__ = "Field is calculated from an expression"
|
||||
Qgis.FieldOrigin.__doc__ = "Field origin.\n\n.. note::\n\n Prior to QGIS 3.38 this was available as :py:class:`QgsFields`.FieldOrigin\n\n.. versionadded:: 3.38\n\n" + '* ``OriginUnknown``: ' + Qgis.FieldOrigin.Unknown.__doc__ + '\n' + '* ``OriginProvider``: ' + Qgis.FieldOrigin.Provider.__doc__ + '\n' + '* ``OriginJoin``: ' + Qgis.FieldOrigin.Join.__doc__ + '\n' + '* ``OriginEdit``: ' + Qgis.FieldOrigin.Edit.__doc__ + '\n' + '* ``OriginExpression``: ' + Qgis.FieldOrigin.Expression.__doc__
|
||||
# --
|
||||
Qgis.FieldOrigin.baseClass = Qgis
|
||||
# monkey patching scoped based enum
|
||||
Qgis.FieldConfigurationFlag.NoFlag.__doc__ = "No flag is defined"
|
||||
Qgis.FieldConfigurationFlag.NotSearchable.__doc__ = "Defines if the field is searchable (used in the locator search for instance)"
|
||||
|
@ -1,6 +0,0 @@
|
||||
# The following has been generated automatically from src/core/qgsfields.h
|
||||
QgsFields.OriginUnknown = QgsFields.FieldOrigin.OriginUnknown
|
||||
QgsFields.OriginProvider = QgsFields.FieldOrigin.OriginProvider
|
||||
QgsFields.OriginJoin = QgsFields.FieldOrigin.OriginJoin
|
||||
QgsFields.OriginEdit = QgsFields.FieldOrigin.OriginEdit
|
||||
QgsFields.OriginExpression = QgsFields.FieldOrigin.OriginExpression
|
@ -792,6 +792,15 @@ The development version
|
||||
NeverAskLoadAll,
|
||||
};
|
||||
|
||||
enum class FieldOrigin /BaseType=IntEnum/
|
||||
{
|
||||
Unknown,
|
||||
Provider,
|
||||
Join,
|
||||
Edit,
|
||||
Expression
|
||||
};
|
||||
|
||||
enum class FieldConfigurationFlag /BaseType=IntFlag/
|
||||
{
|
||||
NoFlag,
|
||||
|
@ -33,15 +33,6 @@ In addition to storing a list of :py:class:`QgsField` instances, it also:
|
||||
|
||||
public:
|
||||
|
||||
enum FieldOrigin /BaseType=IntEnum/
|
||||
{
|
||||
OriginUnknown,
|
||||
OriginProvider,
|
||||
OriginJoin,
|
||||
OriginEdit,
|
||||
OriginExpression
|
||||
};
|
||||
|
||||
|
||||
QgsFields() /HoldGIL/;
|
||||
%Docstring
|
||||
@ -61,9 +52,17 @@ Copy constructor
|
||||
Removes all fields
|
||||
%End
|
||||
|
||||
bool append( const QgsField &field, FieldOrigin origin = OriginProvider, int originIndex = -1 ) /HoldGIL/;
|
||||
bool append( const QgsField &field, Qgis::FieldOrigin origin = Qgis::FieldOrigin::Provider, int originIndex = -1 ) /HoldGIL/;
|
||||
%Docstring
|
||||
Appends a field. The field must have unique name, otherwise it is rejected (returns ``False``)
|
||||
Appends a ``field``.
|
||||
|
||||
The field must have a unique name, otherwise it is rejected (returns ``False``).
|
||||
|
||||
The ``originIndex`` argument must be set to a value corresponding to the ``origin`` type:
|
||||
|
||||
- :py:class:`Qgis`.FieldOrigin.Provider: The field's originIndex is the index in provider's fields.
|
||||
- :py:class:`Qgis`.FieldOrigin.Join: The field's originIndex / 1000 = index of the join, originIndex % 1000 = index within the join
|
||||
- :py:class:`Qgis`.FieldOrigin.Edit: The originIndex is the index in the list of added attributes
|
||||
%End
|
||||
|
||||
bool rename( int fieldIdx, const QString &name ) /HoldGIL/;
|
||||
@ -225,7 +224,7 @@ Returns the field with matching name.
|
||||
%End
|
||||
|
||||
|
||||
FieldOrigin fieldOrigin( int fieldIdx ) const /HoldGIL/;
|
||||
Qgis::FieldOrigin fieldOrigin( int fieldIdx ) const /HoldGIL/;
|
||||
%Docstring
|
||||
Returns the field's origin (value from an enumeration).
|
||||
|
||||
@ -248,6 +247,10 @@ Returns the field's origin (value from an enumeration).
|
||||
%Docstring
|
||||
Returns the field's origin index (its meaning is specific to each type of origin).
|
||||
|
||||
- :py:class:`Qgis`.FieldOrigin.Provider: The field's originIndex is the index in provider's fields.
|
||||
- :py:class:`Qgis`.FieldOrigin.Join: The field's originIndex / 1000 = index of the join, originIndex % 1000 = index within the join
|
||||
- :py:class:`Qgis`.FieldOrigin.Edit: The originIndex is the index in the list of added attributes
|
||||
|
||||
:raises KeyError: if no field exists at the specified index
|
||||
%End
|
||||
%MethodCode
|
||||
|
@ -1393,6 +1393,31 @@ Qgis.SublayerPromptMode.NeverAskLoadAll.__doc__ = "Never ask users to select sub
|
||||
Qgis.SublayerPromptMode.__doc__ = "Specifies how to handle layer sources with multiple sublayers.\n\n.. versionadded:: 3.22\n\n" + '* ``AlwaysAsk``: ' + Qgis.SublayerPromptMode.AlwaysAsk.__doc__ + '\n' + '* ``AskExcludingRasterBands``: ' + Qgis.SublayerPromptMode.AskExcludingRasterBands.__doc__ + '\n' + '* ``NeverAskSkip``: ' + Qgis.SublayerPromptMode.NeverAskSkip.__doc__ + '\n' + '* ``NeverAskLoadAll``: ' + Qgis.SublayerPromptMode.NeverAskLoadAll.__doc__
|
||||
# --
|
||||
Qgis.SublayerPromptMode.baseClass = Qgis
|
||||
QgsFields.FieldOrigin = Qgis.FieldOrigin
|
||||
# monkey patching scoped based enum
|
||||
QgsFields.OriginUnknown = Qgis.FieldOrigin.Unknown
|
||||
QgsFields.FieldOrigin.OriginUnknown = Qgis.FieldOrigin.Unknown
|
||||
QgsFields.OriginUnknown.is_monkey_patched = True
|
||||
QgsFields.OriginUnknown.__doc__ = "The field origin has not been specified"
|
||||
QgsFields.OriginProvider = Qgis.FieldOrigin.Provider
|
||||
QgsFields.FieldOrigin.OriginProvider = Qgis.FieldOrigin.Provider
|
||||
QgsFields.OriginProvider.is_monkey_patched = True
|
||||
QgsFields.OriginProvider.__doc__ = "Field originates from the underlying data provider of the vector layer"
|
||||
QgsFields.OriginJoin = Qgis.FieldOrigin.Join
|
||||
QgsFields.FieldOrigin.OriginJoin = Qgis.FieldOrigin.Join
|
||||
QgsFields.OriginJoin.is_monkey_patched = True
|
||||
QgsFields.OriginJoin.__doc__ = "Field originates from a joined layer"
|
||||
QgsFields.OriginEdit = Qgis.FieldOrigin.Edit
|
||||
QgsFields.FieldOrigin.OriginEdit = Qgis.FieldOrigin.Edit
|
||||
QgsFields.OriginEdit.is_monkey_patched = True
|
||||
QgsFields.OriginEdit.__doc__ = "Field has been temporarily added in editing mode"
|
||||
QgsFields.OriginExpression = Qgis.FieldOrigin.Expression
|
||||
QgsFields.FieldOrigin.OriginExpression = Qgis.FieldOrigin.Expression
|
||||
QgsFields.OriginExpression.is_monkey_patched = True
|
||||
QgsFields.OriginExpression.__doc__ = "Field is calculated from an expression"
|
||||
Qgis.FieldOrigin.__doc__ = "Field origin.\n\n.. note::\n\n Prior to QGIS 3.38 this was available as :py:class:`QgsFields`.FieldOrigin\n\n.. versionadded:: 3.38\n\n" + '* ``OriginUnknown``: ' + Qgis.FieldOrigin.Unknown.__doc__ + '\n' + '* ``OriginProvider``: ' + Qgis.FieldOrigin.Provider.__doc__ + '\n' + '* ``OriginJoin``: ' + Qgis.FieldOrigin.Join.__doc__ + '\n' + '* ``OriginEdit``: ' + Qgis.FieldOrigin.Edit.__doc__ + '\n' + '* ``OriginExpression``: ' + Qgis.FieldOrigin.Expression.__doc__
|
||||
# --
|
||||
Qgis.FieldOrigin.baseClass = Qgis
|
||||
# monkey patching scoped based enum
|
||||
Qgis.FieldConfigurationFlag.NoFlag.__doc__ = "No flag is defined"
|
||||
Qgis.FieldConfigurationFlag.NotSearchable.__doc__ = "Defines if the field is searchable (used in the locator search for instance)"
|
||||
|
@ -792,6 +792,15 @@ The development version
|
||||
NeverAskLoadAll,
|
||||
};
|
||||
|
||||
enum class FieldOrigin
|
||||
{
|
||||
Unknown,
|
||||
Provider,
|
||||
Join,
|
||||
Edit,
|
||||
Expression
|
||||
};
|
||||
|
||||
enum class FieldConfigurationFlag
|
||||
{
|
||||
NoFlag,
|
||||
|
@ -33,15 +33,6 @@ In addition to storing a list of :py:class:`QgsField` instances, it also:
|
||||
|
||||
public:
|
||||
|
||||
enum FieldOrigin
|
||||
{
|
||||
OriginUnknown,
|
||||
OriginProvider,
|
||||
OriginJoin,
|
||||
OriginEdit,
|
||||
OriginExpression
|
||||
};
|
||||
|
||||
|
||||
QgsFields() /HoldGIL/;
|
||||
%Docstring
|
||||
@ -61,9 +52,17 @@ Copy constructor
|
||||
Removes all fields
|
||||
%End
|
||||
|
||||
bool append( const QgsField &field, FieldOrigin origin = OriginProvider, int originIndex = -1 ) /HoldGIL/;
|
||||
bool append( const QgsField &field, Qgis::FieldOrigin origin = Qgis::FieldOrigin::Provider, int originIndex = -1 ) /HoldGIL/;
|
||||
%Docstring
|
||||
Appends a field. The field must have unique name, otherwise it is rejected (returns ``False``)
|
||||
Appends a ``field``.
|
||||
|
||||
The field must have a unique name, otherwise it is rejected (returns ``False``).
|
||||
|
||||
The ``originIndex`` argument must be set to a value corresponding to the ``origin`` type:
|
||||
|
||||
- :py:class:`Qgis`.FieldOrigin.Provider: The field's originIndex is the index in provider's fields.
|
||||
- :py:class:`Qgis`.FieldOrigin.Join: The field's originIndex / 1000 = index of the join, originIndex % 1000 = index within the join
|
||||
- :py:class:`Qgis`.FieldOrigin.Edit: The originIndex is the index in the list of added attributes
|
||||
%End
|
||||
|
||||
bool rename( int fieldIdx, const QString &name ) /HoldGIL/;
|
||||
@ -225,7 +224,7 @@ Returns the field with matching name.
|
||||
%End
|
||||
|
||||
|
||||
FieldOrigin fieldOrigin( int fieldIdx ) const /HoldGIL/;
|
||||
Qgis::FieldOrigin fieldOrigin( int fieldIdx ) const /HoldGIL/;
|
||||
%Docstring
|
||||
Returns the field's origin (value from an enumeration).
|
||||
|
||||
@ -248,6 +247,10 @@ Returns the field's origin (value from an enumeration).
|
||||
%Docstring
|
||||
Returns the field's origin index (its meaning is specific to each type of origin).
|
||||
|
||||
- :py:class:`Qgis`.FieldOrigin.Provider: The field's originIndex is the index in provider's fields.
|
||||
- :py:class:`Qgis`.FieldOrigin.Join: The field's originIndex / 1000 = index of the join, originIndex % 1000 = index within the join
|
||||
- :py:class:`Qgis`.FieldOrigin.Edit: The originIndex is the index in the list of added attributes
|
||||
|
||||
:raises KeyError: if no field exists at the specified index
|
||||
%End
|
||||
%MethodCode
|
||||
|
@ -84,7 +84,7 @@ QVariantMap QgsAttributeIndexAlgorithm::processAlgorithm( const QVariantMap &par
|
||||
QgsVectorDataProvider *provider = layer->dataProvider();
|
||||
|
||||
const int fieldIndex = layer->fields().lookupField( field );
|
||||
if ( fieldIndex < 0 || layer->fields().fieldOrigin( fieldIndex ) != QgsFields::OriginProvider )
|
||||
if ( fieldIndex < 0 || layer->fields().fieldOrigin( fieldIndex ) != Qgis::FieldOrigin::Provider )
|
||||
{
|
||||
feedback->pushInfo( QObject::tr( "Can not create attribute index on %1" ).arg( field ) );
|
||||
}
|
||||
|
@ -143,7 +143,7 @@ void QgsMapToolChangeLabelProperties::applyChanges( const QgsAttributeMap &chang
|
||||
bool needsEdit = false;
|
||||
for ( auto it = changes.constBegin(); it != changes.constEnd(); ++it )
|
||||
{
|
||||
if ( vlayer->fields().fieldOrigin( it.key() ) != QgsFields::OriginJoin )
|
||||
if ( vlayer->fields().fieldOrigin( it.key() ) != Qgis::FieldOrigin::Join )
|
||||
{
|
||||
needsEdit = true;
|
||||
break;
|
||||
|
@ -194,8 +194,8 @@ void QgsMapToolMoveLabel::cadCanvasPressEvent( QgsMapMouseEvent *e )
|
||||
return;
|
||||
}
|
||||
|
||||
const bool usesAuxFields = vlayer->fields().fieldOrigin( xCol ) == QgsFields::OriginJoin
|
||||
&& vlayer->fields().fieldOrigin( yCol ) == QgsFields::OriginJoin;
|
||||
const bool usesAuxFields = vlayer->fields().fieldOrigin( xCol ) == Qgis::FieldOrigin::Join
|
||||
&& vlayer->fields().fieldOrigin( yCol ) == Qgis::FieldOrigin::Join;
|
||||
if ( !usesAuxFields && !vlayer->isEditable() )
|
||||
{
|
||||
if ( vlayer->startEditing() )
|
||||
@ -366,8 +366,8 @@ void QgsMapToolMoveLabel::cadCanvasPressEvent( QgsMapMouseEvent *e )
|
||||
if ( ( isCurvedOrLine && lineAnchorPercentCol >= 0 ) || ( xCol >= 0 && yCol >= 0 ) )
|
||||
{
|
||||
const bool usesAuxFields =
|
||||
( isCurvedOrLine && lineAnchorPercentCol >= 0 && vlayer->fields().fieldOrigin( lineAnchorPercentCol ) == QgsFields::OriginJoin ) ||
|
||||
( vlayer->fields().fieldOrigin( xCol ) == QgsFields::OriginJoin && vlayer->fields().fieldOrigin( yCol ) == QgsFields::OriginJoin );
|
||||
( isCurvedOrLine && lineAnchorPercentCol >= 0 && vlayer->fields().fieldOrigin( lineAnchorPercentCol ) == Qgis::FieldOrigin::Join ) ||
|
||||
( vlayer->fields().fieldOrigin( xCol ) == Qgis::FieldOrigin::Join && vlayer->fields().fieldOrigin( yCol ) == Qgis::FieldOrigin::Join );
|
||||
if ( !usesAuxFields && !vlayer->isEditable() )
|
||||
{
|
||||
if ( vlayer->startEditing() )
|
||||
|
@ -128,7 +128,7 @@ void QgsMapToolRotateLabel::canvasPressEvent( QgsMapMouseEvent *e )
|
||||
|
||||
case PropertyStatus::Valid:
|
||||
{
|
||||
const bool usesAuxField = mCurrentLabel.layer->fields().fieldOrigin( rotationCol ) == QgsFields::OriginJoin;
|
||||
const bool usesAuxField = mCurrentLabel.layer->fields().fieldOrigin( rotationCol ) == Qgis::FieldOrigin::Join;
|
||||
if ( !usesAuxField && !mCurrentLabel.layer->isEditable() )
|
||||
{
|
||||
if ( mCurrentLabel.layer->startEditing() )
|
||||
|
@ -9755,7 +9755,7 @@ void QgisApp::mergeAttributesOfSelectedFeatures()
|
||||
|
||||
QVariant val = merged.at( i );
|
||||
QgsField fld( vl->fields().at( i ) );
|
||||
bool isDefaultValue = vl->fields().fieldOrigin( i ) == QgsFields::OriginProvider &&
|
||||
bool isDefaultValue = vl->fields().fieldOrigin( i ) == Qgis::FieldOrigin::Provider &&
|
||||
vl->dataProvider() &&
|
||||
vl->dataProvider()->defaultValueClause( vl->fields().fieldOriginIndex( i ) ) == val;
|
||||
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include "qgsfields.h"
|
||||
#include "qgsvectordataprovider.h"
|
||||
#include "qgsvectorlayer.h"
|
||||
#include "qgssettings.h"
|
||||
#include "qgsgui.h"
|
||||
|
||||
QgsDelAttrDialog::QgsDelAttrDialog( const QgsVectorLayer *vl )
|
||||
@ -38,11 +37,11 @@ QgsDelAttrDialog::QgsDelAttrDialog( const QgsVectorLayer *vl )
|
||||
QListWidgetItem *item = new QListWidgetItem( layerAttributes.at( idx ).name(), listBox2 );
|
||||
switch ( vl->fields().fieldOrigin( idx ) )
|
||||
{
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
item->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconExpression.svg" ) ) );
|
||||
break;
|
||||
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
item->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/propertyicons/join.svg" ) ) );
|
||||
item->setFlags( item->flags() & ~Qt::ItemIsEnabled );
|
||||
break;
|
||||
|
@ -742,7 +742,7 @@ QgsIdentifyResultsFeatureItem *QgsIdentifyResultsDialog::createFeatureItem( QgsV
|
||||
continue;
|
||||
}
|
||||
QString defVal;
|
||||
if ( fields.fieldOrigin( i ) == QgsFields::OriginProvider && vlayer->dataProvider() )
|
||||
if ( fields.fieldOrigin( i ) == Qgis::FieldOrigin::Provider && vlayer->dataProvider() )
|
||||
defVal = vlayer->dataProvider()->defaultValueClause( fields.fieldOriginIndex( i ) );
|
||||
|
||||
const QString originalValue = defVal == attrs.at( i ) ? defVal : fields.at( i ).displayString( attrs.at( i ) );
|
||||
|
@ -235,8 +235,8 @@ bool QgsEditFormConfig::readOnly( int idx ) const
|
||||
{
|
||||
if ( idx >= 0 && idx < d->mFields.count() )
|
||||
{
|
||||
if ( d->mFields.fieldOrigin( idx ) == QgsFields::OriginJoin
|
||||
|| d->mFields.fieldOrigin( idx ) == QgsFields::OriginExpression )
|
||||
if ( d->mFields.fieldOrigin( idx ) == Qgis::FieldOrigin::Join
|
||||
|| d->mFields.fieldOrigin( idx ) == Qgis::FieldOrigin::Expression )
|
||||
return true;
|
||||
return !d->mFieldEditables.value( d->mFields.at( idx ).name(), true );
|
||||
}
|
||||
|
@ -351,7 +351,7 @@ std::tuple<QVariant::Type, int> QgsExpressionUtils::determineResultType( const Q
|
||||
const QgsFields fields = layer->fields();
|
||||
for ( int i = 0; i < fields.count(); i++ )
|
||||
{
|
||||
if ( fields.fieldOrigin( i ) != QgsFields::OriginExpression )
|
||||
if ( fields.fieldOrigin( i ) != Qgis::FieldOrigin::Expression )
|
||||
attributes << i;
|
||||
}
|
||||
request.setSubsetOfAttributes( attributes );
|
||||
|
@ -1670,7 +1670,7 @@ bool QgsOgrProvider::addFeaturePrivate( QgsFeature &f, Flags flags, QgsFeatureId
|
||||
for ( int ogrAttributeId = 0; qgisAttributeId < attributes.count(); ++qgisAttributeId, ++ogrAttributeId )
|
||||
{
|
||||
// Skip fields that have no provider origin
|
||||
if ( qgisFields.exists( qgisAttributeId ) && qgisFields.fieldOrigin( qgisAttributeId ) != QgsFields::FieldOrigin::OriginProvider )
|
||||
if ( qgisFields.exists( qgisAttributeId ) && qgisFields.fieldOrigin( qgisAttributeId ) != Qgis::FieldOrigin::Provider )
|
||||
{
|
||||
qgisAttributeId++;
|
||||
continue;
|
||||
|
@ -1341,6 +1341,23 @@ class CORE_EXPORT Qgis
|
||||
};
|
||||
Q_ENUM( SublayerPromptMode )
|
||||
|
||||
/**
|
||||
* Field origin.
|
||||
*
|
||||
* \note Prior to QGIS 3.38 this was available as QgsFields::FieldOrigin
|
||||
*
|
||||
* \since QGIS 3.38
|
||||
*/
|
||||
enum class FieldOrigin SIP_MONKEYPATCH_SCOPEENUM_UNNEST( QgsFields, FieldOrigin ) : int
|
||||
{
|
||||
Unknown SIP_MONKEYPATCH_COMPAT_NAME( OriginUnknown ), //!< The field origin has not been specified
|
||||
Provider SIP_MONKEYPATCH_COMPAT_NAME( OriginProvider ), //!< Field originates from the underlying data provider of the vector layer
|
||||
Join SIP_MONKEYPATCH_COMPAT_NAME( OriginJoin ), //!< Field originates from a joined layer
|
||||
Edit SIP_MONKEYPATCH_COMPAT_NAME( OriginEdit ), //!< Field has been temporarily added in editing mode
|
||||
Expression SIP_MONKEYPATCH_COMPAT_NAME( OriginExpression ) //!< Field is calculated from an expression
|
||||
};
|
||||
Q_ENUM( FieldOrigin )
|
||||
|
||||
/**
|
||||
* Configuration flags for fields
|
||||
* These flags are meant to be user-configurable
|
||||
|
@ -30,7 +30,7 @@ QString QgsFieldFormatter::representValue( QgsVectorLayer *layer, int fieldIndex
|
||||
return QString();
|
||||
|
||||
QString defVal;
|
||||
if ( layer->fields().fieldOrigin( fieldIndex ) == QgsFields::OriginProvider && layer->dataProvider() )
|
||||
if ( layer->fields().fieldOrigin( fieldIndex ) == Qgis::FieldOrigin::Provider && layer->dataProvider() )
|
||||
defVal = layer->dataProvider()->defaultValueClause( layer->fields().fieldOriginIndex( fieldIndex ) );
|
||||
|
||||
if ( !defVal.isNull() && defVal == value )
|
||||
|
@ -17,10 +17,6 @@
|
||||
#include <QIcon>
|
||||
|
||||
#include "qgsfieldmodel.h"
|
||||
#include "qgsmaplayermodel.h"
|
||||
#include "qgsmaplayerproxymodel.h"
|
||||
#include "qgslogger.h"
|
||||
#include "qgsapplication.h"
|
||||
#include "qgsvectorlayer.h"
|
||||
#include "qgsvectorlayerjoinbuffer.h"
|
||||
|
||||
@ -376,7 +372,7 @@ QVariant QgsFieldModel::data( const QModelIndex &index, int role ) const
|
||||
{
|
||||
if ( exprIdx < 0 && !isEmpty )
|
||||
{
|
||||
if ( mLayer && mFields.fieldOrigin( index.row() - fieldOffset ) == QgsFields::OriginJoin )
|
||||
if ( mLayer && mFields.fieldOrigin( index.row() - fieldOffset ) == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
int srcFieldIndex;
|
||||
const QgsVectorLayerJoinInfo *info = mLayer->joinBuffer()->joinForFieldIndex( index.row() - fieldOffset, mLayer->fields(), srcFieldIndex );
|
||||
@ -506,7 +502,7 @@ QString QgsFieldModel::fieldToolTipExtended( const QgsField &field, const QgsVec
|
||||
if ( fieldIdx < 0 )
|
||||
return QString();
|
||||
|
||||
const QString expressionString = fields.fieldOrigin( fieldIdx ) == QgsFields::OriginExpression
|
||||
const QString expressionString = fields.fieldOrigin( fieldIdx ) == Qgis::FieldOrigin::Expression
|
||||
? layer->expressionField( fieldIdx )
|
||||
: QString();
|
||||
|
||||
|
@ -41,10 +41,10 @@ bool QgsFieldProxyModel::isReadOnly( const QModelIndex &index ) const
|
||||
return true;
|
||||
}
|
||||
|
||||
const QgsFields::FieldOrigin origin = static_cast< QgsFields::FieldOrigin >( originVariant.toInt() );
|
||||
const Qgis::FieldOrigin origin = static_cast< Qgis::FieldOrigin >( originVariant.toInt() );
|
||||
switch ( origin )
|
||||
{
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
{
|
||||
// show joined fields (e.g. auxiliary fields) only if they have a non-hidden editor widget.
|
||||
// This enables them to be bulk field-calculated when a user needs to, but hides them by default
|
||||
@ -55,13 +55,13 @@ bool QgsFieldProxyModel::isReadOnly( const QModelIndex &index ) const
|
||||
return !sourceModel()->data( index, static_cast< int >( QgsFieldModel::CustomRole::JoinedFieldIsEditable ) ).toBool();
|
||||
}
|
||||
|
||||
case QgsFields::OriginUnknown:
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
//read only
|
||||
return true;
|
||||
|
||||
case QgsFields::OriginEdit:
|
||||
case QgsFields::OriginProvider:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
case Qgis::FieldOrigin::Provider:
|
||||
{
|
||||
if ( !sourceModel()->data( index, static_cast< int >( QgsFieldModel::CustomRole::FieldIsWidgetEditable ) ).toBool() )
|
||||
{
|
||||
@ -87,16 +87,16 @@ bool QgsFieldProxyModel::filterAcceptsRow( int source_row, const QModelIndex &so
|
||||
|
||||
if ( mFilters.testFlag( QgsFieldProxyModel::OriginProvider ) )
|
||||
{
|
||||
const QgsFields::FieldOrigin origin = static_cast< QgsFields::FieldOrigin >( sourceModel()->data( index, static_cast< int >( QgsFieldModel::CustomRole::FieldOrigin ) ).toInt() );
|
||||
const Qgis::FieldOrigin origin = static_cast< Qgis::FieldOrigin >( sourceModel()->data( index, static_cast< int >( QgsFieldModel::CustomRole::FieldOrigin ) ).toInt() );
|
||||
switch ( origin )
|
||||
{
|
||||
case QgsFields::OriginUnknown:
|
||||
case QgsFields::OriginJoin:
|
||||
case QgsFields::OriginEdit:
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
return false;
|
||||
|
||||
case QgsFields::OriginProvider:
|
||||
case Qgis::FieldOrigin::Provider:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -56,12 +56,12 @@ void QgsFields::clear()
|
||||
* See details in QEP #17
|
||||
****************************************************************************/
|
||||
|
||||
bool QgsFields::append( const QgsField &field, FieldOrigin origin, int originIndex )
|
||||
bool QgsFields::append( const QgsField &field, Qgis::FieldOrigin origin, int originIndex )
|
||||
{
|
||||
if ( d->nameToIndex.contains( field.name() ) )
|
||||
return false;
|
||||
|
||||
if ( originIndex == -1 && origin == OriginProvider )
|
||||
if ( originIndex == -1 && origin == Qgis::FieldOrigin::Provider )
|
||||
originIndex = d->fields.count();
|
||||
d->fields.append( Field( field, origin, originIndex ) );
|
||||
|
||||
@ -92,7 +92,7 @@ bool QgsFields::appendExpressionField( const QgsField &field, int originIndex )
|
||||
if ( d->nameToIndex.contains( field.name() ) )
|
||||
return false;
|
||||
|
||||
d->fields.append( Field( field, OriginExpression, originIndex ) );
|
||||
d->fields.append( Field( field, Qgis::FieldOrigin::Expression, originIndex ) );
|
||||
|
||||
d->nameToIndex.insert( field.name(), d->fields.count() - 1 );
|
||||
return true;
|
||||
@ -186,10 +186,10 @@ QgsField QgsFields::operator[]( int i ) const
|
||||
return d->fields[i].field;
|
||||
}
|
||||
|
||||
QgsFields::FieldOrigin QgsFields::fieldOrigin( int fieldIdx ) const
|
||||
Qgis::FieldOrigin QgsFields::fieldOrigin( int fieldIdx ) const
|
||||
{
|
||||
if ( !exists( fieldIdx ) )
|
||||
return OriginUnknown;
|
||||
return Qgis::FieldOrigin::Unknown;
|
||||
|
||||
return d->fields[fieldIdx].origin;
|
||||
}
|
||||
@ -278,10 +278,10 @@ QIcon QgsFields::iconForField( int fieldIdx, bool considerOrigin ) const
|
||||
{
|
||||
switch ( fieldOrigin( fieldIdx ) )
|
||||
{
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconExpression.svg" ) );
|
||||
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
return QgsApplication::getThemeIcon( QStringLiteral( "/propertyicons/join.svg" ) );
|
||||
|
||||
default:
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "qgis_sip.h"
|
||||
#include "qgis_core.h"
|
||||
#include "qgis.h"
|
||||
#include "qgsfield.h"
|
||||
|
||||
class QgsFieldsPrivate;
|
||||
@ -41,7 +42,7 @@ class QgsFieldsPrivate;
|
||||
*
|
||||
* \note QgsFields objects are implicitly shared.
|
||||
*/
|
||||
class CORE_EXPORT QgsFields
|
||||
class CORE_EXPORT QgsFields
|
||||
{
|
||||
Q_GADGET
|
||||
|
||||
@ -51,15 +52,6 @@ class CORE_EXPORT QgsFields
|
||||
|
||||
public:
|
||||
|
||||
enum FieldOrigin
|
||||
{
|
||||
OriginUnknown, //!< It has not been specified where the field comes from
|
||||
OriginProvider, //!< Field comes from the underlying data provider of the vector layer (originIndex = index in provider's fields)
|
||||
OriginJoin, //!< Field comes from a joined layer (originIndex / 1000 = index of the join, originIndex % 1000 = index within the join)
|
||||
OriginEdit, //!< Field has been temporarily added in editing mode (originIndex = index in the list of added attributes)
|
||||
OriginExpression //!< Field is calculated from an expression
|
||||
};
|
||||
|
||||
#ifndef SIP_RUN
|
||||
|
||||
typedef struct Field
|
||||
@ -67,7 +59,7 @@ class CORE_EXPORT QgsFields
|
||||
Field()
|
||||
{}
|
||||
|
||||
Field( const QgsField &f, FieldOrigin o, int oi )
|
||||
Field( const QgsField &f, Qgis::FieldOrigin o, int oi )
|
||||
: field( f )
|
||||
, origin( o )
|
||||
, originIndex( oi )
|
||||
@ -79,7 +71,7 @@ class CORE_EXPORT QgsFields
|
||||
bool operator!=( const Field &other ) const { return !( *this == other ); }
|
||||
|
||||
QgsField field; //!< Field
|
||||
FieldOrigin origin = OriginUnknown ; //!< Origin of the field
|
||||
Qgis::FieldOrigin origin = Qgis::FieldOrigin::Unknown ; //!< Origin of the field
|
||||
int originIndex = -1 ; //!< Index specific to the origin
|
||||
} Field;
|
||||
|
||||
@ -105,8 +97,18 @@ class CORE_EXPORT QgsFields
|
||||
//! Removes all fields
|
||||
void clear() SIP_HOLDGIL;
|
||||
|
||||
//! Appends a field. The field must have unique name, otherwise it is rejected (returns FALSE)
|
||||
bool append( const QgsField &field, FieldOrigin origin = OriginProvider, int originIndex = -1 ) SIP_HOLDGIL;
|
||||
/**
|
||||
* Appends a \a field.
|
||||
*
|
||||
* The field must have a unique name, otherwise it is rejected (returns FALSE).
|
||||
*
|
||||
* The \a originIndex argument must be set to a value corresponding to the \a origin type:
|
||||
*
|
||||
* - Qgis::FieldOrigin::Provider: The field's originIndex is the index in provider's fields.
|
||||
* - Qgis::FieldOrigin::Join: The field's originIndex / 1000 = index of the join, originIndex % 1000 = index within the join
|
||||
* - Qgis::FieldOrigin::Edit: The originIndex is the index in the list of added attributes
|
||||
*/
|
||||
bool append( const QgsField &field, Qgis::FieldOrigin origin = Qgis::FieldOrigin::Provider, int originIndex = -1 ) SIP_HOLDGIL;
|
||||
|
||||
/**
|
||||
* Renames a name of field. The field must have unique name, otherwise change is rejected (returns FALSE)
|
||||
@ -298,7 +300,7 @@ class CORE_EXPORT QgsFields
|
||||
/**
|
||||
* Returns the field's origin (value from an enumeration).
|
||||
*/
|
||||
FieldOrigin fieldOrigin( int fieldIdx ) const;
|
||||
Qgis::FieldOrigin fieldOrigin( int fieldIdx ) const;
|
||||
#else
|
||||
|
||||
/**
|
||||
@ -306,7 +308,7 @@ class CORE_EXPORT QgsFields
|
||||
*
|
||||
* \throws KeyError if no field exists at the specified index
|
||||
*/
|
||||
FieldOrigin fieldOrigin( int fieldIdx ) const SIP_HOLDGIL;
|
||||
Qgis::FieldOrigin fieldOrigin( int fieldIdx ) const SIP_HOLDGIL;
|
||||
% MethodCode
|
||||
if ( a0 < 0 || a0 >= sipCpp->count() )
|
||||
{
|
||||
@ -324,6 +326,10 @@ class CORE_EXPORT QgsFields
|
||||
|
||||
/**
|
||||
* Returns the field's origin index (its meaning is specific to each type of origin).
|
||||
*
|
||||
* - Qgis::FieldOrigin::Provider: The field's originIndex is the index in provider's fields.
|
||||
* - Qgis::FieldOrigin::Join: The field's originIndex / 1000 = index of the join, originIndex % 1000 = index within the join
|
||||
* - Qgis::FieldOrigin::Edit: The originIndex is the index in the list of added attributes
|
||||
*/
|
||||
int fieldOriginIndex( int fieldIdx ) const;
|
||||
#else
|
||||
@ -331,6 +337,10 @@ class CORE_EXPORT QgsFields
|
||||
/**
|
||||
* Returns the field's origin index (its meaning is specific to each type of origin).
|
||||
*
|
||||
* - Qgis::FieldOrigin::Provider: The field's originIndex is the index in provider's fields.
|
||||
* - Qgis::FieldOrigin::Join: The field's originIndex / 1000 = index of the join, originIndex % 1000 = index within the join
|
||||
* - Qgis::FieldOrigin::Edit: The originIndex is the index in the list of added attributes
|
||||
*
|
||||
* \throws KeyError if no field exists at the specified index
|
||||
*/
|
||||
int fieldOriginIndex( int fieldIdx ) const SIP_HOLDGIL;
|
||||
|
@ -370,7 +370,7 @@ QgsVectorLayer *QgsVectorLayer::clone() const
|
||||
layer->setFieldConstraint( i, constraintIt.key(), constraintIt.value() );
|
||||
}
|
||||
|
||||
if ( fields().fieldOrigin( i ) == QgsFields::OriginExpression )
|
||||
if ( fields().fieldOrigin( i ) == Qgis::FieldOrigin::Expression )
|
||||
{
|
||||
layer->addExpressionField( expressionField( i ), fields().at( i ) );
|
||||
}
|
||||
@ -3406,22 +3406,22 @@ bool QgsVectorLayer::changeAttributeValue( QgsFeatureId fid, int field, const QV
|
||||
|
||||
switch ( fields().fieldOrigin( field ) )
|
||||
{
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
result = mJoinBuffer->changeAttributeValue( fid, field, newValue, oldValue );
|
||||
if ( result )
|
||||
emit attributeValueChanged( fid, field, newValue );
|
||||
break;
|
||||
|
||||
case QgsFields::OriginProvider:
|
||||
case QgsFields::OriginEdit:
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Provider:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
{
|
||||
if ( mEditBuffer && mDataProvider )
|
||||
result = mEditBuffer->changeAttributeValue( fid, field, newValue, oldValue );
|
||||
break;
|
||||
}
|
||||
|
||||
case QgsFields::OriginUnknown:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -3454,21 +3454,21 @@ bool QgsVectorLayer::changeAttributeValues( QgsFeatureId fid, const QgsAttribute
|
||||
|
||||
switch ( fields().fieldOrigin( field ) )
|
||||
{
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
newValuesJoin[field] = newValue;
|
||||
oldValuesJoin[field] = oldValue;
|
||||
break;
|
||||
|
||||
case QgsFields::OriginProvider:
|
||||
case QgsFields::OriginEdit:
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Provider:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
{
|
||||
newValuesNotJoin[field] = newValue;
|
||||
oldValuesNotJoin[field] = oldValue;
|
||||
break;
|
||||
}
|
||||
|
||||
case QgsFields::OriginUnknown:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -3531,7 +3531,7 @@ bool QgsVectorLayer::renameAttribute( int index, const QString &newName )
|
||||
|
||||
switch ( mFields.fieldOrigin( index ) )
|
||||
{
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
{
|
||||
if ( mExpressionFieldBuffer )
|
||||
{
|
||||
@ -3546,16 +3546,16 @@ bool QgsVectorLayer::renameAttribute( int index, const QString &newName )
|
||||
}
|
||||
}
|
||||
|
||||
case QgsFields::OriginProvider:
|
||||
case QgsFields::OriginEdit:
|
||||
case Qgis::FieldOrigin::Provider:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
|
||||
if ( !mEditBuffer || !mDataProvider )
|
||||
return false;
|
||||
|
||||
return mEditBuffer->renameAttribute( index, newName );
|
||||
|
||||
case QgsFields::OriginJoin:
|
||||
case QgsFields::OriginUnknown:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
return false;
|
||||
|
||||
}
|
||||
@ -3699,7 +3699,7 @@ bool QgsVectorLayer::deleteAttribute( int index )
|
||||
if ( index < 0 || index >= fields().count() )
|
||||
return false;
|
||||
|
||||
if ( mFields.fieldOrigin( index ) == QgsFields::OriginExpression )
|
||||
if ( mFields.fieldOrigin( index ) == Qgis::FieldOrigin::Expression )
|
||||
{
|
||||
removeExpressionField( index );
|
||||
return true;
|
||||
@ -3866,7 +3866,7 @@ QgsAttributeList QgsVectorLayer::primaryKeyAttributes() const
|
||||
QgsAttributeList providerIndexes = mDataProvider->pkAttributeIndexes();
|
||||
for ( int i = 0; i < mFields.count(); ++i )
|
||||
{
|
||||
if ( mFields.fieldOrigin( i ) == QgsFields::OriginProvider &&
|
||||
if ( mFields.fieldOrigin( i ) == Qgis::FieldOrigin::Provider &&
|
||||
providerIndexes.contains( mFields.fieldOriginIndex( i ) ) )
|
||||
pkAttributesList << i;
|
||||
}
|
||||
@ -4252,7 +4252,7 @@ bool QgsVectorLayer::isAuxiliaryField( int index, int &srcIndex ) const
|
||||
if ( !auxiliaryLayer() )
|
||||
return auxiliaryField;
|
||||
|
||||
if ( index >= 0 && fields().fieldOrigin( index ) == QgsFields::OriginJoin )
|
||||
if ( index >= 0 && fields().fieldOrigin( index ) == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
const QgsVectorLayerJoinInfo *info = mJoinBuffer->joinForFieldIndex( index, fields(), srcIndex );
|
||||
|
||||
@ -4451,7 +4451,7 @@ QString QgsVectorLayer::expressionField( int index ) const
|
||||
{
|
||||
QGIS_PROTECT_QOBJECT_THREAD_ACCESS
|
||||
|
||||
if ( mFields.fieldOrigin( index ) != QgsFields::OriginExpression )
|
||||
if ( mFields.fieldOrigin( index ) != Qgis::FieldOrigin::Expression )
|
||||
return QString();
|
||||
|
||||
int oi = mFields.fieldOriginIndex( index );
|
||||
@ -4702,13 +4702,13 @@ QSet<QVariant> QgsVectorLayer::uniqueValues( int index, int limit ) const
|
||||
return uniqueValues;
|
||||
}
|
||||
|
||||
QgsFields::FieldOrigin origin = mFields.fieldOrigin( index );
|
||||
Qgis::FieldOrigin origin = mFields.fieldOrigin( index );
|
||||
switch ( origin )
|
||||
{
|
||||
case QgsFields::OriginUnknown:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
return uniqueValues;
|
||||
|
||||
case QgsFields::OriginProvider: //a provider field
|
||||
case Qgis::FieldOrigin::Provider: //a provider field
|
||||
{
|
||||
uniqueValues = mDataProvider->uniqueValues( index, limit );
|
||||
|
||||
@ -4758,7 +4758,7 @@ QSet<QVariant> QgsVectorLayer::uniqueValues( int index, int limit ) const
|
||||
return uniqueValues;
|
||||
}
|
||||
|
||||
case QgsFields::OriginEdit:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
// the layer is editable, but in certain cases it can still be avoided going through all features
|
||||
if ( mDataProvider->transaction() || (
|
||||
mEditBuffer->deletedFeatureIds().isEmpty() &&
|
||||
@ -4771,8 +4771,8 @@ QSet<QVariant> QgsVectorLayer::uniqueValues( int index, int limit ) const
|
||||
}
|
||||
[[fallthrough]];
|
||||
//we need to go through each feature
|
||||
case QgsFields::OriginJoin:
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
{
|
||||
QgsAttributeList attList;
|
||||
attList << index;
|
||||
@ -4812,13 +4812,13 @@ QStringList QgsVectorLayer::uniqueStringsMatching( int index, const QString &sub
|
||||
return results;
|
||||
}
|
||||
|
||||
QgsFields::FieldOrigin origin = mFields.fieldOrigin( index );
|
||||
Qgis::FieldOrigin origin = mFields.fieldOrigin( index );
|
||||
switch ( origin )
|
||||
{
|
||||
case QgsFields::OriginUnknown:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
return results;
|
||||
|
||||
case QgsFields::OriginProvider: //a provider field
|
||||
case Qgis::FieldOrigin::Provider: //a provider field
|
||||
{
|
||||
results = mDataProvider->uniqueStringsMatching( index, substring, limit, feedback );
|
||||
|
||||
@ -4859,7 +4859,7 @@ QStringList QgsVectorLayer::uniqueStringsMatching( int index, const QString &sub
|
||||
return results;
|
||||
}
|
||||
|
||||
case QgsFields::OriginEdit:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
// the layer is editable, but in certain cases it can still be avoided going through all features
|
||||
if ( mDataProvider->transaction() || ( mEditBuffer->deletedFeatureIds().isEmpty() &&
|
||||
mEditBuffer->addedFeatures().isEmpty() &&
|
||||
@ -4870,8 +4870,8 @@ QStringList QgsVectorLayer::uniqueStringsMatching( int index, const QString &sub
|
||||
}
|
||||
[[fallthrough]];
|
||||
//we need to go through each feature
|
||||
case QgsFields::OriginJoin:
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
{
|
||||
QgsAttributeList attList;
|
||||
attList << index;
|
||||
@ -4944,16 +4944,16 @@ void QgsVectorLayer::minimumOrMaximumValue( int index, QVariant *minimum, QVaria
|
||||
return;
|
||||
}
|
||||
|
||||
QgsFields::FieldOrigin origin = mFields.fieldOrigin( index );
|
||||
Qgis::FieldOrigin origin = mFields.fieldOrigin( index );
|
||||
|
||||
switch ( origin )
|
||||
{
|
||||
case QgsFields::OriginUnknown:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
case QgsFields::OriginProvider: //a provider field
|
||||
case Qgis::FieldOrigin::Provider: //a provider field
|
||||
{
|
||||
if ( minimum )
|
||||
*minimum = mDataProvider->minimumValue( index );
|
||||
@ -4987,7 +4987,7 @@ void QgsVectorLayer::minimumOrMaximumValue( int index, QVariant *minimum, QVaria
|
||||
return;
|
||||
}
|
||||
|
||||
case QgsFields::OriginEdit:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
{
|
||||
// the layer is editable, but in certain cases it can still be avoided going through all features
|
||||
if ( mDataProvider->transaction() || ( mEditBuffer->deletedFeatureIds().isEmpty() &&
|
||||
@ -5004,8 +5004,8 @@ void QgsVectorLayer::minimumOrMaximumValue( int index, QVariant *minimum, QVaria
|
||||
}
|
||||
[[fallthrough]];
|
||||
// no choice but to go through all features
|
||||
case QgsFields::OriginExpression:
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
{
|
||||
// we need to go through each feature
|
||||
QgsAttributeList attList;
|
||||
@ -5115,8 +5115,8 @@ QVariant QgsVectorLayer::aggregate( Qgis::Aggregate aggregate, const QString &fi
|
||||
{
|
||||
// aggregate is based on a field - if it's a provider field, we could possibly hand over the calculation
|
||||
// to the provider itself
|
||||
QgsFields::FieldOrigin origin = mFields.fieldOrigin( attrIndex );
|
||||
if ( origin == QgsFields::OriginProvider )
|
||||
Qgis::FieldOrigin origin = mFields.fieldOrigin( attrIndex );
|
||||
if ( origin == Qgis::FieldOrigin::Provider )
|
||||
{
|
||||
bool providerOk = false;
|
||||
QVariant val = mDataProvider->aggregate( aggregate, attrIndex, parameters, context, providerOk, fids );
|
||||
@ -6174,7 +6174,7 @@ QgsFieldConstraints::Constraints QgsVectorLayer::fieldConstraints( int fieldInde
|
||||
QgsFieldConstraints::Constraints constraints = mFields.at( fieldIndex ).constraints().constraints();
|
||||
|
||||
// make sure provider constraints are always present!
|
||||
if ( mFields.fieldOrigin( fieldIndex ) == QgsFields::OriginProvider )
|
||||
if ( mFields.fieldOrigin( fieldIndex ) == Qgis::FieldOrigin::Provider )
|
||||
{
|
||||
constraints |= mDataProvider->fieldConstraints( mFields.fieldOriginIndex( fieldIndex ) );
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ void QgsVectorLayerEditBuffer::updateFields( QgsFields &fields )
|
||||
// add new fields
|
||||
for ( int i = 0; i < mAddedAttributes.count(); ++i )
|
||||
{
|
||||
fields.append( mAddedAttributes.at( i ), QgsFields::OriginEdit, i );
|
||||
fields.append( mAddedAttributes.at( i ), Qgis::FieldOrigin::Edit, i );
|
||||
}
|
||||
}
|
||||
|
||||
@ -291,8 +291,8 @@ bool QgsVectorLayerEditBuffer::changeAttributeValue( QgsFeatureId fid, int field
|
||||
}
|
||||
|
||||
if ( field < 0 || field >= L->fields().count() ||
|
||||
L->fields().fieldOrigin( field ) == QgsFields::OriginJoin ||
|
||||
L->fields().fieldOrigin( field ) == QgsFields::OriginExpression )
|
||||
L->fields().fieldOrigin( field ) == Qgis::FieldOrigin::Join ||
|
||||
L->fields().fieldOrigin( field ) == Qgis::FieldOrigin::Expression )
|
||||
return false;
|
||||
|
||||
L->undoStack()->push( new QgsVectorLayerUndoCommandChangeAttribute( this, fid, field, newValue, oldValue ) );
|
||||
@ -332,13 +332,13 @@ bool QgsVectorLayerEditBuffer::deleteAttribute( int index )
|
||||
return false;
|
||||
|
||||
// find out source of the field
|
||||
QgsFields::FieldOrigin origin = L->fields().fieldOrigin( index );
|
||||
Qgis::FieldOrigin origin = L->fields().fieldOrigin( index );
|
||||
int originIndex = L->fields().fieldOriginIndex( index );
|
||||
|
||||
if ( origin == QgsFields::OriginProvider && mDeletedAttributeIds.contains( originIndex ) )
|
||||
if ( origin == Qgis::FieldOrigin::Provider && mDeletedAttributeIds.contains( originIndex ) )
|
||||
return false;
|
||||
|
||||
if ( origin == QgsFields::OriginJoin )
|
||||
if ( origin == Qgis::FieldOrigin::Join )
|
||||
return false;
|
||||
|
||||
L->undoStack()->push( new QgsVectorLayerUndoCommandDeleteAttribute( this, index ) );
|
||||
|
@ -866,7 +866,7 @@ bool QgsVectorLayerEditUtils::mergeFeatures( const QgsFeatureId &targetFeatureId
|
||||
{
|
||||
QVariant val = mergeAttributes.at( i );
|
||||
|
||||
bool isDefaultValue = mLayer->fields().fieldOrigin( i ) == QgsFields::OriginProvider &&
|
||||
bool isDefaultValue = mLayer->fields().fieldOrigin( i ) == Qgis::FieldOrigin::Provider &&
|
||||
mLayer->dataProvider() &&
|
||||
mLayer->dataProvider()->defaultValueClause( mLayer->fields().fieldOriginIndex( i ) ) == val;
|
||||
|
||||
|
@ -202,7 +202,7 @@ QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator( QgsVectorLayerFeat
|
||||
const auto usedAttributeIndices = mRequest.orderBy().usedAttributeIndices( mSource->mFields );
|
||||
for ( const int attrIndex : usedAttributeIndices )
|
||||
{
|
||||
if ( mSource->mFields.fieldOrigin( attrIndex ) != QgsFields::OriginProvider )
|
||||
if ( mSource->mFields.fieldOrigin( attrIndex ) != Qgis::FieldOrigin::Provider )
|
||||
mDelegatedOrderByToProvider = false;
|
||||
|
||||
attributeIndexes << attrIndex;
|
||||
@ -263,7 +263,7 @@ QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator( QgsVectorLayerFeat
|
||||
{
|
||||
if ( attrIndex < 0 || attrIndex >= nPendingFields )
|
||||
continue;
|
||||
if ( mSource->mFields.fieldOrigin( attrIndex ) == QgsFields::OriginProvider )
|
||||
if ( mSource->mFields.fieldOrigin( attrIndex ) == Qgis::FieldOrigin::Provider )
|
||||
providerSubset << mSource->mFields.fieldOriginIndex( attrIndex );
|
||||
}
|
||||
|
||||
@ -294,7 +294,7 @@ QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator( QgsVectorLayerFeat
|
||||
|
||||
// If there are fields in the expression which are not of origin provider, the provider will not be able to filter based on them.
|
||||
// In this case we disable the expression filter.
|
||||
if ( source->mFields.fieldOrigin( idx ) != QgsFields::OriginProvider )
|
||||
if ( source->mFields.fieldOrigin( idx ) != Qgis::FieldOrigin::Provider )
|
||||
{
|
||||
mProviderRequest.disableFilter();
|
||||
// can't limit at provider side
|
||||
@ -798,7 +798,7 @@ void QgsVectorLayerFeatureIterator::prepareJoin( int fieldIdx )
|
||||
if ( !mSource->mFields.exists( fieldIdx ) )
|
||||
return;
|
||||
|
||||
if ( mSource->mFields.fieldOrigin( fieldIdx ) != QgsFields::OriginJoin )
|
||||
if ( mSource->mFields.fieldOrigin( fieldIdx ) != Qgis::FieldOrigin::Join )
|
||||
return;
|
||||
|
||||
int sourceLayerIndex;
|
||||
@ -939,7 +939,7 @@ void QgsVectorLayerFeatureIterator::createOrderedJoinList()
|
||||
QList< int >::const_iterator prepFieldIt = mPreparedFields.constBegin();
|
||||
for ( ; prepFieldIt != mPreparedFields.constEnd(); ++prepFieldIt )
|
||||
{
|
||||
if ( mSource->mFields.fieldOrigin( *prepFieldIt ) != QgsFields::OriginJoin )
|
||||
if ( mSource->mFields.fieldOrigin( *prepFieldIt ) != Qgis::FieldOrigin::Join )
|
||||
{
|
||||
resolvedFields.insert( *prepFieldIt );
|
||||
}
|
||||
@ -1044,20 +1044,20 @@ void QgsVectorLayerFeatureIterator::prepareField( int fieldIdx )
|
||||
{
|
||||
switch ( mSource->mFields.fieldOrigin( fieldIdx ) )
|
||||
{
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
prepareExpression( fieldIdx );
|
||||
break;
|
||||
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
if ( mSource->mJoinBuffer->containsJoins() )
|
||||
{
|
||||
prepareJoin( fieldIdx );
|
||||
}
|
||||
break;
|
||||
|
||||
case QgsFields::OriginUnknown:
|
||||
case QgsFields::OriginProvider:
|
||||
case QgsFields::OriginEdit:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
case Qgis::FieldOrigin::Provider:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ void QgsVectorLayerJoinBuffer::cacheJoinLayer( QgsVectorLayerJoinInfo &joinInfo
|
||||
// Check for name collisions
|
||||
int fieldIndex = mLayer->fields().indexFromName( joinFieldName );
|
||||
if ( fieldIndex >= 0
|
||||
&& mLayer->fields().fieldOrigin( fieldIndex ) != QgsFields::OriginJoin )
|
||||
&& mLayer->fields().fieldOrigin( fieldIndex ) != Qgis::FieldOrigin::Join )
|
||||
continue;
|
||||
|
||||
attributesCache.append( attrs.at( i ) );
|
||||
@ -273,7 +273,7 @@ void QgsVectorLayerJoinBuffer::updateFields( QgsFields &fields )
|
||||
{
|
||||
QgsField f = joinFields.at( idx );
|
||||
f.setName( prefix + f.name() );
|
||||
fields.append( f, QgsFields::OriginJoin, idx + ( joinIdx * 1000 ) );
|
||||
fields.append( f, Qgis::FieldOrigin::Join, idx + ( joinIdx * 1000 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -413,7 +413,7 @@ int QgsVectorLayerJoinBuffer::joinedFieldsOffset( const QgsVectorLayerJoinInfo *
|
||||
|
||||
for ( int i = 0; i < fields.count(); ++i )
|
||||
{
|
||||
if ( fields.fieldOrigin( i ) != QgsFields::OriginJoin )
|
||||
if ( fields.fieldOrigin( i ) != Qgis::FieldOrigin::Join )
|
||||
continue;
|
||||
|
||||
if ( fields.fieldOriginIndex( i ) / 1000 == joinIndex )
|
||||
@ -424,7 +424,7 @@ int QgsVectorLayerJoinBuffer::joinedFieldsOffset( const QgsVectorLayerJoinInfo *
|
||||
|
||||
const QgsVectorLayerJoinInfo *QgsVectorLayerJoinBuffer::joinForFieldIndex( int index, const QgsFields &fields, int &sourceFieldIndex ) const
|
||||
{
|
||||
if ( fields.fieldOrigin( index ) != QgsFields::OriginJoin )
|
||||
if ( fields.fieldOrigin( index ) != Qgis::FieldOrigin::Join )
|
||||
return nullptr;
|
||||
|
||||
int originIndex = fields.fieldOriginIndex( index );
|
||||
@ -645,7 +645,7 @@ bool QgsVectorLayerJoinBuffer::addFeatures( QgsFeatureList &features, QgsFeature
|
||||
|
||||
bool QgsVectorLayerJoinBuffer::changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue )
|
||||
{
|
||||
if ( mLayer->fields().fieldOrigin( field ) != QgsFields::OriginJoin )
|
||||
if ( mLayer->fields().fieldOrigin( field ) != Qgis::FieldOrigin::Join )
|
||||
return false;
|
||||
|
||||
int srcFieldIndex;
|
||||
|
@ -315,7 +315,7 @@ QgsVectorLayerUndoCommandAddAttribute::QgsVectorLayerUndoCommandAddAttribute( Qg
|
||||
{
|
||||
const QgsFields &fields = layer()->fields();
|
||||
int i;
|
||||
for ( i = 0; i < fields.count() && fields.fieldOrigin( i ) != QgsFields::OriginJoin; i++ )
|
||||
for ( i = 0; i < fields.count() && fields.fieldOrigin( i ) != Qgis::FieldOrigin::Join; i++ )
|
||||
;
|
||||
mFieldIndex = i;
|
||||
}
|
||||
@ -346,9 +346,9 @@ QgsVectorLayerUndoCommandDeleteAttribute::QgsVectorLayerUndoCommandDeleteAttribu
|
||||
, mFieldIndex( fieldIndex )
|
||||
{
|
||||
const QgsFields &fields = layer()->fields();
|
||||
const QgsFields::FieldOrigin origin = fields.fieldOrigin( mFieldIndex );
|
||||
const Qgis::FieldOrigin origin = fields.fieldOrigin( mFieldIndex );
|
||||
mOriginIndex = fields.fieldOriginIndex( mFieldIndex );
|
||||
mProviderField = ( origin == QgsFields::OriginProvider );
|
||||
mProviderField = ( origin == Qgis::FieldOrigin::Provider );
|
||||
mFieldName = fields.field( mFieldIndex ).name();
|
||||
|
||||
if ( !mProviderField )
|
||||
@ -447,9 +447,9 @@ QgsVectorLayerUndoCommandRenameAttribute::QgsVectorLayerUndoCommandRenameAttribu
|
||||
, mNewName( newName )
|
||||
{
|
||||
const QgsFields &fields = layer()->fields();
|
||||
const QgsFields::FieldOrigin origin = fields.fieldOrigin( mFieldIndex );
|
||||
const Qgis::FieldOrigin origin = fields.fieldOrigin( mFieldIndex );
|
||||
mOriginIndex = fields.fieldOriginIndex( mFieldIndex );
|
||||
mProviderField = ( origin == QgsFields::OriginProvider );
|
||||
mProviderField = ( origin == Qgis::FieldOrigin::Provider );
|
||||
}
|
||||
|
||||
void QgsVectorLayerUndoCommandRenameAttribute::undo()
|
||||
|
@ -163,7 +163,7 @@ bool QgsVectorLayerUtils::valueExists( const QgsVectorLayer *layer, int fieldInd
|
||||
return false;
|
||||
|
||||
// If it's a joined field search the value in the source layer
|
||||
if ( fields.fieldOrigin( fieldIndex ) == QgsFields::FieldOrigin::OriginJoin )
|
||||
if ( fields.fieldOrigin( fieldIndex ) == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
int srcFieldIndex;
|
||||
const QgsVectorLayerJoinInfo *joinInfo { layer->joinBuffer()->joinForFieldIndex( fieldIndex, fields, srcFieldIndex ) };
|
||||
@ -431,7 +431,7 @@ bool QgsVectorLayerUtils::validateAttribute( const QgsVectorLayer *layer, const
|
||||
&& ( origin == QgsFieldConstraints::ConstraintOriginNotSet || origin == constraints.constraintOrigin( QgsFieldConstraints::ConstraintNotNull ) ) )
|
||||
{
|
||||
bool exempt = false;
|
||||
if ( fields.fieldOrigin( attributeIndex ) == QgsFields::OriginProvider
|
||||
if ( fields.fieldOrigin( attributeIndex ) == Qgis::FieldOrigin::Provider
|
||||
&& constraints.constraintOrigin( QgsFieldConstraints::ConstraintNotNull ) == QgsFieldConstraints::ConstraintOriginProvider )
|
||||
{
|
||||
int providerIdx = fields.fieldOriginIndex( attributeIndex );
|
||||
@ -459,7 +459,7 @@ bool QgsVectorLayerUtils::validateAttribute( const QgsVectorLayer *layer, const
|
||||
&& ( origin == QgsFieldConstraints::ConstraintOriginNotSet || origin == constraints.constraintOrigin( QgsFieldConstraints::ConstraintUnique ) ) )
|
||||
{
|
||||
bool exempt = false;
|
||||
if ( fields.fieldOrigin( attributeIndex ) == QgsFields::OriginProvider
|
||||
if ( fields.fieldOrigin( attributeIndex ) == Qgis::FieldOrigin::Provider
|
||||
&& constraints.constraintOrigin( QgsFieldConstraints::ConstraintNotNull ) == QgsFieldConstraints::ConstraintOriginProvider )
|
||||
{
|
||||
int providerIdx = fields.fieldOriginIndex( attributeIndex );
|
||||
@ -571,7 +571,7 @@ QgsFeatureList QgsVectorLayerUtils::createFeatures( const QgsVectorLayer *layer,
|
||||
// note - not an else if deliberately. Users may return null from a default value expression to fallback to provider defaults
|
||||
if ( ( QgsVariantUtils::isNull( v ) || ( hasUniqueConstraint
|
||||
&& checkUniqueValue( idx, v ) ) )
|
||||
&& fields.fieldOrigin( idx ) == QgsFields::OriginProvider )
|
||||
&& fields.fieldOrigin( idx ) == Qgis::FieldOrigin::Provider )
|
||||
{
|
||||
int providerIndex = fields.fieldOriginIndex( idx );
|
||||
QString providerDefault = layer->dataProvider()->defaultValueClause( providerIndex );
|
||||
@ -587,7 +587,7 @@ QgsFeatureList QgsVectorLayerUtils::createFeatures( const QgsVectorLayer *layer,
|
||||
if ( ( QgsVariantUtils::isNull( v ) || ( checkUnique
|
||||
&& hasUniqueConstraint
|
||||
&& checkUniqueValue( idx, v ) ) )
|
||||
&& fields.fieldOrigin( idx ) == QgsFields::OriginProvider )
|
||||
&& fields.fieldOrigin( idx ) == Qgis::FieldOrigin::Provider )
|
||||
{
|
||||
int providerIndex = fields.fieldOriginIndex( idx );
|
||||
v = layer->dataProvider()->defaultValue( providerIndex );
|
||||
@ -898,7 +898,7 @@ bool _fieldIsEditable( const QgsVectorLayer *layer, int fieldIndex, const QgsFea
|
||||
|
||||
bool QgsVectorLayerUtils::fieldIsReadOnly( const QgsVectorLayer *layer, int fieldIndex )
|
||||
{
|
||||
if ( layer->fields().fieldOrigin( fieldIndex ) == QgsFields::OriginJoin )
|
||||
if ( layer->fields().fieldOrigin( fieldIndex ) == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
int srcFieldIndex;
|
||||
const QgsVectorLayerJoinInfo *info = layer->joinBuffer()->joinForFieldIndex( fieldIndex, layer->fields(), srcFieldIndex );
|
||||
@ -926,7 +926,7 @@ bool QgsVectorLayerUtils::fieldIsReadOnly( const QgsVectorLayer *layer, int fiel
|
||||
bool QgsVectorLayerUtils::fieldEditabilityDependsOnFeature( const QgsVectorLayer *layer, int fieldIndex )
|
||||
{
|
||||
// editability will vary feature-by-feature only for joined fields
|
||||
if ( layer->fields().fieldOrigin( fieldIndex ) == QgsFields::OriginJoin )
|
||||
if ( layer->fields().fieldOrigin( fieldIndex ) == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
int srcFieldIndex;
|
||||
const QgsVectorLayerJoinInfo *info = layer->joinBuffer()->joinForFieldIndex( fieldIndex, layer->fields(), srcFieldIndex );
|
||||
@ -946,7 +946,7 @@ bool QgsVectorLayerUtils::fieldEditabilityDependsOnFeature( const QgsVectorLayer
|
||||
|
||||
bool QgsVectorLayerUtils::fieldIsEditable( const QgsVectorLayer *layer, int fieldIndex, const QgsFeature &feature )
|
||||
{
|
||||
if ( layer->fields().fieldOrigin( fieldIndex ) == QgsFields::OriginJoin )
|
||||
if ( layer->fields().fieldOrigin( fieldIndex ) == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
int srcFieldIndex;
|
||||
const QgsVectorLayerJoinInfo *info = layer->joinBuffer()->joinForFieldIndex( fieldIndex, layer->fields(), srcFieldIndex );
|
||||
|
@ -61,8 +61,8 @@ QgsAttributeTypeDialog::QgsAttributeTypeDialog( QgsVectorLayer *vl, int fieldIdx
|
||||
|
||||
connect( mWidgetTypeComboBox, static_cast< void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsAttributeTypeDialog::onCurrentWidgetChanged );
|
||||
|
||||
if ( vl->fields().fieldOrigin( fieldIdx ) == QgsFields::OriginJoin ||
|
||||
vl->fields().fieldOrigin( fieldIdx ) == QgsFields::OriginExpression )
|
||||
if ( vl->fields().fieldOrigin( fieldIdx ) == Qgis::FieldOrigin::Join ||
|
||||
vl->fields().fieldOrigin( fieldIdx ) == Qgis::FieldOrigin::Expression )
|
||||
{
|
||||
isFieldEditableCheckBox->setEnabled( false );
|
||||
}
|
||||
|
@ -26,7 +26,6 @@
|
||||
#include "qgseditorwidgetregistry.h"
|
||||
#include "qgseditorwidgetwrapper.h"
|
||||
#include "qgsfeatureselectionmodel.h"
|
||||
#include "qgslogger.h"
|
||||
#include "qgsvectordataprovider.h"
|
||||
#include "qgsactionmanager.h"
|
||||
#include "qgsgui.h"
|
||||
@ -80,9 +79,9 @@ QWidget *QgsAttributeTableDelegate::createEditor( QWidget *parent, const QStyleO
|
||||
w->setAutoFillBackground( true );
|
||||
w->setFocusPolicy( Qt::StrongFocus ); // to make sure QMouseEvents are propagated to the editor widget
|
||||
|
||||
const int fieldOrigin = vl->fields().fieldOrigin( fieldIdx );
|
||||
const Qgis::FieldOrigin fieldOrigin = vl->fields().fieldOrigin( fieldIdx );
|
||||
bool readOnly = true;
|
||||
if ( fieldOrigin == QgsFields::OriginJoin )
|
||||
if ( fieldOrigin == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
int srcFieldIndex;
|
||||
const QgsVectorLayerJoinInfo *info = vl->joinBuffer()->joinForFieldIndex( fieldIdx, vl->fields(), srcFieldIndex );
|
||||
|
@ -1163,7 +1163,7 @@ QgsAttributeList QgsDualView::requiredAttributes( const QgsVectorLayer *layer )
|
||||
const QSet<int> colAttrs { attributes };
|
||||
for ( const int attrIdx : std::as_const( colAttrs ) )
|
||||
{
|
||||
if ( layer->fields().fieldOrigin( attrIdx ) == QgsFields::FieldOrigin::OriginExpression )
|
||||
if ( layer->fields().fieldOrigin( attrIdx ) == Qgis::FieldOrigin::Expression )
|
||||
{
|
||||
attributes += QgsExpression( layer->expressionField( attrIdx ) ).referencedAttributeIndexes( layer->fields() );
|
||||
}
|
||||
|
@ -17,24 +17,16 @@
|
||||
#include <QMessageBox>
|
||||
|
||||
#include "qgsorganizetablecolumnsdialog.h"
|
||||
#include "qgsattributetablemodel.h"
|
||||
#include "qgsattributetablefiltermodel.h"
|
||||
#include "qgsattributetableview.h"
|
||||
#include "qgsdockwidget.h"
|
||||
|
||||
#include "qgsapplication.h"
|
||||
#include "qgsvectordataprovider.h"
|
||||
#include "qgsvectorlayer.h"
|
||||
#include "qgsexpression.h"
|
||||
|
||||
#include "qgssearchquerybuilder.h"
|
||||
#include "qgslogger.h"
|
||||
#include "qgsmapcanvas.h"
|
||||
#include "qgsproject.h"
|
||||
#include "qgsexpressionbuilderdialog.h"
|
||||
#include "qgsmessagebar.h"
|
||||
#include "qgsexpressionselectiondialog.h"
|
||||
#include "qgsfeaturelistmodel.h"
|
||||
#include "qgsrubberband.h"
|
||||
#include "qgsfields.h"
|
||||
#include "qgseditorwidgetregistry.h"
|
||||
@ -75,11 +67,11 @@ QgsOrganizeTableColumnsDialog::QgsOrganizeTableColumnsDialog( const QgsVectorLay
|
||||
|
||||
switch ( vl->fields().fieldOrigin( idx ) )
|
||||
{
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
item->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconExpression.svg" ) ) );
|
||||
break;
|
||||
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
item->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/propertyicons/join.svg" ) ) );
|
||||
break;
|
||||
|
||||
|
@ -95,7 +95,7 @@ QgsEditorWidgetSetup QgsEditorWidgetAutoConf::editorWidgetSetup( const QgsVector
|
||||
if ( fieldIndex >= 0 )
|
||||
{
|
||||
|
||||
if ( vl->fields().fieldOrigin( fieldIndex ) == QgsFields::OriginProvider )
|
||||
if ( vl->fields().fieldOrigin( fieldIndex ) == Qgis::FieldOrigin::Provider )
|
||||
{
|
||||
// important check - for provider fields, we CANNOT use auto configured widgets if the field
|
||||
// uses a default value clause - otherwise the widget will obliterate the default value clause
|
||||
|
@ -42,7 +42,6 @@
|
||||
#include "qgsrelationmanager.h"
|
||||
#include "qgslogger.h"
|
||||
#include "qgstabwidget.h"
|
||||
#include "qgssettings.h"
|
||||
#include "qgsscrollarea.h"
|
||||
#include "qgsvectorlayerjoinbuffer.h"
|
||||
#include "qgsvectorlayerutils.h"
|
||||
@ -1174,7 +1173,7 @@ void QgsAttributeForm::updateConstraint( const QgsFeature &ft, QgsEditorWidgetWr
|
||||
|
||||
QgsFieldConstraints::ConstraintOrigin constraintOrigin = mLayer->isEditable() ? QgsFieldConstraints::ConstraintOriginNotSet : QgsFieldConstraints::ConstraintOriginLayer;
|
||||
|
||||
if ( eww->layer()->fields().fieldOrigin( eww->fieldIdx() ) == QgsFields::OriginJoin )
|
||||
if ( eww->layer()->fields().fieldOrigin( eww->fieldIdx() ) == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
int srcFieldIdx;
|
||||
const QgsVectorLayerJoinInfo *info = eww->layer()->joinBuffer()->joinForFieldIndex( eww->fieldIdx(), eww->layer()->fields(), srcFieldIdx );
|
||||
@ -3255,7 +3254,7 @@ void QgsAttributeForm::updateIcon( QgsEditorWidgetWrapper *eww )
|
||||
|
||||
if ( !eww->widget()->isEnabled() && mLayer->isEditable() )
|
||||
{
|
||||
if ( mLayer->fields().fieldOrigin( eww->fieldIdx() ) == QgsFields::OriginJoin )
|
||||
if ( mLayer->fields().fieldOrigin( eww->fieldIdx() ) == Qgis::FieldOrigin::Join )
|
||||
{
|
||||
int srcFieldIndex;
|
||||
const QgsVectorLayerJoinInfo *info = mLayer->joinBuffer()->joinForFieldIndex( eww->fieldIdx(), mLayer->fields(), srcFieldIndex );
|
||||
|
@ -1080,8 +1080,8 @@ QgsAttributesFormProperties::FieldConfig::FieldConfig( QgsVectorLayer *layer, in
|
||||
mDataDefinedProperties = layer->editFormConfig().dataDefinedFieldProperties( layer->fields().at( idx ).name() );
|
||||
mComment = layer->fields().at( idx ).comment();
|
||||
mEditable = !layer->editFormConfig().readOnly( idx );
|
||||
mEditableEnabled = layer->fields().fieldOrigin( idx ) != QgsFields::OriginJoin
|
||||
&& layer->fields().fieldOrigin( idx ) != QgsFields::OriginExpression;
|
||||
mEditableEnabled = layer->fields().fieldOrigin( idx ) != Qgis::FieldOrigin::Join
|
||||
&& layer->fields().fieldOrigin( idx ) != Qgis::FieldOrigin::Expression;
|
||||
mLabelOnTop = layer->editFormConfig().labelOnTop( idx );
|
||||
mReuseLastValues = layer->editFormConfig().reuseLastValue( idx );
|
||||
mFieldConstraints = layer->fields().at( idx ).constraints();
|
||||
|
@ -491,16 +491,16 @@ void QgsFieldCalculator::populateFields()
|
||||
{
|
||||
switch ( fields.fieldOrigin( idx ) )
|
||||
{
|
||||
case QgsFields::OriginExpression:
|
||||
case QgsFields::OriginUnknown:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
case Qgis::FieldOrigin::Unknown:
|
||||
|
||||
continue; // can't be edited
|
||||
|
||||
case QgsFields::OriginProvider:
|
||||
case QgsFields::OriginEdit:
|
||||
case Qgis::FieldOrigin::Provider:
|
||||
case Qgis::FieldOrigin::Edit:
|
||||
break; // can always be edited
|
||||
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
{
|
||||
// show joined fields (e.g. auxiliary fields) only if they have a non-hidden editor widget.
|
||||
// This enables them to be bulk field-calculated when a user needs to, but hides them by default
|
||||
|
@ -163,12 +163,12 @@ void QgsSourceFieldsProperties::attributeAdded( int idx )
|
||||
|
||||
switch ( mLayer->fields().fieldOrigin( idx ) )
|
||||
{
|
||||
case QgsFields::OriginExpression:
|
||||
case Qgis::FieldOrigin::Expression:
|
||||
if ( i == 7 ) continue;
|
||||
mFieldsList->item( row, i )->setBackground( expressionColor );
|
||||
break;
|
||||
|
||||
case QgsFields::OriginJoin:
|
||||
case Qgis::FieldOrigin::Join:
|
||||
mFieldsList->item( row, i )->setBackground( joinColor );
|
||||
break;
|
||||
|
||||
@ -213,7 +213,7 @@ void QgsSourceFieldsProperties::setRow( int row, int idx, const QgsField &field
|
||||
mFieldsList->setItem( row, AttrLengthCol, new QTableWidgetItem( QString::number( field.length() ) ) );
|
||||
mFieldsList->setItem( row, AttrPrecCol, new QTableWidgetItem( QString::number( field.precision() ) ) );
|
||||
|
||||
if ( mLayer->fields().fieldOrigin( idx ) == QgsFields::OriginExpression )
|
||||
if ( mLayer->fields().fieldOrigin( idx ) == Qgis::FieldOrigin::Expression )
|
||||
{
|
||||
QWidget *expressionWidget = new QWidget;
|
||||
expressionWidget->setLayout( new QHBoxLayout );
|
||||
@ -245,7 +245,7 @@ void QgsSourceFieldsProperties::setRow( int row, int idx, const QgsField &field
|
||||
const auto constNotEditableCols = notEditableCols;
|
||||
for ( const int i : constNotEditableCols )
|
||||
{
|
||||
if ( notEditableCols[i] != AttrCommentCol || mLayer->fields().fieldOrigin( idx ) != QgsFields::OriginExpression )
|
||||
if ( notEditableCols[i] != AttrCommentCol || mLayer->fields().fieldOrigin( idx ) != Qgis::FieldOrigin::Expression )
|
||||
mFieldsList->item( row, i )->setFlags( mFieldsList->item( row, i )->flags() & ~Qt::ItemIsEditable );
|
||||
if ( notEditableCols[i] == AttrAliasCol )
|
||||
mFieldsList->item( row, i )->setToolTip( tr( "Edit alias in the Form config tab" ) );
|
||||
@ -347,7 +347,7 @@ void QgsSourceFieldsProperties::deleteAttributeClicked()
|
||||
if ( idx < 0 )
|
||||
continue;
|
||||
|
||||
if ( mLayer->fields().fieldOrigin( idx ) == QgsFields::OriginExpression )
|
||||
if ( mLayer->fields().fieldOrigin( idx ) == Qgis::FieldOrigin::Expression )
|
||||
expressionFields << idx;
|
||||
else
|
||||
providerFields << idx;
|
||||
@ -444,7 +444,7 @@ void QgsSourceFieldsProperties::updateButtons()
|
||||
if ( item->column() == 0 )
|
||||
{
|
||||
const int idx = mIndexedWidgets.indexOf( item );
|
||||
if ( mLayer->fields().fieldOrigin( idx ) != QgsFields::OriginExpression )
|
||||
if ( mLayer->fields().fieldOrigin( idx ) != Qgis::FieldOrigin::Expression )
|
||||
{
|
||||
mDeleteAttributeButton->setEnabled( false );
|
||||
break;
|
||||
|
@ -4687,7 +4687,7 @@ class TestQgsExpression: public QObject
|
||||
f.setFields( fields );
|
||||
|
||||
//also add a joined field - this will not be available in feature's field collection
|
||||
fields.append( QgsField( QStringLiteral( "j1" ), QVariant::String ), QgsFields::OriginJoin, 1 );
|
||||
fields.append( QgsField( QStringLiteral( "j1" ), QVariant::String ), Qgis::FieldOrigin::Join, 1 );
|
||||
|
||||
f.setAttributes( QgsAttributes() << QVariant( "f1" ) << QVariant( "j1" ) );
|
||||
f.setValid( true );
|
||||
|
@ -267,7 +267,7 @@ void TestQgsFields::extend()
|
||||
|
||||
QgsFields source;
|
||||
const QgsField field3( QStringLiteral( "testfield3" ) );
|
||||
source.append( field3, QgsFields::OriginJoin, 5 );
|
||||
source.append( field3, Qgis::FieldOrigin::Join, 5 );
|
||||
const QgsField field4( QStringLiteral( "testfield4" ) );
|
||||
source.append( field4 );
|
||||
|
||||
@ -314,34 +314,34 @@ void TestQgsFields::fieldOrigin()
|
||||
{
|
||||
QgsFields fields;
|
||||
const QgsField field( QStringLiteral( "testfield" ) );
|
||||
fields.append( field, QgsFields::OriginJoin );
|
||||
fields.append( field, Qgis::FieldOrigin::Join );
|
||||
const QgsField field2( QStringLiteral( "testfield2" ) );
|
||||
fields.append( field2, QgsFields::OriginExpression );
|
||||
fields.append( field2, Qgis::FieldOrigin::Expression );
|
||||
|
||||
QCOMPARE( fields.fieldOrigin( 0 ), QgsFields::OriginJoin );
|
||||
QCOMPARE( fields.fieldOrigin( 1 ), QgsFields::OriginExpression );
|
||||
QCOMPARE( fields.fieldOrigin( 2 ), QgsFields::OriginUnknown );
|
||||
QCOMPARE( fields.fieldOrigin( 0 ), Qgis::FieldOrigin::Join );
|
||||
QCOMPARE( fields.fieldOrigin( 1 ), Qgis::FieldOrigin::Expression );
|
||||
QCOMPARE( fields.fieldOrigin( 2 ), Qgis::FieldOrigin::Unknown );
|
||||
}
|
||||
|
||||
void TestQgsFields::fieldOriginIndex()
|
||||
{
|
||||
QgsFields fields;
|
||||
const QgsField field( QStringLiteral( "testfield" ) );
|
||||
fields.append( field, QgsFields::OriginProvider, 5 );
|
||||
fields.append( field, Qgis::FieldOrigin::Provider, 5 );
|
||||
QCOMPARE( fields.fieldOriginIndex( 0 ), 5 );
|
||||
|
||||
const QgsField field2( QStringLiteral( "testfield2" ) );
|
||||
fields.append( field2, QgsFields::OriginProvider, 10 );
|
||||
fields.append( field2, Qgis::FieldOrigin::Provider, 10 );
|
||||
QCOMPARE( fields.fieldOriginIndex( 1 ), 10 );
|
||||
|
||||
const QgsField field3( QStringLiteral( "testfield3" ) );
|
||||
//field origin index not specified with OriginProvider, should be automatic
|
||||
fields.append( field3, QgsFields::OriginProvider );
|
||||
fields.append( field3, Qgis::FieldOrigin::Provider );
|
||||
QCOMPARE( fields.fieldOriginIndex( 2 ), 2 );
|
||||
|
||||
const QgsField field4( QStringLiteral( "testfield4" ) );
|
||||
//field origin index not specified with other than OriginProvider, should remain -1
|
||||
fields.append( field4, QgsFields::OriginEdit );
|
||||
fields.append( field4, Qgis::FieldOrigin::Edit );
|
||||
QCOMPARE( fields.fieldOriginIndex( 3 ), -1 );
|
||||
}
|
||||
|
||||
@ -435,7 +435,7 @@ void TestQgsFields::appendExpressionField()
|
||||
const QgsField exprField( QStringLiteral( "expression" ) );
|
||||
QVERIFY( fields.appendExpressionField( exprField, 5 ) );
|
||||
QCOMPARE( fields.count(), 3 );
|
||||
QCOMPARE( fields.fieldOrigin( 2 ), QgsFields::OriginExpression );
|
||||
QCOMPARE( fields.fieldOrigin( 2 ), Qgis::FieldOrigin::Expression );
|
||||
QCOMPARE( fields.fieldOriginIndex( 2 ), 5 );
|
||||
}
|
||||
|
||||
@ -485,22 +485,22 @@ void TestQgsFields::field()
|
||||
original.setPrecision( 2 );
|
||||
|
||||
//test constructors for QgsFields::Field
|
||||
const QgsFields::Field fieldConstructor1( original, QgsFields::OriginJoin, 5 );
|
||||
const QgsFields::Field fieldConstructor1( original, Qgis::FieldOrigin::Join, 5 );
|
||||
QCOMPARE( fieldConstructor1.field, original );
|
||||
QCOMPARE( fieldConstructor1.origin, QgsFields::OriginJoin );
|
||||
QCOMPARE( fieldConstructor1.origin, Qgis::FieldOrigin::Join );
|
||||
QCOMPARE( fieldConstructor1.originIndex, 5 );
|
||||
|
||||
const QgsFields::Field fieldConstructor2;
|
||||
QCOMPARE( fieldConstructor2.origin, QgsFields::OriginUnknown );
|
||||
QCOMPARE( fieldConstructor2.origin, Qgis::FieldOrigin::Unknown );
|
||||
QCOMPARE( fieldConstructor2.originIndex, -1 );
|
||||
|
||||
//test equality operators
|
||||
const QgsFields::Field field1( original, QgsFields::OriginJoin, 5 );
|
||||
const QgsFields::Field field2( original, QgsFields::OriginJoin, 5 );
|
||||
const QgsFields::Field field1( original, Qgis::FieldOrigin::Join, 5 );
|
||||
const QgsFields::Field field2( original, Qgis::FieldOrigin::Join, 5 );
|
||||
QVERIFY( field1 == field2 );
|
||||
const QgsFields::Field field3( original, QgsFields::OriginEdit, 5 );
|
||||
const QgsFields::Field field3( original, Qgis::FieldOrigin::Edit, 5 );
|
||||
QVERIFY( field1 != field3 );
|
||||
const QgsFields::Field field4( original, QgsFields::OriginJoin, 6 );
|
||||
const QgsFields::Field field4( original, Qgis::FieldOrigin::Join, 6 );
|
||||
QVERIFY( field1 != field4 );
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user