summaryrefslogtreecommitdiff
path: root/ui/style.qss
diff options
context:
space:
mode:
Diffstat (limited to 'ui/style.qss')
-rw-r--r--ui/style.qss545
1 files changed, 545 insertions, 0 deletions
diff --git a/ui/style.qss b/ui/style.qss
index 60415fb..3761c68 100644
--- a/ui/style.qss
+++ b/ui/style.qss
@@ -376,3 +376,548 @@ QPushButton:pressed { background-color: #172554; }
QPushButton:disabled { color: #334155; border-color: #1c2540; }
QLabel { color: #94a3b8; }
+
+/* ══════════════════════════════════════════════════════════════
+ Devices Window
+ ══════════════════════════════════════════════════════════════ */
+
+QWidget#devWindowTitleBar {
+ background-color: #0f1521;
+ border-bottom: 1px solid #2a3558;
+}
+QLabel#devWindowTitle {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+ font-weight: 700;
+ letter-spacing: 2px;
+ color: #64748b;
+}
+QFrame#devWindowDivider {
+ color: #2a3558;
+ max-height: 1px;
+}
+
+/* ══════════════════════════════════════════════════════════════
+ Control Widgets — shared frame
+ ══════════════════════════════════════════════════════════════ */
+
+QFrame#controlWidget {
+ background-color: #161d2e;
+ border: 1px solid #2a3558;
+ border-radius: 6px;
+}
+QFrame#controlWidget:hover {
+ border-color: #3b82f6;
+}
+
+QWidget#controlWidgetHeader {
+ background-color: #0f1521;
+ border-radius: 5px 5px 0 0;
+ border-bottom: 1px solid #2a3558;
+}
+QLabel#controlWidgetIcon {
+ font-size: 13px;
+ color: #3b82f6;
+ padding-right: 4px;
+}
+QLabel#controlWidgetTitle {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ font-weight: 700;
+ letter-spacing: 1.5px;
+ color: #64748b;
+}
+QWidget#controlWidgetBody {
+ background-color: #161d2e;
+ border-radius: 0 0 5px 5px;
+}
+
+/* ── On/Off Switch ─────────────────────────────────────────── */
+
+QPushButton#switchBtn,
+QPushButton#switchBtnOff {
+ background-color: #1c2540;
+ color: #475569;
+ border: 2px solid #2a3558;
+ border-radius: 6px;
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 18px;
+ font-weight: 800;
+ letter-spacing: 4px;
+ min-height: 52px;
+}
+QPushButton#switchBtnOn {
+ background-color: #14532d;
+ color: #dcfce7;
+ border: 2px solid #22c55e;
+ border-radius: 6px;
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 18px;
+ font-weight: 800;
+ letter-spacing: 4px;
+ min-height: 52px;
+}
+QPushButton#switchBtnOff:hover { border-color: #64748b; color: #94a3b8; }
+QPushButton#switchBtnOn:hover { background-color: #166534; }
+
+QLabel#switchIndicatorOff {
+ font-size: 18px;
+ color: #334155;
+}
+QLabel#switchIndicatorOn {
+ font-size: 18px;
+ color: #22c55e;
+}
+QLabel#switchStateLbl {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ font-weight: 700;
+ letter-spacing: 1px;
+ color: #475569;
+}
+
+/* ── Motor Control ─────────────────────────────────────────── */
+
+QLabel#motorSpeedLbl {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 28px;
+ font-weight: 700;
+ color: #00d4ff;
+}
+QLabel#motorUnitLbl {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+ color: #475569;
+ padding-top: 12px;
+}
+QLabel#motorPctLbl {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+ color: #475569;
+}
+
+QSlider#motorSlider::groove:horizontal,
+QSlider#pwmSlider::groove:horizontal {
+ background: #1c2540;
+ height: 6px;
+ border-radius: 3px;
+}
+QSlider#motorSlider::handle:horizontal,
+QSlider#pwmSlider::handle:horizontal {
+ background: #3b82f6;
+ border: 2px solid #1d4ed8;
+ width: 16px;
+ height: 16px;
+ margin: -5px 0;
+ border-radius: 8px;
+}
+QSlider#motorSlider::sub-page:horizontal {
+ background: #1d4ed8;
+ border-radius: 3px;
+}
+QSlider#pwmSlider::sub-page:horizontal {
+ background: #7c3aed;
+ border-radius: 3px;
+}
+QSlider#motorSlider::handle:horizontal:hover,
+QSlider#pwmSlider::handle:horizontal:hover {
+ background: #60a5fa;
+}
+
+QPushButton#motorDirBtn {
+ background-color: #1c2540;
+ color: #94a3b8;
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+ padding: 5px 10px;
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+}
+QPushButton#motorDirBtnRev {
+ background-color: #2d1b69;
+ color: #c4b5fd;
+ border: 1px solid #7c3aed;
+ border-radius: 4px;
+ padding: 5px 10px;
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+}
+
+QPushButton#motorRunBtnOff {
+ background-color: #1c2540;
+ color: #64748b;
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+ padding: 5px 12px;
+ font-family: "IBM Plex Mono", monospace;
+ font-weight: 700;
+ letter-spacing: 0.5px;
+}
+QPushButton#motorRunBtnOn {
+ background-color: #166534;
+ color: #dcfce7;
+ border: 1px solid #22c55e;
+ border-radius: 4px;
+ padding: 5px 12px;
+ font-family: "IBM Plex Mono", monospace;
+ font-weight: 700;
+ letter-spacing: 0.5px;
+}
+QPushButton#motorRunBtnOff:hover { border-color: #64748b; color: #94a3b8; }
+QPushButton#motorRunBtnOn:hover { background-color: #15803d; }
+
+/* ── Setpoint Control ──────────────────────────────────────── */
+
+QLabel#spLabel {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ font-weight: 700;
+ color: #3b82f6;
+ letter-spacing: 0.5px;
+}
+QLabel#pvLabel {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ font-weight: 700;
+ color: #22c55e;
+ letter-spacing: 0.5px;
+}
+QLabel#errLabel {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ font-weight: 700;
+ color: #f59e0b;
+ letter-spacing: 0.5px;
+}
+QLabel#pvValue, QLabel#errValue {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 12px;
+ color: #94a3b8;
+}
+QDoubleSpinBox#spSpinbox {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 13px;
+ font-weight: 600;
+ color: #e2e8f0;
+ background-color: #0b0e13;
+ border: 1px solid #3b82f6;
+ border-radius: 3px;
+ padding: 3px 6px;
+}
+QPushButton#spStepBtn {
+ background-color: #1e3a5f;
+ color: #93c5fd;
+ border: 1px solid #3b82f6;
+ border-radius: 3px;
+ font-size: 16px;
+ font-weight: 700;
+ padding: 0;
+}
+QPushButton#spStepBtn:hover {
+ background-color: #1d4ed8;
+ color: #eff6ff;
+}
+
+/* ── PWM Control ───────────────────────────────────────────── */
+
+QLabel#pwmLabel {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ color: #64748b;
+ letter-spacing: 0.5px;
+}
+QLabel#pwmValue {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 13px;
+ font-weight: 700;
+ color: #c4b5fd;
+}
+QSpinBox#pwmFreqSpin {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 12px;
+ background-color: #0b0e13;
+ border: 1px solid #2a3558;
+ border-radius: 3px;
+ color: #e2e8f0;
+ padding: 3px 6px;
+}
+
+/* ══════════════════════════════════════════════════════════════
+ Plot Config Button (toolbar)
+ ══════════════════════════════════════════════════════════════ */
+
+QPushButton#plotCfgButton {
+ background-color: #1a1f35;
+ color: #818cf8;
+ border: 1px solid #4338ca;
+ border-radius: 4px;
+ padding: 5px 14px;
+ font-weight: 600;
+}
+QPushButton#plotCfgButton:hover {
+ background-color: #312e81;
+ color: #e0e7ff;
+ border-color: #6366f1;
+}
+QPushButton#plotCfgButton:checked {
+ background-color: #312e81;
+ color: #e0e7ff;
+ border-color: #818cf8;
+}
+
+/* ══════════════════════════════════════════════════════════════
+ Plot Config Window
+ ══════════════════════════════════════════════════════════════ */
+
+QWidget#cfgTopBar {
+ background-color: #0b0e13;
+ border-bottom: 1px solid #2a3558;
+}
+QLabel#cfgTopBarTitle {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 12px;
+ font-weight: 700;
+ letter-spacing: 1.5px;
+ color: #818cf8;
+}
+QCheckBox#cfgLiveChk {
+ color: #94a3b8;
+ font-size: 11px;
+ spacing: 5px;
+}
+
+QWidget#cfgGlobalBar {
+ background-color: #0f1521;
+ border-bottom: 1px solid #1c2540;
+}
+QDoubleSpinBox#cfgGlobalSpin {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 12px;
+ background: #0b0e13;
+ border: 1px solid #2a3558;
+ border-radius: 3px;
+ color: #e2e8f0;
+ padding: 3px 6px;
+}
+
+QWidget#cfgBottomBar {
+ background-color: #0b0e13;
+ border-top: 1px solid #2a3558;
+}
+
+/* ── Plot Block ──────────────────────────────────────────────── */
+
+QFrame#plotBlock {
+ background-color: #111620;
+ border: 1px solid #2a3558;
+ border-radius: 6px;
+}
+QFrame#plotBlock:hover {
+ border-color: #4338ca;
+}
+
+QWidget#plotBlockHeader {
+ background-color: #0d1117;
+ border-radius: 5px 5px 0 0;
+ border-bottom: 1px solid #2a3558;
+}
+QLineEdit#plotBlockTitle {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 12px;
+ font-weight: 700;
+ color: #c7d2fe;
+ background: transparent;
+ border: none;
+ border-bottom: 1px solid transparent;
+ padding: 2px 4px;
+}
+QLineEdit#plotBlockTitle:focus {
+ border-bottom: 1px solid #4338ca;
+ color: #e0e7ff;
+}
+
+QToolButton#plotMoveBtn {
+ background-color: transparent;
+ color: #475569;
+ border: none;
+ font-size: 11px;
+ border-radius: 3px;
+}
+QToolButton#plotMoveBtn:hover {
+ background-color: #1c2540;
+ color: #94a3b8;
+}
+QToolButton#plotRemoveBtn {
+ background-color: transparent;
+ color: #475569;
+ border: none;
+ font-size: 12px;
+ border-radius: 3px;
+}
+QToolButton#plotRemoveBtn:hover {
+ background-color: #450a0a;
+ color: #ef4444;
+}
+
+QWidget#plotBlockSettings {
+ background-color: #111620;
+ border-bottom: 1px solid #1c2540;
+}
+QLineEdit#plotYLabelEdit {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+ background: #0b0e13;
+ border: 1px solid #2a3558;
+ border-radius: 3px;
+ color: #94a3b8;
+ padding: 3px 6px;
+ max-width: 140px;
+}
+
+QWidget#plotBlockTraces {
+ background-color: #111620;
+ border-radius: 0 0 5px 5px;
+}
+
+/* ── Trace Row ───────────────────────────────────────────────── */
+
+QFrame#traceRow {
+ background-color: #161d2e;
+ border: 1px solid #1c2540;
+ border-radius: 4px;
+}
+QFrame#traceRow:hover {
+ border-color: #2a3558;
+ background-color: #1c2540;
+}
+
+QLabel#traceSource {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ color: #475569;
+}
+QLineEdit#traceLabel {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+ background: #0b0e13;
+ border: 1px solid #1c2540;
+ border-radius: 3px;
+ color: #94a3b8;
+ padding: 2px 6px;
+}
+QLineEdit#traceLabel:focus {
+ border-color: #3b82f6;
+ color: #e2e8f0;
+}
+QComboBox#traceStyleCb {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ background: #0b0e13;
+ border: 1px solid #1c2540;
+ border-radius: 3px;
+ color: #64748b;
+ padding: 2px 4px;
+}
+QDoubleSpinBox#traceWidthSpin {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 10px;
+ background: #0b0e13;
+ border: 1px solid #1c2540;
+ border-radius: 3px;
+ color: #64748b;
+ padding: 2px 4px;
+}
+QToolButton#traceRemoveBtn {
+ background: transparent;
+ color: #334155;
+ border: none;
+ font-size: 12px;
+ border-radius: 3px;
+}
+QToolButton#traceRemoveBtn:hover {
+ background-color: #450a0a;
+ color: #ef4444;
+}
+
+/* ── Add trace button / channel picker ──────────────────────── */
+
+QPushButton#addTraceBtn {
+ background-color: #1c2540;
+ color: #64748b;
+ border: 1px dashed #2a3558;
+ border-radius: 4px;
+ padding: 4px 12px;
+ font-size: 11px;
+}
+QPushButton#addTraceBtn:hover {
+ background-color: #1e3a5f;
+ color: #93c5fd;
+ border-color: #3b82f6;
+ border-style: solid;
+}
+QComboBox#channelPickerCb {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+ background: #0b0e13;
+ border: 1px solid #2a3558;
+ border-radius: 3px;
+ color: #64748b;
+ padding: 4px 8px;
+}
+QComboBox#channelPickerCb:focus { border-color: #3b82f6; }
+
+/* ══════════════════════════════════════════════════════════════
+ Signal Builder window / code editor
+ ══════════════════════════════════════════════════════════════ */
+
+QTabWidget#signalBuilderTabs::pane {
+ background-color: #0b0e13;
+ border: 1px solid #2a3558;
+}
+QTabWidget#signalBuilderTabs QTabBar::tab {
+ background-color: #0b0e13;
+ color: #475569;
+ border: 1px solid #1c2540;
+ padding: 6px 18px;
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 11px;
+ letter-spacing: 0.5px;
+}
+QTabWidget#signalBuilderTabs QTabBar::tab:selected {
+ background-color: #161d2e;
+ color: #c7d2fe;
+ border-bottom: 2px solid #818cf8;
+}
+
+QTextEdit#codeEditor {
+ font-family: "IBM Plex Mono", monospace;
+ font-size: 12px;
+ background-color: #060810;
+ color: #e2e8f0;
+ border: 1px solid #2a3558;
+ border-radius: 4px;
+ padding: 6px;
+ selection-background-color: #1e3a5f;
+}
+QTextEdit#codeEditor:focus {
+ border-color: #818cf8;
+}
+
+/* ── Control panel header with device button ────────────────── */
+QWidget#controlPanelHeader {
+ background-color: #0f1521;
+ border-bottom: 1px solid #2a3558;
+}
+QPushButton#devicesSmallBtn {
+ background-color: transparent;
+ color: #475569;
+ border: 1px solid #2a3558;
+ border-radius: 3px;
+ font-size: 13px;
+ padding: 0;
+}
+QPushButton#devicesSmallBtn:hover {
+ background-color: #1c2540;
+ color: #94a3b8;
+ border-color: #3b82f6;
+}