Added gauges on connector connect

This commit is contained in:
2026-07-08 10:41:27 +01:00
parent 2748a90576
commit 5887e0d0a0
6 changed files with 71 additions and 4 deletions

View File

@@ -13,9 +13,12 @@ import sys
from dynalab.data.json import json_thread_main
from dynalab.state import AppState
from dynalab.tags import MENU_WINDOW_DATA_INPUT
import dynalab.ui.windows
from dynalab.ui.windows import build_loading, build_windows
import dpg_gauges as dpgg
def _setup_logging(level: int = logging.INFO) -> None:
logging.basicConfig(
@@ -160,6 +163,24 @@ def run() -> None:
except Exception:
traceback.print_exc()
try:
new_signal = state.new_signal_queue.get_nowait()
except Empty:
pass
else:
dpgg.analog_gauge(
tag=f"{new_signal.id}",
label=f"{new_signal.name}",
parent=MENU_WINDOW_DATA_INPUT,
)
try:
removed_signal = state.removed_signal_queue.get_nowait()
except Empty:
pass
else:
dpgg.delete_gauge(f"{removed_signal.id}")
# Render frame
dpg.render_dearpygui_frame()
finally:

View File

@@ -79,6 +79,9 @@ async def _handle_connector(
)
await write_message(writer, handshake_accepted)
for signal in connector_hello.signals:
state.new_signal_queue.put(signal)
heartbeat_task = asyncio.create_task(_heartbeat_loop(writer))
timeout_event = asyncio.Event()
timeout_task = asyncio.create_task(
@@ -103,6 +106,8 @@ async def _handle_connector(
return
finally:
for signal in connector_hello.signals:
state.removed_signal_queue.put(signal)
heartbeat_task.cancel()
timeout_task.cancel()
print(f"Connector disconnected {peer}")

View File

@@ -2,12 +2,17 @@
# Copyright (C) 2026 Association Exergie <association.exergie@gmail.com>
# SPDX-License-Identifier: GPL-3.0-or-later
from dataclasses import dataclass, field
from queue import Queue
import threading
from uuid import UUID
from dynalab_protocol.models import SignalDescriptor
@dataclass
class AppState:
stop_event = threading.Event()
data_json_thread: threading.Thread | None = None
last_heartbeat: dict[UUID, int] = field(default_factory=dict)
new_signal_queue: Queue[SignalDescriptor] = Queue()
removed_signal_queue: Queue[SignalDescriptor] = Queue()

View File

@@ -25,5 +25,14 @@ def build_windows() -> None:
with dpg.child_window(
tag="content_area", autosize_x=True, height=0, border=False
):
with dpg.group(tag=MENU_WINDOW_DATA_INPUT):
dpgg.status_light(label="JSON", show_value=False)
# with dpg.group(tag=MENU_WINDOW_DATA_INPUT):
with dpgg.gauge_panel(
label="Autobreak narrow panel", width=430, height=285
):
with dpgg.gauge_grid(
columns="auto", min_column_width=180, tag=MENU_WINDOW_DATA_INPUT
):
dpgg.analog_gauge(
tag="test_gauge",
label="new_gauge",
)