Skip to content

Commit 33e3925

Browse files
committedDec 15, 2012
added postgis tools to sextante
edited some grass descriptions and renamed postproc folder (now it is not only for postproc, but also for pre execution checks)
1 parent eed0bc0 commit 33e3925

18 files changed

+123
-162
lines changed
 

‎python/plugins/sextante/admintools/AdminToolsAlgorithmProvider.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,17 @@
1616
* *
1717
***************************************************************************
1818
"""
19+
from sextante.admintools.PostGISExecuteSQL import PostGISExecuteSQL
20+
import os
21+
from PyQt4 import QtGui
22+
1923
__author__ = 'Victor Olaya'
2024
__date__ = 'October 2012'
2125
__copyright__ = '(C) 2012, Victor Olaya'
2226
# This will get replaced with a git SHA1 when you do a git archive
2327
__revision__ = '$Format:%H$'
2428

25-
26-
import os
29+
from sextante.admintools.ImportIntoPostGIS import ImportIntoPostGIS
2730
from sextante.admintools.ImportVectorIntoGeoServer import ImportVectorIntoGeoServer
2831
from sextante.admintools.CreateWorkspace import CreateWorkspace
2932
from sextante.admintools.ImportRasterIntoGeoServer import ImportRasterIntoGeoServer
@@ -38,7 +41,7 @@ def __init__(self):
3841
AlgorithmProvider.__init__(self)
3942
self.alglist = [ImportVectorIntoGeoServer(), ImportRasterIntoGeoServer(),
4043
CreateWorkspace(), DeleteWorkspace(), DeleteDatastore(),
41-
CreateStyleGeoServer()]#] PostGISExecuteSQL(), ImportIntoPostGIS()]#, TruncateSeedGWC()]
44+
CreateStyleGeoServer(), ImportIntoPostGIS(), PostGISExecuteSQL()]#, TruncateSeedGWC()]
4245

4346
def initializeSettings(self):
4447
AlgorithmProvider.initializeSettings(self)
@@ -49,18 +52,16 @@ def unload(self):
4952

5053

5154
def getName(self):
52-
return "admintools"
55+
return "gspg"
5356

5457
def getDescription(self):
55-
return "Administration tools"
58+
return "GeoServer/PostGIS tools"
5659

57-
#===========================================================================
58-
# def getIcon(self):
59-
# return QtGui.QIcon(os.path.dirname(__file__) + "/../images/geoserver.png")
60-
#===========================================================================
60+
def getIcon(self):
61+
return QtGui.QIcon(os.path.dirname(__file__) + "/../images/database.png")
6162

6263
def _loadAlgorithms(self):
6364
self.algs = self.alglist
6465

6566
def supportsNonFileBasedOutput(self):
66-
return True
67+
return False

‎python/plugins/sextante/admintools/ImportIntoPostGIS.py

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
* *
1717
***************************************************************************
1818
"""
19-
from sextante.parameters.ParameterVector import ParameterVector
20-
from sextante.core.GeoAlgorithm import GeoAlgorithm
19+
from sextante.core.QGisLayers import QGisLayers
20+
from sextante.parameters.ParameterBoolean import ParameterBoolean
21+
2122

2223
__author__ = 'Victor Olaya'
2324
__date__ = 'October 2012'
@@ -26,32 +27,79 @@
2627
__revision__ = '$Format:%H$'
2728

2829
import os
30+
from sextante.parameters.ParameterVector import ParameterVector
31+
from sextante.core.GeoAlgorithm import GeoAlgorithm
32+
from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
2933
from qgis.core import *
3034
from PyQt4.QtCore import *
3135
from PyQt4.QtGui import *
3236
from sextante.parameters.ParameterString import ParameterString
3337
from sextante.admintools import postgis_utils
34-
import PyQt4
3538

3639
class ImportIntoPostGIS(GeoAlgorithm):
3740

3841
DATABASE = "DATABASE"
3942
TABLENAME = "TABLENAME"
4043
INPUT = "INPUT"
44+
OVERWRITE = "OVERWRITE"
45+
CREATEINDEX = "CREATEINDEX"
4146

