Skip to content

Commit 319e082

Browse files
author
volayaf
committedApr 20, 2012
Added PrameterCRS and CRS selectors
Fixed GRASS bug when using v.* algorithms git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@135 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
1 parent 66e027a commit 319e082

File tree

8 files changed

+100
-11
lines changed

8 files changed

+100
-11
lines changed
 

‎src/sextante/grass/GrassAlgorithm.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def processAlgorithm(self, progress):
143143
if param.value == None:
144144
continue
145145
value = param.value
146-
self.exportVectorLayer(value)
146+
commands.append(self.exportVectorLayer(value))
147147
if isinstance(param, ParameterTable):
148148
pass
149149
if isinstance(param, ParameterMultipleInput):
@@ -200,7 +200,7 @@ def processAlgorithm(self, progress):
200200
command = "r.out.gdal -c createopt=\"TFW=YES,COMPRESS=LZW\""
201201
command += " input="
202202
command += out.name
203-
command += " output=\"" + filename + "\""
203+
command += " output=\"" + filename[:-4] + "\""
204204
commands.append(command)
205205
if isinstance(out, OutputVector):
206206
command = "v.out.ogr -e input=" + out.name
@@ -242,7 +242,7 @@ def exportVectorLayer(self, orgFilename):
242242
command = "v.in.ogr"
243243
command += " min_area=-1"
244244
command +=" dsn=\"" + os.path.dirname(filename) + "\""
245-
command +=" layer=" + os.path.basename(filename)
245+
command +=" layer=" + os.path.basename(filename)[:-4]
246246
command +=" output=" + destFilename;
247247
command +=" --overwrite -o"
248248
return command
@@ -260,7 +260,7 @@ def exportRasterLayer(self, layer):
260260

261261

262262
def getTempFilename(self):
263-
filename = str(time.time()) + str(SextanteUtils.getNumExportedLayers())
263+
filename = "tmp" + str(time.time()).replace(".","") + str(SextanteUtils.getNumExportedLayers())
264264
return filename
265265

266266

‎src/sextante/grass/GrassAlgorithmProvider.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def createAlgsList(self):
5555
SextanteLog.addToLog(SextanteLog.LOG_ERROR, "Could not open GRASS algorithm: " + descriptionFile)
5656
except Exception,e:
5757
SextanteLog.addToLog(SextanteLog.LOG_ERROR, "Could not open GRASS algorithm: " + descriptionFile)
58-
self.createDescriptionFiles()
58+
#self.createDescriptionFiles()
5959

6060
def _loadAlgorithms(self):
6161
self.algs = self.preloadedAlgs
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from PyQt4.QtCore import *
2+
from PyQt4.QtGui import *
3+
from qgis.core import *
4+
from qgis.gui import *
5+
6+
class CrsSelectionDialog(QDialog):
7+
8+
def __init__(self):
9+
QDialog.__init__(self)
10+
self.epsg = None
11+
layout = QVBoxLayout()
12+
self.selector = QgsProjectionSelector(self)
13+
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Close)
14+
layout.addWidget(self.selector)
15+
layout.addWidget(buttonBox)
16+
self.setLayout(layout)
17+
18+
self.connect(buttonBox, SIGNAL("accepted()"), self.okPressed)
19+
self.connect(buttonBox, SIGNAL("rejected()"), self.cancelPressed)
20+
21+
def okPressed(self):
22+
self.epsg = self.selector.selectedEpsg()
23+
self.close()
24+
25+
def cancelPressed(self):
26+
self.epsg = None
27+
self.close()

‎src/sextante/gui/CrsSelectionPanel.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from PyQt4 import QtGui, QtCore
2+
from sextante.core.SextanteUtils import SextanteUtils
3+
from sextante.gui.CrsSelectionDialog import CrsSelectionDialog
4+
5+
class CrsSelectionPanel(QtGui.QWidget):
6+
7+
def __init__(self, default):
8+
super(CrsSelectionPanel, self).__init__(None)
9+
self.epsg = default
10+
self.horizontalLayout = QtGui.QHBoxLayout(self)
11+
self.horizontalLayout.setSpacing(2)
12+
self.horizontalLayout.setMargin(0)
13+
self.text = QtGui.QLineEdit()
14+
self.text.setEnabled(False)
15+
self.text.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
16+
self.horizontalLayout.addWidget(self.text)
17+
self.pushButton = QtGui.QPushButton()
18+
self.pushButton.setText("...")
19+
self.pushButton.clicked.connect(self.showSelectionDialog)
20+
self.horizontalLayout.addWidget(self.pushButton)
21+
self.setLayout(self.horizontalLayout)
22+
self.setText()
23+
24+
def showSelectionDialog(self):
25+
dialog = CrsSelectionDialog()
26+
dialog.exec_()
27+
if dialog.epsg:
28+
self.epsg = str(dialog.epsg)
29+
self.setText()
30+
31+
def setText(self):
32+
self.text.setText("EPSG:" + str(self.epsg))
33+
34+
def getValue(self):
35+
return self.epsg

