From 8678bca99e7080679dc386e38935c015959b8d16 Mon Sep 17 00:00:00 2001
From: David Hammer <dhammer@mailbox.org>
Date: Fri, 20 Sep 2024 14:16:44 +0200
Subject: [PATCH] Add cool scene

---
 src/calng/scenes.py | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/src/calng/scenes.py b/src/calng/scenes.py
index 6a889481..8db15b49 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):
+    def __init__(self, device_id, geometry_device_id):
         super().__init__(padding=0)
         name = DisplayLabelModel(
             keys=[f"{device_id}.deviceId"],
@@ -396,11 +396,29 @@ class AssemblerDeviceStatus(VerticalLayout):
                     width=14 * BASE_INC,
                     height=BASE_INC,
                 ),
-                DisplayLabelModel(
-                    keys=[f"{device_id}.geometryDevice"],
+                # 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,
-                ),  # TODO: some day, get dynamic link to this friend
+                ),
+                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,
+                ),
             ]
         )
 
@@ -1095,11 +1113,11 @@ def correction_constant_dashboard(
 
 
 @scene_generator
-def detector_assembler_overview(device_id, schema):
+def detector_assembler_overview(device_id, schema, geometry_device_id):
     schema_hash = schema_to_hash(schema)
     return VerticalLayout(
         HorizontalLayout(
-            AssemblerDeviceStatus(device_id),
+            AssemblerDeviceStatus(device_id, geometry_device_id),
             PreviewSettings(device_id, schema_hash, "preview.assembled"),
         ),
         PreviewDisplayArea(
-- 
GitLab