From 4869c69a3d65015f3a76fd1ddfeec26ccbadb07b Mon Sep 17 00:00:00 2001
From: David Hammer <dhammer@mailbox.org>
Date: Tue, 24 Sep 2024 11:28:10 +0200
Subject: [PATCH] Fix: allow assembler scene without geometry (GH2)

---
 src/calng/scenes.py | 57 ++++++++++++++++++++++++---------------------
 1 file changed, 31 insertions(+), 26 deletions(-)

diff --git a/src/calng/scenes.py b/src/calng/scenes.py
index 8db15b49..6dd86d02 100644
--- a/src/calng/scenes.py
+++ b/src/calng/scenes.py
@@ -342,7 +342,7 @@ class CompactDeviceLinkList(VerticalLayout):
 @titled("Assembler status", width=8 * NARROW_INC)
 @boxed
 class AssemblerDeviceStatus(VerticalLayout):
-    def __init__(self, device_id, geometry_device_id):
+    def __init__(self, device_id, geometry_device_id=None):
         super().__init__(padding=0)
         name = DisplayLabelModel(
             keys=[f"{device_id}.deviceId"],
@@ -391,36 +391,41 @@ class AssemblerDeviceStatus(VerticalLayout):
                     width=14 * BASE_INC,
                     height=BASE_INC,
                 ),
-                LabelModel(
-                    text="My geometry device:",
-                    width=14 * BASE_INC,
-                    height=BASE_INC,
-                ),
-                # note: link based on current value when generating
-                DeviceSceneLinkModel(
-                    text=geometry_device_id,
-                    keys=[f"{geometry_device_id}.availableScenes"],
-                    target="overview",
-                    target_window=SceneTargetWindow.Dialog,
-                    width=14 * BASE_INC,
-                    height=BASE_INC,
-                ),
-                HorizontalLayout(
+            ]
+        )
+        if geometry_device_id:
+            self.children.extend(
+                [
                     LabelModel(
-                        text="My geometry:",
-                        width=7 * BASE_INC,
+                        text="My geometry device:",
+                        width=14 * BASE_INC,
                         height=BASE_INC,
                     ),
-                    DisplayStateColorModel(
-                        show_string=True,
-                        keys=[f"{device_id}.geometryState"],
-                        width=7 * BASE_INC,
+                    # note: link based on current value when generating
+                    DeviceSceneLinkModel(
+                        text=geometry_device_id,
+                        keys=[f"{geometry_device_id}.availableScenes"],
+                        target="overview",
+                        target_window=SceneTargetWindow.Dialog,
+                        width=14 * BASE_INC,
                         height=BASE_INC,
                     ),
-                    padding=0,
-                ),
-            ]
-        )
+                    HorizontalLayout(
+                        LabelModel(
+                            text="My geometry:",
+                            width=7 * BASE_INC,
+                            height=BASE_INC,
+                        ),
+                        DisplayStateColorModel(
+                            show_string=True,
+                            keys=[f"{device_id}.geometryState"],
+                            width=7 * BASE_INC,
+                            height=BASE_INC,
+                        ),
+                        padding=0,
+                    ),
+                ]
+            )
 
 
 @titled("Device status", width=8 * NARROW_INC)
-- 
GitLab