|
26 | 26 | from qgis.PyQt.QtWidgets import QAction, QLineEdit, QComboBox, QWidget, QDoubleSpinBox, QCheckBox, QLabel, QTextEdit, \ |
27 | 27 | QDateEdit, QAbstractItemView, QCompleter, QDateTimeEdit, QTableView, QSpinBox, QTimeEdit, QPushButton, \ |
28 | 28 | QPlainTextEdit, QRadioButton, QSizePolicy, QSpacerItem, QFileDialog, QGroupBox, QMessageBox, QTabWidget, QToolBox, \ |
29 | | - QToolButton, QDialog, QGridLayout, QTextBrowser, QHeaderView |
| 29 | + QToolButton, QDialog, QGridLayout, QTextBrowser, QHeaderView, QListWidget |
30 | 30 | from qgis.core import QgsExpression |
31 | 31 | from qgis.gui import QgsDateTimeEdit |
32 | 32 | from qgis.utils import iface |
@@ -251,6 +251,27 @@ def set_calendar(dialog, widget, date, default_current_date=True): |
251 | 251 | date = QDateTime.currentDateTime() |
252 | 252 | widget.setDateTime(date) |
253 | 253 |
|
| 254 | +def get_listwidget_values(dialog, widget, role=Qt.ItemDataRole.UserRole): |
| 255 | + """ |
| 256 | + Returns a list of all values in a QListWidget. |
| 257 | + :param dialog: The parent dialog in which to search for the widget. |
| 258 | + :param widget: The QListWidget or its objectName (str). |
| 259 | + :param role: The role of the data to get from the items. |
| 260 | + :return: list of values (strings) or None if widget not found. |
| 261 | + """ |
| 262 | + values = None |
| 263 | + if type(widget) is str: |
| 264 | + widget = dialog.findChild(QWidget, widget) |
| 265 | + if widget is None: |
| 266 | + return |
| 267 | + if isinstance(widget, QListWidget): |
| 268 | + values = [] |
| 269 | + for i in range(widget.count()): |
| 270 | + item = widget.item(i) |
| 271 | + if item is not None: |
| 272 | + values.append(item.data(role)) |
| 273 | + return values |
| 274 | + |
254 | 275 |
|
255 | 276 | def set_time(dialog, widget, time): |
256 | 277 |
|
@@ -308,6 +329,8 @@ def get_widget_value(dialog, widget): |
308 | 329 | value = str(value).lower() |
309 | 330 | elif isinstance(widget, QgsDateTimeEdit): |
310 | 331 | value = get_calendar_date(dialog, widget) |
| 332 | + elif isinstance(widget, QListWidget): |
| 333 | + value = get_listwidget_values(dialog, widget) |
311 | 334 |
|
312 | 335 | return value |
313 | 336 |
|
|
0 commit comments