Skip to content

Commit

Permalink
addded folder slection parameter
Browse files Browse the repository at this point in the history
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
  • Loading branch information
volayaf committed Apr 20, 2012
1 parent 8b18892 commit aa0a44b
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 24 deletions.
2 changes: 1 addition & 1 deletion src/sextante/__init__.py
Expand Up @@ -5,7 +5,7 @@ def name():
def description():
return "SEXTANTE Geoprocessing platform for QGIS"
def version():
return "Version 1.0.3"
return "Version 1.0.4"
def icon():
return "icon.png"
def qgisMinimumVersion():
Expand Down
3 changes: 2 additions & 1 deletion src/sextante/grass/GrassAlgorithm.py
Expand Up @@ -106,7 +106,8 @@ def addToRegion(self, layer, first):
self.xmax = max(self.xmax, layer.extent().xMaximum())
self.ymin = min(self.ymin, layer.extent().yMinimum())
self.ymax = max(self.ymax, layer.extent().yMaximum())
self.cellsize = max(self.cellsize, (layer.extent().xMaximum() - layer.extent().xMinimum())/layer.width())
if isinstance(layer, QgsRasterLayer):
self.cellsize = max(self.cellsize, (layer.extent().xMaximum() - layer.extent().xMinimum())/layer.width())


def processAlgorithm(self, progress):
Expand Down
14 changes: 10 additions & 4 deletions src/sextante/gui/FileSelectionPanel.py
Expand Up @@ -3,8 +3,9 @@

class FileSelectionPanel(QtGui.QWidget):

def __init__(self):
def __init__(self, isFolder):
super(FileSelectionPanel, self).__init__(None)
self.isFolder = isFolder;
self.horizontalLayout = QtGui.QHBoxLayout(self)
self.horizontalLayout.setSpacing(2)
self.horizontalLayout.setMargin(0)
Expand All @@ -18,9 +19,14 @@ def __init__(self):
self.setLayout(self.horizontalLayout)

def showSelectionDialog(self):
filename = QtGui.QFileDialog.getOpenFileName(self, "Open file", QtCore.QString(""), "*.*")
if filename:
self.text.setText(str(filename))
if self.isFolder:
folder = QtGui.QFileDialog.getExistingDirectory (self, "Select folder")
if folder:
self.text.setText(str(folder))
else:
filename = QtGui.QFileDialog.getOpenFileName(self, "Open file", QtCore.QString(""), "*.*")
if filename:
self.text.setText(str(filename))

def getValue(self):
s = str(self.text.text())
Expand Down
2 changes: 1 addition & 1 deletion src/sextante/gui/ParametersPanel.py
Expand Up @@ -182,7 +182,7 @@ def getWidgetFromParameter(self, param):
elif isinstance(param, ParameterRange):
item = RangePanel(param)
elif isinstance(param, ParameterFile):
item = FileSelectionPanel()
item = FileSelectionPanel(param.isFolder)
elif isinstance(param, ParameterMultipleInput):
if param.datatype == ParameterMultipleInput.TYPE_RASTER:
options = QGisLayers.getRasterLayers()
Expand Down
2 changes: 1 addition & 1 deletion src/sextante/metadata.txt
Expand Up @@ -8,7 +8,7 @@
[general]
name=SEXTANTE
description=SEXTANTE for QGIS
version=1.0.3
version=1.0.4
qgisMinimumVersion=1.0
class_name=SextantePlugin
website=www.sextantegis.com
Expand Down
13 changes: 8 additions & 5 deletions src/sextante/parameters/ParameterFile.py
Expand Up @@ -2,22 +2,25 @@

class ParameterFile(Parameter):

def __init__(self, name="", description="", default=""):
def __init__(self, name="", description="", isFolder = False):
self.name = name
self.description = description
self.default = default
self.value = None
self.isFolder = isFolder

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

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

