Пример #1
0
 def setValue(self, obj):
     if obj == None:
         if self.optional:
             self.value = None
             return True
         else:
             return False
     if isinstance(obj, QgsVectorLayer):
         source = unicode(obj.source())
         if source.endswith("dbf") or source.endswith("csv"):
             self.value = source
             return True
         else:
             return False
     else:
         layers = QGisLayers.getVectorLayers()
         for layer in layers:
             if layer.name() == self.value:
                 source = unicode(layer.source())
                 if source.endswith("dbf") or source.endswith("csv"):
                     self.value = source
                     return True
         val = unicode(obj)
         if val.endswith("dbf") or val.endswith("csv"):
             self.value = val
             return True
         else:
             return False
Пример #2
0
 def setValue(self, obj):
     if obj == None:
         if self.optional:
             self.value = None
             return True
         else:
             return False
     if isinstance(obj, QgsVectorLayer):
         source = unicode(obj.source())
         if source.lower().endswith("dbf") or source.lower().endswith("csv"):
             self.value = source
             return True
         elif source.endswith("shp"):
             self.value = source[:-4] + "dbf"
             return True
         else:
             return False
     else:
         layers = QGisLayers.getVectorLayers()
         for layer in layers:
             if layer.name() == self.value:
                 source = unicode(layer.source())
                 if source.endswith("dbf") or source.endswith("csv"):
                     self.value = source
                     return True
         val = unicode(obj)
         if val.endswith("dbf") or val.endswith("csv"):
             self.value = val
             return True
         else:
             return False
 def showSelectionDialog(self):
     if self.datatype == ParameterMultipleInput.TYPE_RASTER:
         options = QGisLayers.getRasterLayers()
     elif self.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
         options = QGisLayers.getVectorLayers()
     else:
         options = QGisLayers.getVectorLayers(self.datatype)
     opts = []
     for opt in options:
         opts.append(opt.name())
     self.options = opts
     
     dlg = MultipleInputDialog(self.options, self.selectedoptions)
     dlg.exec_()
     if dlg.selectedoptions != None:
         self.selectedoptions = dlg.selectedoptions
         self.label.setText(str(len(self.selectedoptions)) + " elements selected")
Пример #4
0
 def showSelectionDialog(self):
     #If there is a datatype, we use it to create the list of options
     if self.datatype is not None:
         if self.datatype == ParameterMultipleInput.TYPE_RASTER:
             options = QGisLayers.getRasterLayers()
         elif self.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
             options = QGisLayers.getVectorLayers()
         else:
             options = QGisLayers.getVectorLayers(self.datatype)
         opts = []
         for opt in options:
             opts.append(opt.name())
         self.options = opts
     dlg = MultipleInputDialog(self.options, self.selectedoptions)
     dlg.exec_()
     if dlg.selectedoptions != None:
         self.selectedoptions = dlg.selectedoptions
         self.label.setText(
             str(len(self.selectedoptions)) + " elements selected")
Пример #5
0
 def setValue(self, obj):
     self.exported = None
     if obj == None:
         if self.optional:
             self.value = None
             return True
         else:
             return False
     if isinstance(obj, QgsVectorLayer):
         self.value = unicode(obj.source())
         return True
     else:
         self.value = unicode(obj)
         layers = QGisLayers.getVectorLayers(self.shapetype)
         for layer in layers:
             if layer.name() == self.value:
                 self.value = unicode(layer.source())
                 return True
         return True
Пример #6
0
 def setValue(self, obj):
     self.exported = None
     if obj == None:
         if self.optional:
             self.value = None
             return True
         else:
             return False
     if isinstance(obj, QgsVectorLayer):
         self.value = unicode(obj.source())
         return True
     else:
         self.value = unicode(obj)
         layers = QGisLayers.getVectorLayers(self.shapetype)
         for layer in layers:
             if layer.name() == self.value:
                 self.value = unicode(layer.source())
                 return True
         return os.path.exists(self.value)
Пример #7
0
 def getAsString(self,value):
     if self.datatype == ParameterMultipleInput.TYPE_RASTER:
         if isinstance(value, QgsRasterLayer):
             return unicode(value.dataProvider().dataSourceUri())
         else:
             s = unicode(value)
             layers = QGisLayers.getRasterLayers()
             for layer in layers:
                 if layer.name() == s:
                     return unicode(layer.dataProvider().dataSourceUri())
             return s
     else:
         if isinstance(value, QgsVectorLayer):
             return unicode(value.source())
         else:
             s = unicode(value)
             layers = QGisLayers.getVectorLayers(self.datatype)
             for layer in layers:
                 if layer.name() == s:
                     return unicode(layer.source())
             return s
 def getAsString(self, value):
     if self.datatype == ParameterMultipleInput.TYPE_RASTER:
         if isinstance(value, QgsRasterLayer):
             return unicode(value.dataProvider().dataSourceUri())
         else:
             s = unicode(value)
             layers = QGisLayers.getRasterLayers()
             for layer in layers:
                 if layer.name() == s:
                     return unicode(layer.dataProvider().dataSourceUri())
             return s
     else:
         if isinstance(value, QgsVectorLayer):
             return unicode(value.source())
         else:
             s = unicode(value)
             layers = QGisLayers.getVectorLayers(self.datatype)
             for layer in layers:
                 if layer.name() == s:
                     return unicode(layer.source())
             return s