4247
def getIcon(self):
4348
return QIcon(os.path.dirname(__file__) + "/../images/postgis.png")
4449

4550
def processAlgorithm(self, progress):
46-
pass
51+
connection = self.getParameterValue(self.DATABASE)
52+
overwrite = self.getParameterValue(self.OVERWRITE)
53+
createIndex = self.getParameterValue(self.CREATEINDEX)
54+
settings = QSettings()
55+
mySettings = "/PostgreSQL/connections/"+ connection
56+
try:
57+
database = settings.value(mySettings+"/database").toString()
58+
username = settings.value(mySettings+"/username").toString()
59+
host = settings.value(mySettings+"/host").toString()
60+
port = int(settings.value(mySettings+"/port").toString())
61+
password = settings.value(mySettings+"/password").toString()
62+
except Exception, e:
63+
raise GeoAlgorithmExecutionException("Wrong database connection name: " + connection)
64+
65+
table = self.getParameterValue(self.TABLENAME);
66+
table.replace(" ", "")
67+
providerName = "postgres"
68+
69+
try:
70+
db = postgis_utils.GeoDB(host=host, port=port, dbname=database, user=username, passwd=password)
71+
except postgis_utils.DbError, e:
72+
raise GeoAlgorithmExecutionException("Couldn't connect to database:\n"+e.message)
73+
74+
uri = QgsDataSourceURI()
75+
uri.setConnection(host, str(port), database, username, password)
76+
uri.setDataSource("public", table, "the_geom", "")
77+
78+
options = {}
79+
if overwrite:
80+
options['overwrite'] = True
81+
82+
layerUri = self.getParameterValue(self.INPUT);
83+
layer = QGisLayers.getObjectFromUri(layerUri)
84+
ret, errMsg = QgsVectorLayerImport.importLayer(layer, uri.uri(), providerName, self.crs, False, False, options)
85+
if ret != 0:
86+
raise GeoAlgorithmExecutionException(u"Error importing to PostGIS\n%s" % errMsg)
87+
88+
if createIndex:
89+
db.create_spatial_index(table, "public", "the_geom")
90+
91+
db.vacuum_analyze(table, "public")
4792

4893
def defineCharacteristics(self):
4994
self.name = "Import into PostGIS"
5095
self.group = "PostGIS management tools"
5196
self.addParameter(ParameterVector(self.INPUT, "Layer to import"))
52-
self.addParameter(ParameterString(self.DATABASE, "Database"))
53-
self.addParameter(ParameterString(self.TABLENAME, "Name for new table"))
54-
97+
self.addParameter(ParameterString(self.DATABASE, "Database (connection name)"))
98+
self.addParameter(ParameterString(self.TABLENAME, "Table to import to"))
99+
self.addParameter(ParameterBoolean(self.OVERWRITE, "Overwrite", True))
100+
self.addParameter(ParameterBoolean(self.CREATEINDEX, "Create spatial index", True))
101+
102+
55103

56104

57105

‎python/plugins/sextante/admintools/PostGISExecuteSQL.py

Lines changed: 12 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ class PostGISExecuteSQL(GeoAlgorithm):
3636

3737
DATABASE = "DATABASE"
3838
SQL = "SQL"
39-
TABLENAME = "TABLENAME"
4039

4140
def getIcon(self):
4241
return QIcon(os.path.dirname(__file__) + "/../images/postgis.png")
@@ -46,96 +45,30 @@ def processAlgorithm(self, progress):
4645
connection = self.getParameterValue(self.DATABASE)
4746
settings = QSettings()
4847
mySettings = "/PostgreSQL/connections/"+ connection
49-
database = settings.value(mySettings+"/database").toString()
50-
username = settings.value(mySettings+"/username").toString()
51-
host = settings.value(mySettings+"/host").toString()
52-
port = settings.value(mySettings+"/port").toString()
53-
password = settings.value(mySettings+"/password").toString()
54-
55-
# connect to DB
48+
try:
49+
database = settings.value(mySettings+"/database").toString()
50+
username = settings.value(mySettings+"/username").toString()
51+
host = settings.value(mySettings+"/host").toString()
52+
port = int(settings.value(mySettings+"/port").toString())
53+
password = settings.value(mySettings+"/password").toString()
54+
except Exception, e:
55+
raise GeoAlgorithmExecutionException("Wrong database connection name: " + connection)
5656
try:
5757
self.db = postgis_utils.GeoDB(host=host, port=port, dbname=database, user=username, passwd=password)
5858
except postgis_utils.DbError, e:
5959
raise GeoAlgorithmExecutionException("Couldn't connect to database:\n"+e.message)
6060

