mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
Processing - Support OutputVector with no geometry in GUI
This commit is contained in:
parent
fc5f70c6f5
commit
afbe914114
@ -142,7 +142,9 @@ class OutputSelectionPanel(BASE, WIDGET):
|
||||
password = settings.value(mySettings + '/password')
|
||||
uri = QgsDataSourceURI()
|
||||
uri.setConnection(host, str(port), dbname, user, password)
|
||||
uri.setDataSource(dlg.schema, dlg.table, "the_geom")
|
||||
uri.setDataSource(dlg.schema, dlg.table,
|
||||
"the_geom" if self.output.hasGeometry() else None)
|
||||
|
||||
connInfo = uri.connectionInfo()
|
||||
(success, user, passwd) = QgsCredentials.instance().get(connInfo, None, None)
|
||||
if success:
|
||||
@ -182,7 +184,8 @@ class OutputSelectionPanel(BASE, WIDGET):
|
||||
|
||||
uri = QgsDataSourceURI()
|
||||
uri.setDatabase(fileName)
|
||||
uri.setDataSource('', self.output.name.lower(), 'the_geom')
|
||||
uri.setDataSource('', self.output.name.lower(),
|
||||
'the_geom' if self.output.hasGeometry() else None)
|
||||
self.leText.setText("spatialite:" + uri.uri())
|
||||
|
||||
def saveToMemory(self):
|
||||
|
@ -259,6 +259,22 @@ class ParametersPanel(BASE, WIDGET):
|
||||
self.checkBoxes[output.name] = check
|
||||
self.valueItems[output.name] = widget
|
||||
|
||||
if isinstance(output, OutputVector):
|
||||
if output.base_input in self.dependentItems:
|
||||
items = self.dependentItems[output.base_input]
|
||||
else:
|
||||
items = []
|
||||
self.dependentItems[output.base_input] = items
|
||||
items.append(output)
|
||||
|
||||
base_input = self.alg.getParameterFromName(output.base_input)
|
||||
if isinstance(base_input, ParameterVector):
|
||||
layers = dataobjects.getVectorLayers(base_input.shapetype)
|
||||
else:
|
||||
layers = dataobjects.getTables()
|
||||
if len(layers) > 0:
|
||||
output.base_layer = layers[0]
|
||||
|
||||
def buttonToggled(self, value):
|
||||
if value:
|
||||
sender = self.sender()
|
||||
@ -343,7 +359,7 @@ class ParametersPanel(BASE, WIDGET):
|
||||
else:
|
||||
items = []
|
||||
self.dependentItems[param.parent] = items
|
||||
items.append(param.name)
|
||||
items.append(param)
|
||||
parent = self.alg.getParameterFromName(param.parent)
|
||||
if isinstance(parent, ParameterVector):
|
||||
layers = dataobjects.getVectorLayers(parent.shapetype)
|
||||
@ -434,12 +450,15 @@ class ParametersPanel(BASE, WIDGET):
|
||||
return
|
||||
children = self.dependentItems[sender.name]
|
||||
for child in children:
|
||||
widget = self.valueItems[child]
|
||||
widget.clear()
|
||||
if self.alg.getParameterFromName(child).optional:
|
||||
widget.addItem(self.tr('[not set]'))
|
||||
widget.addItems(self.getFields(layer,
|
||||
self.alg.getParameterFromName(child).datatype))
|
||||
if isinstance(child, ParameterTableField):
|
||||
widget = self.valueItems[child.name]
|
||||
widget.clear()
|
||||
if self.alg.getParameterFromName(child).optional:
|
||||
widget.addItem(self.tr('[not set]'))
|
||||
widget.addItems(self.getFields(layer,
|
||||
self.alg.getParameterFromName(child).datatype))
|
||||
if isinstance(child, OutputVector):
|
||||
child.base_layer = layer
|
||||
|
||||
def getFields(self, layer, datatype):
|
||||
fieldTypes = []
|
||||
@ -460,4 +479,8 @@ class ParametersPanel(BASE, WIDGET):
|
||||
if isinstance(param, ParameterTableField):
|
||||
if param.parent == parent.name:
|
||||
return True
|
||||
for output in self.alg.outputs:
|
||||
if isinstance(output, OutputVector):
|
||||
if output.base_layer == parent.name:
|
||||
return True
|
||||
return False
|
||||
|
Loading…
x
Reference in New Issue
Block a user