"""Application-wide Qt palette and stylesheet configuration.""" from __future__ import annotations from PyQt6.QtGui import QColor, QPalette from PyQt6.QtWidgets import QApplication, QStyleFactory _DARK_STYLESHEET = """ QMainWindow, QDialog { background-color: #0f131a; } QWidget { color: #e7edf7; font-size: 13px; } QGroupBox { background-color: #151b24; border: 1px solid #263142; border-radius: 10px; margin-top: 14px; padding: 10px; } QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 6px; color: #9fb4ce; font-weight: 600; } QPushButton { background-color: #1d2735; border: 1px solid #314055; border-radius: 8px; padding: 7px 12px; } QPushButton:hover { background-color: #243246; } QPushButton:pressed { background-color: #1a2432; } QPushButton:checked { background-color: #2f7ee6; border-color: #5d88bd; color: #ffffff; } QPushButton:checked:hover { background-color: #3c89ee; } QPushButton:disabled { color: #6b7d95; background-color: #151d27; border-color: #232e3d; } QPushButton#settingsToggleButton { min-width: 26px; max-width: 26px; padding: 6px 0px; border-radius: 7px; font-weight: 700; } QLineEdit, QPlainTextEdit, QTextEdit, QComboBox, QSpinBox, QDoubleSpinBox { background-color: #101721; border: 1px solid #2e3b4e; border-radius: 7px; padding: 5px 8px; selection-background-color: #2f7ee6; } QLineEdit:focus, QPlainTextEdit:focus, QTextEdit:focus, QComboBox:focus, QSpinBox:focus, QDoubleSpinBox:focus { border: 1px solid #5d88bd; } QTextEdit#runtimeLogBox { font-family: "DejaVu Sans Mono"; font-size: 12px; padding: 6px 8px; } QComboBox::drop-down { border: none; width: 18px; } QScrollArea { border: none; background: transparent; } QLabel#statusLabel { color: #94b4d9; font-weight: 600; padding: 2px 1px; } QLabel#hintLabel { color: #7f94af; } """ def apply_dark_theme(app: QApplication) -> None: """Apply a minimal modern dark theme shared by all windows.""" app.setStyle(QStyleFactory.create("Fusion")) palette = QPalette() palette.setColor(QPalette.ColorRole.Window, QColor("#0f131a")) palette.setColor(QPalette.ColorRole.WindowText, QColor("#e7edf7")) palette.setColor(QPalette.ColorRole.Base, QColor("#101721")) palette.setColor(QPalette.ColorRole.AlternateBase, QColor("#151b24")) palette.setColor(QPalette.ColorRole.ToolTipBase, QColor("#151b24")) palette.setColor(QPalette.ColorRole.ToolTipText, QColor("#e7edf7")) palette.setColor(QPalette.ColorRole.Text, QColor("#e7edf7")) palette.setColor(QPalette.ColorRole.Button, QColor("#1d2735")) palette.setColor(QPalette.ColorRole.ButtonText, QColor("#e7edf7")) palette.setColor(QPalette.ColorRole.BrightText, QColor("#ffffff")) palette.setColor(QPalette.ColorRole.Link, QColor("#5d88bd")) palette.setColor(QPalette.ColorRole.Highlight, QColor("#2f7ee6")) palette.setColor(QPalette.ColorRole.HighlightedText, QColor("#ffffff")) app.setPalette(palette) app.setStyleSheet(_DARK_STYLESHEET)