diff options
Diffstat (limited to 'ui/style.qss')
| -rw-r--r-- | ui/style.qss | 378 |
1 files changed, 378 insertions, 0 deletions
diff --git a/ui/style.qss b/ui/style.qss new file mode 100644 index 0000000..60415fb --- /dev/null +++ b/ui/style.qss @@ -0,0 +1,378 @@ +/* LabDAQ — Industrial Dark Theme + Font stack: IBM Plex Mono (monospace data), IBM Plex Sans (UI labels) + Palette: + bg-base #0b0e13 + bg-panel #111620 + bg-card #161d2e + bg-raised #1c2540 + border #2a3558 + accent-blue #3b82f6 + accent-cyan #00d4ff + accent-green #22c55e + text-primary #e2e8f0 + text-muted #64748b + danger #ef4444 + warning #f59e0b +*/ + +* { + font-family: "IBM Plex Sans", "Segoe UI", Tahoma, sans-serif; + font-size: 12px; + color: #e2e8f0; +} + +QMainWindow, QDialog { + background-color: #0b0e13; +} + +/* ── Toolbar ─────────────────────────────────────────────────── */ +QToolBar#mainToolbar { + background-color: #0b0e13; + border-bottom: 1px solid #2a3558; + padding: 4px 8px; + spacing: 6px; +} + +QPushButton#runButton { + background-color: #166534; + color: #dcfce7; + border: 1px solid #22c55e; + border-radius: 4px; + padding: 5px 16px; + font-family: "IBM Plex Mono", monospace; + font-weight: 600; + letter-spacing: 0.5px; + min-width: 90px; +} +QPushButton#runButton:checked { + background-color: #7f1d1d; + border-color: #ef4444; + color: #fee2e2; +} +QPushButton#runButton:hover { background-color: #15803d; } +QPushButton#runButton:checked:hover { background-color: #991b1b; } + +QPushButton#logButton { + background-color: #1c2540; + color: #94a3b8; + border: 1px solid #2a3558; + border-radius: 4px; + padding: 5px 14px; + font-family: "IBM Plex Mono", monospace; + min-width: 80px; +} +QPushButton#logButton:enabled { + color: #e2e8f0; + border-color: #3b82f6; +} +QPushButton#logButton:checked { + background-color: #7c2d12; + border-color: #ef4444; + color: #fee2e2; +} + +QPushButton#addDeviceButton { + background-color: #1e3a5f; + color: #93c5fd; + border: 1px solid #3b82f6; + border-radius: 4px; + padding: 5px 14px; +} +QPushButton#addDeviceButton:hover { + background-color: #1d4ed8; + color: #eff6ff; +} + +QLabel#timeLabel { + font-family: "IBM Plex Mono", monospace; + font-size: 16px; + font-weight: 700; + color: #00d4ff; + letter-spacing: 2px; + padding-right: 8px; +} + +/* ── Panels & Headers ────────────────────────────────────────── */ +QLabel#panelHeader { + background-color: #0f1521; + color: #64748b; + font-family: "IBM Plex Mono", monospace; + font-size: 10px; + font-weight: 700; + letter-spacing: 2px; + padding: 6px 0px; + border-bottom: 1px solid #2a3558; +} + +QWidget#alarmHeaderWidget { + background-color: #0f1521; + border-bottom: 1px solid #2a3558; +} + +/* ── Device Cards ────────────────────────────────────────────── */ +QScrollArea#deviceScroll { + background-color: #0b0e13; + border: none; + border-right: 1px solid #2a3558; +} + +QFrame#deviceCard { + background-color: #161d2e; + border: 1px solid #2a3558; + border-radius: 6px; +} +QFrame#deviceCard:hover { + border-color: #3b82f6; + background-color: #1c2540; +} + +QLabel#deviceIcon { + font-size: 18px; +} +QLabel#deviceName { + font-size: 13px; + font-weight: 600; + color: #e2e8f0; +} +QLabel#deviceSub { + font-family: "IBM Plex Mono", monospace; + font-size: 10px; + color: #64748b; +} +QLabel#deviceChannelCount { + font-size: 11px; + color: #3b82f6; +} + +QPushButton#configButton { + background-color: #1c2540; + color: #64748b; + border: 1px solid #2a3558; + border-radius: 3px; + padding: 3px 10px; + font-size: 11px; +} +QPushButton#configButton:hover { + background-color: #1e3a5f; + color: #93c5fd; + border-color: #3b82f6; +} + +/* ── Channel Readouts ────────────────────────────────────────── */ +QFrame#channelReadout { + background-color: #161d2e; + border: 1px solid #1c2540; + border-radius: 4px; +} +QFrame#channelReadout[alarm="true"] { + border-color: #ef4444; + background-color: #200d0d; +} +QLabel#readoutName { + font-size: 11px; + color: #64748b; +} +QLabel#readoutValue { + font-family: "IBM Plex Mono", monospace; + font-size: 15px; + font-weight: 700; +} +QLabel#readoutUnit { + font-family: "IBM Plex Mono", monospace; + font-size: 10px; + color: #475569; +} +QProgressBar#readoutBar { + background-color: #1c2540; + border: none; + border-radius: 2px; +} + +/* ── Alarm Panel ─────────────────────────────────────────────── */ +QFrame#alarmEntry { + background-color: #161d2e; + border-radius: 3px; + border: none; +} +QLabel#alarmMsg { + font-family: "IBM Plex Mono", monospace; + font-size: 11px; + color: #e2e8f0; +} +QLabel#alarmTs { + font-family: "IBM Plex Mono", monospace; + font-size: 10px; + color: #475569; +} +QPushButton#clearAlarmsBtn { + background: transparent; + color: #64748b; + border: none; + font-size: 11px; + padding: 4px 8px; +} +QPushButton#clearAlarmsBtn:hover { color: #ef4444; } + +/* ── Strip Chart controls ────────────────────────────────────── */ +QPushButton#pauseButton { + background-color: #1c2540; + color: #64748b; + border: 1px solid #2a3558; + border-radius: 4px; + padding: 4px 12px; +} +QPushButton#pauseButton:checked { + background-color: #713f12; + border-color: #f59e0b; + color: #fef3c7; +} + +/* ── Config / Dialog ─────────────────────────────────────────── */ +QDialog { + background-color: #111620; +} +QTabWidget::pane { + background-color: #111620; + border: 1px solid #2a3558; + border-radius: 4px; +} +QTabBar::tab { + background-color: #0b0e13; + color: #64748b; + border: 1px solid #2a3558; + padding: 6px 16px; + margin-right: 2px; +} +QTabBar::tab:selected { + background-color: #1c2540; + color: #e2e8f0; + border-bottom: 2px solid #3b82f6; +} + +QGroupBox { + border: 1px solid #2a3558; + border-radius: 4px; + margin-top: 12px; + padding-top: 8px; + color: #64748b; + font-size: 11px; + font-weight: 600; + letter-spacing: 0.5px; +} +QGroupBox::title { + subcontrol-origin: margin; + left: 8px; + top: -6px; + background-color: #111620; + padding: 0 4px; +} + +QLineEdit, QDoubleSpinBox, QSpinBox, QComboBox { + background-color: #0b0e13; + border: 1px solid #2a3558; + border-radius: 3px; + padding: 4px 8px; + color: #e2e8f0; + font-family: "IBM Plex Mono", monospace; + min-height: 22px; +} +QLineEdit:focus, QDoubleSpinBox:focus, QSpinBox:focus, QComboBox:focus { + border-color: #3b82f6; +} +QComboBox::drop-down { border: none; width: 20px; } +QComboBox QAbstractItemView { + background-color: #161d2e; + border: 1px solid #3b82f6; + selection-background-color: #1e3a5f; +} + +QCheckBox { + color: #94a3b8; + spacing: 6px; +} +QCheckBox::indicator { + width: 14px; height: 14px; + border: 1px solid #2a3558; + border-radius: 3px; + background-color: #0b0e13; +} +QCheckBox::indicator:checked { + background-color: #3b82f6; + border-color: #3b82f6; +} + +QPushButton#applyButton { + background-color: #1e3a5f; + color: #93c5fd; + border: 1px solid #3b82f6; + border-radius: 4px; + padding: 6px 20px; + font-weight: 600; +} +QPushButton#applyButton:hover { + background-color: #1d4ed8; + color: #eff6ff; +} + +/* ── Digital output toggle ───────────────────────────────────── */ +QPushButton#digitalOutBtn { + background-color: #1c2540; + color: #64748b; + border: 1px solid #2a3558; + border-radius: 4px; + padding: 4px 14px; + font-family: "IBM Plex Mono", monospace; + min-width: 50px; +} +QPushButton#digitalOutBtn:checked { + background-color: #166534; + border-color: #22c55e; + color: #dcfce7; +} + +/* ── Scrollbars ──────────────────────────────────────────────── */ +QScrollBar:vertical { + background: #0b0e13; + width: 6px; + margin: 0; +} +QScrollBar::handle:vertical { + background: #2a3558; + border-radius: 3px; + min-height: 20px; +} +QScrollBar::handle:vertical:hover { background: #3b82f6; } +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { height: 0; } +QScrollBar:horizontal { height: 6px; background: #0b0e13; } +QScrollBar::handle:horizontal { background: #2a3558; border-radius: 3px; min-width: 20px; } + +/* ── Splitter ────────────────────────────────────────────────── */ +QSplitter::handle { + background-color: #2a3558; +} +QSplitter::handle:hover { + background-color: #3b82f6; +} + +/* ── Status bar ──────────────────────────────────────────────── */ +QStatusBar { + background-color: #0b0e13; + border-top: 1px solid #2a3558; + color: #475569; + font-family: "IBM Plex Mono", monospace; + font-size: 11px; +} + +/* ── General button default ──────────────────────────────────── */ +QPushButton { + background-color: #1c2540; + color: #94a3b8; + border: 1px solid #2a3558; + border-radius: 4px; + padding: 5px 12px; +} +QPushButton:hover { background-color: #1e3a5f; color: #e2e8f0; } +QPushButton:pressed { background-color: #172554; } +QPushButton:disabled { color: #334155; border-color: #1c2540; } + +QLabel { color: #94a3b8; } |
