def getStrings(self):
        strings = []
        params = self.model.parameters
        for param in params:
            if isinstance(param, ParameterString):
                strings.append(
                    AlgorithmAndParameter(
                        AlgorithmAndParameter.PARENT_MODEL_ALGORITHM,
                        param.name, '', param.description))

        if self.algIndex is None:
            dependent = []
        else:
            dependent = self.model.getDependentAlgorithms(self.algIndex)

        i = 0
        for alg in self.model.algs:
            if i not in dependent:
                for out in alg.outputs:
                    if isinstance(out, OutputString):
                        strings.append(
                            AlgorithmAndParameter(i, out.name, alg.name,
                                                  out.description))
            i += 1
        return strings
示例#2
0
 def getTableFields(self):
     strings = []
     params = self.model.parameters
     for param in params:
         if isinstance(param, ParameterTableField):
             strings.append(AlgorithmAndParameter(AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, param.name, "", param.description))
     return strings
示例#3
0
    def getItemsFromAAP(self, aap, isMultiple):
        items = []
        start = int(aap.alg)
        if aap.alg == AlgorithmAndParameter.PARENT_MODEL_ALGORITHM:
            if isMultiple:
                multi = self.model.paramValues[aap.param]
                tokens = multi.split(";")
                for token in tokens:
                    aap = AlgorithmAndParameter(float(token.split("|")[0]), token.split("|")[1])
                    ret = self.getItemsFromAAP(aap, False)
                    if ret:
                        for item in ret:
                            items.append(item)
            else:
                iModelParam=0
                for modelparam in self.model.parameters:
                    if modelparam.name == aap.param:
                        items.append((self.paramItems[iModelParam], -1))
                        break
                    iModelParam+=1
        else:
            idx = 0
            for output in self.model.algs[start].outputs:
                if output.name == aap.param:
                    items.append((self.algItems[start], idx))
                    break
                idx += 1

        return items
示例#4
0
 def getBooleans(self):
     booleans = []
     params = self.model.parameters
     for param in params:
         if isinstance(param, ParameterBoolean):
             booleans.append(AlgorithmAndParameter(AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, param.name, "", param.description))
     return booleans
 def getExtents(self):
     extents = []
     params = self.model.parameters
     for param in params:
         if isinstance(param, ParameterExtent):
             extents.append(AlgorithmAndParameter(AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, param.name, "", param.description))
     return extents
