Skip to content

Commit 041ab07

Browse files
committed
status bar
1 parent ef12ac3 commit 041ab07

File tree

1 file changed

+33
-1
lines changed
  • src/kevinbotlib_dashboard

1 file changed

+33
-1
lines changed

src/kevinbotlib_dashboard/app.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import override
44

55
from kevinbotlib.comm import KevinbotCommClient
6-
from PySide6.QtCore import QObject, QPointF, QRect, QRectF, QRegularExpression, QSettings, QSize, Qt, Signal
6+
from PySide6.QtCore import QObject, QPointF, QRect, QRectF, QRegularExpression, QSettings, QSize, Qt, Signal, QTimer
77
from PySide6.QtGui import QAction, QBrush, QCloseEvent, QColor, QPainter, QPen, QRegularExpressionValidator
88
from PySide6.QtWidgets import (
99
QDialog,
@@ -21,6 +21,7 @@
2121
QStyleOptionGraphicsItem,
2222
QVBoxLayout,
2323
QWidget,
24+
QLabel,
2425
)
2526

2627
from kevinbotlib_dashboard.grid_theme import Themes
@@ -467,6 +468,8 @@ def __init__(self):
467468
self.client = KevinbotCommClient(
468469
host=self.settings.value("ip", "10.0.0.2", str), # type: ignore
469470
port=self.settings.value("port", 8765, int), # type: ignore
471+
on_disconnect=self.on_disconnect,
472+
on_connect=self.on_connect,
470473
)
471474
self.client.connect()
472475

@@ -477,6 +480,17 @@ def __init__(self):
477480

478481
self.settings_action = self.edit_menu.addAction("Settings", self.open_settings)
479482

483+
self.status = self.statusBar()
484+
485+
self.connection_status = QLabel("Robot Disconnected")
486+
self.status.addWidget(self.connection_status)
487+
488+
self.ip_status = QLabel(str(self.settings.value("ip", "10.0.0.2", str)), alignment=Qt.AlignmentFlag.AlignCenter)
489+
self.status.addWidget(self.ip_status, 1)
490+
491+
self.latency_status = QLabel("Latency: 0.00")
492+
self.status.addPermanentWidget(self.latency_status)
493+
480494
main_widget = QWidget()
481495
self.setCentralWidget(main_widget)
482496

@@ -492,18 +506,36 @@ def __init__(self):
492506
layout.addWidget(self.graphics_view)
493507
layout.addWidget(palette)
494508

509+
self.latency_timer = QTimer()
510+
self.latency_timer.setInterval(1000)
511+
self.latency_timer.timeout.connect(self.update_latency)
512+
self.latency_timer.start()
513+
495514
self.controller = WidgetGridController(self.graphics_view)
496515
self.controller.load(self.item_loader, self.settings.value("layout", [], type=list)) # type: ignore
497516

498517
self.settings_window = SettingsWindow(self, self.settings)
499518
self.settings_window.on_applied.connect(self.refresh_settings)
500519

520+
def update_latency(self):
521+
if self.client.websocket:
522+
self.latency_status.setText(f"Latency: {self.client.websocket.latency:.2f}ms")
523+
524+
def on_connect(self):
525+
self.connection_status.setText("Robot Connected")
526+
527+
def on_disconnect(self):
528+
self.connection_status.setText("Robot Disconnected")
529+
530+
501531
def refresh_settings(self):
502532
self.settings.setValue("ip", self.settings_window.net_ip.text())
503533
self.settings.setValue("port", self.settings_window.net_port.value())
504534
self.client.host = self.settings.value("ip", "10.0.0.2", str) # type: ignore
505535
self.client.port = self.settings.value("port", 8765, int) # type: ignore
506536

537+
self.ip_status.setText(str(self.settings.value("ip", "10.0.0.2", str)))
538+
507539
self.settings.setValue("grid", self.settings_window.grid_size.value())
508540
self.settings.setValue("rows", self.settings_window.grid_rows.value())
509541
self.settings.setValue("cols", self.settings_window.grid_cols.value())

0 commit comments

Comments
 (0)