]> git.mar77i.info Git - zenbook_gui/commitdiff
having update, draw in EventMethodDispatcher lets Parent mix with Child
authormar77i <mar77i@protonmail.ch>
Fri, 14 Feb 2025 02:06:17 +0000 (03:06 +0100)
committermar77i <mar77i@protonmail.ch>
Fri, 14 Feb 2025 02:06:33 +0000 (03:06 +0100)
bookpaint/draw_ui.py
ui/child.py
ui/event_method_dispatcher.py
ui/modal.py
ui/parent.py

index 6dd724d694f809fe9084720e2bb712c4e9e4be8f..d362368a1c409aec7dba32a18fe9af8718cbe356 100644 (file)
@@ -54,8 +54,8 @@ class DrawImage(Child):
 
 
 class ColorButton(Button):
-    def __init__(self, parent, rect, color, callback, is_active=False):
-        super().__init__(parent, rect, None, callback, is_active)
+    def __init__(self, parent, rect, color, callback, highlight=False):
+        super().__init__(parent, rect, None, callback, highlight)
         self.color = color
 
     def draw(self):
index 35e0a84f897d1d042cde52c7a7aa123a9dbc8334..6d9ecfeb7bdb93b4743a6eb67b92f8f8db62f37f 100644 (file)
@@ -45,9 +45,3 @@ class Child(EventMethodDispatcher):
     @property
     def stop_event(self):
         return self.root.stop_event
-
-    def update(self):
-        pass
-
-    def draw(self):
-        pass
index 2b03755a42ca413fdbc97025b4ad7fbf672ac97b..8e548545e461673aaaea284d97eb894780a1aa1d 100644 (file)
@@ -28,3 +28,9 @@ class EventMethodDispatcher:
         method_name = f"handle_{pygame.event.event_name(ev.type).lower()}"
         if hasattr(self, method_name):
             getattr(self, method_name)(ev)
+
+    def update(self):
+        pass
+
+    def draw(self):
+        pass
index 55808f9277760b588d45e1ad9041915a821f43e3..a9a1f99d4da5bafb6a30e8a9808a0bb6ccf058fe 100644 (file)
@@ -6,12 +6,9 @@ from .parent import Parent
 
 
 class Modal(Focusable, Parent, Child):
-    def __init__(self, parent):
-        super().__init__(parent, False)
-        self.draw = self._check_enabled(self.draw)
-        self.update = self._check_enabled(self.update)
-        self.handle_event = self._check_enabled(self.handle_event)
-        self.activate = self._check_enabled(self.activate, False)
+    def __init__(self, parent, enabled=False):
+        super().__init__(parent, enabled)
+        self.activate = self.activate
         self.deactivate = self._check_enabled(self.deactivate)
 
     def _check_enabled(self, method, cmp=True):
@@ -22,12 +19,16 @@ class Modal(Focusable, Parent, Child):
         return inner
 
     def activate(self):
+        if self.enabled:
+            return
         super().activate()
         self.enabled = True
         self.root.stop_event = True
         self.dirty = True
 
     def deactivate(self):
+        if not self.enabled:
+            return
         super().deactivate()
         self.enabled = False
         self.root.stop_event = True
index f5e5cb47819e5d236c9b089c24c27c431dd34d87..9004a6d8d32342b25b086bbfe9b28ba081933996 100644 (file)
@@ -2,7 +2,6 @@ from .event_method_dispatcher import EventMethodDispatcher
 
 
 class Parent(EventMethodDispatcher):
-    root: "root.Root"
     running: bool
     stop_event: bool
 
@@ -22,17 +21,13 @@ class Parent(EventMethodDispatcher):
                 break
 
     def update(self):
-        s = super()
-        if hasattr(s, "update"):
-            s.update()
+        super().update()
         for child in self.children:
             if child.enabled:
                 child.update()
 
     def draw(self):
-        s = super()
-        if hasattr(s, "draw"):
-            s.draw()
+        super().draw()
         for child in self.children:
             if child.enabled:
                 child.draw()