From 7328ef3f8a30ca80840e388f2a34dce8cbfc9f49 Mon Sep 17 00:00:00 2001 From: Alessandro Croci Date: Fri, 28 Nov 2025 11:33:47 +0100 Subject: [PATCH 1/3] Disable curve interactivity and point selection in real-time mode --- .../plotter/pyqtgraph_viewer_canvas.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py b/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py index c8acaac..0d09f45 100644 --- a/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py +++ b/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py @@ -10,8 +10,8 @@ import pyqtgraph as pg # type: ignore from qtpy import QtCore, QtWidgets # type: ignore -from robot_log_visualizer.utils.utils import ColorPalette from robot_log_visualizer.signal_provider.signal_provider import ProviderType +from robot_log_visualizer.utils.utils import ColorPalette # ------------------------------------------------------------------------ # Type aliases @@ -201,6 +201,15 @@ def _add_missing_curves( symbol=None, ) + # For real-time mode, disable curve clickability to avoid interfering with live updates + if ( + self._signal_provider + and self._signal_provider.provider_type == ProviderType.REALTIME + ): + self._curves[key].setCurveClickable(False) + self._curves[key].setEnabled(False) + print("Disabled curve interactivity for real-time mode") + def _remove_obsolete_curves(self, paths: Sequence[Path]) -> None: """Delete curves that disappeared from *paths*.""" valid = {"/".join(p) for p in paths} @@ -240,6 +249,13 @@ def _on_mouse_click(self, event) -> None: # noqa: N802 if event.button() != QtCore.Qt.MouseButton.LeftButton: return # ignore other buttons + # Disable point selection / labels in realtime mode + if ( + self._signal_provider + and self._signal_provider.provider_type == ProviderType.REALTIME + ): + return + # Scene → data coordinates scene_pos = event.scenePos() if not self._plot.sceneBoundingRect().contains(scene_pos): From a3cd8d8adf0b517613364c493d7f363f06cacc36 Mon Sep 17 00:00:00 2001 From: Alessandro Croci <57228872+xela-95@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:34:03 +0100 Subject: [PATCH 2/3] Update robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py Co-authored-by: Giulio Romualdi --- robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py | 1 - 1 file changed, 1 deletion(-) diff --git a/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py b/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py index 0d09f45..be20b79 100644 --- a/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py +++ b/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py @@ -208,7 +208,6 @@ def _add_missing_curves( ): self._curves[key].setCurveClickable(False) self._curves[key].setEnabled(False) - print("Disabled curve interactivity for real-time mode") def _remove_obsolete_curves(self, paths: Sequence[Path]) -> None: """Delete curves that disappeared from *paths*.""" From 65a08ae9e670298d918e5250ad00d26b77d45f29 Mon Sep 17 00:00:00 2001 From: Alessandro Croci <57228872+xela-95@users.noreply.github.com> Date: Fri, 28 Nov 2025 18:02:20 +0100 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../plotter/pyqtgraph_viewer_canvas.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py b/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py index be20b79..372f1a4 100644 --- a/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py +++ b/robot_log_visualizer/plotter/pyqtgraph_viewer_canvas.py @@ -202,10 +202,7 @@ def _add_missing_curves( ) # For real-time mode, disable curve clickability to avoid interfering with live updates - if ( - self._signal_provider - and self._signal_provider.provider_type == ProviderType.REALTIME - ): + if self._signal_provider.provider_type == ProviderType.REALTIME: self._curves[key].setCurveClickable(False) self._curves[key].setEnabled(False) @@ -249,10 +246,7 @@ def _on_mouse_click(self, event) -> None: # noqa: N802 return # ignore other buttons # Disable point selection / labels in realtime mode - if ( - self._signal_provider - and self._signal_provider.provider_type == ProviderType.REALTIME - ): + if self._signal_provider.provider_type == ProviderType.REALTIME: return # Scene → data coordinates