Source code for rpasdt.gui.dynamic_form.components

import typing

from PyQt5.QtWidgets import QColorDialog, QFileDialog, QPushButton, QWidget


[docs]class QColorField(QPushButton): DEFAULT_COLOR = "#000000" def __init__( self, color: typing.Optional[str] = DEFAULT_COLOR, parent: typing.Optional[QWidget] = None, ) -> None: super().__init__(parent) self.color = color self.clicked.connect(self.show_picker)
[docs] def show_picker(self): self.color = QColorDialog.getColor().name()
@property def color(self): return self._color @color.setter def color(self, value): self._color = value or self.DEFAULT_COLOR self.setStyleSheet(f"background-color: {self._color}")
[docs]class QFileField(QPushButton): def __init__( self, file_path: typing.Optional[str] = None, parent: typing.Optional[QWidget] = None, open_file_mode: bool = True, ) -> None: super().__init__(parent) self.file_path = file_path self.clicked.connect(self.show_picker) self.open_file_mode = open_file_mode
[docs] def show_picker(self): result = ( QFileDialog.getOpenFileName() if self.open_file_mode else QFileDialog.getSaveFileName() ) self.file_path = result[0] if result else ""
@property def file_path(self): return self._file_path @file_path.setter def file_path(self, value): self._file_path = value self.setText(self._file_path)