Beispiel #1
0
    def buildParametersDialog(self):
        for input in self.process.inputs:
            inputType = type(input)
            if inputType == VectorInput:
                self.addParameter(
                    ParameterVector(str(input.identifier), str(input.title),
                                    ParameterVector.VECTOR_TYPE_ANY,
                                    input.minOccurs == 0))
            elif inputType == MultipleVectorInput:
                self.addParameter(
                    ParameterMultipleInput(str(input.identifier),
                                           str(input.title),
                                           ParameterVector.VECTOR_TYPE_ANY,
                                           input.minOccurs == 0))
            elif inputType == StringInput:
                self.addParameter(
                    ParameterString(str(input.identifier), str(input.title)))
            elif inputType == TextInput:
                self.addParameter(
                    ParameterString(str(input.identifier), str(input.title)))
            elif inputType == RasterInput:
                self.addParameter(
                    ParameterRaster(str(input.identifier), str(input.title),
                                    input.minOccurs == 0))
            elif inputType == MultipleRasterInput:
                self.addParameter(
                    ParameterMultipleInput(str(input.identifier),
                                           str(input.title),
                                           ParameterMultipleInput.TYPE_RASTER,
                                           input.minOccurs == 0))
            elif inputType == FileInput:
                #self.addParameter(ParameterFile(str(input.identifier), str(input.title), False, input.minOccurs == 0))
                self.addParameter(
                    ParameterFile(str(input.identifier), str(input.title)))
            elif inputType == MultipleFileInput:
                pass  #Not supported
            elif inputType == SelectionInput:
                self.addParameter(
                    ParameterSelection(str(input.identifier), str(input.title),
                                       input.valList))
            elif inputType == ExtentInput:
                self.addParameter(
                    ParameterExtent(str(input.identifier), str(input.title)))
            elif inputType == CrsInput:
                self.addParameter(
                    ParameterCrs(str(input.identifier), "Projection", None))

        for output in self.process.outputs:
            outputType = type(output)
            if outputType == VectorOutput:
                self.addOutput(
                    OutputVector(str(output.identifier), str(output.title)))
            elif outputType == RasterOutput:
                self.addOutput(
                    OutputRaster(str(output.identifier), str(output.title)))
            elif outputType == StringOutput:
                self.addOutput(
                    OutputString(str(output.identifier), str(output.title)))
Beispiel #2
0
    def defineCharacteristics(self):
        self.name = 'Evaluate Novel Conditions'
        self.cmdName = 'novelcondition'
        self.group = 'Data Analysis'

        self.addParameter(
            ParameterMultipleInput(self.REFERENCE, 'Reference layers',
                                   ParameterMultipleInput.TYPE_RASTER, False))
        self.addParameter(
            ParameterMultipleInput(self.PROJECTION, 'Projection layers',
                                   ParameterMultipleInput.TYPE_RASTER, False))
        self.addOutput(OutputRaster(self.RESULT, 'Novel Conditions Map'))
Beispiel #3
0
 def defineCharacteristics(self):
     self.name = "Merge"
     self.group = "[GDAL] Miscellaneous"
     self.addParameter(ParameterMultipleInput(merge.INPUT, "Input layers", ParameterMultipleInput.TYPE_RASTER))
     self.addParameter(ParameterBoolean(merge.PCT, "Grab pseudocolor table from first layer", False))
     self.addParameter(ParameterBoolean(merge.SEPARATE, "Layer stack", False))
     self.addOutput(OutputRaster(merge.OUTPUT, "Output layer"))
Beispiel #4
0
 def defineCharacteristics(self):
     self.name = 'Unify Environmental Layers'
     self.cmdName = 'unification'
     self.group = 'Data Preperation'
     
     self.addParameter(ParameterMultipleInput(self.ENV,'Environmental layers',ParameterMultipleInput.TYPE_RASTER, False))        
     self.addParameter(ParameterNumber(self.NA, "Nodata value", -9999 , None, -9999))
     self.addParameter(ParameterString(self.OUTDIR, 'Output folder'))
