| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- # -*- coding: utf-8 -*-
- """
- A.L.I.G. — Définition centralisée des thèmes couleur.
- Usage :
- from core.themes import get_theme
- colors = get_theme("Dark") # ou "Light"
- bg = colors["bg_main"]
- Toutes les vues reçoivent ce dict via apply_theme(colors).
- Plus aucune valeur hexadécimale ne doit être hardcodée dans les vues.
- """
- THEMES: dict[str, dict] = {
- # ══════════════════════════════════════════════════════════════════
- # DARK (défaut)
- # ══════════════════════════════════════════════════════════════════
- "Dark": {
- # ── Identificateur ────────────────────────────────────────────
- "suffix": "_DARK",
- # ── Texte ─────────────────────────────────────────────────────
- "text": "#DCE4EE",
- "text_secondary": "#888888",
- "text_disabled": "#555555",
- "text_code": "#00ff00", # G-Code viewer
- "text_code_dark": "#006600", # non utilisé en dark
- # ── Fonds principaux ──────────────────────────────────────────
- "bg_app": "#1a1a1a", # fenêtre racine / topbar
- "bg_main": "#1e1e1e", # panneaux principaux
- "bg_card": "#252525", # cartes / frames secondaires
- "bg_card_alt": "#2b2b2b", # cards calibration / settings
- "bg_deep": "#111111", # canvas right panel
- "bg_entry": "#1a1a1a", # inputs / QLineEdit / QPlainTextEdit
- "bg_entry_alt": "#3d3d3d", # inputs dans calibration
- "bg_canvas": "#050505", # canvas simulation
- "bg_scroll": "#202020", # fond scrollbar / sidebar calib
- "bg_speed": "#222222", # barre de vitesse
- "bg_speed_btn": "#3a3a3a", # boutons vitesse
- "bg_stats": "#202020", # stats raster
- "bg_tabs": "#252525", # fond onglets raster
- "bg_tab": "#2b2b2b", # onglet individuel
- "bg_preview": "#222222", # zone preview raster
- "bg_select": "#1a1a1a", # SelectContainer calibration
- "bg_opts": "#222222", # options panel simulation
- # ── Bordures ──────────────────────────────────────────────────
- "border": "#333333", # bordure standard
- "border_strong": "#444444", # bordure forte / inputs
- "border_light": "#555555", # bordure légère inputs calib
- "border_card": "#3d3d3d", # cartes calibration
- # ── Boutons neutres ───────────────────────────────────────────
- "btn_neutral": "#444444",
- "btn_neutral_hover": "#555555",
- "btn_cancel": "#333333",
- "btn_cancel_hover": "#444444",
- "btn_dark": "#444444",
- "btn_dark_hover": "#555555",
- # ── Segments / sélecteurs ─────────────────────────────────────
- "seg_bg": "#333333",
- "seg_text": "#aaaaaa",
- "seg_border": "#555555",
- "seg_hover": "#444444",
- "seg_active_text": "#ffffff",
- # ── Scrollbar ─────────────────────────────────────────────────
- "scrollbar_bg": "#202020",
- "scrollbar_handle": "#3e3e3e",
- # ── Hover générique ───────────────────────────────────────────
- "hover_card": "#333333",
- "hover_card_alt": "#353535",
- # ── Divers ────────────────────────────────────────────────────
- "combo_selection": "#444444",
- "progress_bg": "#333333",
- "pbar_bg": "#252525",
- "arrow_color": "#ffffff", # flèche dropdown SVG
- "locked_btn": "#444444",
- "locked_btn_hover": "#666666",
- "locked_text": "#ffffff",
- "preview_text": "#666666",
- "profile_btn": "#444444",
- "profile_btn_text": "#ffffff",
- "stats_text": "#aaaaaa",
- "tab_border": "#555555",
- "btn_speed_checked": "#1f538d",
- "btn_speed_checked_hov":"#2a6dbd",
- "speed_text": "#aaaaaa",
- },
- # ══════════════════════════════════════════════════════════════════
- # LIGHT
- # ══════════════════════════════════════════════════════════════════
- "Light": {
- # ── Identificateur ────────────────────────────────────────────
- "suffix": "_LIGHT",
- # ── Texte ─────────────────────────────────────────────────────
- "text": "#111111",
- "text_secondary": "#555555",
- "text_disabled": "#aaaaaa",
- "text_code": "#006600", # G-Code viewer
- "text_code_dark": "#00ff00",
- # ── Fonds principaux ──────────────────────────────────────────
- "bg_app": "#f5f5f5",
- "bg_main": "#f0f0f0",
- "bg_card": "#e0e0e0",
- "bg_card_alt": "#e8e8e8",
- "bg_deep": "#d8d8d8",
- "bg_entry": "#ffffff",
- "bg_entry_alt": "#ffffff",
- "bg_canvas": "#e0e0e0",
- "bg_scroll": "#f5f5f5",
- "bg_speed": "#e8e8e8",
- "bg_speed_btn": "#d0d0d0",
- "bg_stats": "#f0f0f0",
- "bg_tabs": "#f5f5f5",
- "bg_tab": "#e0e0e0",
- "bg_preview": "#eeeeee",
- "bg_select": "#e8e8e8",
- "bg_opts": "#dedede",
- # ── Bordures ──────────────────────────────────────────────────
- "border": "#cccccc",
- "border_strong": "#bbbbbb",
- "border_light": "#bbbbbb",
- "border_card": "#cccccc",
- # ── Boutons neutres ───────────────────────────────────────────
- "btn_neutral": "#cccccc",
- "btn_neutral_hover": "#b8b8b8",
- "btn_cancel": "#d0d0d0",
- "btn_cancel_hover": "#bcbcbc",
- "btn_dark": "#cccccc",
- "btn_dark_hover": "#b8b8b8",
- # ── Segments / sélecteurs ─────────────────────────────────────
- "seg_bg": "#e0e0e0",
- "seg_text": "#555555",
- "seg_border": "#bbbbbb",
- "seg_hover": "#d0d0d0",
- "seg_active_text": "#111111",
- # ── Scrollbar ─────────────────────────────────────────────────
- "scrollbar_bg": "#e8e8e8",
- "scrollbar_handle": "#b0b0b0",
- # ── Hover générique ───────────────────────────────────────────
- "hover_card": "#dde8f5",
- "hover_card_alt": "#d8d8d8",
- # ── Divers ────────────────────────────────────────────────────
- "combo_selection": "#d0e4f7",
- "progress_bg": "#cccccc",
- "pbar_bg": "#e8e8e8",
- "arrow_color": "#111111", # flèche dropdown SVG
- "locked_btn": "#bbbbbb",
- "locked_btn_hover": "#999999",
- "locked_text": "#111111",
- "preview_text": "#999999",
- "profile_btn": "#cccccc",
- "profile_btn_text": "#222222",
- "stats_text": "#444444",
- "tab_border": "#bbbbbb",
- "btn_speed_checked": "#4a90d9",
- "btn_speed_checked_hov":"#2a6dbd",
- "speed_text": "#444444",
- },
- }
- def get_theme(name: str) -> dict:
- """Retourne le dict de couleurs pour le thème demandé.
- Fallback sur Dark si le thème est inconnu."""
- return THEMES.get(name, THEMES["Dark"])
|