Add QLineEdit support to Form
This commit is contained in:
parent
4843e17961
commit
aa8e1f822a
@ -8,7 +8,7 @@ class FileSelection(QWidget):
|
|||||||
"""
|
"""
|
||||||
Widget allowing the user to select a file or directory.
|
Widget allowing the user to select a file or directory.
|
||||||
"""
|
"""
|
||||||
value_changed = pyqtSignal(str)
|
valueChanged = pyqtSignal(str)
|
||||||
def __init__(self, init_file="", filemode=QFileDialog.FileMode.AnyFile, parent=None):
|
def __init__(self, init_file="", filemode=QFileDialog.FileMode.AnyFile, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.setLayout(QHBoxLayout())
|
self.setLayout(QHBoxLayout())
|
||||||
@ -21,7 +21,7 @@ class FileSelection(QWidget):
|
|||||||
# open file dialog when button is clicked
|
# open file dialog when button is clicked
|
||||||
self.w_btn.clicked.connect(self._open_file_dialog)
|
self.w_btn.clicked.connect(self._open_file_dialog)
|
||||||
# emit value_changed on self when w_edit emits value_changed
|
# emit value_changed on self when w_edit emits value_changed
|
||||||
self.w_edit.textChanged.connect(self.value_changed)
|
self.w_edit.textChanged.connect(self.valueChanged)
|
||||||
|
|
||||||
self.file_mode = filemode
|
self.file_mode = filemode
|
||||||
# remove all spacing and padding from the layout
|
# remove all spacing and padding from the layout
|
||||||
@ -30,6 +30,9 @@ class FileSelection(QWidget):
|
|||||||
def setValue(self, value: str):
|
def setValue(self, value: str):
|
||||||
self.w_edit.setText(value)
|
self.w_edit.setText(value)
|
||||||
|
|
||||||
|
def value(self) -> str:
|
||||||
|
return self.w_edit.text()
|
||||||
|
|
||||||
def _open_file_dialog(self):
|
def _open_file_dialog(self):
|
||||||
dialog = QFileDialog(self)
|
dialog = QFileDialog(self)
|
||||||
# only directories
|
# only directories
|
||||||
@ -79,7 +82,10 @@ class SettingsForm(QWidget):
|
|||||||
widget.stateChanged.connect(lambda v: self.value_updated(key, v))
|
widget.stateChanged.connect(lambda v: self.value_updated(key, v))
|
||||||
elif isinstance(widget, FileSelection):
|
elif isinstance(widget, FileSelection):
|
||||||
widget.setValue(value)
|
widget.setValue(value)
|
||||||
widget.value_changed.connect(lambda v: self.value_updated(key, v))
|
widget.valueChanged.connect(lambda v: self.value_updated(key, v))
|
||||||
|
elif isinstance(widget, QLineEdit):
|
||||||
|
widget.setText(value)
|
||||||
|
widget.textChanged.connect(lambda v: self.value_updated(key, v))
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown widget type: {type(widget)}")
|
raise ValueError(f"Unknown widget type: {type(widget)}")
|
||||||
self.layout().addRow(QLabel(label), widget)
|
self.layout().addRow(QLabel(label), widget)
|
||||||
@ -116,6 +122,8 @@ class SettingsForm(QWidget):
|
|||||||
self.ws_form[key].setChecked(value)
|
self.ws_form[key].setChecked(value)
|
||||||
elif isinstance(self.ws_form[key], FileSelection):
|
elif isinstance(self.ws_form[key], FileSelection):
|
||||||
self.ws_form[key].setValue(value)
|
self.ws_form[key].setValue(value)
|
||||||
|
elif isinstance(self.ws_form[key], QLineEdit):
|
||||||
|
self.ws_form[key].setText(value)
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown widget type: {type(self.ws_form[key])}")
|
raise ValueError(f"Unknown widget type: {type(self.ws_form[key])}")
|
||||||
else:
|
else:
|
||||||
@ -134,10 +142,12 @@ class SettingsForm(QWidget):
|
|||||||
"""
|
"""
|
||||||
if key in self.ws_form:
|
if key in self.ws_form:
|
||||||
# get depending on widget type
|
# get depending on widget type
|
||||||
if isinstance(self.ws_form[key], QSpinBox) or isinstance(self.ws_form[key], QDoubleSpinBox):
|
if isinstance(self.ws_form[key], QSpinBox) or isinstance(self.ws_form[key], QDoubleSpinBox) or isinstance(self.ws_form, FileSelection):
|
||||||
return self.ws_form[key].value()
|
return self.ws_form[key].value()
|
||||||
elif isinstance(self.ws_form[key], QCheckBox):
|
elif isinstance(self.ws_form[key], QCheckBox):
|
||||||
return self.ws_form[key].isChecked()
|
return self.ws_form[key].isChecked()
|
||||||
|
elif isinstance(self.ws_form[key], QLineEdit):
|
||||||
|
return self.ws_form[key].text()
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown widget type: {type(self.ws_form[key])}")
|
raise ValueError(f"Unknown widget type: {type(self.ws_form[key])}")
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user