From 4244e5d97da0273fed70f734a4cfe822bd15c9cb Mon Sep 17 00:00:00 2001 From: Christian Kolset Date: Thu, 23 Apr 2026 10:52:37 -0600 Subject: Fixed clear signal feature to inlcude all signals --- ui/main_window.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'ui/main_window.py') diff --git a/ui/main_window.py b/ui/main_window.py index ec0f39d..483ca49 100644 --- a/ui/main_window.py +++ b/ui/main_window.py @@ -10,10 +10,23 @@ from PyQt6.QtWidgets import ( QMainWindow, QWidget, QHBoxLayout, QVBoxLayout, QSplitter, QStatusBar, QLabel, QPushButton, QToolBar, QSizePolicy, QApplication, QFrame, + QAbstractSpinBox, QComboBox, ) -from PyQt6.QtCore import Qt, QTimer, pyqtSlot +from PyQt6.QtCore import Qt, QTimer, QObject, QEvent, pyqtSlot import os + +class _WheelBlocker(QObject): + """App-level event filter: blocks accidental scroll-wheel changes on + spin boxes, combo boxes and sliders that don't have keyboard focus.""" + def eventFilter(self, obj, event): + if event.type() == QEvent.Type.Wheel: + if isinstance(obj, (QAbstractSpinBox, QComboBox)): + if not obj.hasFocus(): + event.ignore() + return True + return super().eventFilter(obj, event) + from devices.analog_input import AnalogInputDevice from devices.digital_io import DigitalIODevice from devices.serial_device import SerialDevice @@ -52,6 +65,9 @@ class MainWindow(QMainWindow): self._win_plot = None self._win_settings = None + self._wheel_blocker = _WheelBlocker(self) + QApplication.instance().installEventFilter(self._wheel_blocker) + self._init_demo_devices() self._build_ui() self._connect_signals() @@ -345,6 +361,7 @@ class MainWindow(QMainWindow): def _clear_history(self): self.engine.clear_history() + self.processor.clear_history() self._chart.refresh() self._status.setText("History cleared.") -- cgit v1.2.3