示例#6
0
 def setParamBooleanValue(self, param, widget):
     if widget.currentIndex() < 2:
         name =  self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         self.params[param.name] = value
         self.values[name] = str(widget.currentIndex() == 0)
     else:
         value = widget.itemData(widget.currentIndex())
         self.params[param.name] = value
     return True
    def setParamStringValue(self, param, widget):
        if param.multiline:
            name = self.getSafeNameForHarcodedParameter(param)
            paramValue = AlgorithmAndParameter(
                AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
            value = widget.getValue()
            option = widget.getOption()
            if option == MultilineTextPanel.USE_TEXT:
                if value == '':
                    if param.optional:
                        self.params[param.name] = None
                        return True
                    else:
                        return False
                else:
                    self.values[name] = value

                    self.params[param.name] = paramValue
            else:
                self.params[param.name] = value
        else:
            #if widget.currentText() == '':
            #    return False
            idx = widget.findText(widget.currentText())
            if idx < 0:
                name = self.getSafeNameForHarcodedParameter(param)
                value = AlgorithmAndParameter(
                    AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
                self.params[param.name] = value
                value = str(widget.currentText()).strip()
                if value == '':
                    if param.optional:
                        self.values[name] = None
                        return True
                    else:
                        return False
                else:
                    self.values[name] = str(widget.currentText())
            else:
                value = widget.itemData(widget.currentIndex())
                self.params[param.name] = value
        return True
示例#8
0
 def setParamFileValue(self, param, widget):
     idx = widget.findText(widget.currentText())
     if idx < 0:
         name = self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         self.params[param.name] = value
         s = str(widget.currentText())
         self.values[name] = s
     else:
         value = widget.itemData(widget.currentIndex())
         self.params[param.name] = value
     return True
示例#9
0
    def setParamValues(self):
        self.params = {}
        self.values = {}
        self.outputs = {}

        name = self.getSafeNameForHarcodedParameter(
            self.alg.getParameterFromName(self.alg.FORMULA))
        value = AlgorithmAndParameter(
            AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
        self.params[self.alg.FORMULA] = value
        formula = str(self.formulaText.text())
        self.values[name] = formula

        numbers = self.getNumbers()
        used = []
        for i in range(len(numbers)):
            if str(chr(i + 97)) in formula:
                used.append(numbers[i])
        i = 0
        for variable in used:
            paramname = self.alg.NUMBER + str(i)
            self.params[paramname] = variable
            i += 1

        # We create a dummy harcoded value for all unused variable slots
        paramname = self.alg.NUMBER + str(i)
        name = self.getSafeNameForHarcodedParameter(
            self.alg.getParameterFromName(paramname))
        value = AlgorithmAndParameter(
            AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
        self.values[name] = 0
        for i in range(len(used), self.alg.AVAILABLE_VARIABLES):
            paramname = self.alg.NUMBER + str(i)
            self.params[paramname] = value

        self.outputs[self.alg.RESULT] = None
        self.dependencies = []
        return True
示例#10
0
 def setParamExtentValue(self, param, widget):
     idx = widget.findText(widget.currentText())
     if idx < 0:
         name =  self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         self.params[param.name] = value
         s = str(widget.currentText())
         try:
             tokens = s.split(",")
             if len(tokens) != 4:
                 return False
             for token in tokens:
                 float(token)
         except:
             return False
         self.values[name] = s
     else:
         value = widget.itemData(widget.currentIndex())
         self.params[param.name] = value
     return True
示例#11
0
 def setParamTableFieldValue(self, param, widget):
     idx = widget.findText(widget.currentText())
     if idx < 0:
         name =  self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         s = str(widget.currentText()).strip()
         if s == "":
             if param.optional:
                 self.params[param.name] = None
                 return True
             else:
                 return False
         else:
             self.params[param.name] = value
             self.values[name] = str(widget.currentText())
             return True
     else:
         value = widget.itemData(widget.currentIndex())
         self.params[param.name] = value
     return True
示例#12
0
 def setParamValue(self, param, widget):
     if isinstance(param,
                   (ParameterRaster, ParameterVector, ParameterTable)):
         return self.setParamValueLayerOrTable(param, widget)
     elif isinstance(param, ParameterBoolean):
         return self.setParamBooleanValue(param, widget)
     elif isinstance(param, ParameterString):
         return self.setParamStringValue(param, widget)
     elif isinstance(param, ParameterNumber):
         return self.setParamNumberValue(param, widget)
     elif isinstance(param, ParameterExtent):
         return self.setParamExtentValue(param, widget)
     elif isinstance(param, ParameterFile):
         return self.setParamFileValue(param, widget)
     elif isinstance(param, ParameterSelection):
         name = self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(
             AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         self.params[param.name] = value
         self.values[name] = str(widget.currentIndex())
         return True
     elif isinstance(param, ParameterRange):
         name = self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(
             AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         self.params[param.name] = value
         self.values[name] = str(widget.getValue())
         return True
     elif isinstance(param, ParameterCrs):
         authid = widget.getValue()
         if authid is None:
             self.params[param.name] = None
         else:
             name = self.getSafeNameForHarcodedParameter(param)
             value = AlgorithmAndParameter(
                 AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
             self.params[param.name] = value
             self.values[name] = authid
         return True
     elif isinstance(param, ParameterFixedTable):
         name = self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(
             AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         self.params[param.name] = value
         self.values[name] = ParameterFixedTable.tableToString(widget.table)
         return True
     elif isinstance(param, ParameterTableField):
         return self.setParamTableFieldValue(param, widget)
     elif isinstance(param, ParameterMultipleInput):
         if param.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
             options = self.getVectorLayers()
         else:
             options = self.getRasterLayers()
         values = []
         for index in widget.selectedoptions:
             values.append(options[index].serialize())
         if len(values) == 0 and not param.optional:
             return False
         name = self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(
             AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         self.params[param.name] = value
         self.values[name] = ';'.join(values)
         return True
     else:
         name = self.getSafeNameForHarcodedParameter(param)
         value = AlgorithmAndParameter(
             AlgorithmAndParameter.PARENT_MODEL_ALGORITHM, name)
         self.params[param.name] = value
         self.values[name] = unicode(widget.text())
         return True