1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- """
- ***************************************************************************
- RasterOptionsWidget.py
- ---------------------
- Date : December 2016
- Copyright : (C) 2016 by Alexander Bruy
- Email : alexander dot bruy at gmail dot com
- ***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************
- """
- __author__ = 'Alexander Bruy'
- __date__ = 'December 2016'
- __copyright__ = '(C) 2016, Alexander Bruy'
- from qgis.PyQt.QtWidgets import QLineEdit, QComboBox
- from qgis.gui import QgsRasterFormatSaveOptionsWidget
- from qgis.core import (QgsProcessingParameterString,
- QgsProcessingOutputString)
- from processing.gui.wrappers import WidgetWrapper, DIALOG_MODELER, DIALOG_BATCH
- class RasterOptionsWidgetWrapper(WidgetWrapper):
- def createWidget(self):
- if self.dialogType == DIALOG_MODELER:
- widget = QComboBox()
- widget.setEditable(True)
- strings = self.dialog.getAvailableValuesOfType(QgsProcessingParameterString, QgsProcessingOutputString)
- options = [(self.dialog.resolveValueDescription(s), s) for s in strings]
- for desc, val in options:
- widget.addItem(desc, val)
- widget.setEditText(self.parameterDefinition().defaultValue() or '')
- return widget
- elif self.dialogType == DIALOG_BATCH:
- widget = QLineEdit()
- if self.parameterDefinition().defaultValue():
- widget.setText(self.parameterDefinition().defaultValue())
- return widget
- else:
- return QgsRasterFormatSaveOptionsWidget()
- def setValue(self, value):
- if value is None:
- value = ''
- if self.dialogType == DIALOG_MODELER:
- self.setComboValue(value)
- elif self.dialogType == DIALOG_BATCH:
- self.widget.setText(value)
- else:
- # The QgsRasterFormatSaveOptionsWidget requires space delimited options, but this wrapper uses | delimiter
- self.widget.setOptions(value.replace('|', ' '))
- def value(self):
- if self.dialogType == DIALOG_MODELER:
- return self.comboValue()
- elif self.dialogType == DIALOG_BATCH:
- return self.widget.text()
- else:
- return '|'.join(self.widget.options())
|