Пример #9
0
 def setValue(self, obj):
     if obj == None:
         if self.optional:
             self.value = None
             return True
         else:
             return False
     if isinstance(obj, QgsVectorLayer):
         source = unicode(obj.source())           
         self.value = source
         return True            
     else:
         layers = QGisLayers.getVectorLayers()
         for layer in layers:
             if layer.name() == self.value:
                 source = unicode(layer.source())
                 self.value = source
                 return True
         val = unicode(obj)
         self.value = val
         return os.path.exists(self.value)            
Пример #10
0
    def getWidgetFromParameter(self, param):
        if isinstance(param, ParameterRaster):
            layers = QGisLayers.getRasterLayers()
            items = []
            if (param.optional):
                items.append((self.NOT_SELECTED, None))
            for layer in layers:
                items.append((layer.name(), layer))
            item = InputLayerSelectorPanel(items)
        elif isinstance(param, ParameterVector):
            if self.somethingDependsOnThisParameter(param):
                item = QtGui.QComboBox()
                layers = QGisLayers.getVectorLayers(param.shapetype)
                if (param.optional):
                    item.addItem(self.NOT_SELECTED, None)
                for layer in layers:
                    item.addItem(layer.name(), layer)
                item.currentIndexChanged.connect(self.updateDependentFields)
                item.name = param.name
            else:
                layers = QGisLayers.getVectorLayers(param.shapetype)
                items = []
                if (param.optional):
                    items.append((self.NOT_SELECTED, None))
                for layer in layers:
                    items.append((layer.name(), layer))
                item = InputLayerSelectorPanel(items)
        elif isinstance(param, ParameterTable):
            if self.somethingDependsOnThisParameter(param):
                item = QtGui.QComboBox()
                layers = QGisLayers.getTables()
                if (param.optional):
                    item.addItem(self.NOT_SELECTED, None)
                for layer in layers:
                    item.addItem(layer.name(), layer)
                item.currentIndexChanged.connect(self.updateDependentFields)
                item.name = param.name
            else:
                layers = QGisLayers.getTables()
                items = []
                if (param.optional):
                    items.append((self.NOT_SELECTED, None))
                for layer in layers:
                    items.append((layer.name(), layer))
                item = InputLayerSelectorPanel(items)
        elif isinstance(param, ParameterBoolean):
            item = QtGui.QComboBox()
            item.addItem("Yes")
            item.addItem("No")
            if param.default:
                item.setCurrentIndex(0)
            else:
                item.setCurrentIndex(1)
        elif isinstance(param, ParameterTableField):
            item = QtGui.QComboBox()
            if param.parent in self.dependentItems:
                items = self.dependentItems[param.parent]
            else:
                items = []
                self.dependentItems[param.parent] = items
            items.append(param.name)
            parent = self.alg.getParameterFromName(param.parent)
            if isinstance(parent, ParameterVector):
                layers = QGisLayers.getVectorLayers(parent.shapetype)
            else:
                layers = QGisLayers.getTables()
            if len(layers)>0:
                item.addItems(self.getFields(layers[0], param.datatype))
        elif isinstance(param, ParameterSelection):
            item = QtGui.QComboBox()
            item.addItems(param.options)
            item.setCurrentIndex(param.default)
        elif isinstance(param, ParameterFixedTable):
            item = FixedTablePanel(param)
        elif isinstance(param, ParameterRange):
            item = RangePanel(param)
        elif isinstance(param, ParameterFile):
            item = FileSelectionPanel(param.isFolder)
        elif isinstance(param, ParameterMultipleInput):
            if param.datatype == ParameterMultipleInput.TYPE_RASTER:
                options = QGisLayers.getRasterLayers()
            elif param.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
                options = QGisLayers.getVectorLayers()
            else:
                options = QGisLayers.getVectorLayers(param.datatype)
            opts = []
            for opt in options:
                opts.append(opt.name())
            item = MultipleInputPanel(opts)
        elif isinstance(param, ParameterNumber):
            item = NumberInputPanel(param.default, param.isInteger)
        elif isinstance(param, ParameterExtent):
            item = ExtentSelectionPanel(self.parent, self.alg, param.default)
        elif isinstance(param, ParameterCrs):
            item = CrsSelectionPanel(param.default)
        elif isinstance(param, ParameterString):
            if param.multiline:
                verticalLayout = QtGui.QVBoxLayout()
                verticalLayout.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
                textEdit = QtGui.QPlainTextEdit()
                textEdit.setPlainText(param.default)
                verticalLayout.addWidget(textEdit)
                item = textEdit
            else:
                item = QtGui.QLineEdit()
                item.setText(str(param.default))
        else:
            item = QtGui.QLineEdit()
            item.setText(str(param.default))

        return item
