Skip to content

Commit aa0a44b

Browse files
author
volayaf
committedApr 20, 2012
addded folder slection parameter
Added support for new parameters in r and python scripting providers git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@133 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
1 parent 8b18892 commit aa0a44b

File tree

8 files changed

+46
-24
lines changed

8 files changed

+46
-24
lines changed
 

‎src/sextante/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ def name():
55
def description():
66
return "SEXTANTE Geoprocessing platform for QGIS"
77
def version():
8-
return "Version 1.0.3"
8+
return "Version 1.0.4"
99
def icon():
1010
return "icon.png"
1111
def qgisMinimumVersion():

‎src/sextante/grass/GrassAlgorithm.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ def addToRegion(self, layer, first):
106106
self.xmax = max(self.xmax, layer.extent().xMaximum())
107107
self.ymin = min(self.ymin, layer.extent().yMinimum())
108108
self.ymax = max(self.ymax, layer.extent().yMaximum())
109-
self.cellsize = max(self.cellsize, (layer.extent().xMaximum() - layer.extent().xMinimum())/layer.width())
109+
if isinstance(layer, QgsRasterLayer):
110+
self.cellsize = max(self.cellsize, (layer.extent().xMaximum() - layer.extent().xMinimum())/layer.width())
110111

111112

112113
def processAlgorithm(self, progress):

‎src/sextante/gui/FileSelectionPanel.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33

44
class FileSelectionPanel(QtGui.QWidget):
55

6-
def __init__(self):
6+
def __init__(self, isFolder):
77
super(FileSelectionPanel, self).__init__(None)
8+
self.isFolder = isFolder;
89
self.horizontalLayout = QtGui.QHBoxLayout(self)
910
self.horizontalLayout.setSpacing(2)
1011
self.horizontalLayout.setMargin(0)
@@ -18,9 +19,14 @@ def __init__(self):
1819
self.setLayout(self.horizontalLayout)
1920

2021
def showSelectionDialog(self):
21-
filename = QtGui.QFileDialog.getOpenFileName(self, "Open file", QtCore.QString(""), "*.*")
22-
if filename:
23-
self.text.setText(str(filename))
22+
if self.isFolder:
23+
folder = QtGui.QFileDialog.getExistingDirectory (self, "Select folder")
24+
if folder:
25+
self.text.setText(str(folder))
26+
else:
27+
filename = QtGui.QFileDialog.getOpenFileName(self, "Open file", QtCore.QString(""), "*.*")
28+
if filename:
29+
self.text.setText(str(filename))
2430

2531
def getValue(self):
2632
s = str(self.text.text())

‎src/sextante/gui/ParametersPanel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def getWidgetFromParameter(self, param):
182182
elif isinstance(param, ParameterRange):
183183
item = RangePanel(param)
184184
elif isinstance(param, ParameterFile):
185-
item = FileSelectionPanel()
185+
item = FileSelectionPanel(param.isFolder)
186186
elif isinstance(param, ParameterMultipleInput):
187187
if param.datatype == ParameterMultipleInput.TYPE_RASTER:
188188
options = QGisLayers.getRasterLayers()

‎src/sextante/metadata.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[general]
99
name=SEXTANTE
1010
description=SEXTANTE for QGIS
11-
version=1.0.3
11+
version=1.0.4
1212
qgisMinimumVersion=1.0
1313
class_name=SextantePlugin
1414
website=www.sextantegis.com

‎src/sextante/parameters/ParameterFile.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,25 @@
22

33
class ParameterFile(Parameter):
44

5-
def __init__(self, name="", description="", default=""):
5+
def __init__(self, name="", description="", isFolder = False):
66
self.name = name
77
self.description = description
8-
self.default = default
98
self.value = None
9+
self.isFolder = isFolder
1010

1111
def getValueAsCommandLineParameter(self):
1212
return "\"" + str(self.value) + "\""
1313

1414
def serialize(self):
1515
return self.__module__.split(".")[-1] + "|" + self.name + "|" + self.description +\
16-
"|" + str(self.default)
16+
"|" + str(self.isFolder)
1717

1818
def deserialize(self, s):
1919
tokens = s.split("|")
20-
return ParameterFile(tokens[0], tokens[1], tokens[2])
20+
return ParameterFile(tokens[0], tokens[1], tokens[2] == str(True))
2121