61-
## Set up sql statement for geoprocess
62-
newTbl = self.getParameterValue(self.TABLENAME);
63-
newTbl.replace(" ", "")
64-
sqlNewTbl = str("CREATE TABLE ") + str(newTbl) + " as "
65-
txtSQL = self.getParameterValue(self.SQL)
66-
txtSQL = sqlNewTbl + txtSQL
67-
sqlArray = txtSQL.split("\n")
68-
sqlString = ""
69-
for i in range(0,sqlArray.count()):
70-
sqlString = sqlString + sqlArray[i] + " "
71-
72-
## Run query
61+
sql = self.getParameterValue(self.SQL).replace("\n", " ")
7362
try:
74-
self.db._exec_sql_and_commit(str(sqlString))
75-
except postgis_utils.DbError, e:
76-
raise GeoAlgorithmExecutionException("Couldn't connect to database:\n"+e.message)
77-
78-
try: #first try
79-
dbGeoTbls = self.db.list_geotables(self.cmbSchema.currentText())
63+
self.db._exec_sql_and_commit(str(sql))
8064
except postgis_utils.DbError, e:
81-
raise GeoAlgorithmExecutionException("Couldn't connect to database:\n"+e.message)
82-
83-
for i in range(0,len(dbGeoTbls)):
84-
if dbGeoTbls[i][0]==newTbl:
85-
if dbGeoTbls[i][7]=="geometry":
86-
geocol = str(dbGeoTbls[i][6])
87-
88-
schName = self.cmbSchema.currentText()
89-
90-
## Update the geometry_columns table
91-
geocolSQL = "SELECT ST_Dimension(" + geocol + "), ST_SRID(" + geocol + "), GeometryType(" + geocol + ") FROM " + newTbl + ";"
92-
c = self.db.con.cursor()
93-
self.db._exec_sql(c, str(geocolSQL))
94-
geomPar = c.fetchone()
95-
96-
## Setup sql statement to update geometry_columns
97-
geocolupdate = "INSERT INTO geometry_columns "
98-
geocolupdate = geocolupdate + "(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) VALUES"
99-
geocolupdate = geocolupdate + "('', 'public', '" + newTbl + "', '" + geocol + "', '" + str(geomPar[0]) + "', '" + str(geomPar[1]) + "', '" + str(geomPar[2])
100-
geocolupdate = geocolupdate + "');"
101-
self.db._exec_sql_and_commit(str(geocolupdate))
102-
103-
## Add remaining constraints for dimension, geometry type and srid
104-
pkeySQL = "ALTER TABLE " + schName + "." + newTbl + " ADD CONSTRAINT " + newTbl + "_pkey PRIMARY KEY(pgid);"
105-
dimSQL = "ALTER TABLE " + schName + "." + newTbl + " ADD CONSTRAINT enforce_dims_" + geocol + " CHECK (ndims(" + geocol + ") = " + str(geomPar[0]) + ");"
106-
gtypSQL = "ALTER TABLE " + schName + "." + newTbl + " ADD CONSTRAINT enforce_geotype_" + geocol + " CHECK (geometrytype(" + geocol + ") = '" + str(geomPar[2]) + "'::text OR " + geocol + " IS NULL);"
107-
sridSQL = "ALTER TABLE " + schName + "." + newTbl + " ADD CONSTRAINT enforce_srid_" + geocol + " CHECK (srid(" + geocol + ") = " + str(geomPar[1]) + ");"
108-
109-
try: #second try
110-
self.db._exec_sql_and_commit(str(pkeySQL))
111-
self.db._exec_sql_and_commit(str(dimSQL))
112-
self.db._exec_sql_and_commit(str(gtypSQL))
113-
self.db._exec_sql_and_commit(str(sridSQL))
114-
except postgis_utils.DbError, e:
115-
QMessageBox.critical(self, "error", "Couldn't connect to database:\n"+e.message)
116-
return
117-
118-
#=======================================================================
119-
# ## ## Add resulting data set if Add layer checkbox is selected
120-
# if self.actionAddData.isChecked():
121-
# ## Set up data source and add to QGIS view
122-
# uri = QgsDataSourceURI()
123-
# uri.setConnection(str(self.db.host), str(self.db.port), str(self.db.dbname), str(self.db.user), str(self.db.passwd))
124-
# uri.setDataSource(schName, newTbl, geocol)
125-
# dbSchemas = self.db.list_schemas()
126-
# for s in range(0,len(dbSchemas)):
127-
# dbSchema = dbSchemas[s][1]
128-
# if dbSchema==schName:
129-
# dbOwner = dbSchemas[s][2]
130-
# self.iface.addVectorLayer(uri.uri(), newTbl, dbOwner)
131-
#=======================================================================
65+
raise GeoAlgorithmExecutionException("Error executing SQL:\n"+e.message)
13266