Beispiel #5
0
 def defineCharacteristics(self):
     self.name = "nviz"
     self.group = "Visualization(NVIZ)"
     self.addParameter(
         ParameterMultipleInput(nviz.ELEVATION, "Elevation layers",
                                ParameterMultipleInput.TYPE_RASTER, True))
     self.addParameter(
         ParameterMultipleInput(nviz.VECTOR, "Vector layers",
                                ParameterMultipleInput.TYPE_VECTOR_ANY,
                                True))
     self.addParameter(
         ParameterExtent(nviz.GRASS_REGION_EXTENT_PARAMETER,
                         "GRASS region extent"))
     self.addParameter(
         ParameterNumber(self.GRASS_REGION_CELLSIZE_PARAMETER,
                         "GRASS region cellsize (leave 0 for default)", 0,
                         None, 0.0))
Beispiel #6
0
    def defineCharacteristics(self):
        self.name = 'Maximum Entropy Modelling'
        self.cmdName = 'maxent'
        self.group = 'Species Distribution Modelling'

        self.addParameter(ParameterVector(self.SPECIES, 'Species localities',[ParameterVector.VECTOR_TYPE_POINT,ParameterTable],False)) # Allow point
        self.addParameter(ParameterTableField(Maxent.SPEC_COL, "Species Name", Maxent.SPECIES))
        self.addParameter(ParameterMultipleInput(self.ENV,'Environmental layers',ParameterMultipleInput.TYPE_RASTER, False))
        self.addParameter(ParameterTable(self.PARAM, '(Optional) MAXENT parameter file'))
Beispiel #7
0
    def defineCharacteristics(self):
        self.name = 'Calculate Niche Overlap Statistics'
        self.cmdName = 'nicheoverlap'
        self.group = 'Data Analysis'

        self.addParameter(
            ParameterMultipleInput(self.ENV, 'Prediction layers',
                                   ParameterMultipleInput.TYPE_RASTER, False))
        self.addParameter(ParameterSelection(self.METRIC, "Metric", self.m, 0))

        self.addOutput(OutputTable(self.RESULTS, 'Result output'))
Beispiel #8
0
 def defineCharacteristics(self):
     self.name = 'Merge'
     self.group = '[GDAL] Miscellaneous'
     self.addParameter(
         ParameterMultipleInput(merge.INPUT, 'Input layers',
                                ParameterMultipleInput.TYPE_RASTER))
     self.addParameter(
         ParameterBoolean(merge.PCT,
                          'Grab pseudocolor table from first layer', False))
     self.addParameter(
         ParameterBoolean(merge.SEPARATE, 'Layer stack', False))
     self.addOutput(OutputRaster(merge.OUTPUT, 'Output layer'))
Beispiel #9
0
 def defineCharacteristics(self):
     self.name = 'nviz'
     self.group = 'Visualization(NVIZ)'
     self.addParameter(
         ParameterMultipleInput(nviz.ELEVATION,
                                'Raster file(s) for elevation',
                                ParameterMultipleInput.TYPE_RASTER, True))
     self.addParameter(
         ParameterMultipleInput(nviz.VECTOR,
                                'Vector lines/areas overlay file(s)',
                                ParameterMultipleInput.TYPE_VECTOR_ANY,
                                True))
     self.addParameter(
         ParameterMultipleInput(nviz.COLOR, 'Raster file(s) for color',
                                ParameterMultipleInput.TYPE_RASTER, True))
     self.addParameter(
         ParameterExtent(nviz.GRASS_REGION_EXTENT_PARAMETER,
                         'GRASS region extent'))
     self.addParameter(
         ParameterNumber(self.GRASS_REGION_CELLSIZE_PARAMETER,
                         'GRASS region cellsize (leave 0 for default)', 0,
                         None, 0.0))
Beispiel #10
0
 def defineCharacteristics(self):
     self.name = 'Raster calculator'
     self.cmdname = 'Grid Calculator'
     self.undecoratedGroup = "grid_calculus"
     self.group = SagaGroupNameDecorator.getDecoratedName(
         self.undecoratedGroup)
     grids = ParameterRaster(self.GRIDS, 'Input layers', True)
     grids.hidden = True
     self.addParameter(grids)
     self.addParameter(
         ParameterMultipleInput(self.XGRIDS, 'Input layers',
                                ParameterMultipleInput.TYPE_RASTER, False))
     self.addParameter(ParameterString(self.FORMULA, "Formula"))
     self.addOutput(OutputRaster(self.RESULT, "Result"))