def deserialize(self, s):
tokens = s.split("|")
return ParameterFile(tokens[0], tokens[1], tokens[2])
return ParameterFile(tokens[0], tokens[1], tokens[2] == str(True))

def getAsScriptCode(self):
return "##" + self.name + "=file " + self.default
if self.isFolder:
return "##" + self.name + "=folder"
else:
return "##" + self.name + "=file"
19 changes: 12 additions & 7 deletions src/sextante/r/RAlgorithm.py
Expand Up @@ -22,6 +22,9 @@
from sextante.core.SextanteLog import SextanteLog
from sextante.core.SextanteUtils import SextanteUtils
import subprocess
from sextante.parameters.ParameterExtent import ParameterExtent
from sextante.parameters.ParameterFile import ParameterFile
from sextante.outputs.OutputFile import OutputFile

class RAlgorithm(GeoAlgorithm):

Expand Down Expand Up @@ -122,21 +125,23 @@ def processParameterLine(self,line):
break
if found:
param = ParameterTableField(tokens[0], tokens[0], field)
elif tokens[1].lower().strip() == "extent":
param = ParameterExtent(tokens[0], desc)
elif tokens[1].lower().strip() == "file":
param = ParameterFile(tokens[0], desc, False)
elif tokens[1].lower().strip() == "folder":
param = ParameterFile(tokens[0], desc, True)
elif tokens[1].lower().strip().startswith("string"):
default = tokens[1].strip()[len("string")+1:]
param = ParameterString(tokens[0], desc, default)
elif tokens[1].lower().strip().startswith("output raster"):
out = OutputRaster()
if tokens[1].strip().endswith("*"):
self.silentOutputs.append(tokens[0])
elif tokens[1].lower().strip().startswith("output vector"):
out = OutputVector()
if tokens[1].strip().endswith("*"):
self.silentOutputs.append(tokens[0])
elif tokens[1].lower().strip().startswith("output table"):
out = OutputTable()
if tokens[1].strip().endswith("*"):
self.silentOutputs.append(tokens[0])
elif tokens[1].lower().strip().startswith("output file"):
out = OutputFile()

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

15 changes: 11 additions & 4 deletions src/sextante/script/ScriptAlgorithm.py
Expand Up @@ -16,6 +16,9 @@
from sextante.parameters.ParameterTableField import ParameterTableField
from sextante.outputs.OutputHTML import OutputHTML
from sextante.outputs.OutputNumber import OutputNumber
from sextante.parameters.ParameterExtent import ParameterExtent
from sextante.parameters.ParameterFile import ParameterFile
from sextante.outputs.OutputFile import OutputFile

class ScriptAlgorithm(GeoAlgorithm):

Expand Down Expand Up @@ -81,6 +84,12 @@ def processParameterLine(self,line):
elif tokens[1].lower().strip() == "boolean":
default = tokens[1].strip()[len("boolean")+1:]
param = ParameterBoolean(tokens[0], desc, default)
elif tokens[1].lower().strip() == "extent":
param = ParameterExtent(tokens[0], desc)
elif tokens[1].lower().strip() == "file":
param = ParameterFile(tokens[0], desc, False)
elif tokens[1].lower().strip() == "folder":
param = ParameterFile(tokens[0], desc, True)
elif tokens[ 1].lower().strip().startswith("number"):
default = tokens[1].strip()[len("number")+1:]
param = ParameterNumber(tokens[0], desc, default=default)
Expand All @@ -104,10 +113,8 @@ def processParameterLine(self,line):
out = OutputTable()
elif tokens[1].lower().strip().startswith("output html"):
out = OutputHTML()
#=======================================================================
# elif tokens[1].lower().strip().startswith("output number"):
# out = OutputNumber()
#=======================================================================
elif tokens[1].lower().strip().startswith("output file"):
out = OutputFile()

if param != None:
self.addParameter(param)
Expand Down

0 comments on commit aa0a44b

Please sign in to comment.