Skip to content

Commit 4b12e5c

Browse files
committed
GRASS version support
1 parent 7ea5ee6 commit 4b12e5c

File tree

11 files changed

+96
-31
lines changed

11 files changed

+96
-31
lines changed

src/plugins/grass/CMakeLists.txt

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,4 @@
1-
IF (GRASS_NUM_VERSION LESS 60300)
2-
SET (GRASS_MODULES_DIR "modules-6.3")
3-
ELSE (GRASS_NUM_VERSION LESS 60300)
4-
SET (GRASS_MODULES_DIR "modules-${GRASS_MAJOR_VERSION}.${GRASS_MINOR_VERSION}")
5-
ENDIF (GRASS_NUM_VERSION LESS 60300)
6-
7-
IF (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${GRASS_MODULES_DIR}")
8-
MESSAGE (SEND_ERROR "Your GRASS version is not supported (${CMAKE_CURRENT_SOURCE_DIR}/${GRASS_MODULES_DIR} is not found).")
9-
ENDIF (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${GRASS_MODULES_DIR}")
10-
IF (NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${GRASS_MODULES_DIR}")
11-
MESSAGE (SEND_ERROR "Your GRASS version is not supported (${CMAKE_CURRENT_SOURCE_DIR}/${GRASS_MODULES_DIR} is not a Directory).")
12-
ENDIF (NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${GRASS_MODULES_DIR}")
13-
14-
ADD_SUBDIRECTORY(modules-common)
15-
ADD_SUBDIRECTORY(${GRASS_MODULES_DIR})
1+
ADD_SUBDIRECTORY(modules)
162
ADD_SUBDIRECTORY(scripts)
173

184
ADD_DEFINITIONS(-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\")

src/plugins/grass/modules/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@
22
FILE (GLOB MODULE_FILES *.qgm *.svg *.png)
33
INSTALL (FILES ${MODULE_FILES}
44
DESTINATION ${QGIS_DATA_DIR}/grass/modules)
5+
6+
FILE (GLOB CONFIG *.qgc)
7+
INSTALL (FILES ${CONFIG}
8+
DESTINATION ${QGIS_DATA_DIR}/grass/config)

src/plugins/grass/modules/default.qgc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<grass name="r.in.gdal.qgis"/>
3030
<grass name="r.in.gdal.qgis.loc"/>
3131
</section>
32-
<section label="Register external data sources in GRASS">
32+
<section label="Register external data sources in GRASS" version_min="6.4">
3333
<grass name="r.external"/>
3434
<grass name="r.external.qgis"/>
3535
<grass name="r.external.all"/>
@@ -63,7 +63,7 @@
6363
<grass name="v.in.db"/>
6464
<grass name="v.in.garmin"/>
6565
<grass name="v.in.gpsbabel"/>
66-
<grass name="v.in.geonames"/>
66+
<grass name="v.in.geonames" version_min="6.4"/>
6767
<grass name="v.in.gns"/>
6868
</section>
6969
<section label="Import from database into GRASS">
@@ -101,7 +101,7 @@
101101
<grass name="v.out.vtk"/>
102102
</section>
103103
<section label="Export vector table from GRASS to database format">
104-
<grass name="db.out.ogr"/>
104+
<grass name="db.out.ogr" version_min="6.4"/>
105105
</section>
106106
</section>
107107
<section label="Map type conversion">
@@ -169,7 +169,7 @@
169169
<grass name="r.colors.table"/>
170170
<grass name="r.colors.rules"/>
171171
<grass name="r.colors.rast"/>
172-
<grass name="r.colors.stddev"/>
172+
<grass name="r.colors.stddev" version_min="6.4"/>
173173
<grass name="r.blend"/>
174174
<grass name="r.composite"/>
175175
<grass name="r.his"/>
@@ -211,7 +211,7 @@
211211
<grass name="r.texture"/>
212212
<grass name="r.texture.bis"/>
213213
<grass name="r.los"/>
214-
<grass name="r.grow.distance"/>
214+
<grass name="r.grow.distance" version_min="6.4"/>
215215
<grass name="r.walk.coord"/>
216216
<grass name="r.walk.vect"/>
217217
</section>
@@ -263,7 +263,7 @@
263263
<grass name="v.surf.bspline"/>
264264
<grass name="v.surf.idw"/>
265265
<grass name="v.surf.rst"/>
266-
<grass name="r.bilinear"/>
266+
<grass name="r.bilinear" version_min="6.4"/>
267267
<grass name="r.surf.idw"/>
268268
<grass name="r.surf.idw2"/>
269269
<grass name="r.fillnulls"/>
@@ -457,7 +457,7 @@
457457
<section label="Database management">
458458
<grass name="db.connect"/>
459459
<grass name="db.connect.schema"/>
460-
<grass name="db.connect-login.pg"/>
460+
<grass name="db.connect-login.pg" version_min="6.4"/>
461461
<grass name="v.db.reconnect.all"/>
462462
<grass name="db.login"/>
463463
</section>
@@ -472,7 +472,7 @@
472472
<grass name="v.db.update_query"/>
473473
<grass name="v.db.update_op"/>
474474
<grass name="v.db.update_op_query"/>
475-
<grass name="v.db.dropcol"/>
475+
<grass name="v.db.dropcol" version_min="6.4"/>
476476
<grass name="v.db.renamecol"/>
477477
<grass name="db.execute"/>
478478
<grass name="db.select"/>

src/plugins/grass/modules/r.surf.fractal.qgm

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">
33

44
<qgisgrassmodule label="Create fractal surface of given fractal dimension" module="r.surf.fractal">
5-
<option key="dimension" />
6-
<option key="number" />
7-
<option key="output" />
5+
<option key="d" version_max="6.3" />
6+
<option key="dimension" version_min="6.4" />
7+
<option key="n" version_max="6.3" />
8+
<option key="number" version_min="6.4" />
9+
<option key="out" version_max="6.3" />
10+
<option key="output" version_min="6.4" />
811
</qgisgrassmodule>

src/plugins/grass/modules/v.buffer.qgm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
<qgisgrassmodule label="Vector buffer" module="v.buffer">
55
<option key="input" typeoption="type" layeroption="layer" />
6-
<option key="distance"/>
6+
<option key="buffer" version_max="6.3"/>
7+
<option key="distance" version_min="6.4"/>
78
<option key="output" />
89
</qgisgrassmodule>

src/plugins/grass/modules/v.db.select.qgm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
<qgisgrassmodule label="Display vector attributes" module="v.db.select">
55
<option key="map" layeroption="layer" />
6-
<field key="columns" layer="map" type="integer,double,varchar"/>
6+
<field key="column" layer="map" type="integer,double,varchar" version_max="6.3"/>
7+
<field key="columns" layer="map" type="integer,double,varchar" version_min="6.4"/>
78
<option key="fs" answer="|" hidden="yes" />
89
</qgisgrassmodule>

src/plugins/grass/modules/v.db.select.where.qgm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
<qgisgrassmodule label="Display vector map attributes with SQL" module="v.db.select">
55
<option key="map" layeroption="layer" />
6-
<field key="columns" layer="map" type="integer,double,varchar"/>
6+
<field key="column" layer="map" type="integer,double,varchar" version_max="6.3"/>
7+
<field key="columns" layer="map" type="integer,double,varchar" version_min="6.4"/>
78
<option key="where" />
89
<option key="fs" answer="|" hidden="yes" />
910
</qgisgrassmodule>

src/plugins/grass/modules/v.to.db.qgm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
<option key="map" layeroption="layer"/>
66
<option key="option"/>
77
<option key="units"/>
8-
<field key="columns" layer="map" type="integer,double" label="Attribute field" />
8+
<field key="column" layer="map" type="integer,double" label="Attribute field" version_max="6.3" />
9+
<field key="columns" layer="map" type="integer,double" label="Attribute field" version_min="6.4" />
910
</qgisgrassmodule>

src/plugins/grass/qgsgrassmodule.cpp

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,16 @@ QgsGrassModuleStandardOptions::QgsGrassModuleStandardOptions(
410410
QDomElement e = n.toElement();
411411
if ( !e.isNull() )
412412
{
413+
// Check GRASS version
414+
QString version_min = e.attribute( "version_min" );
415+
QString version_max = e.attribute( "version_max" );
416+
417+
if ( !QgsGrassModuleOption::checkVersion( e.attribute( "version_min" ), e.attribute( "version_max" ) ) )
418+
{
419+
n = n.nextSibling();
420+
continue;
421+
}
422+
413423
QString optionType = e.tagName();
414424
QgsDebugMsg( "optionType = " + optionType );
415425

@@ -2082,6 +2092,51 @@ QString QgsGrassModuleOption::value()
20822092
return value;
20832093
}
20842094

2095+
bool QgsGrassModuleOption::checkVersion( QString version_min, QString version_max )
2096+
{
2097+
QgsDebugMsg( "version_min = " + version_min );
2098+
QgsDebugMsg( "version_max = " + version_max );
2099+
2100+
QRegExp rxVersion( "(\\d+)\\.(\\d+)" );
2101+
if ( !version_min.isEmpty() )
2102+
{
2103+
if ( !rxVersion.exactMatch( version_min ) )
2104+
{
2105+
QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot parse version_min %1" ).arg( version_min ) );
2106+
return false;
2107+
}
2108+
else
2109+
{
2110+
int versionMajor = rxVersion.cap( 1 ).toInt();
2111+
int versionMinor = rxVersion.cap( 2 ).toInt();
2112+
if ( QgsGrass::versionMajor() < versionMajor || ( QgsGrass::versionMajor() == versionMajor && QgsGrass::versionMinor() < versionMinor ) )
2113+
{
2114+
return false;
2115+
}
2116+
}
2117+
}
2118+
2119+
if ( !version_max.isEmpty() )
2120+
{
2121+
if ( !rxVersion.exactMatch( version_max ) )
2122+
{
2123+
QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot parse version_max %1" ).arg( version_max ) );
2124+
return false;
2125+
}
2126+
else
2127+
{
2128+
int versionMajor = rxVersion.cap( 1 ).toInt();
2129+
int versionMinor = rxVersion.cap( 2 ).toInt();
2130+
if ( QgsGrass::versionMajor() > versionMajor || ( QgsGrass::versionMajor() == versionMajor && QgsGrass::versionMinor() > versionMinor ) )
2131+
{
2132+
return false;
2133+
}
2134+
}
2135+
}
2136+
2137+
return true;
2138+
}
2139+
20852140
QStringList QgsGrassModuleOption::options()
20862141
{
20872142
QStringList list;

src/plugins/grass/qgsgrassmodule.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,9 @@ class QgsGrassModuleOption: public QgsGrassModuleGroupBoxItem
491491
// Use of region can be forced by 'region' attribute in qgm
492492
bool usesRegion() { return mUsesRegion; }
493493

494+
//! Check min/max version
495+
static bool checkVersion( QString version_min, QString version_max );
496+
494497
public slots:
495498
// Add new line edit for multiple options
496499
void addLineEdit();

0 commit comments

Comments
 (0)