Beispiel #11
0
    def defineCharacteristics(self):
        self.name = 'Multivariate Environmental Similarity Surfaces'
        self.cmdName = 'mess'
        self.group = 'Data Analysis'

        self.addParameter(
            ParameterVector(
                self.SPECIES, 'Species localities',
                [ParameterVector.VECTOR_TYPE_POINT, ParameterTable], False))
        self.addParameter(
            ParameterMultipleInput(self.ENV, 'Environmental layers',
                                   ParameterMultipleInput.TYPE_RASTER, False))

        self.addOutput(OutputRaster(self.RESULTS, 'MESS'))
Beispiel #12
0
    def defineCharacteristics(self):
        self.name = 'Logistic Regression'
        self.cmdName = 'logisticreg'
        self.group = 'Species Distribution Modelling'

        self.addParameter(
            ParameterVector(
                self.SPECIES, 'Species localities',
                [ParameterVector.VECTOR_TYPE_POINT, ParameterTable],
                False))  # Allow point
        self.addParameter(
            ParameterMultipleInput(self.ENV, 'Environmental layers',
                                   ParameterMultipleInput.TYPE_RASTER, False))

        self.addOutput(OutputRaster(self.OUT_PRED, 'Output Prediction'))
        self.addOutput(OutputTable(self.OUT_PRED_RES, 'Stats'))
