def setModelData(self, editor: QWidget, model: 'PropModel', index: QModelIndex) -> None: """ Returns updated data to the model :param editor: Editor that will be set for certain data structures. :type editor: QWidget :param model: The model that our delegate will render. :type model: PropModel :param index: Index of the editor. :type index: QModelIndex :return: None :rtype: NoneType """ data = index.internalPointer() if type(data) == Property: if index.column() == 1: t = data.getType() if t == str: data.setValue(editor.text()) self.propertyUpdated.emit() elif t == int: data.setValue(editor.value()) elif t == bool: data.setValue(editor.isChecked()) elif t == float: data.setValue(editor.value()) elif issubclass(t, Enum): data.setValue(editor.currentData()) else: pass
def get_widget_value(widget: QtWidgets.QWidget) -> Any: """Returns value of form field. This determines the method appropriate for the type of widget. Args: widget: The widget for which to return value. Returns: value (can be bool, numeric, string, or None) """ if hasattr(widget, "isChecked"): val = widget.isChecked() elif hasattr(widget, "value"): val = widget.value() elif hasattr(widget, "currentText"): val = widget.currentText() elif hasattr(widget, "text"): val = widget.text() elif hasattr(widget, "currentIndex"): val = widget.currentIndex() else: val = None if widget.property("field_data_type") == "sci": val = float(val) elif widget.property("field_data_type") == "int": val = int(val) elif widget.property("field_data_type").startswith("file_"): val = None if val == "None" else val return val