mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
Make field expression widget work even without a layer (needed in composer)
This commit is contained in:
parent
8097d04664
commit
172277e836
@ -90,7 +90,8 @@ QString QgsFieldExpressionWidget::currentText()
|
||||
bool QgsFieldExpressionWidget::isValidExpression( QString *expressionError )
|
||||
{
|
||||
QString temp;
|
||||
return QgsExpression::isValid( currentText(), layer()->pendingFields(), expressionError ? *expressionError : temp );
|
||||
QgsVectorLayer* vl = layer();
|
||||
return QgsExpression::isValid( currentText(), vl ? vl->pendingFields() : QgsFields(), expressionError ? *expressionError : temp );
|
||||
}
|
||||
|
||||
bool QgsFieldExpressionWidget::isExpression()
|
||||
@ -163,9 +164,6 @@ void QgsFieldExpressionWidget::editExpression()
|
||||
QString currentExpression = currentText();
|
||||
QgsVectorLayer* vl = layer();
|
||||
|
||||
if ( !vl )
|
||||
return;
|
||||
|
||||
QgsExpressionBuilderDialog dlg( vl, currentExpression );
|
||||
if ( !mDa.isNull() )
|
||||
{
|
||||
@ -263,10 +261,8 @@ void QgsFieldExpressionWidget::updateLineEditStyle( const QString expression )
|
||||
bool QgsFieldExpressionWidget::isExpressionValid( const QString expressionStr )
|
||||
{
|
||||
QgsVectorLayer* vl = layer();
|
||||
if ( !vl )
|
||||
return false;
|
||||
|
||||
QgsExpression expression( expressionStr );
|
||||
expression.prepare( vl->pendingFields() );
|
||||
expression.prepare( vl ? vl->pendingFields() : QgsFields() );
|
||||
return !expression.hasParserError();
|
||||
}
|
||||
|
@ -165,9 +165,6 @@ QVariant QgsFieldModel::data( const QModelIndex &index, int role ) const
|
||||
if ( !index.isValid() )
|
||||
return QVariant();
|
||||
|
||||
if ( !mLayer )
|
||||
return QVariant();
|
||||
|
||||
qint64 exprIdx = index.internalId() - mFields.count();
|
||||
|
||||
switch ( role )
|
||||
@ -213,10 +210,8 @@ QVariant QgsFieldModel::data( const QModelIndex &index, int role ) const
|
||||
{
|
||||
if ( exprIdx >= 0 )
|
||||
{
|
||||
if ( !mLayer )
|
||||
return false;
|
||||
QgsExpression exp( mExpression[exprIdx] );
|
||||
exp.prepare( mLayer->pendingFields() );
|
||||
exp.prepare( mLayer ? mLayer->pendingFields() : QgsFields() );
|
||||
return !exp.hasParserError();
|
||||
}
|
||||
return true;
|
||||
@ -243,10 +238,12 @@ QVariant QgsFieldModel::data( const QModelIndex &index, int role ) const
|
||||
{
|
||||
return mFields[index.internalId()].name();
|
||||
}
|
||||
else
|
||||
else if ( mLayer )
|
||||
{
|
||||
return mLayer->attributeDisplayName( index.internalId() );
|
||||
}
|
||||
else
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
case Qt::ForegroundRole:
|
||||
@ -254,10 +251,8 @@ QVariant QgsFieldModel::data( const QModelIndex &index, int role ) const
|
||||
if ( exprIdx >= 0 )
|
||||
{
|
||||
// if expression, test validity
|
||||
if ( !mLayer )
|
||||
return false;
|
||||
QgsExpression exp( mExpression[exprIdx] );
|
||||
exp.prepare( mLayer->pendingFields() );
|
||||
exp.prepare( mLayer ? mLayer->pendingFields() : QgsFields() );
|
||||
if ( exp.hasParserError() )
|
||||
{
|
||||
return QBrush( QColor( Qt::red ) );
|
||||
|
Loading…
x
Reference in New Issue
Block a user