Beispiel #13
0
    def processParameterLine(self, line):
        param = None
        out = None
        line = line.replace('#', '')

        # If the line is in the format of the text description files for
        # normal algorithms, then process it using parameter and output
        # factories
        if '|' in line:
            self.processDescriptionParameterLine(line)
            return
        if line == "nomodeler":
            self.showInModeler = False
        tokens = line.split('=', 1)
        desc = self.createDescriptiveName(tokens[0])
        if tokens[1].lower().strip() == 'group':
            self.group = tokens[0]
            return
        if tokens[1].lower().strip() == 'name':
            self.name = tokens[0]
            return
        if tokens[1].lower().strip() == 'raster':
            param = ParameterRaster(tokens[0], desc, False)
        elif tokens[1].lower().strip() == 'vector':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_ANY])
        elif tokens[1].lower().strip() == 'vector point':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_POINT])
        elif tokens[1].lower().strip() == 'vector line':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_LINE])
        elif tokens[1].lower().strip() == 'vector polygon':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_POLYGON])
        elif tokens[1].lower().strip() == 'table':
            param = ParameterTable(tokens[0], desc, False)
        elif tokens[1].lower().strip() == 'multiple raster':
            param = ParameterMultipleInput(tokens[0], desc,
                                           ParameterMultipleInput.TYPE_RASTER)
            param.optional = False
        elif tokens[1].lower().strip() == 'multiple vector':
            param = ParameterMultipleInput(
                tokens[0], desc, ParameterMultipleInput.TYPE_VECTOR_ANY)
            param.optional = False
        elif tokens[1].lower().strip().startswith('selection'):
            options = tokens[1].strip()[len('selection '):].split(';')
            param = ParameterSelection(tokens[0], desc, options)
        elif tokens[1].lower().strip().startswith('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)
        elif tokens[1].lower().strip().startswith('field'):
            field = tokens[1].strip()[len('field') + 1:]
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableField(tokens[0], desc, field)
        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('longstring'):
            default = tokens[1].strip()[len('longstring') + 1:]
            param = ParameterString(tokens[0], desc, default, multiline=True)
        elif tokens[1].lower().strip().startswith('crs'):
            default = tokens[1].strip()[len('crs') + 1:]
            if not default:
                default = 'EPSG:4326'
            param = ParameterCrs(tokens[0], desc, default)
        elif tokens[1].lower().strip().startswith('output raster'):
            out = OutputRaster()
        elif tokens[1].lower().strip().startswith('output vector'):
            out = OutputVector()
        elif tokens[1].lower().strip().startswith('output table'):
            out = OutputTable()
        elif tokens[1].lower().strip().startswith('output html'):
            out = OutputHTML()
        elif tokens[1].lower().strip().startswith('output file'):
            out = OutputFile()
            subtokens = tokens[1].split(' ')
            if len(subtokens > 2):
                out.ext = subtokens[2]
        elif tokens[1].lower().strip().startswith('output directory'):
            out = OutputDirectory()
        elif tokens[1].lower().strip().startswith('output number'):
            out = OutputNumber()
        elif tokens[1].lower().strip().startswith('output string'):
            out = OutputString()

        if param is not None:
            self.addParameter(param)
        elif out is not None:
            out.name = tokens[0]
            out.description = desc
            self.addOutput(out)
        else:
            raise WrongScriptException(
                'Could not load script:' + self.descriptionFile
                or '' + '.\n Problem with line "' + line + '"')
Beispiel #14
0
 def processParameterLine(self, line):
     param = None
     out = None
     line = line.replace('#', '')
     if line.lower().strip().startswith('report'):
         self.report = True
         self.addOutput(OutputHTML(RAlgorithm.KNITR_REPORT, 'HTML Report'))
         return
     if line.lower().strip().startswith('showplots'):
         self.showPlots = True
         self.addOutput(OutputHTML(RAlgorithm.RPLOTS, 'R Plots'))
         return
     if line.lower().strip().startswith('dontuserasterpackage'):
         self.useRasterPackage = False
         return
     if line.lower().strip().startswith('passfilenames'):
         self.passFileNames = True
         return
     if line.lower().strip().startswith('shapefilespackage'):
         self.useShapefilesPackage = True
         return
     tokens = line.split('=')
     desc = self.createDescriptiveName(tokens[0])
     if tokens[1].lower().strip() == 'group':
         self.group = tokens[0]
         return
     if tokens[1].lower().strip().startswith('raster'):
         param = ParameterRaster(tokens[0], desc, False)
     elif tokens[1].lower().strip() == 'vector':
         param = ParameterVector(tokens[0], desc,
                                 [ParameterVector.VECTOR_TYPE_ANY])
     elif tokens[1].lower().strip() == 'table':
         param = ParameterTable(tokens[0], desc, False)
     elif tokens[1].lower().strip().startswith('multiple raster'):
         param = ParameterMultipleInput(tokens[0], desc,
                 ParameterMultipleInput.TYPE_RASTER)
         param.optional = False
     elif tokens[1].lower().strip() == 'multiple vector':
         param = ParameterMultipleInput(tokens[0], desc,
                 ParameterMultipleInput.TYPE_VECTOR_ANY)
         param.optional = False
     elif tokens[1].lower().strip().startswith('selection'):
         options = tokens[1].strip()[len('selection'):].split(';')
         param = ParameterSelection(tokens[0], desc, options)
     elif tokens[1].lower().strip().startswith('boolean'):
         default = tokens[1].strip()[len('boolean') + 1:]
         param = ParameterBoolean(tokens[0], desc, default)
     elif tokens[1].lower().strip().startswith('number'):
         try:
             default = float(tokens[1].strip()[len('number') + 1:])
             param = ParameterNumber(tokens[0], desc, default=default)
         except:
             raise WrongScriptException('Could not load R script:'
                     + self.descriptionFile + '.\n Problem with line "'
                     + line + '"')
     elif tokens[1].lower().strip().startswith('field'):
         field = tokens[1].strip()[len('field') + 1:]
         found = False
         for p in self.parameters:
             if p.name == field:
                 found = True
                 break
         if found:
             param = ParameterTableField(tokens[0], desc, 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()
     elif tokens[1].lower().strip().startswith('output vector'):
         out = OutputVector()
     elif tokens[1].lower().strip().startswith('output table'):
         out = OutputTable()
     elif tokens[1].lower().strip().startswith('output file'):
         out = OutputFile()
     elif tokens[1].lower().strip().startswith('output string'):
         out = OutputString()
         self.outputStringExist = True
         self.outputStringName = tokens[0]
     elif tokens[1].lower().strip().startswith('output number'):
         out = OutputNumber()
         self.outputNumberBool = True
         self.outputNumberName = tokens[0]
         
     if param is not None:
         self.addParameter(param)
     elif out is not None:
         out.name = tokens[0]
         out.description = tokens[0]
         self.addOutput(out)
     else:
         raise WrongScriptException('Could not load R script:'
                                    + self.descriptionFile
                                    + '.\n Problem with line "' + line + '"'
                                    )
Beispiel #15
0
    def processParameterLine(self, line):
        param = None
        out = None
        line = line.replace("#", "")
        # If the line is in the format of the text description files for normal algorithms,
        # then process it using parameter and output factories
        if '|' in line:
            self.processDescriptionParameterLine(line)
            return
        tokens = line.split("=")
        desc = self.createDescriptiveName(tokens[0])
        if tokens[1].lower().strip() == "group":
            self.group = tokens[0]
            return
        if tokens[1].lower().strip() == "name":
            self.name = tokens[0]
            return
        if tokens[1].lower().strip() == "raster":
            param = ParameterRaster(tokens[0], desc, False)
        elif tokens[1].lower().strip() == "vector":
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_ANY])
        elif tokens[1].lower().strip() == "table":
            param = ParameterTable(tokens[0], desc, False)
        elif tokens[1].lower().strip() == "multiple raster":
            param = ParameterMultipleInput(tokens[0], desc,
                                           ParameterMultipleInput.TYPE_RASTER)
            param.optional = False
        elif tokens[1].lower().strip() == "multiple vector":
            param = ParameterMultipleInput(
                tokens[0], desc, ParameterMultipleInput.TYPE_VECTOR_ANY)
            param.optional = False
        elif tokens[1].lower().strip().startswith("selection"):
            options = tokens[1].strip()[len("selection"):].split(";")
            param = ParameterSelection(tokens[0], desc, options)
        elif tokens[1].lower().strip().startswith("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)
        elif tokens[1].lower().strip().startswith("field"):
            field = tokens[1].strip()[len("field") + 1:]
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableField(tokens[0], tokens[0], field)
        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()
        elif tokens[1].lower().strip().startswith("output vector"):
            out = OutputVector()
        elif tokens[1].lower().strip().startswith("output table"):
            out = OutputTable()
        elif tokens[1].lower().strip().startswith("output html"):
            out = OutputHTML()
        elif tokens[1].lower().strip().startswith("output file"):
            out = OutputFile()
        elif tokens[1].lower().strip().startswith("output number"):
            out = OutputNumber()
        elif tokens[1].lower().strip().startswith("output string"):
            out = OutputString()

        if param != None:
            self.addParameter(param)
        elif out != None:
            out.name = tokens[0]
            out.description = tokens[0]
            self.addOutput(out)
        else:
            raise WrongScriptException("Could not load script:" +
                                       self.descriptionFile +
                                       ".\n Problem with line \"" + line +
                                       "\"")
Beispiel #16
0
    def processParameterLine(self, line):
        param = None
        out = None
        line = line.replace("#", "")
        if line.lower().strip().startswith("showplots"):
            self.showPlots = True
            self.addOutput(OutputHTML(RAlgorithm.RPLOTS, "R Plots"))
            return
        if line.lower().strip().startswith("dontuserasterpackage"):
            self.useRasterPackage = False
            return
        if line.lower().strip().startswith("passfilenames"):
            self.passFileNames = True
            return
        tokens = line.split("=")
        desc = self.createDescriptiveName(tokens[0])
        if tokens[1].lower().strip() == "group":
            self.group = tokens[0]
            return
        if tokens[1].lower().strip().startswith("raster"):
            param = ParameterRaster(tokens[0], desc, False)
        elif tokens[1].lower().strip() == "vector":
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_ANY])
        elif tokens[1].lower().strip() == "table":
            param = ParameterTable(tokens[0], desc, False)
        elif tokens[1].lower().strip().startswith("multiple raster"):
            param = ParameterMultipleInput(tokens[0], desc,
                                           ParameterMultipleInput.TYPE_RASTER)
            param.optional = False
        elif tokens[1].lower().strip() == "multiple vector":
            param = ParameterMultipleInput(
                tokens[0], desc, ParameterMultipleInput.TYPE_VECTOR_ANY)
            param.optional = False
        elif tokens[1].lower().strip().startswith("selection"):
            options = tokens[1].strip()[len("selection"):].split(";")
            param = ParameterSelection(tokens[0], desc, options)
        elif tokens[1].lower().strip().startswith("boolean"):
            default = tokens[1].strip()[len("boolean") + 1:]
            param = ParameterBoolean(tokens[0], desc, default)
        elif tokens[1].lower().strip().startswith("number"):
            try:
                default = float(tokens[1].strip()[len("number") + 1:])
                param = ParameterNumber(tokens[0], desc, default=default)
            except:
                raise WrongScriptException("Could not load R script:" +
                                           self.descriptionFile +
                                           ".\n Problem with line \"" + line +
                                           "\"")
        elif tokens[1].lower().strip().startswith("field"):
            field = tokens[1].strip()[len("field") + 1:]
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    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()
        elif tokens[1].lower().strip().startswith("output vector"):
            out = OutputVector()
        elif tokens[1].lower().strip().startswith("output table"):
            out = OutputTable()
        elif tokens[1].lower().strip().startswith("output file"):
            out = OutputFile()

        if param != None:
            self.addParameter(param)
        elif out != None:
            out.name = tokens[0]
            out.description = tokens[0]
            self.addOutput(out)
        else:
            raise WrongScriptException("Could not load R script:" +
                                       self.descriptionFile +
                                       ".\n Problem with line \"" + line +
                                       "\"")
 def okPressed(self):
     description = unicode(self.nameTextBox.text())
     if description.strip() == "":
         QMessageBox.critical(self, "Unable to define parameter",
                              "Invalid parameter name")
         return
     if self.param is None:
         validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
         safeName = ''.join(c for c in description if c in validChars)
         name = self.paramType.upper().replace(" ",
                                               "") + "_" + safeName.upper()
     else:
         name = self.param.name
     if self.paramType == ModelerParameterDefinitionDialog.PARAMETER_BOOLEAN or isinstance(
             self.param, ParameterBoolean):
         self.param = ParameterBoolean(name, description,
                                       self.yesNoCombo.currentIndex() == 0)
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_TABLE_FIELD or isinstance(
             self.param, ParameterTableField):
         if self.parentCombo.currentIndex() < 0:
             QMessageBox.critical(self, "Unable to define parameter",
                                  "Wrong or missing parameter values")
             return
         parent = self.parentCombo.itemData(self.parentCombo.currentIndex())
         self.param = ParameterTableField(name, description, parent)
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_RASTER or isinstance(
             self.param, ParameterRaster):
         self.param = ParameterRaster(name, description,
                                      self.yesNoCombo.currentIndex() == 1)
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_TABLE or isinstance(
             self.param, ParameterTable):
         self.param = ParameterTable(name, description,
                                     self.yesNoCombo.currentIndex() == 1)
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_VECTOR or isinstance(
             self.param, ParameterVector):
         self.param = ParameterVector(
             name, description, [self.shapetypeCombo.currentIndex() - 1],
             self.yesNoCombo.currentIndex() == 1)
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_MULTIPLE or isinstance(
             self.param, ParameterMultipleInput):
         self.param = ParameterMultipleInput(
             name, description,
             self.datatypeCombo.currentIndex() - 1,
             self.yesNoCombo.currentIndex() == 1)
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_NUMBER or isinstance(
             self.param, ParameterNumber):
         try:
             vmin = str(self.minTextBox.text()).strip()
             if vmin == "":
                 vmin = None
             else:
                 vmin = float(vmin)
             vmax = str(self.maxTextBox.text()).strip()
             if vmax == "":
                 vmax = None
             else:
                 vmax = float(vmax)
             self.param = ParameterNumber(
                 name, description, vmin, vmax,
                 float(str(self.defaultTextBox.text())))
         except:
             QMessageBox.critical(self, "Unable to define parameter",
                                  "Wrong or missing parameter values")
             return
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_STRING or isinstance(
             self.param, ParameterString):
         self.param = ParameterString(name, description,
                                      str(self.defaultTextBox.text()))
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_EXTENT or isinstance(
             self.param, ParameterExtent):
         self.param = ParameterExtent(name, description)
     elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_FILE or isinstance(
             self.param, ParameterFile):
         isFolder = self.fileFolderCombo.currentIndex() == 1
         self.param = ParameterFile(name, description, isFolder=isFolder)
     self.close()