13367
def defineCharacteristics(self):
13468
self.name = "PostGIS execute SQL"
13569
self.group = "PostGIS management tools"
13670
self.addParameter(ParameterString(self.DATABASE, "Database"))
137-
self.addParameter(ParameterString(self.TABLENAME, "Name for new table"))
138-
self.addParameter(ParameterString(self.SQL, "SQL query", True))
71+
self.addParameter(ParameterString(self.SQL, "SQL query", "", True))
13972

14073

14174

‎python/plugins/sextante/admintools/postgis_utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
postgis_utils.py
66
---------------------
77
Date : November 2012
8-
Copyright : (C) 2012 by Victor Olaya
8+
Copyright : (C) 2012 by Martin Dobias
99
Email : volayaf at gmail dot com
1010
***************************************************************************
1111
* *
@@ -17,9 +17,9 @@
1717
***************************************************************************
1818
"""
1919

20-
__author__ = 'Victor Olaya'
20+
__author__ = 'Martin Dobias'
2121
__date__ = 'November 2012'
22-
__copyright__ = '(C) 2012, Victor Olaya'
22+
__copyright__ = '(C) 2012, Martin Dobias'
2323
# This will get replaced with a git SHA1 when you do a git archive
2424
__revision__ = '$Format:%H$'
2525

@@ -524,7 +524,7 @@ def create_index(self, table, name, column, schema=None):
524524
def create_spatial_index(self, table, schema=None, geom_column='the_geom'):
525525
table_name = self._table_name(schema, table)
526526
idx_name = self._quote("sidx_"+table)
527-
sql = "CREATE INDEX %s ON %s USING GIST(%s GIST_GEOMETRY_OPS)" % (idx_name, table_name, self._quote(geom_column))
527+
sql = "CREATE INDEX %s ON %s USING GIST(%s)" % (idx_name, table_name, self._quote(geom_column))
528528
self._exec_sql_and_commit(sql)
529529

530530
def delete_index(self, name, schema=None):

‎python/plugins/sextante/grass/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ FILE(GLOB PY_FILES *.py)
22
FILE(GLOB OTHER_FILES grass.txt)
33
FILE(GLOB DESCR_FILES description/*.txt)
44

5-
ADD_SUBDIRECTORY(postproc)
5+
ADD_SUBDIRECTORY(ext)
66

77
PLUGIN_INSTALL(sextante grass ${PY_FILES} ${OTHER_FILES})
88
PLUGIN_INSTALL(sextante grass/description ${DESCR_FILES})
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
r.describe
2-
r.describe - Prints terse list of category values found in a raster map layer.
2+
r.describe - Prints terse list of category values found in a raster layer.
33
Raster (r.*)
4-
ParameterRaster|map|Name of input raster map|False
5-
ParameterString|nv|String representing no data cell value|*
4+
ParameterRaster|map|input raster layer|False
5+
ParameterNumber|nv|No-data cell value|None|None|0
66
ParameterNumber|nsteps|Number of quantization steps|1.0|None|255
7-
ParameterBoolean|-1|Print the output one value per line|False
87
ParameterBoolean|-r|Only print the range of the data|False
98
ParameterBoolean|-n|Suppress reporting of any NULLs|False
109
ParameterBoolean|-d|Use the current region|False
1110
ParameterBoolean|-i|Read fp map as integer|False
11+
OutputHTML|html|Output report

‎python/plugins/sextante/grass/description/r.distance.txt

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
r.drain
22
r.drain - Traces a flow through an elevation model on a raster map.
33
Raster (r.*)
4-
ParameterRaster|input|Name of elevation raster map|False
5-
ParameterString|coordinate|Map coordinates of starting point(s) (E,N)|
6-
ParameterMultipleInput|vector_points|Name of vector map(s) containing starting point(s)|0.0|False
4+
ParameterRaster|input|Elevatio|False
5+
ParameterString|coordinate|Map coordinates of starting point(s) (E,N)|(0,0)
6+
ParameterMultipleInput|vector_points|Vector layer(s) containing starting point(s)|0|False
77
ParameterBoolean|-c|Copy input cell values on output|False
88
ParameterBoolean|-a|Accumulate input values along the path|False
99
ParameterBoolean|-n|Count cell numbers along the path|False
10-
OutputRaster|output|Name for output raster map
10+
OutputRaster|output|Result
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
r.fill.dir
2-
r.fill.dir - Filters and generates a depressionless elevation map and a flow direction map from a given elevation raster map.
2+
r.fill.dir - Filters and generates a depressionless elevation layer and a flow direction layer from a given elevation raster layer.
33
Raster (r.*)
4-
ParameterRaster|input|Name of existing raster map containing elevation surface|False
4+
ParameterRaster|input|Elevation|False
55
ParameterSelection|type|Output aspect direction format|grass;agnps;answers
6-
ParameterBoolean|-f|Find unresolved areas only|False
7-
OutputRaster|elevation|Output elevation raster map after filling
8-
OutputRaster|direction|Output direction raster map
9-
OutputRaster|areas|Output raster map of problem areas
6+
OutputRaster|elevation|Depressionless DEM
7+
OutputRaster|direction|Flow direction
8+
OutputRaster|areas|Problem areas
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
r.fillnulls
2-
r.fillnulls - Fills no-data areas in raster maps using v.surf.rst splines interpolation or v.surf.bspline interpolation
2+
r.fillnulls - Fills no-data areas in a raster layer using v.surf.rst splines interpolation or v.surf.bspline interpolation
33
Raster (r.*)
4-
ParameterRaster|input|Name of input raster map in which to fill nulls|False
4+
ParameterRaster|input|Input raster layer to fill|False
55
ParameterSelection|method|Method|bilinear;bicubic;rst|2
66
ParameterNumber|tension|Spline tension parameter|None|None|40.0
77
ParameterNumber|smooth|Spline smoothing parameter|None|None|0.1
8-
OutputRaster|output|Name for output raster map with nulls filled by interpolation
8+
OutputRaster|output|Filled layer
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
r.flow
22
r.flow - Construction of slope curves (flowlines), flowpath lengths, and flowline densities (upslope areas) from a raster digital elevation model (DEM).
33
Raster (r.*)
4-
ParameterRaster|elevin|Input elevation raster map|False
5-
ParameterRaster|aspin|Input aspect raster map|False
6-
ParameterRaster|barin|Input barrier raster map|False
4+
ParameterRaster|elevin|Elevation|False
5+
ParameterRaster|aspin|Aspect|False
6+
ParameterRaster|barin|Barriers|False
77
ParameterNumber|skip|Number of cells between flowlines|None|None|1.0
88
ParameterNumber|bound|Maximum number of segments per flowline|None|None|5.0
99
ParameterBoolean|-u|Compute upslope flowlines instead of default downhill flowlines|False
1010
ParameterBoolean|-3|3-D lengths instead of 2-D|False
11-
ParameterBoolean|-m|Use less memory, at a performance penalty|False
12-
OutputRaster|flout|Output flowline vector map
13-
OutputRaster|lgout|Output flowpath length raster map
14-
OutputRaster|dsout|Output flowline density raster map
11+
*ParameterBoolean|-m|Use less memory, at a performance penalty|False
12+
OutputRaster|flout|Output flowline vector layer
13+
OutputRaster|lgout|Output flowpath length raster layer
14+
OutputRaster|dsout|Output flowline density raster layer
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FILE(GLOB PY_FILES *.py)
2+
3+
PLUGIN_INSTALL(sextante grass/ext ${PY_FILES})

‎python/plugins/sextante/grass/postproc/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.
566 Bytes
Loading

‎python/plugins/sextante/mmqgisx/mmqgisx_library.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2243,8 +2243,7 @@ def mmqgisx_merge(qgis, layers, savename, addlayer):
22432243
# QMessageBox.critical(qgis.mainWindow(),
22442244
# "Merge Layers", "Merged layers must all have same coordinate system")
22452245
# return None
2246-
2247-
layers.append(layer)
2246+
22482247
totalfeaturecount += layer.featureCount()
22492248

22502249
# Add any fields not in the composite field list
@@ -2280,19 +2279,18 @@ def mmqgisx_merge(qgis, layers, savename, addlayer):
22802279
feature = QgsFeature()
22812280
layer.dataProvider().select(layer.dataProvider().attributeIndexes())
22822281
layer.dataProvider().rewind()
2283-
while layer.dataProvider().nextFeature(feature):
2282+
idx = {}
2283+
for dindex, dfield in fields.iteritems():
2284+
for sindex, sfield in layer.dataProvider().fields().iteritems():
2285+
if (sfield.name() == dfield.name()) and (sfield.type() == dfield.type()):
2286+
idx[dindex] = sindex
2287+
while layer.dataProvider().nextFeature(feature):
22842288
sattributes = feature.attributeMap()
22852289
dattributes = {}
22862290
for dindex, dfield in fields.iteritems():
22872291
dattributes[dindex] = QVariant(dfield.type())
2288-
for sindex, sfield in layer.dataProvider().fields().iteritems():
2289-
if (sfield.name() == dfield.name()) and (sfield.type() == dfield.type()):
2290-
dattributes[dindex] = sattributes[sindex]
2291-
break
2292-
2293-
#for dindex, dfield in dattributes.iteritems():
2294-
# print layer.name() + " (" + str(dindex) + ") " + str(dfield.toString())
2295-
2292+
dattributes[dindex] = sattributes[idx[dindex]]
2293+
22962294
feature.setAttributeMap(dattributes)
22972295
outfile.addFeature(feature)
22982296
featurecount += 1

‎python/plugins/sextante/parameters/ParameterString.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
from sextante.parameters.Parameter import Parameter
2727

2828
class ParameterString(Parameter):
29+
30+
NEWLINE = "\n"
31+
ESCAPED_NEWLINE = "\\n"
2932

3033
def __init__(self, name="", description="", default="", multiline = False):
3134
Parameter.__init__(self, name, description)
@@ -37,11 +40,11 @@ def setValue(self, obj):
3740
if obj is None:
3841
self.value = self.default
3942
return True
40-
self.value = str(obj)
43+
self.value = str(obj).replace(ParameterString.ESCAPED_NEWLINE,ParameterString.NEWLINE)
4144
return True
4245

4346
def getValueAsCommandLineParameter(self):
44-
return "\"" + str(self.value) + "\""
47+
return "\"" + str(self.value.replace(ParameterString.NEWLINE,ParameterString.ESCAPED_NEWLINE)) + "\""
4548

4649
def serialize(self):
4750
return self.__module__.split(".")[-1] + "|" + self.name + "|" + self.description +\

‎python/plugins/sextante/saga/description/TableCalculator(Shapes).txt

Lines changed: 0 additions & 7 deletions
This file was deleted.

‎python/plugins/sextante/saga/description/TableCalculator.txt

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.