gui_client: remove diff mode switch, always use diff mode
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+10
-24
@@ -31,7 +31,7 @@ from pathlib import Path
|
|||||||
from PyQt5.QtCore import QObject, QTimer, Qt, pyqtSignal
|
from PyQt5.QtCore import QObject, QTimer, Qt, pyqtSignal
|
||||||
from PyQt5.QtGui import QColor, QFont
|
from PyQt5.QtGui import QColor, QFont
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QApplication, QCheckBox, QComboBox, QFormLayout, QGridLayout, QGroupBox,
|
QApplication, QComboBox, QFormLayout, QGridLayout, QGroupBox,
|
||||||
QHBoxLayout, QLabel, QLineEdit, QMainWindow, QPushButton, QScrollArea,
|
QHBoxLayout, QLabel, QLineEdit, QMainWindow, QPushButton, QScrollArea,
|
||||||
QSizePolicy, QSpinBox, QStatusBar, QTabWidget, QTreeWidget, QTreeWidgetItem,
|
QSizePolicy, QSpinBox, QStatusBar, QTabWidget, QTreeWidget, QTreeWidgetItem,
|
||||||
QVBoxLayout, QWidget,
|
QVBoxLayout, QWidget,
|
||||||
@@ -124,20 +124,18 @@ class TcpReader(QObject):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._sock = None
|
self._sock = None
|
||||||
self._running = False
|
self._running = False
|
||||||
self._diff_mode = False
|
|
||||||
self._state: dict = {}
|
self._state: dict = {}
|
||||||
|
|
||||||
def connect_to(self, host: str, port: int, diff_mode: bool = False) -> str | None:
|
def connect_to(self, host: str, port: int) -> str | None:
|
||||||
"""Open connection; returns error string or None on success."""
|
"""Open connection; returns error string or None on success."""
|
||||||
try:
|
try:
|
||||||
self._sock = socket.create_connection((host, port), timeout=5)
|
self._sock = socket.create_connection((host, port), timeout=5)
|
||||||
self._sock.settimeout(None)
|
self._sock.settimeout(None)
|
||||||
except OSError as exc:
|
except OSError as exc:
|
||||||
return str(exc)
|
return str(exc)
|
||||||
self._diff_mode = diff_mode
|
self._state = {}
|
||||||
self._state = {}
|
|
||||||
self._running = True
|
self._running = True
|
||||||
threading.Thread(target=self._read_loop, daemon=True).start()
|
threading.Thread(target=self._read_loop, daemon=True).start()
|
||||||
return None
|
return None
|
||||||
@@ -165,11 +163,8 @@ class TcpReader(QObject):
|
|||||||
if line:
|
if line:
|
||||||
try:
|
try:
|
||||||
data = json.loads(line)
|
data = json.loads(line)
|
||||||
if self._diff_mode:
|
self._state = jay_merge_full(self._state, data)
|
||||||
self._state = jay_merge_full(self._state, data)
|
self.message.emit(copy.deepcopy(self._state))
|
||||||
self.message.emit(copy.deepcopy(self._state))
|
|
||||||
else:
|
|
||||||
self.message.emit(data)
|
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
pass
|
pass
|
||||||
except OSError:
|
except OSError:
|
||||||
@@ -217,11 +212,9 @@ class ConnectorTab(QWidget):
|
|||||||
self._port = QSpinBox()
|
self._port = QSpinBox()
|
||||||
self._port.setRange(1, 65535)
|
self._port.setRange(1, 65535)
|
||||||
self._port.setValue(9999)
|
self._port.setValue(9999)
|
||||||
self._diff_cb = QCheckBox("Diff mode")
|
|
||||||
self._load_conn_settings()
|
self._load_conn_settings()
|
||||||
form.addRow("Host:", self._host)
|
form.addRow("Host:", self._host)
|
||||||
form.addRow("Port:", self._port)
|
form.addRow("Port:", self._port)
|
||||||
form.addRow(self._diff_cb)
|
|
||||||
|
|
||||||
btn_row = QHBoxLayout()
|
btn_row = QHBoxLayout()
|
||||||
self._btn = QPushButton("Connect")
|
self._btn = QPushButton("Connect")
|
||||||
@@ -244,10 +237,6 @@ class ConnectorTab(QWidget):
|
|||||||
else:
|
else:
|
||||||
self.disconnect_requested.emit()
|
self.disconnect_requested.emit()
|
||||||
|
|
||||||
@property
|
|
||||||
def diff_mode(self) -> bool:
|
|
||||||
return self._diff_cb.isChecked()
|
|
||||||
|
|
||||||
def _save_conn_settings(self):
|
def _save_conn_settings(self):
|
||||||
try:
|
try:
|
||||||
_SETTINGS_PATH.parent.mkdir(parents=True, exist_ok=True)
|
_SETTINGS_PATH.parent.mkdir(parents=True, exist_ok=True)
|
||||||
@@ -256,9 +245,8 @@ class ConnectorTab(QWidget):
|
|||||||
data = json.loads(_SETTINGS_PATH.read_text())
|
data = json.loads(_SETTINGS_PATH.read_text())
|
||||||
except (OSError, json.JSONDecodeError):
|
except (OSError, json.JSONDecodeError):
|
||||||
pass
|
pass
|
||||||
data["host"] = self._host.text()
|
data["host"] = self._host.text()
|
||||||
data["port"] = self._port.value()
|
data["port"] = self._port.value()
|
||||||
data["diff_mode"] = self._diff_cb.isChecked()
|
|
||||||
_SETTINGS_PATH.write_text(json.dumps(data, indent=2))
|
_SETTINGS_PATH.write_text(json.dumps(data, indent=2))
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
@@ -270,8 +258,6 @@ class ConnectorTab(QWidget):
|
|||||||
self._host.setText(data["host"])
|
self._host.setText(data["host"])
|
||||||
if "port" in data:
|
if "port" in data:
|
||||||
self._port.setValue(int(data["port"]))
|
self._port.setValue(int(data["port"]))
|
||||||
if "diff_mode" in data:
|
|
||||||
self._diff_cb.setChecked(bool(data["diff_mode"]))
|
|
||||||
except (OSError, json.JSONDecodeError, KeyError, ValueError):
|
except (OSError, json.JSONDecodeError, KeyError, ValueError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -844,7 +830,7 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
def _connect(self, host: str, port: int):
|
def _connect(self, host: str, port: int):
|
||||||
self._plot.clear_data()
|
self._plot.clear_data()
|
||||||
err = self._reader.connect_to(host, port, self._connector.diff_mode)
|
err = self._reader.connect_to(host, port)
|
||||||
if err:
|
if err:
|
||||||
self._connector.set_disconnected(err)
|
self._connector.set_disconnected(err)
|
||||||
self._statusbar.showMessage(f"Connection failed: {err}")
|
self._statusbar.showMessage(f"Connection failed: {err}")
|
||||||
|
|||||||
Reference in New Issue
Block a user