@@ -368,14 +368,11 @@ bool QgsGrassModuleOption::checkVersion( const QString& version_min, const QStri
368
368
369
369
bool minOk = true ;
370
370
bool maxOk = true ;
371
+ QRegExp rxVersionMajor ( " (\\ d+)" );
371
372
QRegExp rxVersion ( " (\\ d+)\\ .(\\ d+)" );
372
373
if ( !version_min.isEmpty () )
373
374
{
374
- if ( !rxVersion.exactMatch ( version_min ) )
375
- {
376
- errors << tr ( " Cannot parse version_min %1" ).arg ( version_min );
377
- }
378
- else
375
+ if ( rxVersion.exactMatch ( version_min ) )
379
376
{
380
377
int versionMajorMin = rxVersion.cap ( 1 ).toInt ();
381
378
int versionMinorMin = rxVersion.cap ( 2 ).toInt ();
@@ -384,15 +381,23 @@ bool QgsGrassModuleOption::checkVersion( const QString& version_min, const QStri
384
381
minOk = false ;
385
382
}
386
383
}
384
+ else if ( rxVersionMajor.exactMatch ( version_min ) )
385
+ {
386
+ int versionMajorMin = rxVersionMajor.cap ( 1 ).toInt ();
387
+ if ( QgsGrass::versionMajor () < versionMajorMin )
388
+ {
389
+ minOk = false ;
390
+ }
391
+ }
392
+ else
393
+ {
394
+ errors << tr ( " Cannot parse version_min %1" ).arg ( version_min );
395
+ }
387
396
}
388
397
389
398
if ( !version_max.isEmpty () )
390
399
{
391
- if ( !rxVersion.exactMatch ( version_max ) )
392
- {
393
- errors << tr ( " Cannot parse version_max %1" ).arg ( version_max );
394
- }
395
- else
400
+ if ( rxVersion.exactMatch ( version_max ) )
396
401
{
397
402
int versionMajorMax = rxVersion.cap ( 1 ).toInt ();
398
403
int versionMinorMax = rxVersion.cap ( 2 ).toInt ();
@@ -401,6 +406,18 @@ bool QgsGrassModuleOption::checkVersion( const QString& version_min, const QStri
401
406
maxOk = false ;
402
407
}
403
408
}
409
+ else if ( rxVersionMajor.exactMatch ( version_max ) )
410
+ {
411
+ int versionMajorMax = rxVersionMajor.cap ( 1 ).toInt ();
412
+ if ( QgsGrass::versionMajor () > versionMajorMax )
413
+ {
414
+ maxOk = false ;
415
+ }
416
+ }
417
+ else
418
+ {
419
+ errors << tr ( " Cannot parse version_max %1" ).arg ( version_max );
420
+ }
404
421
}
405
422
return errors.isEmpty () && minOk && maxOk;
406
423
}
0 commit comments