2222
def getAsScriptCode(self):
23-
return "##" + self.name + "=file " + self.default
23+
if self.isFolder:
24+
return "##" + self.name + "=folder"
25+
else:
26+
return "##" + self.name + "=file"

‎src/sextante/r/RAlgorithm.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
from sextante.core.SextanteLog import SextanteLog
2323
from sextante.core.SextanteUtils import SextanteUtils
2424
import subprocess
25+
from sextante.parameters.ParameterExtent import ParameterExtent
26+
from sextante.parameters.ParameterFile import ParameterFile
27+
from sextante.outputs.OutputFile import OutputFile
2528

2629
class RAlgorithm(GeoAlgorithm):
2730

@@ -122,21 +125,23 @@ def processParameterLine(self,line):
122125
break
123126
if found:
124127
param = ParameterTableField(tokens[0], tokens[0], field)
128+
elif tokens[1].lower().strip() == "extent":
129+
param = ParameterExtent(tokens[0], desc)
130+
elif tokens[1].lower().strip() == "file":
131+
param = ParameterFile(tokens[0], desc, False)
132+
elif tokens[1].lower().strip() == "folder":
133+
param = ParameterFile(tokens[0], desc, True)
125134
elif tokens[1].lower().strip().startswith("string"):
126135
default = tokens[1].strip()[len("string")+1:]
127136
param = ParameterString(tokens[0], desc, default)
128137
elif tokens[1].lower().strip().startswith("output raster"):
129138
out = OutputRaster()
130-
if tokens[1].strip().endswith("*"):
131-
self.silentOutputs.append(tokens[0])
132139
elif tokens[1].lower().strip().startswith("output vector"):
133140
out = OutputVector()
134-
if tokens[1].strip().endswith("*"):
135-
self.silentOutputs.append(tokens[0])
136141
elif tokens[1].lower().strip().startswith("output table"):
137142
out = OutputTable()
138-
if tokens[1].strip().endswith("*"):
139-
self.silentOutputs.append(tokens[0])
143+
elif tokens[1].lower().strip().startswith("output file"):
144+
out = OutputFile()
140145

141146
if param != None:
142147
self.addParameter(param)
@@ -291,5 +296,5 @@ def checkBeforeOpeningParametersDialog(self):
291296
if "no input file" in line:
292297
settings.setValue(R_INSTALLED, True)
293298
return
294-
return "It seems that SAGA is not correctly installed in your system.\nPlease install it before running SAGA algorithms."
299+
return "It seems that R is not correctly installed in your system.\nPlease install it before running R Scripts."
295300

‎src/sextante/script/ScriptAlgorithm.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
from sextante.parameters.ParameterTableField import ParameterTableField
1717
from sextante.outputs.OutputHTML import OutputHTML
1818
from sextante.outputs.OutputNumber import OutputNumber
19+
from sextante.parameters.ParameterExtent import ParameterExtent
20+
from sextante.parameters.ParameterFile import ParameterFile
21+
from sextante.outputs.OutputFile import OutputFile
1922

2023
class ScriptAlgorithm(GeoAlgorithm):
2124

@@ -81,6 +84,12 @@ def processParameterLine(self,line):
8184
elif tokens[1].lower().strip() == "boolean":
8285
default = tokens[1].strip()[len("boolean")+1:]
8386
param = ParameterBoolean(tokens[0], desc, default)
87+
elif tokens[1].lower().strip() == "extent":
88+
param = ParameterExtent(tokens[0], desc)
89+
elif tokens[1].lower().strip() == "file":
90+
param = ParameterFile(tokens[0], desc, False)
91+
elif tokens[1].lower().strip() == "folder":
92+
param = ParameterFile(tokens[0], desc, True)
8493
elif tokens[ 1].lower().strip().startswith("number"):
8594
default = tokens[1].strip()[len("number")+1:]
8695
param = ParameterNumber(tokens[0], desc, default=default)
@@ -104,10 +113,8 @@ def processParameterLine(self,line):
104113
out = OutputTable()
105114
elif tokens[1].lower().strip().startswith("output html"):
106115
out = OutputHTML()
107-
#=======================================================================
108-
# elif tokens[1].lower().strip().startswith("output number"):
109-
# out = OutputNumber()
110-
#=======================================================================
116+
elif tokens[1].lower().strip().startswith("output file"):
117+
out = OutputFile()
111118

112119
if param != None:
113120
self.addParameter(param)

0 commit comments

Comments
 (0)
Please sign in to comment.