@@ -95,14 +95,14 @@ void QgsAtlasComposition::beginRender()
95
95
96
96
const QgsFields& fields = mCoverageLayer ->pendingFields ();
97
97
98
- if ( mFilenamePattern .size () > 0 )
98
+ if ( ! mSingleFile && mFilenamePattern .size () > 0 )
99
99
{
100
100
mFilenameExpr = std::auto_ptr<QgsExpression>( new QgsExpression ( mFilenamePattern ) );
101
101
// expression used to evaluate each filename
102
102
// test for evaluation errors
103
103
if ( mFilenameExpr ->hasParserError () )
104
104
{
105
- throw std::runtime_error ( " Filename parsing error: " + mFilenameExpr ->parserErrorString (). toStdString () );
105
+ throw std::runtime_error ( tr ( " Filename parsing error: %1 " ). arg ( mFilenameExpr ->parserErrorString ()). toLocal8Bit (). data () );
106
106
}
107
107
108
108
// prepare the filename expression
@@ -117,7 +117,7 @@ void QgsAtlasComposition::beginRender()
117
117
filterExpression = std::auto_ptr<QgsExpression>(new QgsExpression ( mFeatureFilter ));
118
118
if ( filterExpression->hasParserError () )
119
119
{
120
- throw std::runtime_error ( " Feature filter parser error: " + filterExpression->parserErrorString (). toStdString () );
120
+ throw std::runtime_error ( tr ( " Feature filter parser error: %1 " ). arg ( filterExpression->parserErrorString () ). toLocal8Bit (). data () );
121
121
}
122
122
}
123
123
@@ -132,7 +132,7 @@ void QgsAtlasComposition::beginRender()
132
132
QVariant result = filterExpression->evaluate ( &feat, mCoverageLayer ->pendingFields () );
133
133
if ( filterExpression->hasEvalError () )
134
134
{
135
- throw std::runtime_error ( " Feature filter eval error: " + filterExpression->evalErrorString (). toStdString () );
135
+ throw std::runtime_error ( tr ( " Feature filter eval error: %1 " ). arg ( filterExpression->evalErrorString ()). toLocal8Bit (). data () );
136
136
}
137
137
138
138
// skip this feature if the filter evaluation if false
@@ -215,10 +215,14 @@ void QgsAtlasComposition::prepareForFeature( size_t featureI )
215
215
// retrieve the next feature, based on its id
216
216
mCoverageLayer ->getFeatures ( QgsFeatureRequest ().setFilterFid ( mFeatureIds [ featureI ] ) ).nextFeature ( mCurrentFeature );
217
217
218
- if ( mFilenamePattern .size () > 0 )
218
+ if ( ! mSingleFile && mFilenamePattern .size () > 0 )
219
219
{
220
220
QgsExpression::setSpecialColumn ( " $feature" , QVariant (( int )featureI + 1 ) );
221
221
QVariant filenameRes = mFilenameExpr ->evaluate ( &mCurrentFeature );
222
+ if ( mFilenameExpr ->hasEvalError () )
223
+ {
224
+ throw std::runtime_error ( tr (" Filename eval error: %1" ).arg ( mFilenameExpr ->evalErrorString () ).toLocal8Bit ().data () );
225
+ }
222
226
223
227
mCurrentFilename = filenameRes.toString ();
224
228
}
0 commit comments