from PySide6.QtGui import QColor from PySide6.QtWidgets import QDialog, QMessageBox from bedit.document.model import Component from bedit.ui_component_options_dialog import Ui_ComponentOptionsDialog class ComponentOptionsDialog(QDialog): def __init__(self, component: Component, parent=None) -> None: super().__init__(parent) self.ui = Ui_ComponentOptionsDialog() self.ui.setupUi(self) self.ui.nameEdit.setText(component.name) self.ui.shapeCombo.setCurrentText(component.icon.shape) self.ui.iconTextEdit.setText(component.icon.text) self.ui.fillEdit.setText(component.icon.fill) self.ui.borderEdit.setText(component.icon.border) self.ui.showSubtreeCheckBox.setChecked(component.show_subtree_in_library) def accept(self) -> None: if not self.ui.nameEdit.text().strip(): QMessageBox.warning(self, "Invalid name", "The component name cannot be empty.") return for label, value in ( ("fill", self.ui.fillEdit.text()), ("border", self.ui.borderEdit.text()), ): if not QColor(value).isValid(): QMessageBox.warning(self, "Invalid color", f"The {label} color is not valid.") return super().accept()