Support layer objects in BatchInputSelectionPanel

This commit is contained in:
arnaud.morvan@camptocamp.com 2016-09-18 16:09:30 +02:00 committed by volaya
parent 9e36582feb
commit be5f951cd1

View File

@ -29,10 +29,12 @@ __revision__ = '$Format:%H$'
import os import os
from qgis.PyQt.QtCore import QSettings from qgis.PyQt.QtCore import QSettings, pyqtSignal
from qgis.PyQt.QtWidgets import QWidget, QHBoxLayout, QMenu, QPushButton, QLineEdit, QSizePolicy, QAction, QFileDialog from qgis.PyQt.QtWidgets import QWidget, QHBoxLayout, QMenu, QPushButton, QLineEdit, QSizePolicy, QAction, QFileDialog
from qgis.PyQt.QtGui import QCursor from qgis.PyQt.QtGui import QCursor
from qgis.core import QgsMapLayer
from processing.gui.MultipleInputDialog import MultipleInputDialog from processing.gui.MultipleInputDialog import MultipleInputDialog
from processing.core.parameters import ParameterMultipleInput from processing.core.parameters import ParameterMultipleInput
@ -45,6 +47,8 @@ from processing.tools import dataobjects
class BatchInputSelectionPanel(QWidget): class BatchInputSelectionPanel(QWidget):
valueChanged = pyqtSignal()
def __init__(self, param, row, col, dialog): def __init__(self, param, row, col, dialog):
super(BatchInputSelectionPanel, self).__init__(None) super(BatchInputSelectionPanel, self).__init__(None)
self.param = param self.param = param
@ -55,8 +59,10 @@ class BatchInputSelectionPanel(QWidget):
self.horizontalLayout.setSpacing(0) self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setMargin(0) self.horizontalLayout.setMargin(0)
self.text = QLineEdit() self.text = QLineEdit()
self.text.setObjectName('text')
self.text.setMinimumWidth(300) self.text.setMinimumWidth(300)
self.text.setText('') self.setValue('')
self.text.editingFinished.connect(self.on_text_EditingFinished)
self.text.setSizePolicy(QSizePolicy.Expanding, self.text.setSizePolicy(QSizePolicy.Expanding,
QSizePolicy.Expanding) QSizePolicy.Expanding)
self.horizontalLayout.addWidget(self.text) self.horizontalLayout.addWidget(self.text)
@ -67,7 +73,7 @@ class BatchInputSelectionPanel(QWidget):
self.setLayout(self.horizontalLayout) self.setLayout(self.horizontalLayout)
def _panel(self): def _panel(self):
return self.dialog.mainWidget() return self.dialog.mainWidget
def _table(self): def _table(self):
return self._panel().tblParameters return self._panel().tblParameters
@ -118,7 +124,7 @@ class BatchInputSelectionPanel(QWidget):
self._panel().addRow() self._panel().addRow()
for i, layeridx in enumerate(selected): for i, layeridx in enumerate(selected):
self._table().cellWidget(i + self.row, self._table().cellWidget(i + self.row,
self.col).setText(layers[layeridx].name()) self.col).setValue(layers[layeridx])
def showFileSelectionDialog(self): def showFileSelectionDialog(self):
settings = QSettings() settings = QSettings()
@ -151,10 +157,19 @@ class BatchInputSelectionPanel(QWidget):
self._panel().addRow() self._panel().addRow()
for i, f in enumerate(files): for i, f in enumerate(files):
self._table().cellWidget(i + self.row, self._table().cellWidget(i + self.row,
self.col).setText(f) self.col).setValue(f)
def setText(self, text): def on_text_EditingFinished(self):
return self.text.setText(text) self._value = self.text.text()
self.valueChanged.emit()
def getText(self): def value(self):
return self.text.text() return self._value
def setValue(self, value):
self._value = value
if isinstance(value, QgsMapLayer):
self.text.setText(value.name())
else: # should be basestring
self.text.setText(value)
self.valueChanged.emit()