3
3
from typing import override
4
4
5
5
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
7
7
from PySide6 .QtGui import QAction , QBrush , QCloseEvent , QColor , QPainter , QPen , QRegularExpressionValidator
8
8
from PySide6 .QtWidgets import (
9
9
QDialog ,
21
21
QStyleOptionGraphicsItem ,
22
22
QVBoxLayout ,
23
23
QWidget ,
24
+ QLabel ,
24
25
)
25
26
26
27
from kevinbotlib_dashboard .grid_theme import Themes
@@ -467,6 +468,8 @@ def __init__(self):
467
468
self .client = KevinbotCommClient (
468
469
host = self .settings .value ("ip" , "10.0.0.2" , str ), # type: ignore
469
470
port = self .settings .value ("port" , 8765 , int ), # type: ignore
471
+ on_disconnect = self .on_disconnect ,
472
+ on_connect = self .on_connect ,
470
473
)
471
474
self .client .connect ()
472
475
@@ -477,6 +480,17 @@ def __init__(self):
477
480
478
481
self .settings_action = self .edit_menu .addAction ("Settings" , self .open_settings )
479
482
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
+
480
494
main_widget = QWidget ()
481
495
self .setCentralWidget (main_widget )
482
496
@@ -492,18 +506,36 @@ def __init__(self):
492
506
layout .addWidget (self .graphics_view )
493
507
layout .addWidget (palette )
494
508
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
+
495
514
self .controller = WidgetGridController (self .graphics_view )
496
515
self .controller .load (self .item_loader , self .settings .value ("layout" , [], type = list )) # type: ignore
497
516
498
517
self .settings_window = SettingsWindow (self , self .settings )
499
518
self .settings_window .on_applied .connect (self .refresh_settings )
500
519
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
+
501
531
def refresh_settings (self ):
502
532
self .settings .setValue ("ip" , self .settings_window .net_ip .text ())
503
533
self .settings .setValue ("port" , self .settings_window .net_port .value ())
504
534
self .client .host = self .settings .value ("ip" , "10.0.0.2" , str ) # type: ignore
505
535
self .client .port = self .settings .value ("port" , 8765 , int ) # type: ignore
506
536
537
+ self .ip_status .setText (str (self .settings .value ("ip" , "10.0.0.2" , str )))
538
+
507
539
self .settings .setValue ("grid" , self .settings_window .grid_size .value ())
508
540
self .settings .setValue ("rows" , self .settings_window .grid_rows .value ())
509
541
self .settings .setValue ("cols" , self .settings_window .grid_cols .value ())
0 commit comments