‎src/sextante/gui/ParametersDialog.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
from sextante.gui.ParametersPanel import ParametersPanel
2222
from sextante.parameters.ParameterFile import ParameterFile
23+
from sextante.parameters.ParameterCrs import ParameterCrs
2324

2425
try:
2526
_fromUtf8 = QtCore.QString.fromUtf8
@@ -124,7 +125,7 @@ def setParamValue(self, param, widget):
124125
for index in widget.selectedoptions:
125126
value.append(options[index])
126127
return param.setValue(value)
127-
elif isinstance(param, (ParameterNumber, ParameterFile)):
128+
elif isinstance(param, (ParameterNumber, ParameterFile, ParameterCrs)):
128129
return param.setValue(widget.getValue())
129130
else:
130131
return param.setValue(str(widget.text()))
@@ -142,11 +143,8 @@ def accept(self):
142143
break
143144
if iterateParam:
144145
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
145-
#SextanteLog.addToLog(SextanteLog.LOG_ALGORITHM, self.alg.getAsCommand())
146-
ret = AlgorithmExecutor.runalgIterating(self.alg, iterateParam, self)
146+
AlgorithmExecutor.runalgIterating(self.alg, iterateParam, self)
147147
QApplication.restoreOverrideCursor()
148-
#if ret:
149-
#SextantePostprocessing.handleAlgorithmResults(self.alg)
150148
else:
151149
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
152150
SextanteLog.addToLog(SextanteLog.LOG_ALGORITHM, self.alg.getAsCommand())

‎src/sextante/gui/ParametersPanel.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
from sextante.core.SextanteConfig import SextanteConfig
2323
from sextante.parameters.ParameterFile import ParameterFile
2424
from sextante.gui.FileSelectionPanel import FileSelectionPanel
25+
from sextante.parameters.ParameterCrs import ParameterCrs
26+
from sextante.gui.CrsSelectionPanel import CrsSelectionPanel
2527

2628
class ParametersPanel(QtGui.QWidget):
2729

@@ -198,6 +200,8 @@ def getWidgetFromParameter(self, param):
198200
item = NumberInputPanel(param.default, param.isInteger)
199201
elif isinstance(param, ParameterExtent):
200202
item = ExtentSelectionPanel(self.paramDialog, param.default)
203+
elif isinstance(param, ParameterCrs):
204+
item = CrsSelectionPanel(param.default)
201205
else:
202206
item = QtGui.QLineEdit()
203207
item.setText(str(param.default))
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from sextante.parameters.Parameter import Parameter
2+
3+
class ParameterCrs(Parameter):
4+
5+
def __init__(self, name="", description="", default = "4326"):
6+
'''The values is the EPSG code of the CRS'''
7+
self.name = name
8+
self.description = description
9+
self.value = None
10+
self.default = default
11+
12+
def getValueAsCommandLineParameter(self):
13+
return "\"" + str(self.value) + "\""
14+
15+
def serialize(self):
16+
return self.__module__.split(".")[-1] + "|" + self.name + "|" + self.description +\
17+
"|" + str(self.default)
18+
19+
def deserialize(self, s):
20+
tokens = s.split("|")
21+
return ParameterCrs(tokens[0], tokens[1], tokens[2])
22+
23+
def getAsScriptCode(self):
24+
return "##" + self.name + "=crs " + str(self.default)

‎src/sextante/parameters/ParameterFactory.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from sextante.parameters.ParameterFixedTable import ParameterFixedTable
1212
from sextante.parameters.ParameterExtent import ParameterExtent
1313
from sextante.parameters.ParameterFile import ParameterFile
14+
from sextante.parameters.ParameterCrs import ParameterCrs
1415

1516
class ParameterFactory():
1617

@@ -19,7 +20,7 @@ def getFromString(s):
1920
classes = [ParameterBoolean, ParameterMultipleInput,ParameterNumber,
2021
ParameterRaster, ParameterString, ParameterVector, ParameterTableField,
2122
ParameterTable, ParameterSelection, ParameterRange, ParameterFixedTable,
22-
ParameterExtent, ParameterFile]
23+
ParameterExtent, ParameterFile, ParameterCrs]
2324
for clazz in classes:
2425
if s.startswith(clazz().parameterName()):
2526
return clazz().deserialize(s[len(clazz().parameterName())+1:])

0 commit comments

Comments
 (0)
Please sign in to comment.