diff options
| author | Christian Kolset <christian.kolset@gmail.com> | 2026-04-21 13:43:52 -0600 |
|---|---|---|
| committer | Christian Kolset <christian.kolset@gmail.com> | 2026-04-21 13:57:46 -0600 |
| commit | 2a634dca0c7962b90004f75c4cdac6225201bb5e (patch) | |
| tree | 3e1f0cd4ff165e77d17ebec5278c9bed885bb1da /ui/alarm_panel.py | |
| parent | b1a61fd29e2282110bc4f4bc4616c55ed9d88dbb (diff) | |
V13
This version contains the profile feature. Allowins users to save the
channels, signals and plots for specific labs.
Diffstat (limited to 'ui/alarm_panel.py')
| -rw-r--r-- | ui/alarm_panel.py | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/ui/alarm_panel.py b/ui/alarm_panel.py deleted file mode 100644 index 1270aff..0000000 --- a/ui/alarm_panel.py +++ /dev/null @@ -1,85 +0,0 @@ -""" -ui/alarm_panel.py — Alarm event log. -""" - -from datetime import datetime -from PyQt6.QtWidgets import ( - QWidget, QVBoxLayout, QHBoxLayout, QLabel, - QScrollArea, QFrame, QPushButton, -) -from PyQt6.QtCore import Qt - - -class AlarmRow(QFrame): - def __init__(self, dev_id: str, ch_id: str, value: float, kind: str): - super().__init__() - self.setObjectName("alarmEntry") - color = "#ef4444" if kind == "high" else "#f59e0b" - arrow = "▲" if kind == "high" else "▼" - self.setStyleSheet(f"QFrame#alarmEntry {{ border-left: 3px solid {color}; }}") - - ts_str = datetime.now().strftime("%H:%M:%S.%f")[:11] - layout = QHBoxLayout(self) - layout.setContentsMargins(8, 3, 8, 3) - - msg = QLabel(f"{arrow} {dev_id} / {ch_id} = {value:.4f} [{kind.upper()}]") - msg.setObjectName("alarmMsg") - ts = QLabel(ts_str) - ts.setObjectName("alarmTs") - - layout.addWidget(msg, 1) - layout.addWidget(ts) - - -class AlarmPanel(QWidget): - def __init__(self): - super().__init__() - self._count = 0 - self._build() - - def _build(self): - layout = QVBoxLayout(self) - layout.setContentsMargins(0, 0, 0, 0) - layout.setSpacing(0) - - hdr_w = QWidget() - hdr_w.setObjectName("alarmHeaderWidget") - hdr_lay = QHBoxLayout(hdr_w) - hdr_lay.setContentsMargins(0, 0, 4, 0) - hdr = QLabel(" ALARMS") - hdr.setObjectName("panelHeader") - hdr.setMinimumHeight(28) - hdr_lay.addWidget(hdr, 1) - clr = QPushButton("Clear") - clr.setObjectName("clearAlarmsBtn") - clr.clicked.connect(self.clear) - hdr_lay.addWidget(clr) - layout.addWidget(hdr_w) - - self._scroll = QScrollArea() - self._scroll.setWidgetResizable(True) - self._container = QWidget() - self._inner = QVBoxLayout(self._container) - self._inner.setContentsMargins(4, 4, 4, 4) - self._inner.setSpacing(2) - self._inner.addStretch() - self._scroll.setWidget(self._container) - layout.addWidget(self._scroll) - - def add_alarm(self, dev_id: str, ch_id: str, value: float, kind: str): - row = AlarmRow(dev_id, ch_id, value, kind) - self._inner.insertWidget(0, row) - self._count += 1 - # Cap at 300 entries - if self._count > 300: - item = self._inner.takeAt(self._inner.count() - 2) - if item and item.widget(): - item.widget().deleteLater() - self._count -= 1 - - def clear(self): - while self._inner.count() > 1: - item = self._inner.takeAt(0) - if item and item.widget(): - item.widget().deleteLater() - self._count = 0 |
