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
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
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
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
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
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
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
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
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
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