staged/sequential pipeline modes + dark themed Qt GUI
This commit is contained in:
215
gui/theme.py
Normal file
215
gui/theme.py
Normal file
@@ -0,0 +1,215 @@
|
||||
"""Dark theme for the whole application (Catppuccin Macchiato-inspired)."""
|
||||
from __future__ import annotations
|
||||
|
||||
DARK_STYLESHEET = """
|
||||
QWidget {
|
||||
background-color: #1e1e2e;
|
||||
color: #cdd6f4;
|
||||
font-family: 'Inter', 'Segoe UI', 'Noto Sans', sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
QMainWindow { background-color: #181825; }
|
||||
|
||||
QLabel { background: transparent; }
|
||||
QLabel#appTitle {
|
||||
font-size: 18pt;
|
||||
font-weight: 700;
|
||||
color: #89b4fa;
|
||||
padding: 4px 0 10px 0;
|
||||
}
|
||||
QLabel#appSubtitle {
|
||||
color: #7f849c;
|
||||
font-size: 9pt;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
QLabel#deviceInfo {
|
||||
color: #a6adc8;
|
||||
font-size: 9pt;
|
||||
padding: 4px 8px;
|
||||
background-color: #181825;
|
||||
border: 1px solid #313244;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QGroupBox {
|
||||
border: 1px solid #313244;
|
||||
border-radius: 10px;
|
||||
margin-top: 14px;
|
||||
padding: 16px 12px 12px 12px;
|
||||
background-color: #1e1e2e;
|
||||
font-weight: 600;
|
||||
}
|
||||
QGroupBox::title {
|
||||
subcontrol-origin: margin;
|
||||
subcontrol-position: top left;
|
||||
left: 12px;
|
||||
padding: 0 6px;
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
QLineEdit, QSpinBox, QComboBox, QPlainTextEdit {
|
||||
background-color: #181825;
|
||||
border: 1px solid #313244;
|
||||
border-radius: 6px;
|
||||
padding: 6px 10px;
|
||||
color: #cdd6f4;
|
||||
selection-background-color: #89b4fa;
|
||||
selection-color: #1e1e2e;
|
||||
min-height: 22px;
|
||||
}
|
||||
QLineEdit:focus, QSpinBox:focus, QComboBox:focus, QPlainTextEdit:focus {
|
||||
border: 1px solid #89b4fa;
|
||||
}
|
||||
QLineEdit:disabled, QComboBox:disabled, QSpinBox:disabled {
|
||||
color: #585b70;
|
||||
background-color: #11111b;
|
||||
}
|
||||
|
||||
QComboBox::drop-down { border: none; width: 22px; }
|
||||
QComboBox::down-arrow {
|
||||
width: 0; height: 0;
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-top: 5px solid #89b4fa;
|
||||
margin-right: 8px;
|
||||
}
|
||||
QComboBox QAbstractItemView {
|
||||
background-color: #181825;
|
||||
border: 1px solid #313244;
|
||||
selection-background-color: #313244;
|
||||
selection-color: #89b4fa;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* ─── buttons: higher contrast ─────────────────────────────────── */
|
||||
QPushButton {
|
||||
background-color: #3d4159;
|
||||
border: 1px solid #5c6080;
|
||||
border-radius: 6px;
|
||||
padding: 8px 16px;
|
||||
color: #ffffff;
|
||||
font-weight: 600;
|
||||
min-height: 22px;
|
||||
}
|
||||
QPushButton:hover { background-color: #4a4e6b; border-color: #7a7fa0; }
|
||||
QPushButton:pressed { background-color: #585b70; }
|
||||
QPushButton:focus { border: 1px solid #a6c8ff; outline: none; }
|
||||
QPushButton:disabled {
|
||||
background-color: #2a2d42;
|
||||
color: #6c7086;
|
||||
border-color: #3d4055;
|
||||
}
|
||||
|
||||
QPushButton#primary {
|
||||
background-color: #89b4fa;
|
||||
color: #11111b;
|
||||
font-weight: 700;
|
||||
border: none;
|
||||
padding: 8px 20px;
|
||||
}
|
||||
QPushButton#primary:hover { background-color: #a6c8ff; }
|
||||
QPushButton#primary:pressed { background-color: #74a0e0; }
|
||||
QPushButton#primary:disabled {
|
||||
background-color: #45475a;
|
||||
color: #6c7086;
|
||||
}
|
||||
|
||||
QPushButton#danger {
|
||||
background-color: #f38ba8;
|
||||
color: #11111b;
|
||||
font-weight: 700;
|
||||
border: none;
|
||||
padding: 8px 20px;
|
||||
}
|
||||
QPushButton#danger:hover { background-color: #f5a4b8; }
|
||||
QPushButton#danger:pressed { background-color: #e07898; }
|
||||
QPushButton#danger:disabled {
|
||||
background-color: #45475a;
|
||||
color: #6c7086;
|
||||
}
|
||||
|
||||
QTabWidget::pane {
|
||||
border: 1px solid #313244;
|
||||
border-radius: 10px;
|
||||
background-color: #1e1e2e;
|
||||
top: -1px;
|
||||
}
|
||||
QTabBar::tab {
|
||||
background-color: #181825;
|
||||
color: #7f849c;
|
||||
padding: 8px 20px;
|
||||
border: 1px solid #313244;
|
||||
border-bottom: none;
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
margin-right: 3px;
|
||||
font-weight: 500;
|
||||
}
|
||||
QTabBar::tab:selected {
|
||||
background-color: #1e1e2e;
|
||||
color: #89b4fa;
|
||||
border-color: #313244;
|
||||
}
|
||||
QTabBar::tab:hover:!selected { background-color: #252535; }
|
||||
|
||||
QCheckBox {
|
||||
spacing: 8px;
|
||||
background: transparent;
|
||||
}
|
||||
QCheckBox::indicator {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 1px solid #5c6080;
|
||||
border-radius: 4px;
|
||||
background-color: #181825;
|
||||
}
|
||||
QCheckBox::indicator:hover { border-color: #89b4fa; }
|
||||
QCheckBox::indicator:checked {
|
||||
background-color: #89b4fa;
|
||||
border-color: #89b4fa;
|
||||
}
|
||||
|
||||
QProgressBar {
|
||||
background-color: #181825;
|
||||
border: 1px solid #313244;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
color: #cdd6f4;
|
||||
min-height: 24px;
|
||||
max-height: 24px;
|
||||
font-weight: 500;
|
||||
}
|
||||
QProgressBar::chunk {
|
||||
background-color: #89b4fa;
|
||||
border-radius: 7px;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
QScrollBar:vertical {
|
||||
background: #181825;
|
||||
width: 12px;
|
||||
border-radius: 6px;
|
||||
margin: 0;
|
||||
}
|
||||
QScrollBar::handle:vertical {
|
||||
background: #45475a;
|
||||
border-radius: 6px;
|
||||
min-height: 24px;
|
||||
margin: 2px;
|
||||
}
|
||||
QScrollBar::handle:vertical:hover { background: #585b70; }
|
||||
QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { height: 0; }
|
||||
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: none; }
|
||||
|
||||
QSplitter::handle { background-color: #313244; }
|
||||
|
||||
QPlainTextEdit#log {
|
||||
background-color: #11111b;
|
||||
border: 1px solid #313244;
|
||||
border-radius: 10px;
|
||||
padding: 10px;
|
||||
font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
|
||||
font-size: 9.5pt;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
"""
|
||||
Reference in New Issue
Block a user