aboutsummaryrefslogtreecommitdiff
path: root/src/gui/tags/panel/form/state.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/tags/panel/form/state.py')
-rw-r--r--src/gui/tags/panel/form/state.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/gui/tags/panel/form/state.py b/src/gui/tags/panel/form/state.py
new file mode 100644
index 0000000..931e67a
--- /dev/null
+++ b/src/gui/tags/panel/form/state.py
@@ -0,0 +1,58 @@
+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)