from PyQt5 import QtCore from typing import Optional from model.tag import ValidTagForm class TagFormEdition: def __init__( self, name, name_signal, color, color_signal): self._name = name self._color = color self._signal = ValidTagFormSignal() name_signal.connect(lambda n: self.on_name_signal(n)) color_signal.connect(lambda d: self.on_color_signal(d)) def get(self) -> Optional[ValidTagForm]: name = self._name.strip() color = self._color.strip() if name and color: return ValidTagForm( name = name, color = color) else: return None def on_name_signal(self, name: str): self._name = name self.emit() def on_color_signal(self, color: str): self._color = color self.emit() def emit(self): validForm = self.get() if validForm: self._signal.emit(validForm) def signal(self): return self._signal class ValidTagFormSignal(QtCore.QObject): _signal = QtCore.pyqtSignal(ValidTagForm, name = 'validTagForm') def __init__(self): QtCore.QObject.__init__(self) def emit(self, form: Optional[ValidTagForm]): self._signal.emit(form) def connect(self, f): self._signal.connect(f)