Example #1
0
    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
Example #2
0
    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