Пример #11
0
    def getWidgetFromParameter(self, param):
        if isinstance(param, ParameterRaster):
            layers = QGisLayers.getRasterLayers()
            items = []
            if (param.optional):
                items.append((self.NOT_SELECTED, None))
            for layer in layers:
                items.append((self.getExtendedLayerName(layer), layer))
            item = InputLayerSelectorPanel(items)
        elif isinstance(param, ParameterVector):
            if self.somethingDependsOnThisParameter(param):
                item = QtGui.QComboBox()
                layers = QGisLayers.getVectorLayers(param.shapetype)
                if (param.optional):
                    item.addItem(self.NOT_SELECTED, None)
                for layer in layers:
                    item.addItem(self.getExtendedLayerName(layer), layer)
                item.currentIndexChanged.connect(self.updateDependentFields)
                item.name = param.name
            else:
                layers = QGisLayers.getVectorLayers(param.shapetype)
                items = []
                if (param.optional):
                    items.append((self.NOT_SELECTED, None))
                for layer in layers:
                    items.append((self.getExtendedLayerName(layer), layer))
                item = InputLayerSelectorPanel(items)
        elif isinstance(param, ParameterTable):
            if self.somethingDependsOnThisParameter(param):
                item = QtGui.QComboBox()
                layers = QGisLayers.getTables()
                if (param.optional):
                    item.addItem(self.NOT_SELECTED, None)
                for layer in layers:
                    item.addItem(layer.name(), layer)
                item.currentIndexChanged.connect(self.updateDependentFields)
                item.name = param.name
            else:
                layers = QGisLayers.getTables()
                items = []
                if (param.optional):
                    items.append((self.NOT_SELECTED, None))
                for layer in layers:
                    items.append((layer.name(), layer))
                item = InputLayerSelectorPanel(items)
        elif isinstance(param, ParameterBoolean):
            item = QtGui.QComboBox()
            item.addItem("Yes")
            item.addItem("No")
            if param.default:
                item.setCurrentIndex(0)
            else:
                item.setCurrentIndex(1)
        elif isinstance(param, ParameterTableField):
            item = QtGui.QComboBox()
            if param.parent in self.dependentItems:
                items = self.dependentItems[param.parent]
            else:
                items = []
                self.dependentItems[param.parent] = items
            items.append(param.name)
            parent = self.alg.getParameterFromName(param.parent)
            if isinstance(parent, ParameterVector):
                layers = QGisLayers.getVectorLayers(parent.shapetype)
            else:
                layers = QGisLayers.getTables()
            if len(layers)>0:
                item.addItems(self.getFields(layers[0], param.datatype))
        elif isinstance(param, ParameterSelection):
            item = QtGui.QComboBox()
            item.addItems(param.options)
            item.setCurrentIndex(param.default)
        elif isinstance(param, ParameterFixedTable):
            item = FixedTablePanel(param)
        elif isinstance(param, ParameterRange):
            item = RangePanel(param)
        elif isinstance(param, ParameterFile):
            item = FileSelectionPanel(param.isFolder)
        elif isinstance(param, ParameterMultipleInput):
            if param.datatype == ParameterMultipleInput.TYPE_RASTER:
                options = QGisLayers.getRasterLayers()
            elif param.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
                options = QGisLayers.getVectorLayers()
            else:
                options = QGisLayers.getVectorLayers(param.datatype)
            opts = []
            for opt in options:
                opts.append(self.getExtendedLayerName(opt))
            item = MultipleInputPanel(opts)
        elif isinstance(param, ParameterNumber):
            item = NumberInputPanel(param.default, param.isInteger)
        elif isinstance(param, ParameterExtent):
            item = ExtentSelectionPanel(self.parent, self.alg, param.default)
        elif isinstance(param, ParameterCrs):
            item = CrsSelectionPanel(param.default)
        elif isinstance(param, ParameterString):
            if param.multiline:
                verticalLayout = QtGui.QVBoxLayout()
                verticalLayout.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
                textEdit = QtGui.QPlainTextEdit()
                textEdit.setPlainText(param.default)
                verticalLayout.addWidget(textEdit)
                item = textEdit
            else:
                item = QtGui.QLineEdit()
                item.setText(str(param.default))
        else:
            item = QtGui.QLineEdit()
            item.setText(str(param.default))

        return item